Exemple #1
0
        /// <summary>
        /// To pack string argument in object.
        /// </summary>
        /// <param name="arg">Argument for packing.</param>
        /// <returns></returns>
        public static object packArgument(object arg)
        {
            if (arg == null)
            {
                return(null);
            }

            if (!(arg is string) || String.IsNullOrWhiteSpace((string)arg))
            {
                return(arg);
            }

            SNode.IPM      pm    = new SNode.PM(String.Format("_({0})", arg));
            SNode.Argument first = pm.FirstLevel.Args[0];

            if (first.type != SNode.ArgumentType.Object)
            {
                return(arg);
            }
            return(extract((SNode.Argument[])first.data));
        }
Exemple #2
0
        /// <summary>
        /// Extracts all arguments from line.
        /// </summary>
        /// <param name="data">Raw line with user arguments.</param>
        /// <returns>List of parsed arguments or null value if data is empty.</returns>
        /// <exception cref="SyntaxIncorrectException">If incorrect arguments line.</exception>
        protected Argument[] extractArgs(string data)
        {
            if(String.IsNullOrWhiteSpace(data)) {
                return new Argument[0];
            }

            StringHandler h = new StringHandler();
            string[] raw    = h.protectMixedQuotes(data).Split(',');

            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) {
                    throw new SyntaxIncorrectException("PM - extractArgs: incorrect arguments line '{0}'", data);
                }
                ret[i] = detectArgument(arg);
            }
            return ret;
        }