From 4f03ba85d9221ec13a08452f42a40cc9b5fe7459 Mon Sep 17 00:00:00 2001 From: GoldenCrystal Date: Mon, 24 Nov 2014 00:24:55 +0100 Subject: [PATCH] Exposed cross-references, and added them to the UI. --- README.md | 3 +- UnicodeCharacterInspector/App.xaml | 2 + UnicodeCharacterInspector/BindableObject.cs | 3 - .../CharacterInfoViewModel.cs | 6 ++ .../CharacterInspectorViewModel.cs | 4 -- UnicodeCharacterInspector/MainWindow.xaml | 11 +++ .../NullToVisibilityConverter.cs | 4 -- UnicodeCharacterInspector/Placeholder.cs | 4 -- .../UnicodeCharacterInspector.csproj | 2 + .../Utf32ToDisplayTextConverter.cs | 20 ++++++ .../Utf32ToNameConverter.cs | 20 ++++++ .../ZeroToVisibilityConverter.cs | 4 -- UnicodeInformation.Builder/Program.cs | 4 +- .../UnicodeCharacterDataBuilder.cs | 16 ++--- .../UnicodeDataProcessor.cs | 8 +-- UnicodeInformation/BidirectionalClass.cs | 2 +- UnicodeInformation/UcdFields.cs | 2 +- UnicodeInformation/UnicodeCharInfo.cs | 3 +- UnicodeInformation/UnicodeCharacterData.cs | 6 +- .../UnicodeCrossReferenceCollection.cs | 70 +++++++++++++++++++ UnicodeInformation/UnicodeInfo.cs | 24 +++---- UnicodeInformation/UnicodeInformation.csproj | 1 + .../UnicodeNameAliasCollection.cs | 5 +- 23 files changed, 169 insertions(+), 55 deletions(-) create mode 100644 UnicodeCharacterInspector/Utf32ToDisplayTextConverter.cs create mode 100644 UnicodeCharacterInspector/Utf32ToNameConverter.cs create mode 100644 UnicodeInformation/UnicodeCrossReferenceCollection.cs diff --git a/README.md b/README.md index 80f3ff3..006fa6d 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ This library includes a subset of the official [Unicode Character Database](http * Bidi_Class * Decomposition_Type * Decomposition_Mapping -* Numeric_Type (*) +* Numeric_Type (See also kAccountingNumeric/kOtherNumeric/kPrimaryNumeric. Those will set Numeric_Type to Numeric.) * Numeric_Value * Bidi_Mirrored * Unicode_1_Name @@ -123,6 +123,7 @@ This library includes a subset of the official [Unicode Character Database](http * ID_Continue * XID_Start * XID_Continue +* Code point cross references extracted from NamesList.txt NB: The UCD property ISO_Comment will never be included since this one is empty in all new Unicode versions. diff --git a/UnicodeCharacterInspector/App.xaml b/UnicodeCharacterInspector/App.xaml index 5bbd14d..44d587c 100644 --- a/UnicodeCharacterInspector/App.xaml +++ b/UnicodeCharacterInspector/App.xaml @@ -7,5 +7,7 @@ + + diff --git a/UnicodeCharacterInspector/BindableObject.cs b/UnicodeCharacterInspector/BindableObject.cs index 3b1e359..9c12568 100644 --- a/UnicodeCharacterInspector/BindableObject.cs +++ b/UnicodeCharacterInspector/BindableObject.cs @@ -1,10 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; -using System.Linq; using System.Runtime.CompilerServices; -using System.Text; -using System.Threading.Tasks; namespace UnicodeCharacterInspector { diff --git a/UnicodeCharacterInspector/CharacterInfoViewModel.cs b/UnicodeCharacterInspector/CharacterInfoViewModel.cs index af756f5..0f9d631 100644 --- a/UnicodeCharacterInspector/CharacterInfoViewModel.cs +++ b/UnicodeCharacterInspector/CharacterInfoViewModel.cs @@ -67,6 +67,7 @@ namespace UnicodeCharacterInspector NotifyPropertyChanged(nameof(NumericValue)); NotifyPropertyChanged(nameof(ContributoryProperties)); NotifyPropertyChanged(nameof(CoreProperties)); + NotifyPropertyChanged(nameof(CrossReferences)); NotifyPropertyChanged(nameof(MandarinReading)); NotifyPropertyChanged(nameof(CantoneseReading)); NotifyPropertyChanged(nameof(JapaneseKunReading)); @@ -172,6 +173,11 @@ namespace UnicodeCharacterInspector get { return character != null ? characterInfo.CoreProperties : null as CoreProperties?; } } + public UnicodeCrossReferenceCollection CrossReferences + { + get { return character != null ? characterInfo.CrossRerefences : new UnicodeCrossReferenceCollection(); } + } + public string MandarinReading { get { return character != null ? characterInfo.MandarinReading : null; } diff --git a/UnicodeCharacterInspector/CharacterInspectorViewModel.cs b/UnicodeCharacterInspector/CharacterInspectorViewModel.cs index 9710725..b1ada28 100644 --- a/UnicodeCharacterInspector/CharacterInspectorViewModel.cs +++ b/UnicodeCharacterInspector/CharacterInspectorViewModel.cs @@ -2,10 +2,6 @@ using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Unicode; namespace UnicodeCharacterInspector diff --git a/UnicodeCharacterInspector/MainWindow.xaml b/UnicodeCharacterInspector/MainWindow.xaml index f0b5c1f..80cfb98 100644 --- a/UnicodeCharacterInspector/MainWindow.xaml +++ b/UnicodeCharacterInspector/MainWindow.xaml @@ -86,6 +86,7 @@ + @@ -144,6 +145,16 @@ + + + + + + • “” U+ + + + + diff --git a/UnicodeCharacterInspector/NullToVisibilityConverter.cs b/UnicodeCharacterInspector/NullToVisibilityConverter.cs index c27e4a0..6349b2f 100644 --- a/UnicodeCharacterInspector/NullToVisibilityConverter.cs +++ b/UnicodeCharacterInspector/NullToVisibilityConverter.cs @@ -1,9 +1,5 @@ using System; -using System.Collections.Generic; using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; using System.Windows.Data; diff --git a/UnicodeCharacterInspector/Placeholder.cs b/UnicodeCharacterInspector/Placeholder.cs index d416861..1556b21 100644 --- a/UnicodeCharacterInspector/Placeholder.cs +++ b/UnicodeCharacterInspector/Placeholder.cs @@ -1,13 +1,9 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Documents; -using System.Windows.Media; namespace UnicodeCharacterInspector { diff --git a/UnicodeCharacterInspector/UnicodeCharacterInspector.csproj b/UnicodeCharacterInspector/UnicodeCharacterInspector.csproj index da0b0d9..e622ee6 100644 --- a/UnicodeCharacterInspector/UnicodeCharacterInspector.csproj +++ b/UnicodeCharacterInspector/UnicodeCharacterInspector.csproj @@ -77,6 +77,8 @@ Placeholder.cs + + MainWindow.xaml diff --git a/UnicodeCharacterInspector/Utf32ToDisplayTextConverter.cs b/UnicodeCharacterInspector/Utf32ToDisplayTextConverter.cs new file mode 100644 index 0000000..950df55 --- /dev/null +++ b/UnicodeCharacterInspector/Utf32ToDisplayTextConverter.cs @@ -0,0 +1,20 @@ +using System; +using System.Globalization; +using System.Unicode; +using System.Windows.Data; + +namespace UnicodeCharacterInspector +{ + internal sealed class Utf32ToDisplayTextConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return value != null ? UnicodeInfo.GetDisplayText((int)value) : null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } + } +} diff --git a/UnicodeCharacterInspector/Utf32ToNameConverter.cs b/UnicodeCharacterInspector/Utf32ToNameConverter.cs new file mode 100644 index 0000000..e4d9d5f --- /dev/null +++ b/UnicodeCharacterInspector/Utf32ToNameConverter.cs @@ -0,0 +1,20 @@ +using System; +using System.Globalization; +using System.Unicode; +using System.Windows.Data; + +namespace UnicodeCharacterInspector +{ + internal sealed class Utf32ToNameConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return value != null ? UnicodeInfo.GetName((int)value) : null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotSupportedException(); + } + } +} diff --git a/UnicodeCharacterInspector/ZeroToVisibilityConverter.cs b/UnicodeCharacterInspector/ZeroToVisibilityConverter.cs index fe46568..e64c1c4 100644 --- a/UnicodeCharacterInspector/ZeroToVisibilityConverter.cs +++ b/UnicodeCharacterInspector/ZeroToVisibilityConverter.cs @@ -1,9 +1,5 @@ using System; -using System.Collections.Generic; using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; using System.Windows; using System.Windows.Data; diff --git a/UnicodeInformation.Builder/Program.cs b/UnicodeInformation.Builder/Program.cs index 1174058..6d1d8ab 100644 --- a/UnicodeInformation.Builder/Program.cs +++ b/UnicodeInformation.Builder/Program.cs @@ -21,8 +21,10 @@ namespace System.Unicode.Builder "UnicodeData.txt", "PropList.txt", "DerivedCoreProperties.txt", + //"Jamo.txt", // Not used right now, as the hangul syllable algorithm implementation takes care of this. + "NameAliases.txt", + "NamesList.txt", "Blocks.txt", - "Jamo.txt", }; public static readonly string[] unihanRequiredFiles = new[] diff --git a/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs b/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs index 863f394..ac33310 100644 --- a/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs +++ b/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs @@ -27,7 +27,7 @@ namespace System.Unicode.Builder private CoreProperties coreProperties; private readonly List nameAliases = new List(); - private readonly List relatedCodePoints = new List(); + private readonly List crossRerefences = new List(); public UnicodeCharacterRange CodePointRange { get { return codePointRange; } } @@ -124,7 +124,7 @@ namespace System.Unicode.Builder set { coreProperties = value; } } - public ICollection RelatedCodePoints { get { return relatedCodePoints; } } + public ICollection CrossRerefences { get { return crossRerefences; } } public UnicodeCharacterDataBuilder(int codePoint) : this(new UnicodeCharacterRange(codePoint)) @@ -158,7 +158,7 @@ namespace System.Unicode.Builder SimpleTitleCaseMapping, ContributoryProperties, CoreProperties, - RelatedCodePoints.Count > 0 ? RelatedCodePoints.ToArray() : null + CrossRerefences.Count > 0 ? CrossRerefences.ToArray() : null ); } @@ -184,7 +184,7 @@ namespace System.Unicode.Builder if (simpleTitleCaseMapping != null) fields |= UcdFields.SimpleTitleCaseMapping; if (contributoryProperties != 0) fields |= UcdFields.ContributoryProperties; if (coreProperties != 0) fields |= UcdFields.CoreProperties; - if (relatedCodePoints.Count > 0) fields |= UcdFields.RelatedCodePoints; + if (crossRerefences.Count > 0) fields |= UcdFields.CrossRerefences; writer.Write((ushort)fields); @@ -232,11 +232,11 @@ namespace System.Unicode.Builder if ((fields & UcdFields.SimpleTitleCaseMapping) != 0) writer.Write(simpleTitleCaseMapping); if ((fields & UcdFields.ContributoryProperties) != 0) writer.Write((int)contributoryProperties); if ((fields & UcdFields.CoreProperties) != 0) writer.WriteUInt24((int)coreProperties); - if ((fields & UcdFields.RelatedCodePoints) != 0) + if ((fields & UcdFields.CrossRerefences) != 0) { - writer.Write(checked((byte)(relatedCodePoints.Count - 1))); - foreach (int relatedCodePoint in relatedCodePoints) - writer.WriteCodePoint(relatedCodePoint); + writer.Write(checked((byte)(crossRerefences.Count - 1))); + foreach (int crossReference in crossRerefences) + writer.WriteCodePoint(crossReference); } } } diff --git a/UnicodeInformation.Builder/UnicodeDataProcessor.cs b/UnicodeInformation.Builder/UnicodeDataProcessor.cs index dbca7d8..e35693d 100644 --- a/UnicodeInformation.Builder/UnicodeDataProcessor.cs +++ b/UnicodeInformation.Builder/UnicodeDataProcessor.cs @@ -41,7 +41,7 @@ namespace System.Unicode.Builder await ProcessDerivedCorePropertiesFile(ucdSource, builder).ConfigureAwait(false); await ProcessNameAliasesFile(ucdSource, builder).ConfigureAwait(false); await ProcessNamesListFile(ucdSource, builder).ConfigureAwait(false); - await ProcessBlocksFile(ucdSource, builder).ConfigureAwait(false); + await ProcessBlocksFile(ucdSource, builder).ConfigureAwait(false); await ProcessUnihanReadings(unihanSource, builder).ConfigureAwait(false); await ProcessUnihanVariants(unihanSource, builder).ConfigureAwait(false); await ProcessUnihanNumericValues(unihanSource, builder).ConfigureAwait(false); @@ -255,12 +255,12 @@ namespace System.Unicode.Builder if (length < 0) length = line.Length; length -= 3; - characterData.RelatedCodePoints.Add(int.Parse(line.Substring(3, length), NumberStyles.HexNumber)); + characterData.CrossRerefences.Add(int.Parse(line.Substring(3, length), NumberStyles.HexNumber)); } else if (line[3] == '(') { bool hasBrackets = line[4] == '<'; - int codePointOffset = line.IndexOf(hasBrackets ? "> - " : "- ", 4); + int codePointOffset = line.IndexOf(hasBrackets ? "> - " : "- ", 4); if (codePointOffset < 0) throw new InvalidDataException(); codePointOffset += hasBrackets ? 4 : 2; @@ -269,7 +269,7 @@ namespace System.Unicode.Builder if (length < 0) throw new InvalidDataException(); length -= codePointOffset; - characterData.RelatedCodePoints.Add(int.Parse(line.Substring(codePointOffset, length), NumberStyles.HexNumber)); + characterData.CrossRerefences.Add(int.Parse(line.Substring(codePointOffset, length), NumberStyles.HexNumber)); } else throw new InvalidDataException(); } diff --git a/UnicodeInformation/BidirectionalClass.cs b/UnicodeInformation/BidirectionalClass.cs index 4d33df4..26105ac 100644 --- a/UnicodeInformation/BidirectionalClass.cs +++ b/UnicodeInformation/BidirectionalClass.cs @@ -26,7 +26,7 @@ namespace System.Unicode [ValueName("CS"), ValueName("Common_Separator"), Display(Name = "Common_Separator", Description = "commas, colons, and slashes")] CommonSeparator, [ValueName("NSM"), ValueName("Nonspacing_Mark"), Display(Name = "Nonspacing_Mark", Description = "any nonspacing mark")] - NonspacingMark, + NonSpacingMark, [ValueName("BN"), ValueName("Boundary_Neutral"), Display(Name = "Boundary_Neutral", Description = "most format characters, control codes, or noncharacters")] BoundaryNeutral, [ValueName("B"), ValueName("Paragraph_Separator"), Display(Name = "Paragraph_Separator", Description = "various newline characters")] diff --git a/UnicodeInformation/UcdFields.cs b/UnicodeInformation/UcdFields.cs index 0590f3e..8714ba4 100644 --- a/UnicodeInformation/UcdFields.cs +++ b/UnicodeInformation/UcdFields.cs @@ -36,6 +36,6 @@ namespace System.Unicode ContributoryProperties = 8192, CoreProperties = 16384, - RelatedCodePoints = 32768, + CrossRerefences = 32768, } } diff --git a/UnicodeInformation/UnicodeCharInfo.cs b/UnicodeInformation/UnicodeCharInfo.cs index 4625c35..4e133cc 100644 --- a/UnicodeInformation/UnicodeCharInfo.cs +++ b/UnicodeInformation/UnicodeCharInfo.cs @@ -36,6 +36,7 @@ namespace System.Unicode public string SimpleTitleCaseMapping { get { return unicodeCharacterData?.SimpleTitleCaseMapping; } } public ContributoryProperties ContributoryProperties { get { return unicodeCharacterData?.ContributoryProperties ?? 0; } } public CoreProperties CoreProperties { get { return unicodeCharacterData?.CoreProperties ?? 0; } } + public UnicodeCrossReferenceCollection CrossRerefences { get { return new UnicodeCrossReferenceCollection(unicodeCharacterData?.CrossRerefences); } } public string Definition { get { return unihanCharacterData?.Definition; } } public string MandarinReading { get { return unihanCharacterData?.MandarinReading; } } @@ -53,7 +54,7 @@ namespace System.Unicode { this.codePoint = codePoint; this.name = UnicodeInfo.GetName(codePoint, unicodeCharacterData); - this.unicodeCharacterData = unicodeCharacterData; + this.unicodeCharacterData = unicodeCharacterData; this.unihanCharacterData = unihanCharacterData; this.block = block; } diff --git a/UnicodeInformation/UnicodeCharacterData.cs b/UnicodeInformation/UnicodeCharacterData.cs index 73c66a2..c021b6c 100644 --- a/UnicodeInformation/UnicodeCharacterData.cs +++ b/UnicodeInformation/UnicodeCharacterData.cs @@ -27,7 +27,7 @@ namespace System.Unicode public readonly ContributoryProperties ContributoryProperties; public readonly CoreProperties CoreProperties; - public readonly int[] RelatedCodePoints; // NB: It seems that parsing NamesList is required in order to provide data for this field ? + public readonly int[] CrossRerefences; // NB: It seems that parsing NamesList is required in order to provide data for this field ? internal UnicodeCharacterData ( @@ -48,7 +48,7 @@ namespace System.Unicode string simpleTitleCaseMapping, ContributoryProperties contributoryProperties, CoreProperties coreProperties, - int[] relatedCodePoints + int[] crossRerefences ) { this.CodePointRange = codePointRange; @@ -68,7 +68,7 @@ namespace System.Unicode this.SimpleTitleCaseMapping = simpleTitleCaseMapping; this.ContributoryProperties = contributoryProperties; this.CoreProperties = coreProperties; - this.RelatedCodePoints = relatedCodePoints; + this.CrossRerefences = crossRerefences; } public UnicodeRationalNumber? NumericValue { get { return NumericType != UnicodeNumericType.None ? numericValue : null as UnicodeRationalNumber?; } } diff --git a/UnicodeInformation/UnicodeCrossReferenceCollection.cs b/UnicodeInformation/UnicodeCrossReferenceCollection.cs new file mode 100644 index 0000000..0633bef --- /dev/null +++ b/UnicodeInformation/UnicodeCrossReferenceCollection.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace System.Unicode +{ + public struct UnicodeCrossReferenceCollection : IList + { + private static int[] EmptyArray = new int[0]; + + public struct Enumerator : IEnumerator + { + private readonly int[] items; + private int index; + + internal Enumerator(int[] items) + { + this.items = items; + this.index = -1; + } + + public void Dispose() { } + + public int Current { get { return items[index]; } } + object IEnumerator.Current { get { return Current; } } + + public bool MoveNext() { return index < items.Length && ++index < items.Length; } + + void IEnumerator.Reset() { this.index = -1; } + } + + private readonly int[] items; + + public UnicodeCrossReferenceCollection() { items = EmptyArray; } + internal UnicodeCrossReferenceCollection(int[] items) { this.items = items ?? EmptyArray; } + + public int this[int index] { get { return items[index]; } } + + int IList.this[int index] + { + get { return items[index]; } + set { throw new NotSupportedException(); } + } + + public int Count { get { return items.Length; } } + + bool ICollection.IsReadOnly { get { return true; } } + + public void Add(int item) { throw new NotSupportedException(); } + public void Insert(int index, int item) { throw new NotSupportedException(); } + + public bool Remove(int item) { throw new NotSupportedException(); } + public void RemoveAt(int index) { throw new NotSupportedException(); } + + public void Clear() { throw new NotSupportedException(); } + + public int IndexOf(int item) { return Array.IndexOf(items, item); } + public bool Contains(int item) { return IndexOf(item) >= 0; } + + public void CopyTo(int[] array, int arrayIndex) { items.CopyTo(array, arrayIndex); } + + public Enumerator GetEnumerator() { return new Enumerator(items); } + + IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } + IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } + } +} diff --git a/UnicodeInformation/UnicodeInfo.cs b/UnicodeInformation/UnicodeInfo.cs index 8135890..9afcd5f 100644 --- a/UnicodeInformation/UnicodeInfo.cs +++ b/UnicodeInformation/UnicodeInfo.cs @@ -14,7 +14,7 @@ namespace System.Unicode { public const string DefaultBlock = "No_Block"; - private static readonly Version unicodeVersion; + private static readonly Version unicodeVersion; private static readonly UnicodeCharacterData[] unicodeCharacterData; private static readonly UnihanCharacterData[] unihanCharacterData; private static readonly UnicodeBlock[] blocks; @@ -34,7 +34,7 @@ namespace System.Unicode { int i; - if (reader.ReadByte() != 'U' + if (reader.ReadByte() != 'U' | reader.ReadByte() != 'C' | reader.ReadByte() != 'D') throw new InvalidDataException(); @@ -57,7 +57,7 @@ namespace System.Unicode ++i; break; } - } + } maxContiguousIndex = mci; @@ -102,7 +102,7 @@ namespace System.Unicode int length = reader.ReadByte(); byte @case = (byte)(length & 0xC0); - if (@case < 0x80) // Handles the case where only the name is present. + if (@case < 0x80) // Handles the case where only the name is present. { length = (length & 0x7F) + 1; if (reader.Read(nameBuffer, 0, length) != length) throw new EndOfStreamException(); @@ -143,13 +143,13 @@ namespace System.Unicode string simpleTitleCaseMapping = (fields & UcdFields.SimpleTitleCaseMapping) != 0 ? reader.ReadString() : null; ContributoryProperties contributoryProperties = (fields & UcdFields.ContributoryProperties) != 0 ? (ContributoryProperties)reader.ReadInt32() : 0; CoreProperties coreProperties = (fields & UcdFields.CoreProperties) != 0 ? (CoreProperties)ReadInt24(reader) : 0; - int[] relatedCodePoints = (fields & UcdFields.RelatedCodePoints) != 0 ? new int[reader.ReadByte() + 1] : null; + int[] crossReferences = (fields & UcdFields.CrossRerefences) != 0 ? new int[reader.ReadByte() + 1] : null; - if (relatedCodePoints != null) + if (crossReferences != null) { - for (int i = 0; i < relatedCodePoints.Length; ++i) - relatedCodePoints[i] = ReadCodePoint(reader); - } + for (int i = 0; i < crossReferences.Length; ++i) + crossReferences[i] = ReadCodePoint(reader); + } return new UnicodeCharacterData ( @@ -170,7 +170,7 @@ namespace System.Unicode simpleTitleCaseMapping, contributoryProperties, coreProperties, - relatedCodePoints + crossReferences ); } @@ -364,7 +364,7 @@ namespace System.Unicode { if (HangulInfo.IsHangul(codePoint)) return HangulInfo.GetHangulName((char)codePoint); else return GetName(codePoint, FindUnicodeCodePoint(codePoint)); - } + } internal static string GetName(int codePoint, UnicodeCharacterData characterData) { @@ -372,7 +372,7 @@ namespace System.Unicode else if (HangulInfo.IsHangul(codePoint)) return HangulInfo.GetHangulName((char)codePoint); else if (characterData.Name != null) return characterData.Name + "-" + codePoint.ToString("X4"); else return null; - } + } public static UnicodeBlock[] GetBlocks() { diff --git a/UnicodeInformation/UnicodeInformation.csproj b/UnicodeInformation/UnicodeInformation.csproj index 0dde299..2cf390d 100644 --- a/UnicodeInformation/UnicodeInformation.csproj +++ b/UnicodeInformation/UnicodeInformation.csproj @@ -66,6 +66,7 @@ + diff --git a/UnicodeInformation/UnicodeNameAliasCollection.cs b/UnicodeInformation/UnicodeNameAliasCollection.cs index 3770c35..c33a427 100644 --- a/UnicodeInformation/UnicodeNameAliasCollection.cs +++ b/UnicodeInformation/UnicodeNameAliasCollection.cs @@ -58,10 +58,7 @@ namespace System.Unicode public int IndexOf(UnicodeNameAlias item) { return Array.IndexOf(items, item); } public bool Contains(UnicodeNameAlias item) { return IndexOf(item) >= 0; } - public void CopyTo(UnicodeNameAlias[] array, int arrayIndex) - { - throw new NotImplementedException(); - } + public void CopyTo(UnicodeNameAlias[] array, int arrayIndex) { items.CopyTo(array, arrayIndex); } public Enumerator GetEnumerator() { return new Enumerator(items); }