private static EvalFactoryNode RecursiveAddAuditNode( PatternNodeFactory patternNodeFactory, EvalFactoryNode parentNode, bool auditPattern, bool auditPatternInstance, EvalFactoryNode evalNode, EvalAuditInstanceCount instanceCount) { var writer = new StringWriter(); evalNode.ToEPL(writer, PatternExpressionPrecedenceEnum.MINIMUM); var expressionText = writer.ToString(); var filterChildNonQuitting = parentNode != null && parentNode.IsFilterChildNonQuitting; EvalFactoryNode audit = patternNodeFactory.MakeAuditNode( auditPattern, auditPatternInstance, expressionText, instanceCount, filterChildNonQuitting); audit.AddChildNode(evalNode); IList <EvalFactoryNode> newChildNodes = new List <EvalFactoryNode>(); foreach (var child in evalNode.ChildNodes) { newChildNodes.Add( RecursiveAddAuditNode( patternNodeFactory, evalNode, auditPattern, auditPatternInstance, child, instanceCount)); } evalNode.ChildNodes.Clear(); evalNode.AddChildNodes(newChildNodes); return(audit); }
public static void PatternCollectAddSubnodesAddParentNode(EvalFactoryNode evalNode, ITree node, IDictionary <ITree, EvalFactoryNode> astPatternNodeMap) { if (evalNode == null) { throw ASTWalkException.From("Invalid null expression node for '" + ASTUtil.PrintNode(node) + "'"); } for (var i = 0; i < node.ChildCount; i++) { var childNode = node.GetChild(i); var childEvalNode = PatternGetRemoveTopNode(childNode, astPatternNodeMap); if (childEvalNode != null) { evalNode.AddChildNode(childEvalNode); } } astPatternNodeMap.Put(node, evalNode); }