Files
AI-Studio/app/MindWork AI Studio/Assistants/BatchProcessing/BatchProcessingCsvSeparatorExtensions.cs
T

44 lines
1.8 KiB
C#

namespace AIStudio.Assistants.BatchProcessing;
public static class BatchProcessingCsvSeparatorExtensions
{
private const char DEFAULT_SEPARATOR = ';';
private static string TB(string fallbackEN) => Tools.PluginSystem.I18N.I.T(fallbackEN, typeof(BatchProcessingCsvSeparatorExtensions).Namespace, nameof(BatchProcessingCsvSeparatorExtensions));
extension(BatchProcessingCsvSeparator separator)
{
public string Name => separator switch
{
BatchProcessingCsvSeparator.COMMA => TB("Comma (,)"),
BatchProcessingCsvSeparator.SEMICOLON => TB("Semicolon (;)"),
BatchProcessingCsvSeparator.PIPE => TB("Vertical bar (|)"),
BatchProcessingCsvSeparator.TAB => TB("Tab"),
BatchProcessingCsvSeparator.CUSTOM => TB("Custom character"),
_ => TB("Unknown"),
};
public char Character(string customSeparator) => separator switch
{
BatchProcessingCsvSeparator.COMMA => ',',
BatchProcessingCsvSeparator.SEMICOLON => ';',
BatchProcessingCsvSeparator.PIPE => '|',
BatchProcessingCsvSeparator.TAB => '\t',
BatchProcessingCsvSeparator.CUSTOM when BatchProcessingCsvSeparator.IsValidCustomSeparator(customSeparator) => customSeparator[0],
_ => DEFAULT_SEPARATOR,
};
internal static bool IsValidCustomSeparator(string customSeparator)
{
if (string.IsNullOrEmpty(customSeparator) || customSeparator.Length is not 1)
return false;
var character = customSeparator[0];
return !char.IsLetterOrDigit(character)
&& !char.IsWhiteSpace(character)
&& character is not '"' and not '\r' and not '\n';
}
}
}