예제 #1
0
        /// <summary>
        /// Iterates through all nodes in the analyzer rules tree to try to find a matching node.
        /// </summary>
        /// <param name="nodes">
        /// The collection of nodes to iterate.
        /// </param>
        /// <param name="searchText">
        /// The search text to match against.
        /// </param>
        /// <param name="matchHandler">
        /// Performs node matching.
        /// </param>
        /// <returns>
        /// Returns the matching node, or null if none was found.
        /// </returns>
        private TreeNode IterateAndFindRule(TreeNodeCollection nodes, string searchText, MatchRuleHandler matchHandler)
        {
            Param.AssertNotNull(nodes, "nodes");
            Param.AssertNotNull(searchText, "searchText");
            Param.AssertNotNull(matchHandler, "matchHandler");

            foreach (TreeNode node in nodes)
            {
                if (matchHandler(node, searchText))
                {
                    return node;
                }

                TreeNode child = this.IterateAndFindRule(node.Nodes, searchText, matchHandler);
                if (child != null)
                {
                    return child;
                }
            }

            return null;
        }
예제 #2
0
 private TreeNode IterateAndFindRule(TreeNodeCollection nodes, string searchText, MatchRuleHandler matchHandler)
 {
     foreach (TreeNode node in nodes)
     {
         if (matchHandler(node, searchText))
         {
             return node;
         }
         TreeNode node2 = this.IterateAndFindRule(node.Nodes, searchText, matchHandler);
         if (node2 != null)
         {
             return node2;
         }
     }
     return null;
 }