Пример #1
0
        private static Script getInlineScript(ScriptContext context, List<string> filteredArgs)
        {
            string name = null;
            string vn = null;
            if (context.IsSet(xs.execRest))
            {
                name = "//";
                vn = xs.execRest;
            }
            else if (context.IsSet(xs.execRestD))
            {
                name = "//#";
                vn = xs.execRestD;
            }
            else if (context.IsSet(xs.execRestP))
            {
                name = "//p";
                vn = xs.execRestP;
            }
            if (name!=null)
            {
                string c = Environment.CommandLine;
                int n = c.IndexOf("/" + name, StringComparison.OrdinalIgnoreCase);
                if (n == -1)
                    throw new ScriptRuntimeException("Invalid command line");
                string s = c.Substring(n + name.Length + 1).Trim();
                if (s.Length>0 && s[0]=='"')
                {
                    var args=context.GetArrayT<string>(vn);
                    s = args[0];
                    filteredArgs.Clear();
                    for (int i = 1; i < args.Length;++i)
                        filteredArgs.Add(args[i]);
                }
                if (context.IsSet(xs.execRestD) && s.Length > 0 && s[0] == '?')
                    s = s.Substring(1);
                if (context.IsSet(xs.execRestD))
                    return execGenerator(context, s, "c.Dump(", ")");
                if (context.IsSet(xs.execRestP))
                    return execGenerator(context, s, "c.WriteLine(", ")");
                return execGenerator(context, s, null, null);
            }
            if (context.IsSet(xs.download))
                return genDownload(context, filteredArgs);
            if (context.IsSet(xs.zip))
                return genZip(context, filteredArgs);
            if (context.IsSet(xs.unzip))
                return genUnzip(context, filteredArgs);
            if (context.GetBool(xs.version, false))
                return genVersion(context);

            return null;
        }