Parse() 공개 메소드

public Parse ( string arguments ) : IEnumerable
arguments string
리턴 IEnumerable
예제 #1
0
        private void dispatchAndCompleteMessage(string command, Action onCommandCompleted)
        {
            Logger.Write("Dispatching " + command);
            if (command.Length == 0) {
                Console.WriteLine();
            } else if (isError(command)) {
                printError(command);
            } else if (isWarning(command)) {
                printWarning(command);
            } else if (isCommand(command) || isEvent(command)) {
                lock (_commandProcessLock) {
                    _commandsInProcessing++;
                }
                ThreadPool.QueueUserWorkItem((m) => {
                    if (isCommand(command)) {
                        var prefix = getCommandPrefix(command);
                        var parser = new CommandStringParser();
                        var args =
                            parser.Parse(
                                command.Substring(prefix.Length, command.Length - prefix.Length))
                                .ToArray();
                        if (args.Length == 0) {
                            Logger.Write("No commands specified for " + command);
                        }
                        DefinitionCacheItem cmd = null;
                        if (prefix == "command|")
                            cmd = GetDefinitionBuilder().Get(args);
                        else if (prefix == "command-builtin|")
                            cmd = GetDefinitionBuilder().GetBuiltIn(args);
                        else if (prefix == "command-language|")
                            cmd = GetDefinitionBuilder().GetLanguage(args);
                        else if (prefix == "command-languagescript|")
                            cmd = GetDefinitionBuilder().GetLanguageScript(args);
                        else if (prefix == "command-script|")
                            cmd = GetDefinitionBuilder().GetScript(args);
                        else if (prefix == "command-original|")
                            cmd = GetDefinitionBuilder().GetOriginal(args);

                        if (cmd != null) {
                            new CommandRunner(EventDispatcher)
                                .Run(cmd, args);
                        } else {
                            Logger.Write("Could not find handler for " + command);
                        }
                        onCommandCompleted();
                    } else if (isEvent(command)) {
                        var prefix = "event|";
                        EventDispatcher()
                            .Forward(command.Substring(prefix.Length, command.Length - prefix.Length));
                    }
                    lock (_commandProcessLock) {
                        _commandsInProcessing--;
                    }
                }, null);
            } else {
                Console.WriteLine(command);
            }
        }
예제 #2
0
 private void dispatchMessage(string command)
 {
     if (command.Length == 0)
         return;
     var parser = new CommandStringParser();
     var args = parser.Parse(command);
     if (isError(command))
     {
         printError(command);
         return;
     }
     if (isComment(command))
     {
         printComment(command);
         return;
     }
     _dispatcher.For(
         parser.GetCommand(args),
         parser.GetArguments(args));
 }