33from code_ast .visitor import ASTVisitor , ResumingVisitorComposition
44
55from .tokens import ASTToken , TokenSequence
6- from .lang import indent_handler_clazz
7-
86
97
108# Interface ----------------------------------------------------------------
@@ -66,12 +64,14 @@ def _create_token_handler(self, code_lines):
6664
6765 def _create_tree_visitors (self , token_handler , visitors = None ):
6866 visitors = visitors or []
67+ visitors += self ._visitor_factories
6968
70- visitors += [visitor_fn (token_handler )
71- for visitor_fn in self ._visitor_factories ]
69+ visitors = [visitor_fn (token_handler )
70+ if callable (visitor_fn )
71+ else visitor_fn
72+ for visitor_fn in visitors ]
7273
7374 return ResumingVisitorComposition (
74- LeafVisitor (self .config , token_handler ),
7575 ErrorVisitor (self .config ),
7676 * visitors
7777 )
@@ -88,35 +88,21 @@ def __call__(self, code_tree, code_lines, visitors = None):
8888
8989def create_tokenizer (config ):
9090 """Function to create tokenizer based on configuration"""
91- tokenizer = Tokenizer (config )
92-
93- if config .indent_tokens :
94- indent_handler = indent_handler_clazz (config .lang )
95- assert indent_handler is not None , "Language %s does not support indentation handling" % config .lang
96- tokenizer .append_visitor (indent_handler )
97-
98- return tokenizer
91+ return Tokenizer (config )
9992
10093
10194# Basic visitor -----------------------------------------------------------
10295
10396
10497class LeafVisitor (ASTVisitor ):
10598
106- def __init__ (self , config , node_handler ):
107- self .config = config
99+ def __init__ (self , node_handler ):
108100 self .node_handler = node_handler
109101
110102 def visit_string (self , node ):
111103 self .node_handler (node )
112104 return False
113105
114- def visit_unary_operator (self , node ):
115- # TODO Use a custom leaf visitor
116- if node .children [- 1 ].type == "integer" :
117- self .node_handler (node )
118- return False
119-
120106 def visit (self , node ):
121107 if node .child_count == 0 :
122108 self .node_handler (node )
0 commit comments