2026-08-11 20:14:21 +02:00
|
|
|
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));
|
|
|
|
|
|
2026-11-04 10:46:18 +01:00
|
|
|
extension(BatchProcessingCsvSeparator separator)
|
2026-08-11 20:14:21 +02:00
|
|
|
{
|
2026-11-04 13:00:56 +01:00
|
|
|
public string Name => separator switch
|
2026-11-04 10:46:18 +01:00
|
|
|
{
|
|
|
|
|
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',
|
2026-11-04 13:00:56 +01:00
|
|
|
BatchProcessingCsvSeparator.CUSTOM when BatchProcessingCsvSeparator.IsValidCustomSeparator(customSeparator) => customSeparator[0],
|
2026-11-04 10:46:18 +01:00
|
|
|
|
|
|
|
|
_ => DEFAULT_SEPARATOR,
|
|
|
|
|
};
|
2026-08-11 20:14:21 +02:00
|
|
|
|
2026-11-04 13:00:56 +01:00
|
|
|
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';
|
|
|
|
|
}
|
2026-08-11 20:14:21 +02:00
|
|
|
}
|
|
|
|
|
}
|