コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }