This commit is contained in:
2023-04-09 10:56:43 +03:00
parent 4a8e1a987b
commit 455e88635a
2 changed files with 64 additions and 3 deletions

View 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();
}