44
55module Filterly
66 class Tree
7- attr_reader :root_node , :tree_traverser
7+ attr_reader :root_node
88
99 def initialize ( root_node )
1010 @root_node = root_node
11- @tree_traverser = TreeTraverser . new ( root_node )
1211 end
1312
1413 def self . new ( root_node )
@@ -18,12 +17,23 @@ def self.new(root_node)
1817 super ( root_node )
1918 end
2019
20+ def self . initialize_with_filters
21+ new (
22+ Filterly ::NodeBuilder . build_custom_node (
23+ type : :root ,
24+ args : [ :filters , nil , nil ]
25+ )
26+ )
27+ end
28+
2129 def extend_ast ( node_attr_name , new_node , stmt_type )
22- @root_node = tree_traverser . extend_ast ( node_attr_name , new_node , stmt_type )
30+ @root_node = TreeTraverser
31+ . new ( @root_node )
32+ . extend_ast ( node_attr_name , new_node , stmt_type )
2333 end
2434
2535 def prepend_ast ( new_node , stmt_type )
26- @root_node = tree_traverser . prepend_ast ( new_node , stmt_type )
36+ @root_node = TreeTraverser . new ( @root_node ) . prepend_ast ( new_node , stmt_type )
2737 end
2838
2939 def to_ast
@@ -73,13 +83,13 @@ def recreate_node(node_attr_name, new_node, stmt_type)
7383 [
7484 ast_node . value ,
7585 self
76- . class
77- . new ( ast_node . left )
78- . extend_ast ( node_attr_name , new_node , stmt_type ) ,
86+ . class
87+ . new ( ast_node . left )
88+ . extend_ast ( node_attr_name , new_node , stmt_type ) ,
7989 self
80- . class
81- . new ( ast_node . right )
82- . extend_ast ( node_attr_name , new_node , stmt_type )
90+ . class
91+ . new ( ast_node . right )
92+ . extend_ast ( node_attr_name , new_node , stmt_type )
8393 ]
8494 )
8595 end
0 commit comments