Refactored Lua string escaping into a shared utility class

This commit is contained in:
Thorsten Sommer 2026-02-05 11:10:34 +01:00
parent dcfaf22859
commit ffdabae8b4
Signed by untrusted user who does not match committer: tsommer
GPG Key ID: 371BBA77A02C0108
4 changed files with 52 additions and 69 deletions

View File

@ -136,18 +136,18 @@ public sealed record EmbeddingProvider(
{ {
return $$""" return $$"""
CONFIG["EMBEDDING_PROVIDERS"][#CONFIG["EMBEDDING_PROVIDERS"]+1] = { CONFIG["EMBEDDING_PROVIDERS"][#CONFIG["EMBEDDING_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(this.Id))}}", ["Id"] = "{{LuaTools.EscapeLuaString(NormalizeId(this.Id))}}",
["Name"] = "{{EscapeLuaString(this.Name)}}", ["Name"] = "{{LuaTools.EscapeLuaString(this.Name)}}",
["UsedLLMProvider"] = "{{this.UsedLLMProvider}}", ["UsedLLMProvider"] = "{{this.UsedLLMProvider}}",
["Host"] = "{{this.Host}}", ["Host"] = "{{this.Host}}",
["Hostname"] = "{{EscapeLuaString(this.Hostname)}}", ["Hostname"] = "{{LuaTools.EscapeLuaString(this.Hostname)}}",
["Model"] = { ["Model"] = {
["Id"] = "{{EscapeLuaString(this.Model.Id)}}", ["Id"] = "{{LuaTools.EscapeLuaString(this.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}", ["DisplayName"] = "{{LuaTools.EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}",
}, },
} }
"""; """;
} }
private static string NormalizeId(string? id) private static string NormalizeId(string? id)
@ -158,15 +158,4 @@ public sealed record EmbeddingProvider(
return Guid.NewGuid().ToString(); return Guid.NewGuid().ToString();
} }
private static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
} }

View File

@ -201,20 +201,20 @@ public sealed record Provider(
return $$""" return $$"""
CONFIG["LLM_PROVIDERS"][#CONFIG["LLM_PROVIDERS"]+1] = { CONFIG["LLM_PROVIDERS"][#CONFIG["LLM_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(this.Id))}}", ["Id"] = "{{LuaTools.EscapeLuaString(NormalizeId(this.Id))}}",
["InstanceName"] = "{{EscapeLuaString(this.InstanceName)}}", ["InstanceName"] = "{{LuaTools.EscapeLuaString(this.InstanceName)}}",
["UsedLLMProvider"] = "{{this.UsedLLMProvider}}", ["UsedLLMProvider"] = "{{this.UsedLLMProvider}}",
["Host"] = "{{this.Host}}", ["Host"] = "{{this.Host}}",
["Hostname"] = "{{EscapeLuaString(this.Hostname)}}", ["Hostname"] = "{{LuaTools.EscapeLuaString(this.Hostname)}}",
{{hfInferenceProviderLine}} {{hfInferenceProviderLine}}
["AdditionalJsonApiParameters"] = "{{EscapeLuaString(this.AdditionalJsonApiParameters)}}", ["AdditionalJsonApiParameters"] = "{{LuaTools.EscapeLuaString(this.AdditionalJsonApiParameters)}}",
["Model"] = { ["Model"] = {
["Id"] = "{{EscapeLuaString(this.Model.Id)}}", ["Id"] = "{{LuaTools.EscapeLuaString(this.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}", ["DisplayName"] = "{{LuaTools.EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}",
}, },
} }
"""; """;
} }
private static string NormalizeId(string? id) private static string NormalizeId(string? id)
@ -225,15 +225,4 @@ public sealed record Provider(
return Guid.NewGuid().ToString(); return Guid.NewGuid().ToString();
} }
private static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
} }

View File

@ -136,18 +136,18 @@ public sealed record TranscriptionProvider(
{ {
return $$""" return $$"""
CONFIG["TRANSCRIPTION_PROVIDERS"][#CONFIG["TRANSCRIPTION_PROVIDERS"]+1] = { CONFIG["TRANSCRIPTION_PROVIDERS"][#CONFIG["TRANSCRIPTION_PROVIDERS"]+1] = {
["Id"] = "{{EscapeLuaString(NormalizeId(this.Id))}}", ["Id"] = "{{LuaTools.EscapeLuaString(NormalizeId(this.Id))}}",
["Name"] = "{{EscapeLuaString(this.Name)}}", ["Name"] = "{{LuaTools.EscapeLuaString(this.Name)}}",
["UsedLLMProvider"] = "{{this.UsedLLMProvider}}", ["UsedLLMProvider"] = "{{this.UsedLLMProvider}}",
["Host"] = "{{this.Host}}", ["Host"] = "{{this.Host}}",
["Hostname"] = "{{EscapeLuaString(this.Hostname)}}", ["Hostname"] = "{{LuaTools.EscapeLuaString(this.Hostname)}}",
["Model"] = { ["Model"] = {
["Id"] = "{{EscapeLuaString(this.Model.Id)}}", ["Id"] = "{{LuaTools.EscapeLuaString(this.Model.Id)}}",
["DisplayName"] = "{{EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}", ["DisplayName"] = "{{LuaTools.EscapeLuaString(this.Model.DisplayName ?? string.Empty)}}",
}, },
} }
"""; """;
} }
private static string NormalizeId(string? id) private static string NormalizeId(string? id)
@ -158,15 +158,4 @@ public sealed record TranscriptionProvider(
return Guid.NewGuid().ToString(); return Guid.NewGuid().ToString();
} }
private static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
} }

View File

@ -0,0 +1,16 @@
namespace AIStudio.Tools;
public static class LuaTools
{
public static string EscapeLuaString(string? value)
{
if (string.IsNullOrEmpty(value))
return string.Empty;
return value
.Replace("\\", "\\\\")
.Replace("\"", "\\\"")
.Replace("\r", "\\r")
.Replace("\n", "\\n");
}
}