You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

87 lines
2.7 KiB

using System;
using System.Collections.Generic;
namespace UTIL
{
public class ParParse
{
private List<(bool, string, string, bool, string, string)> Pars = new List<(bool, string, string, bool, string, string)>();
private int _num = 0;
private (bool, string, string, bool, string, string) nullitem = (false, null, null, false, null,null);
public int NumofPar { get; }
public ParParse()
{
AddPar("-h","--help",false, "Использование");
}
public (bool, string, string, bool, string, string) GetPar(UInt16 num)
{
if (Pars[num].Item1)
return Pars[num];
else
return nullitem;
}
public (bool, string, string, bool, string, string) GetPar(string par)
{
for (int j = 0; j < _num; j++)
{
if ((par == Pars[j].Item2 || par == Pars[j].Item3) && Pars[j].Item1)
return Pars[j];
}
return nullitem;
}
public void AddPar(string shrt, string lng, Boolean key, string info)
{
Pars.Add((false, shrt, lng, key, "", info));
_num = Pars.Count;
}
public int Parse(String[] arg)
{
int rez = 0;
if (_num == 0)
return -1;
if (arg.Length == 0)
return -1;
for (int i = 0; i < arg.Length; i++)
{
for (int j = 0; j < _num; j++)
{
if (arg[i] == Pars[j].Item2 || arg[i] == Pars[j].Item3)
{
(bool, string, string, bool, string, string) tmp = Pars[j];
if (Pars[j].Item4)
{
tmp.Item5 = arg[i + 1];
}
tmp.Item1 = true;
Pars[j] = tmp;
rez++;
}
}
}
return rez;
}
public void help()
{
string s = "";
for (int i = 0; i < _num; i++)
{
if (Pars[i].Item3 != "")
s += $" {Pars[i].Item2}|{Pars[i].Item3}";
else
s += $" {Pars[i].Item2}";
}
Console.WriteLine($"Использование:\r\nGetVer3.exe{s}");
for (int i = 0; i < _num; i++)
{
if (Pars[i].Item3 != "")
Console.WriteLine($"{Pars[i].Item2} {Pars[i].Item3}\t{Pars[i].Item6}");
else
Console.WriteLine($"{Pars[i].Item2}\t{Pars[i].Item6}");
}
}
}
}