Skip to content

Commit

Permalink
Validate WritingSystemIds on creation
Browse files Browse the repository at this point in the history
Special ID "default" is allowed, all other writing system IDs must be
considered valid by the SIL.WritingSystems validation logic.
  • Loading branch information
rmunn committed Nov 12, 2024
1 parent 502df9d commit ae38cfc
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
1 change: 1 addition & 0 deletions backend/FwLite/MiniLcm/MiniLcm.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="SIL.WritingSystems" Version="14.2.0-beta*" />
<PackageReference Include="System.Text.Json" Version="8.0.5" />
<PackageReference Include="SystemTextJsonPatch" Version="3.2.1" />
</ItemGroup>
Expand Down
18 changes: 17 additions & 1 deletion backend/FwLite/MiniLcm/Models/WritingSystemId.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using System.Text.Json;
using System.Text.Json.Serialization;
using SIL.WritingSystems;

namespace MiniLcm.Models;

Expand All @@ -26,11 +27,26 @@ public override void WriteAsPropertyName(Utf8JsonWriter writer, WritingSystemId
}

[JsonConverter(typeof(WritingSystemIdJsonConverter))]
public readonly record struct WritingSystemId(string Code): ISpanFormattable, ISpanParsable<WritingSystemId>
public readonly record struct WritingSystemId: ISpanFormattable, ISpanParsable<WritingSystemId>
{
public string Code { get; init; }

public WritingSystemId(string code)
{
if (code == "default" || IetfLanguageTag.IsValid(code))
{
Code = code;
}
else
{
throw new ArgumentException($"Invalid writing system ID {code}", nameof(code));
}
}

public static implicit operator string(WritingSystemId ws) => ws.Code;
public static implicit operator WritingSystemId(string code) => new(code);
public static implicit operator WritingSystemId(ReadOnlySpan<char> code) => new(new string(code));

public override string ToString()
{
return Code;
Expand Down

0 comments on commit ae38cfc

Please sign in to comment.