diff --git a/UnicodeCharacterInspector/CharacterInfoViewModel.cs b/UnicodeCharacterInspector/CharacterInfoViewModel.cs
index b71a70f..27d23d7 100644
--- a/UnicodeCharacterInspector/CharacterInfoViewModel.cs
+++ b/UnicodeCharacterInspector/CharacterInfoViewModel.cs
@@ -12,7 +12,7 @@ namespace UnicodeCharacterInspector
{
private string character;
private int codePoint;
- private UnicodeCharacterData characterData = UnicodeData.Default.Get(0);
+ private UnicodeCharInfo characterInfo = UnicodeInfo.Default.Get(0);
public CharacterInfoViewModel()
{
@@ -40,12 +40,12 @@ namespace UnicodeCharacterInspector
if ((character = value) != null)
{
codePoint = char.ConvertToUtf32(character, 0);
- characterData = UnicodeData.Default.Get(codePoint);
+ characterInfo = UnicodeInfo.Default.Get(codePoint);
}
else
{
codePoint = 0;
- characterData = UnicodeData.Default.Get(0);
+ characterInfo = UnicodeInfo.Default.Get(0);
}
NotifyPropertyChanged();
@@ -71,52 +71,52 @@ namespace UnicodeCharacterInspector
public string Name
{
- get { return character != null && characterData != null ? characterData.Name : null; }
+ get { return character != null ? characterInfo.Name : null; }
}
public string OldName
{
- get { return character != null && characterData != null ? characterData.OldName : null; }
+ get { return character != null ? characterInfo.OldName : null; }
}
public UnicodeCategory? Category
{
- get { return character != null ? characterData != null ? characterData.Category : UnicodeCategory.OtherNotAssigned : null as UnicodeCategory?; }
+ get { return character != null ? characterInfo.Category : null as UnicodeCategory?; }
}
public CanonicalCombiningClass? CanonicalCombiningClass
{
- get { return character != null ? characterData != null ? characterData.CanonicalCombiningClass : 0 : null as CanonicalCombiningClass?; }
+ get { return character != null ? characterInfo.CanonicalCombiningClass : null as CanonicalCombiningClass?; }
}
public BidirectionalClass? BidirectionalClass
{
- get { return character != null && characterData != null ? characterData.BidirectionalClass : null as BidirectionalClass?; }
+ get { return character != null ? characterInfo.BidirectionalClass : null as BidirectionalClass?; }
}
public CompatibilityFormattingTag? DecompositionType
{
- get { return character != null && characterData != null && characterData.DecompositionMapping != null ? characterData.DecompositionType : null as CompatibilityFormattingTag?; }
+ get { return character != null && characterInfo.DecompositionMapping != null ? characterInfo.DecompositionType : null as CompatibilityFormattingTag?; }
}
public string DecompositionMapping
{
- get { return character != null && characterData != null ? characterData.DecompositionMapping : null; }
+ get { return character != null ? characterInfo.DecompositionMapping : null; }
}
public UnicodeNumericType? NumericType
{
- get { return character != null ? characterData != null ? characterData.NumericType : UnicodeNumericType.None : null as UnicodeNumericType?; }
+ get { return character != null ? characterInfo.NumericType : null as UnicodeNumericType?; }
}
public UnicodeRationalNumber? NumericValue
{
- get { return character != null && characterData != null && characterData.NumericType != UnicodeNumericType.None ? characterData.NumericValue : null as UnicodeRationalNumber?; }
+ get { return character != null && characterInfo.NumericType != UnicodeNumericType.None ? characterInfo.NumericValue : null as UnicodeRationalNumber?; }
}
public ContributoryProperties? ContributoryProperties
{
- get { return character != null ? characterData != null ? characterData.ContributoryProperties : 0 : null as ContributoryProperties?; }
+ get { return character != null ? characterInfo.ContributoryProperties : null as ContributoryProperties?; }
}
}
}
diff --git a/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs b/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs
index 3f300f1..2ecd93d 100644
--- a/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs
+++ b/UnicodeInformation.Builder/UnicodeCharacterDataBuilder.cs
@@ -127,7 +127,7 @@ namespace System.Unicode.Builder
this.category = UnicodeCategory.OtherNotAssigned;
}
- public UnicodeCharacterData ToCharacterData()
+ internal UnicodeCharacterData ToCharacterData()
{
return new UnicodeCharacterData
(
diff --git a/UnicodeInformation.Builder/UnicodeDataBuilder.cs b/UnicodeInformation.Builder/UnicodeDataBuilder.cs
index 69d94c2..53138bc 100644
--- a/UnicodeInformation.Builder/UnicodeDataBuilder.cs
+++ b/UnicodeInformation.Builder/UnicodeDataBuilder.cs
@@ -121,14 +121,14 @@ namespace System.Unicode.Builder
}
}
- public UnicodeData ToUnicodeData()
+ public UnicodeInfo ToUnicodeData()
{
var finalData = new UnicodeCharacterData[entryCount];
for (int i = 0; i < finalData.Length; ++i)
finalData[i] = entries[i].ToCharacterData();
- return new UnicodeData(unicodeVersion, finalData);
+ return new UnicodeInfo(unicodeVersion, finalData);
}
public void WriteToStream(Stream stream)
diff --git a/UnicodeInformation.Tests/UnicodeDataManagerTests.cs b/UnicodeInformation.Tests/UnicodeDataManagerTests.cs
index 578527f..4f4f20e 100644
--- a/UnicodeInformation.Tests/UnicodeDataManagerTests.cs
+++ b/UnicodeInformation.Tests/UnicodeDataManagerTests.cs
@@ -40,7 +40,7 @@ namespace System.Unicode.Tests
var data = (await UnicodeDataManager.BuildDataAsync(source)).ToUnicodeData();
- Assert.AreEqual((int)'\t', data.Get('\t').CodePointRange.FirstCodePoint);
+ Assert.AreEqual((int)'\t', data.Get('\t').CodePoint);
}
[TestMethod]
@@ -57,7 +57,7 @@ namespace System.Unicode.Tests
using (var stream = new DeflateStream(File.OpenRead("ucd.dat"), CompressionMode.Decompress, false))
{
- var readData = UnicodeData.FromStream(stream);
+ var readData = UnicodeInfo.FromStream(stream);
Assert.AreEqual((int)'\t', data.Get('\t').CodePointRange.FirstCodePoint);
}
@@ -76,7 +76,7 @@ namespace System.Unicode.Tests
writer.WriteCodePoint(i);
writer.Flush();
stream.Position = 0;
- Assert.AreEqual(i, UnicodeData.ReadCodePoint(reader));
+ Assert.AreEqual(i, UnicodeInfo.ReadCodePoint(reader));
stream.Position = 0;
}
}
diff --git a/UnicodeInformation/UnicodeCharInfo.cs b/UnicodeInformation/UnicodeCharInfo.cs
new file mode 100644
index 0000000..c06e323
--- /dev/null
+++ b/UnicodeInformation/UnicodeCharInfo.cs
@@ -0,0 +1,47 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace System.Unicode
+{
+ public struct UnicodeCharInfo
+ {
+ private readonly int codePoint;
+ private readonly UnicodeCharacterData characterData;
+
+ public int CodePoint { get { return codePoint; } }
+
+ public string Name
+ {
+ get
+ {
+ return characterData.Name == null || characterData.CodePointRange.IsSingleCodePoint ?
+ characterData.Name :
+ characterData.Name + "-" + codePoint.ToString("X4");
+ }
+ }
+
+ public UnicodeCategory Category { get { return characterData.Category; } }
+ public CanonicalCombiningClass CanonicalCombiningClass { get { return characterData.CanonicalCombiningClass; } }
+ public BidirectionalClass BidirectionalClass { get { return characterData.BidirectionalClass; } }
+ public CompatibilityFormattingTag DecompositionType { get { return characterData.DecompositionType; } }
+ public string DecompositionMapping { get { return characterData.DecompositionMapping; } }
+ public UnicodeNumericType NumericType { get { return characterData.NumericType; } }
+ public UnicodeRationalNumber? NumericValue { get { return characterData.NumericValue; } }
+ public bool BidirectionalMirrored { get { return characterData.BidirectionalMirrored; } }
+ public string OldName { get { return characterData.OldName; } }
+ public string SimpleUpperCaseMapping { get { return characterData.SimpleUpperCaseMapping; } }
+ public string SimpleLowerCaseMapping { get { return characterData.SimpleLowerCaseMapping; } }
+ public string SimpleTitleCaseMapping { get { return characterData.SimpleTitleCaseMapping; } }
+ public ContributoryProperties ContributoryProperties { get { return characterData.ContributoryProperties; } }
+
+ internal UnicodeCharInfo(int codePoint, UnicodeCharacterData characterData)
+ {
+ this.codePoint = codePoint;
+ this.characterData = characterData;
+ }
+ }
+}
diff --git a/UnicodeInformation/UnicodeCharacterData.cs b/UnicodeInformation/UnicodeCharacterData.cs
index c99f7e9..3579f06 100644
--- a/UnicodeInformation/UnicodeCharacterData.cs
+++ b/UnicodeInformation/UnicodeCharacterData.cs
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace System.Unicode
{
- public sealed class UnicodeCharacterData
+ internal sealed class UnicodeCharacterData
{
public readonly UnicodeCharacterRange CodePointRange;
public readonly string Name;
diff --git a/UnicodeInformation/UnicodeData.cs b/UnicodeInformation/UnicodeInfo.cs
similarity index 89%
rename from UnicodeInformation/UnicodeData.cs
rename to UnicodeInformation/UnicodeInfo.cs
index 147b165..7a2cdd5 100644
--- a/UnicodeInformation/UnicodeData.cs
+++ b/UnicodeInformation/UnicodeInfo.cs
@@ -10,14 +10,14 @@ using System.Threading.Tasks;
namespace System.Unicode
{
- public sealed class UnicodeData
+ public sealed class UnicodeInfo
{
- private static readonly UnicodeData @default = ReadEmbeddedUnicodeData();
- public static UnicodeData Default { get { return @default; } }
+ private static readonly UnicodeInfo @default = ReadEmbeddedUnicodeData();
+ public static UnicodeInfo Default { get { return @default; } }
- private static UnicodeData ReadEmbeddedUnicodeData()
+ private static UnicodeInfo ReadEmbeddedUnicodeData()
{
- using (var stream = new DeflateStream(typeof(UnicodeData).GetTypeInfo().Assembly.GetManifestResourceStream("System.Unicode.ucd.dat"), CompressionMode.Decompress, false))
+ using (var stream = new DeflateStream(typeof(UnicodeInfo).GetTypeInfo().Assembly.GetManifestResourceStream("System.Unicode.ucd.dat"), CompressionMode.Decompress, false))
{
return FromStream(stream);
}
@@ -26,7 +26,7 @@ namespace System.Unicode
private readonly Version unicodeVersion;
private readonly UnicodeCharacterData[] characterData;
- public static UnicodeData FromStream(Stream stream)
+ public static UnicodeInfo FromStream(Stream stream)
{
using (var reader = new BinaryReader(stream, Encoding.UTF8))
{
@@ -50,7 +50,7 @@ namespace System.Unicode
entries[i] = ReadEntry(reader);
}
- return new UnicodeData(unicodeVersion, entries);
+ return new UnicodeInfo(unicodeVersion, entries);
}
}
@@ -120,7 +120,7 @@ namespace System.Unicode
}
}
- internal UnicodeData(Version unicodeVersion, UnicodeCharacterData[] characterData)
+ internal UnicodeInfo(Version unicodeVersion, UnicodeCharacterData[] characterData)
{
this.unicodeVersion = unicodeVersion;
this.characterData = characterData;
@@ -147,9 +147,9 @@ namespace System.Unicode
return null;
}
- public UnicodeCharacterData Get(int codePoint)
+ public UnicodeCharInfo Get(int codePoint)
{
- return FindCodePoint(codePoint);
+ return new UnicodeCharInfo(codePoint, FindCodePoint(codePoint));
}
}
}
diff --git a/UnicodeInformation/UnicodeInformation.csproj b/UnicodeInformation/UnicodeInformation.csproj
index fbc463b..014632a 100644
--- a/UnicodeInformation/UnicodeInformation.csproj
+++ b/UnicodeInformation/UnicodeInformation.csproj
@@ -70,7 +70,8 @@
-
+
+