From 12d36a96e169bb72e48a2612419212eedf40ad3b Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 26 Apr 2025 18:16:47 +0200 Subject: [PATCH] Refactor UI_TEXT_CONTENT table generation into a new LuaTable utility class --- app/Build/Commands/CollectI18NKeysCommand.cs | 26 +------------ app/SharedTools/LuaTable.cs | 40 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 25 deletions(-) create mode 100644 app/SharedTools/LuaTable.cs diff --git a/app/Build/Commands/CollectI18NKeysCommand.cs b/app/Build/Commands/CollectI18NKeysCommand.cs index 08c1a690..896c606c 100644 --- a/app/Build/Commands/CollectI18NKeysCommand.cs +++ b/app/Build/Commands/CollectI18NKeysCommand.cs @@ -126,32 +126,8 @@ public sealed partial class CollectI18NKeysCommand """ ); - // // Add the UI_TEXT_CONTENT table: - // - sb.AppendLine("UI_TEXT_CONTENT = {}"); - foreach (var kvp in keyValuePairs.OrderBy(x => x.Key)) - { - var key = kvp.Key; - var value = kvp.Value.Replace("\n", " ").Trim(); - - // Remove the "UI_TEXT_CONTENT." prefix from the key: - const string UI_TEXT_CONTENT = "UI_TEXT_CONTENT."; - var keyWithoutPrefix = key.StartsWith(UI_TEXT_CONTENT, StringComparison.OrdinalIgnoreCase) ? key[UI_TEXT_CONTENT.Length..] : key; - - // Replace all dots in the key with colons: - keyWithoutPrefix = keyWithoutPrefix.Replace(".", "::"); - - // Add a comment with the original text content: - sb.AppendLine(); - sb.AppendLine($"-- {value}"); - - // Add the assignment to the UI_TEXT_CONTENT table: - sb.AppendLine($""" - UI_TEXT_CONTENT["{keyWithoutPrefix}"] = "{EscapeLuaString(value)}" - """); - } - + LuaTable.Create(ref sb, "UI_TEXT_CONTENT", keyValuePairs); return sb.ToString(); } diff --git a/app/SharedTools/LuaTable.cs b/app/SharedTools/LuaTable.cs new file mode 100644 index 00000000..ace1c965 --- /dev/null +++ b/app/SharedTools/LuaTable.cs @@ -0,0 +1,40 @@ +using System.Text; + +namespace SharedTools; + +public static class LuaTable +{ + public static string Create(ref StringBuilder sb, string tableVariableName, IReadOnlyDictionary keyValuePairs, CancellationToken cancellationToken = default) + { + // + // Add the UI_TEXT_CONTENT table: + // + sb.AppendLine($$"""{{tableVariableName}} = {}"""); + foreach (var kvp in keyValuePairs.OrderBy(x => x.Key)) + { + if (cancellationToken.IsCancellationRequested) + return sb.ToString(); + + var key = kvp.Key; + var value = kvp.Value.Replace("\n", " ").Trim(); + + // Remove the "UI_TEXT_CONTENT." prefix from the key: + const string UI_TEXT_CONTENT = "UI_TEXT_CONTENT."; + var keyWithoutPrefix = key.StartsWith(UI_TEXT_CONTENT, StringComparison.OrdinalIgnoreCase) ? key[UI_TEXT_CONTENT.Length..] : key; + + // Replace all dots in the key with colons: + keyWithoutPrefix = keyWithoutPrefix.Replace(".", "::"); + + // Add a comment with the original text content: + sb.AppendLine(); + sb.AppendLine($"-- {value}"); + + // Add the assignment to the UI_TEXT_CONTENT table: + sb.AppendLine($""" + UI_TEXT_CONTENT["{keyWithoutPrefix}"] = "{LuaTools.EscapeLuaString(value)}" + """); + } + + return sb.ToString(); + } +} \ No newline at end of file