Refactored the code a bit: renamed UnicodeData to UnicodeInfo, and exposed an intermediate UnicodeCharInfo type instead of UnicodeCharacterData.
This commit is contained in:
@@ -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?; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ namespace System.Unicode.Builder
|
||||
this.category = UnicodeCategory.OtherNotAssigned;
|
||||
}
|
||||
|
||||
public UnicodeCharacterData ToCharacterData()
|
||||
internal UnicodeCharacterData ToCharacterData()
|
||||
{
|
||||
return new UnicodeCharacterData
|
||||
(
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -70,7 +70,8 @@
|
||||
<Compile Include="UnicodeCategoryInfo.cs" />
|
||||
<Compile Include="UnicodeCharacterData.cs" />
|
||||
<Compile Include="UnicodeCharacterRange.cs" />
|
||||
<Compile Include="UnicodeData.cs" />
|
||||
<Compile Include="UnicodeCharInfo.cs" />
|
||||
<Compile Include="UnicodeInfo.cs" />
|
||||
<Compile Include="UnicodeNumericType.cs" />
|
||||
<Compile Include="ValueNameAttribute.cs" />
|
||||
<Compile Include="UnicodeRationalNumber.cs" />
|
||||
|
||||
Reference in New Issue
Block a user