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}"); } } } }