Class: Testprune::SemanticMap::Visitor
- Inherits:
-
Prism::Visitor
- Object
- Prism::Visitor
- Testprune::SemanticMap::Visitor
- Defined in:
- lib/testprune/semantic_map.rb
Overview
Walks the AST, tracking class/module nesting, registering methods and control-flow nodes.
Instance Method Summary collapse
-
#initialize(map) ⇒ Visitor
constructor
A new instance of Visitor.
- #visit_and_node(node) ⇒ Object
- #visit_case_match_node(node) ⇒ Object
- #visit_case_node(node) ⇒ Object
- #visit_class_node(node) ⇒ Object
- #visit_def_node(node) ⇒ Object
- #visit_if_node(node) ⇒ Object
- #visit_module_node(node) ⇒ Object
- #visit_or_node(node) ⇒ Object
- #visit_rescue_node(node) ⇒ Object
- #visit_unless_node(node) ⇒ Object
- #visit_until_node(node) ⇒ Object
- #visit_while_node(node) ⇒ Object
Constructor Details
#initialize(map) ⇒ Visitor
Returns a new instance of Visitor.
112 113 114 115 116 |
# File 'lib/testprune/semantic_map.rb', line 112 def initialize(map) @map = map @scope = [] super() end |
Instance Method Details
#visit_and_node(node) ⇒ Object
166 167 168 169 |
# File 'lib/testprune/semantic_map.rb', line 166 def visit_and_node(node) @map.add_control(node, '&&') super end |
#visit_case_match_node(node) ⇒ Object
146 147 148 149 |
# File 'lib/testprune/semantic_map.rb', line 146 def visit_case_match_node(node) @map.add_control(node, 'case') super end |
#visit_case_node(node) ⇒ Object
141 142 143 144 |
# File 'lib/testprune/semantic_map.rb', line 141 def visit_case_node(node) @map.add_control(node, 'case') super end |
#visit_class_node(node) ⇒ Object
118 119 120 |
# File 'lib/testprune/semantic_map.rb', line 118 def visit_class_node(node) with_scope(node.constant_path.slice) { super } end |
#visit_def_node(node) ⇒ Object
126 127 128 129 |
# File 'lib/testprune/semantic_map.rb', line 126 def visit_def_node(node) @map.add_method(node, @scope, node.receiver ? '.' : '#') super end |
#visit_if_node(node) ⇒ Object
131 132 133 134 |
# File 'lib/testprune/semantic_map.rb', line 131 def visit_if_node(node) @map.add_control(node, 'if') super end |
#visit_module_node(node) ⇒ Object
122 123 124 |
# File 'lib/testprune/semantic_map.rb', line 122 def visit_module_node(node) with_scope(node.constant_path.slice) { super } end |
#visit_or_node(node) ⇒ Object
171 172 173 174 |
# File 'lib/testprune/semantic_map.rb', line 171 def visit_or_node(node) @map.add_control(node, '||') super end |
#visit_rescue_node(node) ⇒ Object
161 162 163 164 |
# File 'lib/testprune/semantic_map.rb', line 161 def visit_rescue_node(node) @map.add_control(node, 'rescue') super end |
#visit_unless_node(node) ⇒ Object
136 137 138 139 |
# File 'lib/testprune/semantic_map.rb', line 136 def visit_unless_node(node) @map.add_control(node, 'unless') super end |
#visit_until_node(node) ⇒ Object
156 157 158 159 |
# File 'lib/testprune/semantic_map.rb', line 156 def visit_until_node(node) @map.add_control(node, 'until') super end |
#visit_while_node(node) ⇒ Object
151 152 153 154 |
# File 'lib/testprune/semantic_map.rb', line 151 def visit_while_node(node) @map.add_control(node, 'while') super end |