diff --git a/.github/workflows/merge-bot-pr.yml b/.github/workflows/merge-bot-pr.yml index a6688fc..2ac8d07 100644 --- a/.github/workflows/merge-bot-pr.yml +++ b/.github/workflows/merge-bot-pr.yml @@ -25,7 +25,7 @@ jobs: with: github-token: "${{ secrets.GITHUB_TOKEN }}" - - name: Merge dependabot non-major updates + - name: Merge PR if: steps.metadata.outputs.update-type != 'version-update:semver-major' run: gh pr merge --auto --merge "$PR_URL" env: @@ -33,7 +33,7 @@ jobs: GH_TOKEN: ${{secrets.GITHUB_TOKEN}} merge-languagedata: - name: Merge language data PR's + name: Merge language data PRs runs-on: ubuntu-latest if: github.actor == 'github-actions[bot]' && github.event.pull_request.base.ref == 'update-languagedata' permissions: @@ -42,7 +42,7 @@ jobs: steps: - - name: Merge language data PRs + - name: Merge PR run: gh pr merge --auto --merge "$PR_URL" env: PR_URL: ${{github.event.pull_request.html_url}} diff --git a/.github/workflows/publish-release.yml b/.github/workflows/publish-release.yml index f48e09f..a7450cf 100644 --- a/.github/workflows/publish-release.yml +++ b/.github/workflows/publish-release.yml @@ -12,7 +12,8 @@ concurrency: jobs: test: - uses: ./.github/workflows/test.yml + name: Run tests + uses: ./.github/workflows/test-task.yml secrets: inherit publish: diff --git a/.github/workflows/test-pr.yml b/.github/workflows/test-pr.yml index 17cd413..06d78fd 100644 --- a/.github/workflows/test-pr.yml +++ b/.github/workflows/test-pr.yml @@ -12,5 +12,6 @@ concurrency: jobs: test: - uses: ./.github/workflows/test.yml + name: Run tests + uses: ./.github/workflows/test-task.yml secrets: inherit diff --git a/.github/workflows/test.yml b/.github/workflows/test-task.yml similarity index 100% rename from .github/workflows/test.yml rename to .github/workflows/test-task.yml diff --git a/LanguageTags/Iso6392Data.cs b/LanguageTags/Iso6392Data.cs index 9876e7f..3238713 100644 --- a/LanguageTags/Iso6392Data.cs +++ b/LanguageTags/Iso6392Data.cs @@ -15,7 +15,7 @@ public partial class Iso6392Data internal static void WriteFile(string fileName, string value) { // Always write as CRLF with newline at the end - if (Environment.NewLine != "\r\n") + if (value.Contains('\n') && !value.Contains('\r')) { value = value.Replace("\n", "\r\n"); } @@ -77,73 +77,89 @@ public static void SaveJson(string fileName, Iso6392Data iso6392) => public static void GenCode(string fileName, Iso6392Data iso6392) { StringBuilder stringBuilder = new(); - _ = stringBuilder.AppendLine( - """ - // This file is generated by LanguageTagsCreate + _ = stringBuilder + .Append( + """ + // This file is generated by LanguageTagsCreate - namespace ptr727.LanguageTags; + namespace ptr727.LanguageTags; - public partial class Iso6392Data - { - public static Iso6392Data Create() => - new() - { - RecordList = - [ - """ - ); + public partial class Iso6392Data + { + public static Iso6392Data Create() => + new() + { + RecordList = + [ + """ + ) + .Append("\r\n"); foreach (Record record in iso6392.RecordList) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $$""" - new() - { - """ - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $$""" + new() + { + """ + ) + .Append("\r\n"); if (!string.IsNullOrEmpty(record.Part2B)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Part2B = \"{record.Part2B}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Part2B = \"{record.Part2B}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Part2T)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Part2T = \"{record.Part2T}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Part2T = \"{record.Part2T}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Part1)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Part1 = \"{record.Part1}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Part1 = \"{record.Part1}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.RefName)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" RefName = \"{record.RefName}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" RefName = \"{record.RefName}\"," + ) + .Append("\r\n"); } - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $$""" - }, - """ - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $$""" + }, + """ + ) + .Append("\r\n"); } - _ = stringBuilder.AppendLine( - """ - ], - }; - } - """ - ); + _ = stringBuilder + .Append( + """ + ], + }; + } + """ + ) + .Append("\r\n"); WriteFile(fileName, stringBuilder.ToString()); } diff --git a/LanguageTags/Iso6393Data.cs b/LanguageTags/Iso6393Data.cs index 7ade979..b58d7a9 100644 --- a/LanguageTags/Iso6393Data.cs +++ b/LanguageTags/Iso6393Data.cs @@ -80,100 +80,124 @@ public static void SaveJson(string fileName, Iso6393Data iso6393) => public static void GenCode(string fileName, Iso6393Data iso6393) { StringBuilder stringBuilder = new(); - _ = stringBuilder.AppendLine( - """ - // This file is generated by LanguageTagsCreate + _ = stringBuilder + .Append( + """ + // This file is generated by LanguageTagsCreate - namespace ptr727.LanguageTags; + namespace ptr727.LanguageTags; - public partial class Iso6393Data - { - public static Iso6393Data Create() => - new() - { - RecordList = - [ - """ - ); + public partial class Iso6393Data + { + public static Iso6393Data Create() => + new() + { + RecordList = + [ + """ + ) + .Append("\r\n"); foreach (Record record in iso6393.RecordList) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $$""" - new() - { - """ - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $$""" + new() + { + """ + ) + .Append("\r\n"); if (!string.IsNullOrEmpty(record.Id)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Id = \"{record.Id}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Id = \"{record.Id}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Part2B)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Part2B = \"{record.Part2B}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Part2B = \"{record.Part2B}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Part2T)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Part2T = \"{record.Part2T}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Part2T = \"{record.Part2T}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Part1)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Part1 = \"{record.Part1}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Part1 = \"{record.Part1}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Scope)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Scope = \"{record.Scope}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Scope = \"{record.Scope}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.LanguageType)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" LanguageType = \"{record.LanguageType}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" LanguageType = \"{record.LanguageType}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.RefName)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" RefName = \"{record.RefName}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" RefName = \"{record.RefName}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Comment)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Comment = \"{record.Comment}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Comment = \"{record.Comment}\"," + ) + .Append("\r\n"); } - _ = stringBuilder.AppendLine( + _ = stringBuilder + .Append( + """ + }, + """ + ) + .Append("\r\n"); + } + _ = stringBuilder + .Append( """ - }, + ], + }; + } """ - ); - } - _ = stringBuilder.AppendLine( - """ - ], - }; - } - """ - ); + ) + .Append("\r\n"); Iso6392Data.WriteFile(fileName, stringBuilder.ToString()); } diff --git a/LanguageTags/Rfc5646Data.cs b/LanguageTags/Rfc5646Data.cs index a0f6cbc..81a2303 100644 --- a/LanguageTags/Rfc5646Data.cs +++ b/LanguageTags/Rfc5646Data.cs @@ -58,125 +58,153 @@ public static void SaveJson(string fileName, Rfc5646Data rfc5646) => public static void GenCode(string fileName, Rfc5646Data rfc5646) { StringBuilder stringBuilder = new(); - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $$""" - // This file is generated by LanguageTagsCreate + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $$""" + // This file is generated by LanguageTagsCreate - using System; + using System; - namespace ptr727.LanguageTags; + namespace ptr727.LanguageTags; - public partial class Rfc5646Data - { - public static Rfc5646Data Create() => - new() - { - FileDate = new DateOnly({{rfc5646.FileDate.Year}}, {{rfc5646.FileDate.Month}}, {{rfc5646.FileDate.Day}}), - RecordList = - [ - """ - ); + public partial class Rfc5646Data + { + public static Rfc5646Data Create() => + new() + { + FileDate = new DateOnly({{rfc5646.FileDate.Year}}, {{rfc5646.FileDate.Month}}, {{rfc5646.FileDate.Day}}), + RecordList = + [ + """ + ) + .Append("\r\n"); foreach (Record record in rfc5646.RecordList) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $$""" - new() - { - Type = RecordType.{{record.Type.ToString()}}, - """ - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $$""" + new() + { + Type = RecordType.{{record.Type.ToString()}}, + """ + ) + .Append("\r\n"); if (!string.IsNullOrEmpty(record.SubTag)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" SubTag = \"{record.SubTag}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" SubTag = \"{record.SubTag}\"," + ) + .Append("\r\n"); } if (record.Added != DateOnly.MinValue) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Added = new DateOnly({record.Added.Year}, {record.Added.Month}, {record.Added.Day})," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Added = new DateOnly({record.Added.Year}, {record.Added.Month}, {record.Added.Day})," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.SuppressScript)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" SuppressScript = \"{record.SuppressScript}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" SuppressScript = \"{record.SuppressScript}\"," + ) + .Append("\r\n"); } if (record.Scope != RecordScope.None) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Scope = RecordScope.{record.Scope.ToString()}," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Scope = RecordScope.{record.Scope.ToString()}," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.MacroLanguage)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" MacroLanguage = \"{record.MacroLanguage}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" MacroLanguage = \"{record.MacroLanguage}\"," + ) + .Append("\r\n"); } if (record.Deprecated != DateOnly.MinValue) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Deprecated = new DateOnly({record.Deprecated.Year}, {record.Deprecated.Month}, {record.Deprecated.Day})," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Deprecated = new DateOnly({record.Deprecated.Year}, {record.Deprecated.Month}, {record.Deprecated.Day})," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.PreferredValue)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" PreferredValue = \"{record.PreferredValue}\"," - ); + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" PreferredValue = \"{record.PreferredValue}\"," + ) + .Append("\r\n"); } if (!string.IsNullOrEmpty(record.Tag)) { - _ = stringBuilder.AppendLine( - CultureInfo.InvariantCulture, - $" Tag = \"{record.Tag}\"," - ); - } - _ = stringBuilder.AppendLine( - " Description = [" - + string.Join( - ", ", - record.Description.Select(item => $"@\"{item.Replace("\"", "\"\"")}\"") - ) - + "]," - ); - _ = stringBuilder.AppendLine( - " Comments = [" - + string.Join( - ", ", - record.Comments.Select(item => $"@\"{item.Replace("\"", "\"\"")}\"") - ) - + "]," - ); - _ = stringBuilder.AppendLine( - " Prefix = [" - + string.Join( - ", ", - record.Prefix.Select(item => $"@\"{item.Replace("\"", "\"\"")}\"") + _ = stringBuilder + .Append( + CultureInfo.InvariantCulture, + $" Tag = \"{record.Tag}\"," ) - + "]," - ); - _ = stringBuilder.AppendLine(" },"); - } - _ = stringBuilder.AppendLine( - """ - ], - }; + .Append("\r\n"); } - """ - ); + _ = stringBuilder + .Append( + " Description = [" + + string.Join( + ", ", + record.Description.Select(item => $"@\"{item.Replace("\"", "\"\"")}\"") + ) + + "]," + ) + .Append("\r\n"); + _ = stringBuilder + .Append( + " Comments = [" + + string.Join( + ", ", + record.Comments.Select(item => $"@\"{item.Replace("\"", "\"\"")}\"") + ) + + "]," + ) + .Append("\r\n"); + _ = stringBuilder + .Append( + " Prefix = [" + + string.Join( + ", ", + record.Prefix.Select(item => $"@\"{item.Replace("\"", "\"\"")}\"") + ) + + "]," + ) + .Append("\r\n"); + _ = stringBuilder.Append(" },").Append("\r\n"); + } + _ = stringBuilder + .Append( + """ + ], + }; + } + """ + ) + .Append("\r\n"); Iso6392Data.WriteFile(fileName, stringBuilder.ToString()); } diff --git a/LanguageTags/Rfc5646DataGen.cs b/LanguageTags/Rfc5646DataGen.cs index a096461..e09f7a4 100644 --- a/LanguageTags/Rfc5646DataGen.cs +++ b/LanguageTags/Rfc5646DataGen.cs @@ -10,6 +10,7 @@ public static Rfc5646Data Create() => new() { FileDate = new DateOnly(2025, 7, 15), + RecordList = [ new()