Exemple #1
0
        /// <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));
        }