Beispiel #1
0
    private void doCommand()
    {
        while (pos < text.Length && text[pos] != ';')
        {
            skipNonCode();
            string command = getIdentifier();

            if (command == "")
            {
                return;
            }

            string parm = "";

            switch (command)
            {
            case "function":
                skipNonCode();
                string identifier = getIdentifier();
                skipNonCode();
                require('(');
                skipNonCode();
                require(')');
                skipNonCode();
                require('{');
                skipNonCode();
                string function = getFunction();
                if (functions.ContainsKey(identifier))
                {
                    failure("Function " + identifier + " already defined!");
                }
                functions.Add(identifier, function);
                return;

            case "Echo":
                parm = getParm();
                api.Echo(parm);
                break;

            case "Blocks":
                api.Refresh();
                this.blocks = api.Blocks;
                break;

            /*** Actions ***/
            case "ApplyAction":
                parm = getParm();
                blocks.ApplyAction(parm);
                break;

            case "WritePublicText":
                parm = getParm();
                blocks.WritePublicText(parm);
                break;

            case "WriteCustomData":
            case "WritePrivateText":
                parm = getParm();
                blocks.WriteCustomData(parm);
                break;

            case "AppendPublicText":
                parm = getParm();
                blocks.AppendPublicText(parm);
                break;

            case "On":
                parm = getParm();
                blocks.On();
                break;

            case "Off":
                parm = getParm();
                blocks.Off();
                break;

            case "Toggle":
                parm = getParm();
                blocks.Toggle();
                break;

            case "DebugDump":
                parm = getParm();
                blocks.DebugDump();
                break;

            case "DebugDumpActions":
                parm = getParm();
                blocks.DebugDumpActions();
                break;

            case "DebugDumpProperties":
                parm = getParm();
                blocks.DebugDumpProperties();
                break;

            case "Run":
                parm = getParm();
                blocks.Run(api, parm);
                break;

            case "RunPB":
                parm = getParm();
                blocks.RunPB(parm);
                break;

            /*** Filters ***/
            case "Named":
                parm   = getParm();
                blocks = blocks.Named(parm);
                break;

            case "NamedLike":
                parm   = getParm();
                blocks = blocks.NamedLike(parm);
                break;

            case "NotNamed":
                parm   = getParm();
                blocks = blocks.NotNamed(parm);
                break;

            case "NotNamedLike":
                parm   = getParm();
                blocks = blocks.NotNamedLike(parm);
                break;

            case "InGroupsNamed":
                parm   = getParm();
                blocks = blocks.InGroupsNamed(parm);
                break;

            case "InGroupsNamedLike":
                parm   = getParm();
                blocks = blocks.InGroupsNamedLike(parm);
                break;

            case "InGroupsNotNamed":
                parm   = getParm();
                blocks = blocks.InGroupsNotNamed(parm);
                break;

            case "InGroupsNotNamedLike":
                parm   = getParm();
                blocks = blocks.InGroupsNotNamedLike(parm);
                break;

            case "OfType":
                parm   = getParm();
                blocks = blocks.OfType(parm);
                break;

            case "OfTypeLike":
                parm   = getParm();
                blocks = blocks.OfTypeLike(parm);
                break;

            case "NotOfType":
                parm   = getParm();
                blocks = blocks.NotOfType(parm);
                break;

            case "NotOfTypeLike":
                parm   = getParm();
                blocks = blocks.OfTypeLike(parm);
                break;

            default:
                failure("Invalid command: '" + command + "'");
                break;
            }

            skipNonCode();

            if (pos < text.Length && text[pos] == '.')
            {
                pos++;
            }
        }
    }