public void TestStreamParamDivider() { for (int i = 0; i < Count; i++) { CommandAnalyzer ca = new CommandAnalyzer(new StreamParamDivider()); ca.Analyze(FullCmd); } }
public void Response(string command) { CommandAnalyzer ca = new CommandAnalyzer(new ParamDividerV2()); ca.Analyze(command); try { switch (ca.CommandName) { case "stop": Logger.Raw("Application is shutting down... "); Environment.Exit(0); break; case "console": { if (ca.Args.ContainsKey("cut-count")) { if (ca.Switches.ContainsKey("set")) { SocketLogger.CutCount = int.Parse(ca.Args["cut-count"]); Logger.Raw(ca.CommandName + ": set: oparation succeed"); } else { Logger.Raw(ca.CommandName + ": parameter mismatch"); } } else if (ca.Switches.ContainsKey("get")) { if (ca.Switches.ContainsKey("cut-count")) { Logger.Raw(SocketLogger.CutCount.ToString()); } } else { Logger.Raw(ca.CommandName + ": parameter mismatch"); } break; } default: Logger.Raw(ca.CommandName + ": command not found"); break; } } catch (Exception ex) { Logger.Raw(ex.Message); } }
private static Node <ICommand> GoFurther(string mathFormula) { Node <ICommand> thisNode = new Node <ICommand>(); string[] partOfMathFormulaArray; try { // +(25,33) // +(+(2,2),1) // +(s(12),33) //return if its command or not //if command send two params (char of the command and stuff betweeen brakets) // we take the command here ICommand currentCommand = CommandAnalyzer.Analyze(mathFormula); thisNode.Value = currentCommand; // we remove the command sign and parentheses here string partOfMathFormula = RemoveCommandAndParentheses(mathFormula); if (partOfMathFormula != "NOTHING HERE") { partOfMathFormulaArray = partOfMathFormula.Split(new string[] { "," }, StringSplitOptions.None); //thisNode = new Node<ICommand>(currentCommand); foreach (var formula in partOfMathFormulaArray) { Node <ICommand> tempNode = GoFurther(formula); tempNode.addRootNode(thisNode); thisNode.addChildNode(tempNode); } } // add to current command the objects from recursion // add it to node and return node // int command = CommandAnalyzer.IsCommand(ReturnFirstChar(partOfMathFormulaArray[0])); // if (command ==1) // { // MessageBox.Show("ITS COMMAND"); // //GoFurther(); // } } catch (NotCommandExeption e) { } return(thisNode); }
private static void HandleMessageCmd(CommonMessage cm) { string fullCmd = cm.FullCommand; CommandAnalyzer ca = new CommandAnalyzer(new ParamDividerV2()); ca.Analyze(fullCmd, cm); CommonMessageResponse replyObj = null; if (!PluginManager.CommandMap.ContainsKey(cm.Command)) { return; } Type t = PluginManager.CommandMap[cm.Command]; if (ValidateDisabled(cm, t)) { SendMessage(new CommonMessageResponse("本群已禁用此命令...", cm)); return; } CommandPlugin plugin = t == typeof(ExtendPlugin) ? PluginManager.CommandMapStatic[cm.Command] : GetInstance(t); if (!CommandHot.Keys.Contains(cm.Command)) { CommandHot.TryAdd(cm.Command, 1); } else { CommandHot[cm.Command]++; } Settings.SaveSettings(CommandHot, "CommandHot"); Task.Run(() => { try { SetValues(cm, t, plugin); replyObj = plugin.Message_Received(cm); } catch (Exception ex) { Exception(ex, fullCmd, plugin?.Name ?? "Unknown plugin"); } if (replyObj == null) { return; } SendMessage(replyObj); } ); }
public void RunIntegrationTest(string filename) { ILookup <string, object> expectations = GetExpectedFields(filename); Assert.IsTrue(expectations.Count() > 0); AnalysisResult result = CommandAnalyzer.AnalyzeFile(filename); AssertSingle(expectations["ParseErrors"], () => result.ParseErrors.Count); AssertSingle(expectations["UnsupportedErrors"], () => result.UnsupportedErrors.Count); AssertSingle(expectations["LocalCommands"], () => result.LocalCommands.Count); AssertSingle(expectations["ValidationErrors"], () => result.ValidationErrors.Count); AssertMultiple(expectations["Message"], () => result.ValidationErrors.Select(e => e.Message)); }
static void Main(string[] args) { var result = CommandAnalyzer.AnalyzeFile("./Input/Input.ps1"); PrintErrors("Parse error found:", result.ParseErrors); PrintErrors("Issues Found:", result.ValidationErrors); PrintErrors("This tool does not support 100% of powershell syntax. Please check the following areas manually:", result.UnsupportedErrors); Console.WriteLine("Complete"); // prevent console window close when running from an IDE if (Debugger.IsAttached) { Console.ReadKey(); } }
public static void Main(string[] args) { Canvas canvas = null; String command = string.Empty; Console.WriteLine("***************************************************"); Console.WriteLine("****************Simple Canvas App******************"); Console.WriteLine("***************************************************"); while (!command.ToUpper().Equals("Q")) { Console.WriteLine("Enter command:"); command = Console.ReadLine(); canvas = CommandAnalyzer.Analyzer(command, canvas); } Console.WriteLine("Shutting down"); }
public void TestScenario() { try { char[,] expectedResult = new char[6, 22] { { '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-' }, { '|', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'X', 'X', 'X', 'X', 'X', 'o', 'o', '|' }, { '|', 'X', 'X', 'X', 'X', 'X', 'X', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'X', '\0', '\0', '\0', 'X', 'o', 'o', '|' }, { '|', '\0', '\0', '\0', '\0', '\0', 'X', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'X', 'X', 'X', 'X', 'X', 'o', 'o', '|' }, { '|', '\0', '\0', '\0', '\0', '\0', 'X', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', 'o', '|' }, { '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-', '-' }, }; //This can be also came from a file string[] commands = new string[] { "C 20 4", "L 1 2 6 2", "L 6 3 6 4", "R 14 1 18 3", "B 10 3 o", "help" }; Canvas canvas = null; foreach (string command in commands) { canvas = CommandAnalyzer.Analyzer(command, canvas); } char[,] _createdCanvas = canvas.CanvasBody; for (int i = 0; i < canvas.Height; i++) { for (int j = 0; j < canvas.Width; j++) { //Check if the expected result correct Assert.True(_createdCanvas[i, j] == expectedResult[i, j]); } } } catch (Exception e) { Assert.True(false); } }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; if (string.IsNullOrEmpty(routeMsg.FullCommand)) { return(null); } string fullCmd = routeMsg.FullCommand; var ca = new CommandAnalyzer <StreamParamDivider>(); ca.Analyze(fullCmd, routeMsg); if (!DaylilyCore.Current.PluginManager.ContainsPlugin(routeMsg.CommandName)) { return(null); } return(null); }
public override CoolQRouteMessage OnMessageReceived(CoolQScopeEventArgs scope) { var routeMsg = scope.RouteMessage; string fullCmd = routeMsg.FullCommand ?? routeMsg.RawMessage; var ca = new CommandAnalyzer <StreamParamDivider>(); var cmd = ca.Analyze(fullCmd); if (cmd.CommandName == "keyword" && routeMsg.CurrentAuthority == Authority.Root) { if (cmd.Switches.Contains("key-list")) { var list = _triggerObjects.Select(k => (string.Join(",", k.Words), k.ChancePercent, k.Pictures.Count)); var list2 = list.Select(k => $"{k.Item1}: \r\n {k.ChancePercent}% {k.Count} Pics"); return(routeMsg.ToSource(string.Join("\r\n", list2))); } if (cmd.Args.ContainsKey("key-edit")) { var arg = cmd.Args["key-edit"]; var triggerObject = _triggerObjects.FirstOrDefault(k => k.Words.Contains(arg)); if (triggerObject == null) { return(routeMsg.ToSource("不存在该关键词(组)哦")); } if (cmd.Args.ContainsKey("addkeys")) { var value = cmd.Args["addkeys"]; var values = value.Split('|').Where(k => !string.IsNullOrEmpty(k)).ToArray(); if (!values.Any()) { return(routeMsg.ToSource("请填写触发关键词")); } foreach (var val in values) { if (!triggerObject.Words.Contains(val)) { triggerObject.Words.Add(val); } } return(SaveAndReply(routeMsg)); } if (cmd.Args.ContainsKey("removekeys")) { var value = cmd.Args["removekeys"]; var values = value.Split('|').Where(k => !string.IsNullOrEmpty(k)).ToArray(); if (!values.Any()) { return(routeMsg.ToSource("请填写触发关键词")); } foreach (var val in values) { if (triggerObject.Words.Contains(val)) { triggerObject.Words.Remove(val); } } return(SaveAndReply(routeMsg)); } if (cmd.Switches.Contains("addpics")) { throw new NotImplementedException(); return(SaveAndReply(routeMsg)); } if (cmd.Args.ContainsKey("removepics")) { var value = cmd.Args["removepics"]; var values = value.Split('|').Where(k => !string.IsNullOrEmpty(k)).ToArray(); if (!values.Any()) { return(routeMsg.ToSource("请填写需要删除的图片")); } foreach (var val in values) { if (triggerObject.Pictures.Contains(val)) { triggerObject.Pictures.Remove(val); } } return(SaveAndReply(routeMsg)); } return(routeMsg.ToSource("请执行-addkeys, -removekeys, -addpics或-removepics操作")); } if (cmd.Args.ContainsKey("key-detail")) { var arg = cmd.Args["key-detail"]; var triggerObject = _triggerObjects.FirstOrDefault(k => k.Words.Contains(arg)); if (triggerObject == null) { return(routeMsg.ToSource("不存在该关键词(组)哦")); } return(routeMsg.ToSource(string.Join(", ", triggerObject.Pictures))); } if (cmd.Args.ContainsKey("key-del")) { var arg = cmd.Args["key-del"]; var triggerObject = _triggerObjects.FirstOrDefault(k => k.Words.Contains(arg)); if (triggerObject == null) { return(routeMsg.ToSource("不存在该关键词(组)哦")); } using (Bot.Session.Session session = new Bot.Session.Session(10000, routeMsg.CoolQIdentity, routeMsg.UserId)) { SendMessage(routeMsg.ToSource( $"即将删除:{string.Join(", ", triggerObject.Words)} 一组触发,确定请回复 \"确定\"" ) ); if (session.TryGetMessage(out var msgObj)) { if (msgObj.RawMessage == "确定") { return(SaveAndReply(routeMsg)); } else { return(routeMsg.ToSource("操作已取消。")); } } } } return(null); } string msg = routeMsg.RawMessage; foreach (var item in _triggerObjects) { if (Trig(msg, item.Words, item.Pictures, out string img, item.ChancePercent)) { return(routeMsg.ToSource(new FileImage(Path.Combine(PandaDir, img)).ToString())); } } return(null); }