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++; } } }