/// <summary> /// Extracts all arguments from line. /// </summary> /// <param name="data">Raw line with user arguments.</param> /// <param name="splitter">A character that delimits arguments.</param> /// <returns>List of parsed arguments or null value if data is empty.</returns> /// <exception cref="IncorrectSyntaxException">If incorrect arguments line.</exception> protected RArgs ExtractArgs(string data, char splitter = ',') { if (string.IsNullOrWhiteSpace(data)) { return(new RArgs(new Argument[0])); } StringHandler h = new StringHandler(); string[] raw = h.ProtectArguments(data).Split(splitter); Argument[] ret = new Argument[raw.Length]; for (int i = 0; i < raw.Length; ++i) { string arg = h.Recovery(raw[i]).Trim(); if (arg.Length < 1 && splitter == ',') // std: p1, p2, p3 { throw new IncorrectSyntaxException($"PM - extractArgs: incorrect arguments line '{data}'"); } ret[i] = DetectArgument(arg); } return(new RArgs(ret)); }