Ejemplo n.º 1
0
        public Task<ExecutionResult> Execute(IReplWindow window, string arguments)
        {
            List<string> submissions = new List<string>();
            List<string> lines = new List<string>();

            arguments = arguments.Trim();
            if (arguments.StartsWith("\"") && arguments.EndsWith("\"")) {
                arguments = arguments.Substring(1, arguments.Length - 2);
            }

            string commandPrefix = (string)window.GetOptionValue(ReplOptions.CommandPrefix);
            string lineBreak = window.TextView.Options.GetNewLineCharacter();
            var eval = window.Evaluator as JReplEvaluator;
            var debugEval = window.Evaluator as JDebugReplEvaluator;
            if (eval != null) {
                window.Submit(eval.SplitCode(File.ReadAllText(arguments)).Where(CommentPrefixPredicate));
                return ExecutionResult.Succeeded;
            } else if (debugEval != null) {
                window.Submit(debugEval.SplitCode(File.ReadAllText(arguments)).Where(CommentPrefixPredicate));
                return ExecutionResult.Succeeded;
            } else {
                // v1 beahvior, will probably never be hit, but if someone was developing their own IReplEvaluator
                // and using this class it would be hit.
                using (var stream = new StreamReader(arguments)) {
                    string line;
                    while ((line = stream.ReadLine()) != null) {
                        if (line.StartsWith(_commentPrefix)) {
                            continue;
                        }

                        if (line.StartsWith(commandPrefix)) {
                            AddSubmission(submissions, lines, lineBreak);

                            submissions.Add(line);
                            lines.Clear();
                        } else {
                            lines.Add(line);
                        }
                    }
                }
                AddSubmission(submissions, lines, lineBreak);

                window.Submit(submissions);
                return ExecutionResult.Succeeded;
            }
        }