public IScript Create(string script, Element proc) { List <string> parameters = null; string param = Utility.GetParameter(script); int numParams; if (param == null) { numParams = 0; } else { parameters = Utility.SplitParameter(param); numParams = parameters.Count; } if (ExpectedParameters.Count() > 0) { if (!ExpectedParameters.Contains(numParams)) { throw new Exception(string.Format("Expected {0} parameter(s)", FormatExpectedParameters(), script)); } } if (!RequireProcedure) { return(CreateInt(parameters)); } else { return(CreateInt(parameters, proc)); } }
public override CommandOutput Run(Context context, IEnumerable <string> parameters) { var action = (string)ExpectedParameters.ElementAt(0).Convert(parameters.ElementAt(0)); var actionParam = parameters.Count() > 1 ? (string)ExpectedParameters.ElementAt(1).Convert(parameters.ElementAt(1)) : string.Empty; switch (action.ToLower()) { case "peek": return(PeekMacro(actionParam)); case "record": return(RecordMacro(actionParam)); case "run": return(RunMacro(actionParam, context)); case "save": return(SaveMacro(context)); case "cancel": return(CancelMacro(context)); case "status": return(GetMacroStatus()); case "list": return(ListMacros(context)); case "delete": return(DeleteMacro(actionParam)); default: return(new CommandOutput($"unknown action '{action}'", false)); } }
public IScript Create(string script, ScriptContext scriptContext) { List <string> parameters = null; string param = Utility.GetParameter(script); int numParams; if (param == null) { numParams = 0; } else { parameters = Utility.SplitParameter(param); numParams = parameters.Count; } if (ExpectedParameters.Count() > 0) { if (!ExpectedParameters.Contains(numParams)) { throw new Exception(string.Format("Expected {0} parameter(s) in script '{1}'", FormatExpectedParameters(), script)); } } return(CreateInt(parameters, scriptContext)); }
private bool AreItemsEqual(object[] items) { List <Type> list = ExpectedParameters.ToList(); foreach (var item in items) { Type itemType = item.GetType(); (bool rmFlag, Type rmType) = FindType(itemType, list); if (rmFlag) { list.Remove(rmType); } else { return(false); } } return(true); }
private void BuildOrderByNode(EqlOrderByNode orderByNode, ParseTreeNode parseTreeNode) { //first 2 nodes are keywords ORDER BY var orderbyListNode = parseTreeNode.ChildNodes[2].ChildNodes; foreach (var orderMemberNode in orderbyListNode) { string fieldName = string.Empty; var direction = "ASC"; if (orderMemberNode.ChildNodes[0].ChildNodes[0].Token.ValueString == "@") //argument { var paramName = "@" + orderMemberNode.ChildNodes[0].ChildNodes[1].Token.ValueString; if (!ExpectedParameters.Contains(paramName)) { ExpectedParameters.Add(paramName); } var param = Parameters.SingleOrDefault(x => x.ParameterName == paramName); if (param == null) { throw new EqlException($"ORDER BY: Parameter '{paramName}' not found."); } fieldName = (param.Value ?? string.Empty).ToString(); if (string.IsNullOrWhiteSpace(fieldName)) { throw new EqlException($"ORDER BY: Invalid order field name in parameter '{paramName}'"); } } else { fieldName = orderMemberNode.ChildNodes[0].ChildNodes[0].Token.ValueString; } if (orderMemberNode.ChildNodes.Count > 1 && orderMemberNode.ChildNodes[1].ChildNodes.Count > 0) { if (orderMemberNode.ChildNodes[1].ChildNodes[0].ChildNodes.Count > 0 && orderMemberNode.ChildNodes[1].ChildNodes[0].ChildNodes[0].Token.ValueString == "@") { var paramName = "@" + orderMemberNode.ChildNodes[1].ChildNodes[0].ChildNodes[1].Token.ValueString; if (!ExpectedParameters.Contains(paramName)) { ExpectedParameters.Add(paramName); } var param = Parameters.SingleOrDefault(x => x.ParameterName == paramName); if (param == null) { throw new EqlException($"ORDER BY: Parameter '{paramName}' not found."); } direction = (param.Value ?? string.Empty).ToString(); if (string.IsNullOrWhiteSpace(direction)) { throw new EqlException($"ORDER BY: Invalid order direction in parameter '{paramName}'"); } direction = direction.ToUpper(); if (!(direction == "ASC" || direction == "DESC")) { throw new EqlException($"ORDER BY: Invalid direction '{direction}'"); } } else { direction = orderMemberNode.ChildNodes[1].ChildNodes[0].Token.ValueString.ToUpper(); } } orderByNode.Fields.Add(new EqlOrderByFieldNode { FieldName = fieldName, Direction = direction }); } }
private void BuildSelectTree(EqlSelectNode selectNode, ParseTreeNode parseTreeNode) { foreach (var parseNode in parseTreeNode.ChildNodes) { switch (parseNode.Term.Name.ToLowerInvariant()) { case "select": //select keyword - ignore it continue; case "column_item_list": BuildSelectFieldList(selectNode.Fields, parseNode); continue; case "from_clause": selectNode.From = new EqlFromNode { EntityName = parseNode.ChildNodes[1].ChildNodes[0].Token.ValueString }; continue; case "where_clause_optional": if (parseNode.ChildNodes.Count == 0) { continue; } selectNode.Where = new EqlWhereNode(); BuildWhereNode(selectNode.Where, parseNode); continue; case "order_clause_optional": if (parseNode.ChildNodes.Count == 0) { continue; } selectNode.OrderBy = new EqlOrderByNode(); BuildOrderByNode(selectNode.OrderBy, parseNode); continue; case "page_clause_optional": { if (parseNode.ChildNodes.Count == 0) { continue; } selectNode.Page = new EqlPageNode(); var termType = parseNode.ChildNodes[1].Term.Name.ToLowerInvariant(); switch (termType) { case "argument": { string paramName = "@" + parseNode.ChildNodes[1].ChildNodes[1].Token.ValueString; if (!ExpectedParameters.Contains(paramName)) { ExpectedParameters.Add(paramName); } var param = Parameters.SingleOrDefault(x => x.ParameterName == paramName); if (param == null) { throw new EqlException($"PAGE: Parameter '{paramName}' not found."); } int number; if (!Int32.TryParse((param.Value ?? string.Empty).ToString(), out number)) { throw new EqlException($"PAGE: Invalid parameter '{paramName}' value '{param.Value}'."); } selectNode.Page.Number = number; } break; case "number": selectNode.Page.Number = Convert.ToDecimal(parseNode.ChildNodes[1].Token.ValueString); break; default: throw new EqlException("Invalid PAGE argument."); } } continue; case "pagesize_clause_optional": { if (parseNode.ChildNodes.Count == 0) { continue; } selectNode.PageSize = new EqlPageSizeNode(); var termType = parseNode.ChildNodes[1].Term.Name.ToLowerInvariant(); switch (termType) { case "argument": { string paramName = "@" + parseNode.ChildNodes[1].ChildNodes[1].Token.ValueString; if (!ExpectedParameters.Contains(paramName)) { ExpectedParameters.Add(paramName); } var param = Parameters.SingleOrDefault(x => x.ParameterName == paramName); if (param == null) { throw new EqlException($"PAGESIZE: Parameter '{paramName}' not found."); } int number; if (!Int32.TryParse((param.Value ?? string.Empty).ToString(), out number)) { throw new EqlException($"PAGESIZE: Invalid parameter '{paramName}' value '{param.Value}'."); } selectNode.PageSize.Number = number; } break; case "number": selectNode.PageSize.Number = Convert.ToDecimal(parseNode.ChildNodes[1].Token.ValueString); break; default: throw new EqlException("PAGESIZE: Invalid syntax."); } } continue; default: throw new EqlException("Unknown term in select command syntax parse tree."); } } }
public MeanFilterImplementation() { ExpectedParameters.Add("maskSize"); }
public bool CanInvoke <TKey>(TKey key, Type expectedReturnType = null, params object[] parameters) => ExpectedKeyType == key.GetType() && _Key.Equals(key) && expectedReturnType == ExpectedReturnType && ExpectedParameters.Count() == parameters.Count() && AreItemsEqual(parameters);
public Binarization() { ExpectedParameters.Add("threshold"); }