20230409
This commit is contained in:
61
anbs_cp/Classes/ConsoleParamsParser.cs
Normal file
61
anbs_cp/Classes/ConsoleParamsParser.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
namespace anbs_cp.Classes;
|
||||
|
||||
/// <summary>
|
||||
/// Обработчик параметров консоли
|
||||
/// </summary>
|
||||
public sealed class ConsoleParamsParser
|
||||
{
|
||||
/// <summary>
|
||||
/// Массив параметров
|
||||
/// </summary>
|
||||
private readonly List<(string, string?)> _paramsList;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="consoleParams">Параметры консоли</param>
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Проверяет наличие параметра
|
||||
/// </summary>
|
||||
/// <param name="param">Параметр</param>
|
||||
/// <returns>Есть ли параметр в списке</returns>
|
||||
public bool HasParam (string param) =>
|
||||
_paramsList.Any(keyValue => keyValue.Item1 == param);
|
||||
|
||||
/// <summary>
|
||||
/// Получает значение параметра
|
||||
/// </summary>
|
||||
/// <param name="param"></param>
|
||||
/// <returns></returns>
|
||||
public string? GetValue (string param) =>
|
||||
!HasParam(param) ? null : _paramsList.FirstOrDefault(keyValue => keyValue.Item1 == param).Item2;
|
||||
|
||||
/// <summary>
|
||||
/// Получает список всех параметров
|
||||
/// </summary>
|
||||
/// <returns>Список всех параметров</returns>
|
||||
public List<string> GetParamsList () =>
|
||||
_paramsList.Select(static keyValue => keyValue.Item1).ToList();
|
||||
}
|
Reference in New Issue
Block a user