public static void Execute() { GSConsole.Write(">"); var line = GSConsole.ReadLine().Trim(); if (CMDS_NO_PARAMS.ContainsKey(line)) { ExecuteCommand(CMDS_NO_PARAMS[line]); return; } foreach (var item in CMDS_PARAMS) { var argStrArr = line.Split(new char[] { ' ', '\t' }, System.StringSplitOptions.RemoveEmptyEntries); if (argStrArr.Length < 2) { continue; } if (item.Key != argStrArr[0].Trim()) { continue; } var args = new string[argStrArr.Length - 1]; for (int i = 1; i < argStrArr.Length; ++i) { args[i - 1] = argStrArr[i]; } ExecuteCommand(item.Value, args); return; } ExecuteLine(line); }
public static bool ExecuteCommand(Command command, params string[] args) { switch (command) { case Command.Clear: GSConsole.Clear(); _GetCurExecuter().Clear(); WriteTitleLine(); break; case Command.Quit: _bStop = true; break; case Command.ShowSrc: var src = _GetCurExecuter().GetSrc(); if (!string.IsNullOrEmpty(src)) { GSConsole.Write(src); if (src[src.Length - 1] != '\n') { GSConsole.WriteLine(); } } break; case Command.Space: foreach (var item in _lineExecuterDict) { bool bSelected = item.Key == _lineExecuterCurName; GSConsole.WriteLine(item.Key + (bSelected ? " (cur)" : "")); } break; case Command.Execute: ExecuteSrc(); break; case Command.Reset: GSConsole.Clear(); _RemoveAllExecuter(); WriteTitleLine(); break; case Command.OpenFile: if (args.Length == 0) { return(false); } ExecuteFile(args[0]); break; case Command.Change: if (args.Length == 0) { return(false); } ExecuteChange(args[0]); break; case Command.Remove: ExecuteRemoveSpace(args); break; case Command.New: ExecuteNewProject(args); break; default: return(false); } return(true); }