diff --git a/anbs_cp/Classes/ConsoleParamsParser.cs b/anbs_cp/Classes/ConsoleParamsParser.cs new file mode 100644 index 0000000..e7ff481 --- /dev/null +++ b/anbs_cp/Classes/ConsoleParamsParser.cs @@ -0,0 +1,61 @@ +namespace anbs_cp.Classes; + +/// +/// Обработчик параметров консоли +/// +public sealed class ConsoleParamsParser +{ + /// + /// Массив параметров + /// + private readonly List<(string, string?)> _paramsList; + + /// + /// Конструктор + /// + /// Параметры консоли + public ConsoleParamsParser (string[] consoleParams) + { + //Создаю список параметров + _paramsList = new(); + + //Заполняю его + foreach (string consoleParam in consoleParams) + { + //Индекс знака "=" + int eqPlace = consoleParam.IndexOf('='); + + //Получаю параметр + string param = eqPlace > -1 ? consoleParam[..eqPlace] : consoleParam; + + //Получаю значение параметра + string? value = eqPlace == -1 ? null : consoleParam[(eqPlace + 1)..].Trim(new[] { '"' }); + + //Сохраняю в списке + _paramsList.Add((param, value)); + } + } + + /// + /// Проверяет наличие параметра + /// + /// Параметр + /// Есть ли параметр в списке + public bool HasParam (string param) => + _paramsList.Any(keyValue => keyValue.Item1 == param); + + /// + /// Получает значение параметра + /// + /// + /// + public string? GetValue (string param) => + !HasParam(param) ? null : _paramsList.FirstOrDefault(keyValue => keyValue.Item1 == param).Item2; + + /// + /// Получает список всех параметров + /// + /// Список всех параметров + public List GetParamsList () => + _paramsList.Select(static keyValue => keyValue.Item1).ToList(); +} \ No newline at end of file diff --git a/anbs_cp/anbs_cp.csproj b/anbs_cp/anbs_cp.csproj index 9b03e5b..ceeed7b 100644 --- a/anbs_cp/anbs_cp.csproj +++ b/anbs_cp/anbs_cp.csproj @@ -2,7 +2,7 @@ net7.0 - 2023.212.0 + 2023.409.0 Alexander Babaev ANB Software Components Pack Library of some useful functions in C# language. @@ -40,9 +40,9 @@ - + - + all runtime; build; native; contentfiles; analyzers; buildtransitive