Class: Herb::Visitor

Inherits:
Object
  • Object
show all
Includes:
AST::Helpers
Defined in:
lib/herb/visitor.rb

Instance Method Summary collapse

Methods included from AST::Helpers

#erb_comment?, #erb_graphql?, #erb_output?, #erb_outputs?, #inline_ruby_comment?

Instance Method Details

#visit(node) ⇒ Object

: (Herb::AST::Node?) -> void



12
13
14
# File 'lib/herb/visitor.rb', line 12

def visit(node)
  node&.accept(self)
end

#visit_all(nodes) ⇒ Object

: (Array) -> void



17
18
19
# File 'lib/herb/visitor.rb', line 17

def visit_all(nodes)
  nodes.each { |node| node&.accept(self) }
end

#visit_cdata_node(node) ⇒ Object

: (Herb::AST::CDATANode) -> void



152
153
154
155
# File 'lib/herb/visitor.rb', line 152

def visit_cdata_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_child_nodes(node) ⇒ Object

: (Herb::AST::Node) -> void



22
23
24
# File 'lib/herb/visitor.rb', line 22

def visit_child_nodes(node)
  node.compact_child_nodes.each { |node| node.accept(self) }
end

#visit_document_node(node) ⇒ Object

: (Herb::AST::DocumentNode) -> void



37
38
39
40
# File 'lib/herb/visitor.rb', line 37

def visit_document_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_erb_begin_node(node) ⇒ Object

: (Herb::AST::ERBBeginNode) -> void



255
256
257
258
259
# File 'lib/herb/visitor.rb', line 255

def visit_erb_begin_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_block_node(node) ⇒ Object

: (Herb::AST::ERBBlockNode) -> void



192
193
194
195
196
# File 'lib/herb/visitor.rb', line 192

def visit_erb_block_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_case_match_node(node) ⇒ Object

: (Herb::AST::ERBCaseMatchNode) -> void



213
214
215
216
217
# File 'lib/herb/visitor.rb', line 213

def visit_erb_case_match_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_case_node(node) ⇒ Object

: (Herb::AST::ERBCaseNode) -> void



206
207
208
209
210
# File 'lib/herb/visitor.rb', line 206

def visit_erb_case_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_content_node(node) ⇒ Object

: (Herb::AST::ERBContentNode) -> void



164
165
166
167
168
# File 'lib/herb/visitor.rb', line 164

def visit_erb_content_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_else_node(node) ⇒ Object

: (Herb::AST::ERBElseNode) -> void



178
179
180
181
182
# File 'lib/herb/visitor.rb', line 178

def visit_erb_else_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_end_node(node) ⇒ Object

: (Herb::AST::ERBEndNode) -> void



171
172
173
174
175
# File 'lib/herb/visitor.rb', line 171

def visit_erb_end_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_ensure_node(node) ⇒ Object

: (Herb::AST::ERBEnsureNode) -> void



248
249
250
251
252
# File 'lib/herb/visitor.rb', line 248

def visit_erb_ensure_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_for_node(node) ⇒ Object

: (Herb::AST::ERBForNode) -> void



234
235
236
237
238
# File 'lib/herb/visitor.rb', line 234

def visit_erb_for_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_if_node(node) ⇒ Object

: (Herb::AST::ERBIfNode) -> void



185
186
187
188
189
# File 'lib/herb/visitor.rb', line 185

def visit_erb_if_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_in_node(node) ⇒ Object

: (Herb::AST::ERBInNode) -> void



308
309
310
311
312
# File 'lib/herb/visitor.rb', line 308

def visit_erb_in_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_node(node) ⇒ Object

: (Herb::AST::Node) -> void



32
33
34
# File 'lib/herb/visitor.rb', line 32

def visit_erb_node(node)
  # Default implementation does nothing
end

#visit_erb_open_tag_node(node) ⇒ Object

: (Herb::AST::ERBOpenTagNode) -> void



121
122
123
124
125
# File 'lib/herb/visitor.rb', line 121

def visit_erb_open_tag_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_render_node(node) ⇒ Object

: (Herb::AST::ERBRenderNode) -> void



281
282
283
284
285
# File 'lib/herb/visitor.rb', line 281

def visit_erb_render_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_rescue_node(node) ⇒ Object

: (Herb::AST::ERBRescueNode) -> void



241
242
243
244
245
# File 'lib/herb/visitor.rb', line 241

def visit_erb_rescue_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_strict_locals_node(node) ⇒ Object

: (Herb::AST::ERBStrictLocalsNode) -> void



294
295
296
297
298
# File 'lib/herb/visitor.rb', line 294

def visit_erb_strict_locals_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_unless_node(node) ⇒ Object

: (Herb::AST::ERBUnlessNode) -> void



262
263
264
265
266
# File 'lib/herb/visitor.rb', line 262

def visit_erb_unless_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_until_node(node) ⇒ Object

: (Herb::AST::ERBUntilNode) -> void



227
228
229
230
231
# File 'lib/herb/visitor.rb', line 227

def visit_erb_until_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_when_node(node) ⇒ Object

: (Herb::AST::ERBWhenNode) -> void



199
200
201
202
203
# File 'lib/herb/visitor.rb', line 199

def visit_erb_when_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_while_node(node) ⇒ Object

: (Herb::AST::ERBWhileNode) -> void



220
221
222
223
224
# File 'lib/herb/visitor.rb', line 220

def visit_erb_while_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_erb_yield_node(node) ⇒ Object

: (Herb::AST::ERBYieldNode) -> void



301
302
303
304
305
# File 'lib/herb/visitor.rb', line 301

def visit_erb_yield_node(node)
  visit_node(node)
  visit_erb_node(node)
  visit_child_nodes(node)
end

#visit_html_attribute_name_node(node) ⇒ Object

: (Herb::AST::HTMLAttributeNameNode) -> void



97
98
99
100
# File 'lib/herb/visitor.rb', line 97

def visit_html_attribute_name_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_attribute_node(node) ⇒ Object

: (Herb::AST::HTMLAttributeNode) -> void



103
104
105
106
# File 'lib/herb/visitor.rb', line 103

def visit_html_attribute_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_attribute_value_node(node) ⇒ Object

: (Herb::AST::HTMLAttributeValueNode) -> void



91
92
93
94
# File 'lib/herb/visitor.rb', line 91

def visit_html_attribute_value_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_close_tag_node(node) ⇒ Object

: (Herb::AST::HTMLCloseTagNode) -> void



61
62
63
64
# File 'lib/herb/visitor.rb', line 61

def visit_html_close_tag_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_comment_node(node) ⇒ Object

: (Herb::AST::HTMLCommentNode) -> void



134
135
136
137
# File 'lib/herb/visitor.rb', line 134

def visit_html_comment_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_conditional_element_node(node) ⇒ Object

: (Herb::AST::HTMLConditionalElementNode) -> void



85
86
87
88
# File 'lib/herb/visitor.rb', line 85

def visit_html_conditional_element_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_conditional_open_tag_node(node) ⇒ Object

: (Herb::AST::HTMLConditionalOpenTagNode) -> void



55
56
57
58
# File 'lib/herb/visitor.rb', line 55

def visit_html_conditional_open_tag_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_doctype_node(node) ⇒ Object

: (Herb::AST::HTMLDoctypeNode) -> void



140
141
142
143
# File 'lib/herb/visitor.rb', line 140

def visit_html_doctype_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_element_node(node) ⇒ Object

: (Herb::AST::HTMLElementNode) -> void



79
80
81
82
# File 'lib/herb/visitor.rb', line 79

def visit_html_element_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_omitted_close_tag_node(node) ⇒ Object

: (Herb::AST::HTMLOmittedCloseTagNode) -> void



67
68
69
70
# File 'lib/herb/visitor.rb', line 67

def visit_html_omitted_close_tag_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_open_tag_node(node) ⇒ Object

: (Herb::AST::HTMLOpenTagNode) -> void



49
50
51
52
# File 'lib/herb/visitor.rb', line 49

def visit_html_open_tag_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_text_node(node) ⇒ Object

: (Herb::AST::HTMLTextNode) -> void



128
129
130
131
# File 'lib/herb/visitor.rb', line 128

def visit_html_text_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_html_virtual_close_tag_node(node) ⇒ Object

: (Herb::AST::HTMLVirtualCloseTagNode) -> void



73
74
75
76
# File 'lib/herb/visitor.rb', line 73

def visit_html_virtual_close_tag_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_literal_node(node) ⇒ Object

: (Herb::AST::LiteralNode) -> void



43
44
45
46
# File 'lib/herb/visitor.rb', line 43

def visit_literal_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_node(node) ⇒ Object

: (Herb::AST::Node) -> void



27
28
29
# File 'lib/herb/visitor.rb', line 27

def visit_node(node)
  # Default implementation does nothing
end

#visit_ruby_html_attributes_splat_node(node) ⇒ Object

: (Herb::AST::RubyHTMLAttributesSplatNode) -> void



115
116
117
118
# File 'lib/herb/visitor.rb', line 115

def visit_ruby_html_attributes_splat_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_ruby_literal_node(node) ⇒ Object

: (Herb::AST::RubyLiteralNode) -> void



109
110
111
112
# File 'lib/herb/visitor.rb', line 109

def visit_ruby_literal_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_ruby_parameter_node(node) ⇒ Object

: (Herb::AST::RubyParameterNode) -> void



288
289
290
291
# File 'lib/herb/visitor.rb', line 288

def visit_ruby_parameter_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_ruby_render_keywords_node(node) ⇒ Object

: (Herb::AST::RubyRenderKeywordsNode) -> void



275
276
277
278
# File 'lib/herb/visitor.rb', line 275

def visit_ruby_render_keywords_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_ruby_render_local_node(node) ⇒ Object

: (Herb::AST::RubyRenderLocalNode) -> void



269
270
271
272
# File 'lib/herb/visitor.rb', line 269

def visit_ruby_render_local_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_whitespace_node(node) ⇒ Object

: (Herb::AST::WhitespaceNode) -> void



158
159
160
161
# File 'lib/herb/visitor.rb', line 158

def visit_whitespace_node(node)
  visit_node(node)
  visit_child_nodes(node)
end

#visit_xml_declaration_node(node) ⇒ Object

: (Herb::AST::XMLDeclarationNode) -> void



146
147
148
149
# File 'lib/herb/visitor.rb', line 146

def visit_xml_declaration_node(node)
  visit_node(node)
  visit_child_nodes(node)
end