static UniHanData() { var settings = Properties.Settings.Default; Sources = new MultiDict<int, string>(); Mappings = new MultiDict<int, string>(); Variants = new MultiDict<int, int>(); var path = Path.Combine(Path.GetDirectoryName(typeof(UniHanData).Assembly.Location), settings.UnicodeZipFilename); using (var zip = ZipFile.OpenRead(path)) { using (var rd = new FieldReader(zip.GetEntry(settings.Unihan_IRGSources).Open(), '\t')) { string[] fields; while ((fields = rd.Read()) != null) { if (fields[1].StartsWith("kIRG_") && fields[1].EndsWith("Source")) { var code = int.Parse(fields[0].Substring(2), NumberStyles.HexNumber); Sources.Add(code, fields[2]); } else if (fields[1].EndsWith("Variant")) { var code = int.Parse(fields[0].Substring(2), NumberStyles.HexNumber); var vant = int.Parse(fields[2].Substring(2), NumberStyles.HexNumber); Variants.Add(code, vant); } } } using (var rd = new FieldReader(zip.GetEntry(settings.Unihon_OtherMappings).Open(), '\t')) { string[] fields; while ((fields = rd.Read()) != null) { var code = int.Parse(fields[0].Substring(2), NumberStyles.HexNumber); var mapping = fields[1].Substring(1) + "-" + fields[2].Replace(',', '-').Replace(':','-'); Mappings.Add(code, mapping); } } using (var rd = new FieldReader(zip.GetEntry(settings.Unihan_Variants).Open(), '\t')) { string[] fields; while ((fields = rd.Read()) != null) { var code = int.Parse(fields[0].Substring(2), NumberStyles.HexNumber); foreach (var v in fields[2].Split('\t', ' ', '<').Where(s => s.StartsWith("U+"))) { var vant = int.Parse(v.Substring(2), NumberStyles.HexNumber); Variants.Add(code, vant); } } } } }
static OtherData() { var settings = Properties.Settings.Default; var classes = new MultiDict<int, string>(); var reuser = new ObjectReuser<string>(); var path = Path.Combine(Path.GetDirectoryName(typeof(OtherData).Assembly.Location), settings.UnicodeZipFilename); using (var zip = ZipFile.OpenRead(path)) { using (var rd = new FieldReader(zip.GetEntry(settings.OtherAttribution).Open(), ';')) { string[] fields; while ((fields = rd.Read()) != null) { classes.Add(int.Parse(fields[0], System.Globalization.NumberStyles.HexNumber), reuser.Get(fields[1].Trim())); } } } Classes = classes; }
static OtherData() { var settings = Properties.Settings.Default; var classes = new MultiDict <int, string>(); var reuser = new ObjectReuser <string>(); var path = Path.Combine(Path.GetDirectoryName(typeof(OtherData).Assembly.Location), settings.UnicodeZipFilename); using (var zip = ZipFile.OpenRead(path)) { using (var rd = new FieldReader(zip.GetEntry(settings.OtherAttribution).Open(), ';')) { string[] fields; while ((fields = rd.Read()) != null) { classes.Add(int.Parse(fields[0], System.Globalization.NumberStyles.HexNumber), reuser.Get(fields[1].Trim())); } } } Classes = classes; }