public MapBuild(UcdLoader loader) { _loader = loader; loader.EnsureDataLoaded(); var iocMap = _iocMap = new Dictionary <int, int>(); foreach (var line in File.ReadLines(@"../../bin/OrdinalIgnoreCase.txt")) { var s = line.Split(new[] { ' ' }, 3); if (int.TryParse(s[0], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int from) && int.TryParse(s[1], NumberStyles.HexNumber, CultureInfo.InvariantCulture, out int to)) { iocMap.Add(from, to); } } }
public TestCompEq(UcdLoader loader) { _loader = loader; List <string> list = new List <string>(); List <int> listPoint = new List <int>(); foreach (var point in loader.GetCodePoints()) { if (point.CodeValue == 0 || (point.CodeValue >= 0xD800 && point.CodeValue <= 0xDFFF)) { continue; } list.Add(point.ToString()); listPoint.Add(point.CodeValue); } _allStrings = list.ToArray(); _allPoints = listPoint.ToArray(); }
public ScannerMapBuilder(UcdLoader loader) { _loader = loader; foreach (UcdBlock block in loader.Blocks) { switch (block.Block) { case Block.HighSurrogates: case Block.HighPrivateUseSurrogates: case Block.LowSurrogates: case Block.PrivateUseArea: case Block.SupplementaryPrivateUseAreaA: case Block.SupplementaryPrivateUseAreaB: continue; } _list.Clear(); foreach (UnicodeEntry entry in loader.GetCodePoints(block)) { CodeEntry code; code.CodePoint = entry.CodeValue; switch (entry.Category) { case UnicodeCharacterType.LetterUppercase: case UnicodeCharacterType.LetterLowercase: case UnicodeCharacterType.LetterTitlecase: case UnicodeCharacterType.LetterModifier: case UnicodeCharacterType.LetterOther: break; default: continue; } if (entry.DecomposingLength > 0) { int val = GetDecomposed(entry.CodeValue, true); } } } }
public HashCodeTest(UcdLoader loader) { _loader = loader; List <string> list = new List <string>(); List <int> listPoint = new List <int>(); List <int[]> listPoints = new List <int[]>(); StringBuilder b = new StringBuilder(); int len = 0; foreach (var point in loader.GetCodePoints()) { if (point.CodeValue == 0) { continue; } point.AppendCharTo(b); listPoint.Add(point.CodeValue); len++; if (len == 10) { len = 0; list.Add(b.ToString()); listPoints.Add(listPoint.ToArray()); b.Clear(); listPoint.Clear(); } } if (b.Length > 0) { list.Add(b.ToString()); listPoints.Add(listPoint.ToArray()); } _allStrings = list.ToArray(); _allPoints = listPoints.ToArray(); }
public ScannerMapBuilder(UcdLoader loader) { _loader = loader; }
public TableBuilder(UcdLoader loader) { _loader = loader; var list = new List <CodeEntry>(); //foreach ( var entry in loader.GetCodePoints() ) { // all[ entry.CodeValue ] = entry.ToString(); //} var blocks = new List <BlockEntry>(); var decomposing = new List <int>(); var builder = new StringBuilder(); string GetDecomposed(int codePoint, bool cascade) { decomposing.Clear(); loader.AddDecomposing(codePoint, decomposing, cascade); if (decomposing.Count <= 1) { // accept only multi-code point decombosions return(null); } builder.Clear(); foreach (int code in decomposing) { var entry = loader[code]; if (entry.CodeValue == 0) { return(null); } entry.AppendCharTo(builder); } return(builder.ToString()); } foreach (UcdBlock block in loader.Blocks) { switch (block.Block) { case Block.HighSurrogates: case Block.HighPrivateUseSurrogates: case Block.LowSurrogates: case Block.PrivateUseArea: case Block.SupplementaryPrivateUseAreaA: case Block.SupplementaryPrivateUseAreaB: continue; } list.Clear(); foreach (UnicodeEntry entry in loader.GetCodePoints(block)) { list.Add(new CodeEntry(entry.CodeValue, entry.ToString())); if (entry.DecomposingLength > 0) { string decomp = GetDecomposed(entry.CodeValue, true); if (decomp != null) { list.Add(new CodeEntry(entry.CodeValue, decomp, 2)); string decomp2 = GetDecomposed(entry.CodeValue, false); if (decomp2 != null && decomp2 != decomp) { list.Add(new CodeEntry(entry.CodeValue, decomp2, 1)); } } } } blocks.Add(new BlockEntry() { Block = block, Entries = list.ToArray() }); } _allBlocks = blocks.ToArray(); }