herb 0.1.1-x86-linux-musl → 0.2.0-x86-linux-musl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +20 -2
  3. data/ext/herb/extension.c +46 -14
  4. data/ext/herb/extension.h +9 -0
  5. data/ext/herb/extension_helpers.c +9 -27
  6. data/ext/herb/nodes.c +104 -1
  7. data/herb.gemspec +2 -1
  8. data/lib/herb/3.0/herb.so +0 -0
  9. data/lib/herb/3.1/herb.so +0 -0
  10. data/lib/herb/3.2/herb.so +0 -0
  11. data/lib/herb/3.3/herb.so +0 -0
  12. data/lib/herb/3.4/herb.so +0 -0
  13. data/lib/herb/ast/node.rb +40 -4
  14. data/lib/herb/ast/nodes.rb +892 -140
  15. data/lib/herb/ast.rb +1 -0
  16. data/lib/herb/cli.rb +4 -1
  17. data/lib/herb/errors.rb +84 -33
  18. data/lib/herb/lex_result.rb +4 -1
  19. data/lib/herb/libherb/array.rb +3 -0
  20. data/lib/herb/libherb/ast_node.rb +3 -0
  21. data/lib/herb/libherb/buffer.rb +3 -0
  22. data/lib/herb/libherb/extract_result.rb +3 -0
  23. data/lib/herb/libherb/lex_result.rb +3 -0
  24. data/lib/herb/libherb/libherb.rb +3 -0
  25. data/lib/herb/libherb/parse_result.rb +3 -0
  26. data/lib/herb/libherb/token.rb +3 -0
  27. data/lib/herb/libherb.rb +3 -0
  28. data/lib/herb/location.rb +15 -6
  29. data/lib/herb/parse_result.rb +10 -1
  30. data/lib/herb/position.rb +17 -8
  31. data/lib/herb/project.rb +13 -4
  32. data/lib/herb/range.rb +18 -8
  33. data/lib/herb/result.rb +7 -1
  34. data/lib/herb/token.rb +14 -4
  35. data/lib/herb/token_list.rb +10 -1
  36. data/lib/herb/version.rb +2 -1
  37. data/lib/herb/visitor.rb +175 -0
  38. data/lib/herb/warnings.rb +43 -0
  39. data/lib/herb.rb +6 -1
  40. data/sig/herb/ast/node.rbs +48 -0
  41. data/sig/herb/ast/nodes.rbs +941 -0
  42. data/sig/herb/ast.rbs +6 -0
  43. data/sig/herb/errors.rbs +193 -0
  44. data/sig/herb/lex_result.rbs +16 -0
  45. data/sig/herb/location.rbs +30 -0
  46. data/sig/herb/parse_result.rbs +22 -0
  47. data/sig/herb/position.rbs +30 -0
  48. data/sig/herb/range.rbs +33 -0
  49. data/sig/herb/result.rbs +20 -0
  50. data/sig/herb/token.rbs +31 -0
  51. data/sig/herb/token_list.rbs +13 -0
  52. data/sig/herb/version.rbs +5 -0
  53. data/sig/herb/visitor.rbs +104 -0
  54. data/sig/herb/warnings.rbs +28 -0
  55. data/sig/herb.rbs +4 -0
  56. data/sig/serialized.rbs +9 -0
  57. data/sig/serialized_ast_errors.rbs +53 -0
  58. data/sig/serialized_ast_nodes.rbs +221 -0
  59. data/src/analyze.c +138 -43
  60. data/src/analyze_helpers.c +44 -1
  61. data/src/analyzed_ruby.c +10 -1
  62. data/src/ast_nodes.c +103 -1
  63. data/src/ast_pretty_print.c +60 -0
  64. data/src/buffer.c +60 -27
  65. data/src/extract.c +57 -20
  66. data/src/include/analyze.h +3 -0
  67. data/src/include/analyze_helpers.h +6 -0
  68. data/src/include/analyzed_ruby.h +3 -0
  69. data/src/include/ast_nodes.h +32 -0
  70. data/src/include/buffer.h +5 -2
  71. data/src/include/lexer_peek_helpers.h +2 -2
  72. data/src/include/macros.h +2 -2
  73. data/src/include/version.h +1 -1
  74. data/src/lexer.c +1 -1
  75. data/src/parser.c +17 -7
  76. data/src/token.c +1 -1
  77. data/src/util.c +3 -1
  78. data/src/visitor.c +36 -0
  79. metadata +24 -3
  80. /data/{License.txt → LICENSE.txt} +0 -0
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ # typed: true
2
3
 
3
4
  # NOTE: This file is generated by the templates/template.rb script and should not be
4
5
  # modified manually. See /Users/marcoroth/Development/herb-release/templates/lib/herb/ast/nodes.rb.erb
@@ -6,23 +7,42 @@
6
7
  module Herb
7
8
  module AST
8
9
  class DocumentNode < Node
9
- attr_reader :children
10
+ attr_reader :children #: Array[Herb::AST::Node]
10
11
 
12
+ #: (String, Location, Array[Herb::Errors::Error], Array[Herb::AST::Node]) -> void
11
13
  def initialize(type, location, errors, children)
12
14
  super(type, location, errors)
13
15
  @children = children
14
16
  end
15
17
 
18
+ #: () -> serialized_document_node
16
19
  def to_hash
17
20
  super.merge({
18
21
  children: children,
19
- })
22
+ }) #: Herb::serialized_document_node
20
23
  end
21
24
 
25
+ #: (Visitor) -> void
26
+ def accept(visitor)
27
+ visitor.visit_document_node(self)
28
+ end
29
+
30
+ #: () -> Array[Herb::AST::Node?]
31
+ def child_nodes
32
+ [*children]
33
+ end
34
+
35
+ #: () -> Array[Herb::AST::Node]
36
+ def compact_child_nodes
37
+ child_nodes.compact
38
+ end
39
+
40
+ #: () -> String
22
41
  def inspect
23
42
  tree_inspect.rstrip.gsub(/\s+$/, "")
24
43
  end
25
44
 
45
+ #: (?Integer) -> String
26
46
  def tree_inspect(indent = 0)
27
47
  output = +""
28
48
 
@@ -41,23 +61,42 @@ module Herb
41
61
  end
42
62
 
43
63
  class LiteralNode < Node
44
- attr_reader :content
64
+ attr_reader :content #: String
45
65
 
66
+ #: (String, Location, Array[Herb::Errors::Error], String) -> void
46
67
  def initialize(type, location, errors, content)
47
68
  super(type, location, errors)
48
69
  @content = content.force_encoding("utf-8")
49
70
  end
50
71
 
72
+ #: () -> serialized_literal_node
51
73
  def to_hash
52
74
  super.merge({
53
75
  content: content,
54
- })
76
+ }) #: Herb::serialized_literal_node
77
+ end
78
+
79
+ #: (Visitor) -> void
80
+ def accept(visitor)
81
+ visitor.visit_literal_node(self)
82
+ end
83
+
84
+ #: () -> Array[Herb::AST::Node?]
85
+ def child_nodes
86
+ []
87
+ end
88
+
89
+ #: () -> Array[Herb::AST::Node]
90
+ def compact_child_nodes
91
+ child_nodes.compact
55
92
  end
56
93
 
94
+ #: () -> String
57
95
  def inspect
58
96
  tree_inspect.rstrip.gsub(/\s+$/, "")
59
97
  end
60
98
 
99
+ #: (?Integer) -> String
61
100
  def tree_inspect(indent = 0)
62
101
  output = +""
63
102
 
@@ -75,12 +114,13 @@ module Herb
75
114
  end
76
115
 
77
116
  class HTMLOpenTagNode < Node
78
- attr_reader :tag_opening
79
- attr_reader :tag_name
80
- attr_reader :tag_closing
81
- attr_reader :children
82
- attr_reader :is_void
117
+ attr_reader :tag_opening #: Herb::Token
118
+ attr_reader :tag_name #: Herb::Token
119
+ attr_reader :tag_closing #: Herb::Token
120
+ attr_reader :children #: Array[Herb::AST::Node]
121
+ attr_reader :is_void #: bool
83
122
 
123
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], bool) -> void
84
124
  def initialize(type, location, errors, tag_opening, tag_name, tag_closing, children, is_void)
85
125
  super(type, location, errors)
86
126
  @tag_opening = tag_opening
@@ -90,6 +130,7 @@ module Herb
90
130
  @is_void = is_void
91
131
  end
92
132
 
133
+ #: () -> serialized_html_open_tag_node
93
134
  def to_hash
94
135
  super.merge({
95
136
  tag_opening: tag_opening,
@@ -97,13 +138,30 @@ module Herb
97
138
  tag_closing: tag_closing,
98
139
  children: children,
99
140
  is_void: is_void,
100
- })
141
+ }) #: Herb::serialized_html_open_tag_node
142
+ end
143
+
144
+ #: (Visitor) -> void
145
+ def accept(visitor)
146
+ visitor.visit_html_open_tag_node(self)
101
147
  end
102
148
 
149
+ #: () -> Array[Herb::AST::Node?]
150
+ def child_nodes
151
+ [*children]
152
+ end
153
+
154
+ #: () -> Array[Herb::AST::Node]
155
+ def compact_child_nodes
156
+ child_nodes.compact
157
+ end
158
+
159
+ #: () -> String
103
160
  def inspect
104
161
  tree_inspect.rstrip.gsub(/\s+$/, "")
105
162
  end
106
163
 
164
+ #: (?Integer) -> String
107
165
  def tree_inspect(indent = 0)
108
166
  output = +""
109
167
 
@@ -134,10 +192,11 @@ module Herb
134
192
  end
135
193
 
136
194
  class HTMLCloseTagNode < Node
137
- attr_reader :tag_opening
138
- attr_reader :tag_name
139
- attr_reader :tag_closing
195
+ attr_reader :tag_opening #: Herb::Token
196
+ attr_reader :tag_name #: Herb::Token
197
+ attr_reader :tag_closing #: Herb::Token
140
198
 
199
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token) -> void
141
200
  def initialize(type, location, errors, tag_opening, tag_name, tag_closing)
142
201
  super(type, location, errors)
143
202
  @tag_opening = tag_opening
@@ -145,18 +204,36 @@ module Herb
145
204
  @tag_closing = tag_closing
146
205
  end
147
206
 
207
+ #: () -> serialized_html_close_tag_node
148
208
  def to_hash
149
209
  super.merge({
150
210
  tag_opening: tag_opening,
151
211
  tag_name: tag_name,
152
212
  tag_closing: tag_closing,
153
- })
213
+ }) #: Herb::serialized_html_close_tag_node
214
+ end
215
+
216
+ #: (Visitor) -> void
217
+ def accept(visitor)
218
+ visitor.visit_html_close_tag_node(self)
219
+ end
220
+
221
+ #: () -> Array[Herb::AST::Node?]
222
+ def child_nodes
223
+ []
154
224
  end
155
225
 
226
+ #: () -> Array[Herb::AST::Node]
227
+ def compact_child_nodes
228
+ child_nodes.compact
229
+ end
230
+
231
+ #: () -> String
156
232
  def inspect
157
233
  tree_inspect.rstrip.gsub(/\s+$/, "")
158
234
  end
159
235
 
236
+ #: (?Integer) -> String
160
237
  def tree_inspect(indent = 0)
161
238
  output = +""
162
239
 
@@ -182,12 +259,13 @@ module Herb
182
259
  end
183
260
 
184
261
  class HTMLSelfCloseTagNode < Node
185
- attr_reader :tag_opening
186
- attr_reader :tag_name
187
- attr_reader :attributes
188
- attr_reader :tag_closing
189
- attr_reader :is_void
262
+ attr_reader :tag_opening #: Herb::Token
263
+ attr_reader :tag_name #: Herb::Token
264
+ attr_reader :attributes #: Array[Herb::AST::HTMLAttributeNode]
265
+ attr_reader :tag_closing #: Herb::Token
266
+ attr_reader :is_void #: bool
190
267
 
268
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Array[Herb::AST::HTMLAttributeNode], Herb::Token, bool) -> void
191
269
  def initialize(type, location, errors, tag_opening, tag_name, attributes, tag_closing, is_void)
192
270
  super(type, location, errors)
193
271
  @tag_opening = tag_opening
@@ -197,6 +275,7 @@ module Herb
197
275
  @is_void = is_void
198
276
  end
199
277
 
278
+ #: () -> serialized_html_self_close_tag_node
200
279
  def to_hash
201
280
  super.merge({
202
281
  tag_opening: tag_opening,
@@ -204,13 +283,30 @@ module Herb
204
283
  attributes: attributes,
205
284
  tag_closing: tag_closing,
206
285
  is_void: is_void,
207
- })
286
+ }) #: Herb::serialized_html_self_close_tag_node
287
+ end
288
+
289
+ #: (Visitor) -> void
290
+ def accept(visitor)
291
+ visitor.visit_html_self_close_tag_node(self)
292
+ end
293
+
294
+ #: () -> Array[Herb::AST::Node?]
295
+ def child_nodes
296
+ [*attributes]
208
297
  end
209
298
 
299
+ #: () -> Array[Herb::AST::Node]
300
+ def compact_child_nodes
301
+ child_nodes.compact
302
+ end
303
+
304
+ #: () -> String
210
305
  def inspect
211
306
  tree_inspect.rstrip.gsub(/\s+$/, "")
212
307
  end
213
308
 
309
+ #: (?Integer) -> String
214
310
  def tree_inspect(indent = 0)
215
311
  output = +""
216
312
 
@@ -241,12 +337,13 @@ module Herb
241
337
  end
242
338
 
243
339
  class HTMLElementNode < Node
244
- attr_reader :open_tag
245
- attr_reader :tag_name
246
- attr_reader :body
247
- attr_reader :close_tag
248
- attr_reader :is_void
340
+ attr_reader :open_tag #: Herb::AST::HTMLOpenTagNode
341
+ attr_reader :tag_name #: Herb::Token
342
+ attr_reader :body #: Array[Herb::AST::Node]
343
+ attr_reader :close_tag #: Herb::AST::HTMLCloseTagNode
344
+ attr_reader :is_void #: bool
249
345
 
346
+ #: (String, Location, Array[Herb::Errors::Error], Herb::AST::HTMLOpenTagNode, Herb::Token, Array[Herb::AST::Node], Herb::AST::HTMLCloseTagNode, bool) -> void
250
347
  def initialize(type, location, errors, open_tag, tag_name, body, close_tag, is_void)
251
348
  super(type, location, errors)
252
349
  @open_tag = open_tag
@@ -256,6 +353,7 @@ module Herb
256
353
  @is_void = is_void
257
354
  end
258
355
 
356
+ #: () -> serialized_html_element_node
259
357
  def to_hash
260
358
  super.merge({
261
359
  open_tag: open_tag,
@@ -263,13 +361,30 @@ module Herb
263
361
  body: body,
264
362
  close_tag: close_tag,
265
363
  is_void: is_void,
266
- })
364
+ }) #: Herb::serialized_html_element_node
267
365
  end
268
366
 
367
+ #: (Visitor) -> void
368
+ def accept(visitor)
369
+ visitor.visit_html_element_node(self)
370
+ end
371
+
372
+ #: () -> Array[Herb::AST::Node?]
373
+ def child_nodes
374
+ [open_tag, *body, close_tag]
375
+ end
376
+
377
+ #: () -> Array[Herb::AST::Node]
378
+ def compact_child_nodes
379
+ child_nodes.compact
380
+ end
381
+
382
+ #: () -> String
269
383
  def inspect
270
384
  tree_inspect.rstrip.gsub(/\s+$/, "")
271
385
  end
272
386
 
387
+ #: (?Integer) -> String
273
388
  def tree_inspect(indent = 0)
274
389
  output = +""
275
390
 
@@ -310,11 +425,12 @@ module Herb
310
425
  end
311
426
 
312
427
  class HTMLAttributeValueNode < Node
313
- attr_reader :open_quote
314
- attr_reader :children
315
- attr_reader :close_quote
316
- attr_reader :quoted
428
+ attr_reader :open_quote #: Herb::Token
429
+ attr_reader :children #: Array[Herb::AST::Node]
430
+ attr_reader :close_quote #: Herb::Token
431
+ attr_reader :quoted #: bool
317
432
 
433
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Array[Herb::AST::Node], Herb::Token, bool) -> void
318
434
  def initialize(type, location, errors, open_quote, children, close_quote, quoted)
319
435
  super(type, location, errors)
320
436
  @open_quote = open_quote
@@ -323,19 +439,37 @@ module Herb
323
439
  @quoted = quoted
324
440
  end
325
441
 
442
+ #: () -> serialized_html_attribute_value_node
326
443
  def to_hash
327
444
  super.merge({
328
445
  open_quote: open_quote,
329
446
  children: children,
330
447
  close_quote: close_quote,
331
448
  quoted: quoted,
332
- })
449
+ }) #: Herb::serialized_html_attribute_value_node
450
+ end
451
+
452
+ #: (Visitor) -> void
453
+ def accept(visitor)
454
+ visitor.visit_html_attribute_value_node(self)
333
455
  end
334
456
 
457
+ #: () -> Array[Herb::AST::Node?]
458
+ def child_nodes
459
+ [*children]
460
+ end
461
+
462
+ #: () -> Array[Herb::AST::Node]
463
+ def compact_child_nodes
464
+ child_nodes.compact
465
+ end
466
+
467
+ #: () -> String
335
468
  def inspect
336
469
  tree_inspect.rstrip.gsub(/\s+$/, "")
337
470
  end
338
471
 
472
+ #: (?Integer) -> String
339
473
  def tree_inspect(indent = 0)
340
474
  output = +""
341
475
 
@@ -363,23 +497,42 @@ module Herb
363
497
  end
364
498
 
365
499
  class HTMLAttributeNameNode < Node
366
- attr_reader :name
500
+ attr_reader :name #: Herb::Token
367
501
 
502
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token) -> void
368
503
  def initialize(type, location, errors, name)
369
504
  super(type, location, errors)
370
505
  @name = name
371
506
  end
372
507
 
508
+ #: () -> serialized_html_attribute_name_node
373
509
  def to_hash
374
510
  super.merge({
375
511
  name: name,
376
- })
512
+ }) #: Herb::serialized_html_attribute_name_node
513
+ end
514
+
515
+ #: (Visitor) -> void
516
+ def accept(visitor)
517
+ visitor.visit_html_attribute_name_node(self)
518
+ end
519
+
520
+ #: () -> Array[Herb::AST::Node?]
521
+ def child_nodes
522
+ []
377
523
  end
378
524
 
525
+ #: () -> Array[Herb::AST::Node]
526
+ def compact_child_nodes
527
+ child_nodes.compact
528
+ end
529
+
530
+ #: () -> String
379
531
  def inspect
380
532
  tree_inspect.rstrip.gsub(/\s+$/, "")
381
533
  end
382
534
 
535
+ #: (?Integer) -> String
383
536
  def tree_inspect(indent = 0)
384
537
  output = +""
385
538
 
@@ -399,10 +552,11 @@ module Herb
399
552
  end
400
553
 
401
554
  class HTMLAttributeNode < Node
402
- attr_reader :name
403
- attr_reader :equals
404
- attr_reader :value
555
+ attr_reader :name #: Herb::AST::HTMLAttributeNameNode
556
+ attr_reader :equals #: Herb::Token
557
+ attr_reader :value #: Herb::AST::HTMLAttributeValueNode
405
558
 
559
+ #: (String, Location, Array[Herb::Errors::Error], Herb::AST::HTMLAttributeNameNode, Herb::Token, Herb::AST::HTMLAttributeValueNode) -> void
406
560
  def initialize(type, location, errors, name, equals, value)
407
561
  super(type, location, errors)
408
562
  @name = name
@@ -410,18 +564,36 @@ module Herb
410
564
  @value = value
411
565
  end
412
566
 
567
+ #: () -> serialized_html_attribute_node
413
568
  def to_hash
414
569
  super.merge({
415
570
  name: name,
416
571
  equals: equals,
417
572
  value: value,
418
- })
573
+ }) #: Herb::serialized_html_attribute_node
574
+ end
575
+
576
+ #: (Visitor) -> void
577
+ def accept(visitor)
578
+ visitor.visit_html_attribute_node(self)
579
+ end
580
+
581
+ #: () -> Array[Herb::AST::Node?]
582
+ def child_nodes
583
+ [name, value]
584
+ end
585
+
586
+ #: () -> Array[Herb::AST::Node]
587
+ def compact_child_nodes
588
+ child_nodes.compact
419
589
  end
420
590
 
591
+ #: () -> String
421
592
  def inspect
422
593
  tree_inspect.rstrip.gsub(/\s+$/, "")
423
594
  end
424
595
 
596
+ #: (?Integer) -> String
425
597
  def tree_inspect(indent = 0)
426
598
  output = +""
427
599
 
@@ -457,23 +629,42 @@ module Herb
457
629
  end
458
630
 
459
631
  class HTMLTextNode < Node
460
- attr_reader :content
632
+ attr_reader :content #: String
461
633
 
634
+ #: (String, Location, Array[Herb::Errors::Error], String) -> void
462
635
  def initialize(type, location, errors, content)
463
636
  super(type, location, errors)
464
637
  @content = content.force_encoding("utf-8")
465
638
  end
466
639
 
640
+ #: () -> serialized_html_text_node
467
641
  def to_hash
468
642
  super.merge({
469
643
  content: content,
470
- })
644
+ }) #: Herb::serialized_html_text_node
471
645
  end
472
646
 
647
+ #: (Visitor) -> void
648
+ def accept(visitor)
649
+ visitor.visit_html_text_node(self)
650
+ end
651
+
652
+ #: () -> Array[Herb::AST::Node?]
653
+ def child_nodes
654
+ []
655
+ end
656
+
657
+ #: () -> Array[Herb::AST::Node]
658
+ def compact_child_nodes
659
+ child_nodes.compact
660
+ end
661
+
662
+ #: () -> String
473
663
  def inspect
474
664
  tree_inspect.rstrip.gsub(/\s+$/, "")
475
665
  end
476
666
 
667
+ #: (?Integer) -> String
477
668
  def tree_inspect(indent = 0)
478
669
  output = +""
479
670
 
@@ -491,10 +682,11 @@ module Herb
491
682
  end
492
683
 
493
684
  class HTMLCommentNode < Node
494
- attr_reader :comment_start
495
- attr_reader :children
496
- attr_reader :comment_end
685
+ attr_reader :comment_start #: Herb::Token
686
+ attr_reader :children #: Array[Herb::AST::Node]
687
+ attr_reader :comment_end #: Herb::Token
497
688
 
689
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Array[Herb::AST::Node], Herb::Token) -> void
498
690
  def initialize(type, location, errors, comment_start, children, comment_end)
499
691
  super(type, location, errors)
500
692
  @comment_start = comment_start
@@ -502,18 +694,36 @@ module Herb
502
694
  @comment_end = comment_end
503
695
  end
504
696
 
697
+ #: () -> serialized_html_comment_node
505
698
  def to_hash
506
699
  super.merge({
507
700
  comment_start: comment_start,
508
701
  children: children,
509
702
  comment_end: comment_end,
510
- })
703
+ }) #: Herb::serialized_html_comment_node
511
704
  end
512
705
 
706
+ #: (Visitor) -> void
707
+ def accept(visitor)
708
+ visitor.visit_html_comment_node(self)
709
+ end
710
+
711
+ #: () -> Array[Herb::AST::Node?]
712
+ def child_nodes
713
+ [*children]
714
+ end
715
+
716
+ #: () -> Array[Herb::AST::Node]
717
+ def compact_child_nodes
718
+ child_nodes.compact
719
+ end
720
+
721
+ #: () -> String
513
722
  def inspect
514
723
  tree_inspect.rstrip.gsub(/\s+$/, "")
515
724
  end
516
725
 
726
+ #: (?Integer) -> String
517
727
  def tree_inspect(indent = 0)
518
728
  output = +""
519
729
 
@@ -538,10 +748,11 @@ module Herb
538
748
  end
539
749
 
540
750
  class HTMLDoctypeNode < Node
541
- attr_reader :tag_opening
542
- attr_reader :children
543
- attr_reader :tag_closing
751
+ attr_reader :tag_opening #: Herb::Token
752
+ attr_reader :children #: Array[Herb::AST::Node]
753
+ attr_reader :tag_closing #: Herb::Token
544
754
 
755
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Array[Herb::AST::Node], Herb::Token) -> void
545
756
  def initialize(type, location, errors, tag_opening, children, tag_closing)
546
757
  super(type, location, errors)
547
758
  @tag_opening = tag_opening
@@ -549,18 +760,36 @@ module Herb
549
760
  @tag_closing = tag_closing
550
761
  end
551
762
 
763
+ #: () -> serialized_html_doctype_node
552
764
  def to_hash
553
765
  super.merge({
554
766
  tag_opening: tag_opening,
555
767
  children: children,
556
768
  tag_closing: tag_closing,
557
- })
769
+ }) #: Herb::serialized_html_doctype_node
770
+ end
771
+
772
+ #: (Visitor) -> void
773
+ def accept(visitor)
774
+ visitor.visit_html_doctype_node(self)
558
775
  end
559
776
 
777
+ #: () -> Array[Herb::AST::Node?]
778
+ def child_nodes
779
+ [*children]
780
+ end
781
+
782
+ #: () -> Array[Herb::AST::Node]
783
+ def compact_child_nodes
784
+ child_nodes.compact
785
+ end
786
+
787
+ #: () -> String
560
788
  def inspect
561
789
  tree_inspect.rstrip.gsub(/\s+$/, "")
562
790
  end
563
791
 
792
+ #: (?Integer) -> String
564
793
  def tree_inspect(indent = 0)
565
794
  output = +""
566
795
 
@@ -585,23 +814,42 @@ module Herb
585
814
  end
586
815
 
587
816
  class WhitespaceNode < Node
588
- attr_reader :value
817
+ attr_reader :value #: Herb::Token
589
818
 
819
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token) -> void
590
820
  def initialize(type, location, errors, value)
591
821
  super(type, location, errors)
592
822
  @value = value
593
823
  end
594
824
 
825
+ #: () -> serialized_whitespace_node
595
826
  def to_hash
596
827
  super.merge({
597
828
  value: value,
598
- })
829
+ }) #: Herb::serialized_whitespace_node
830
+ end
831
+
832
+ #: (Visitor) -> void
833
+ def accept(visitor)
834
+ visitor.visit_whitespace_node(self)
835
+ end
836
+
837
+ #: () -> Array[Herb::AST::Node?]
838
+ def child_nodes
839
+ []
599
840
  end
600
841
 
842
+ #: () -> Array[Herb::AST::Node]
843
+ def compact_child_nodes
844
+ child_nodes.compact
845
+ end
846
+
847
+ #: () -> String
601
848
  def inspect
602
849
  tree_inspect.rstrip.gsub(/\s+$/, "")
603
850
  end
604
851
 
852
+ #: (?Integer) -> String
605
853
  def tree_inspect(indent = 0)
606
854
  output = +""
607
855
 
@@ -621,13 +869,14 @@ module Herb
621
869
  end
622
870
 
623
871
  class ERBContentNode < Node
624
- attr_reader :tag_opening
625
- attr_reader :content
626
- attr_reader :tag_closing
627
- attr_reader :analyzed_ruby
628
- attr_reader :parsed
629
- attr_reader :valid
630
-
872
+ attr_reader :tag_opening #: Herb::Token
873
+ attr_reader :content #: Herb::Token
874
+ attr_reader :tag_closing #: Herb::Token
875
+ attr_reader :analyzed_ruby #: nil
876
+ attr_reader :parsed #: bool
877
+ attr_reader :valid #: bool
878
+
879
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, nil, bool, bool) -> void
631
880
  def initialize(type, location, errors, tag_opening, content, tag_closing, analyzed_ruby, parsed, valid)
632
881
  super(type, location, errors)
633
882
  @tag_opening = tag_opening
@@ -638,6 +887,7 @@ module Herb
638
887
  @valid = valid
639
888
  end
640
889
 
890
+ #: () -> serialized_erb_content_node
641
891
  def to_hash
642
892
  super.merge({
643
893
  tag_opening: tag_opening,
@@ -646,13 +896,30 @@ module Herb
646
896
  analyzed_ruby: analyzed_ruby,
647
897
  parsed: parsed,
648
898
  valid: valid,
649
- })
899
+ }) #: Herb::serialized_erb_content_node
900
+ end
901
+
902
+ #: (Visitor) -> void
903
+ def accept(visitor)
904
+ visitor.visit_erb_content_node(self)
650
905
  end
651
906
 
907
+ #: () -> Array[Herb::AST::Node?]
908
+ def child_nodes
909
+ []
910
+ end
911
+
912
+ #: () -> Array[Herb::AST::Node]
913
+ def compact_child_nodes
914
+ child_nodes.compact
915
+ end
916
+
917
+ #: () -> String
652
918
  def inspect
653
919
  tree_inspect.rstrip.gsub(/\s+$/, "")
654
920
  end
655
921
 
922
+ #: (?Integer) -> String
656
923
  def tree_inspect(indent = 0)
657
924
  output = +""
658
925
 
@@ -685,10 +952,11 @@ module Herb
685
952
  end
686
953
 
687
954
  class ERBEndNode < Node
688
- attr_reader :tag_opening
689
- attr_reader :content
690
- attr_reader :tag_closing
955
+ attr_reader :tag_opening #: Herb::Token
956
+ attr_reader :content #: Herb::Token
957
+ attr_reader :tag_closing #: Herb::Token
691
958
 
959
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token) -> void
692
960
  def initialize(type, location, errors, tag_opening, content, tag_closing)
693
961
  super(type, location, errors)
694
962
  @tag_opening = tag_opening
@@ -696,18 +964,36 @@ module Herb
696
964
  @tag_closing = tag_closing
697
965
  end
698
966
 
967
+ #: () -> serialized_erb_end_node
699
968
  def to_hash
700
969
  super.merge({
701
970
  tag_opening: tag_opening,
702
971
  content: content,
703
972
  tag_closing: tag_closing,
704
- })
973
+ }) #: Herb::serialized_erb_end_node
974
+ end
975
+
976
+ #: (Visitor) -> void
977
+ def accept(visitor)
978
+ visitor.visit_erb_end_node(self)
979
+ end
980
+
981
+ #: () -> Array[Herb::AST::Node?]
982
+ def child_nodes
983
+ []
705
984
  end
706
985
 
986
+ #: () -> Array[Herb::AST::Node]
987
+ def compact_child_nodes
988
+ child_nodes.compact
989
+ end
990
+
991
+ #: () -> String
707
992
  def inspect
708
993
  tree_inspect.rstrip.gsub(/\s+$/, "")
709
994
  end
710
995
 
996
+ #: (?Integer) -> String
711
997
  def tree_inspect(indent = 0)
712
998
  output = +""
713
999
 
@@ -733,11 +1019,12 @@ module Herb
733
1019
  end
734
1020
 
735
1021
  class ERBElseNode < Node
736
- attr_reader :tag_opening
737
- attr_reader :content
738
- attr_reader :tag_closing
739
- attr_reader :statements
1022
+ attr_reader :tag_opening #: Herb::Token
1023
+ attr_reader :content #: Herb::Token
1024
+ attr_reader :tag_closing #: Herb::Token
1025
+ attr_reader :statements #: Array[Herb::AST::Node]
740
1026
 
1027
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node]) -> void
741
1028
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements)
742
1029
  super(type, location, errors)
743
1030
  @tag_opening = tag_opening
@@ -746,19 +1033,37 @@ module Herb
746
1033
  @statements = statements
747
1034
  end
748
1035
 
1036
+ #: () -> serialized_erb_else_node
749
1037
  def to_hash
750
1038
  super.merge({
751
1039
  tag_opening: tag_opening,
752
1040
  content: content,
753
1041
  tag_closing: tag_closing,
754
1042
  statements: statements,
755
- })
1043
+ }) #: Herb::serialized_erb_else_node
1044
+ end
1045
+
1046
+ #: (Visitor) -> void
1047
+ def accept(visitor)
1048
+ visitor.visit_erb_else_node(self)
1049
+ end
1050
+
1051
+ #: () -> Array[Herb::AST::Node?]
1052
+ def child_nodes
1053
+ [*statements]
1054
+ end
1055
+
1056
+ #: () -> Array[Herb::AST::Node]
1057
+ def compact_child_nodes
1058
+ child_nodes.compact
756
1059
  end
757
1060
 
1061
+ #: () -> String
758
1062
  def inspect
759
1063
  tree_inspect.rstrip.gsub(/\s+$/, "")
760
1064
  end
761
1065
 
1066
+ #: (?Integer) -> String
762
1067
  def tree_inspect(indent = 0)
763
1068
  output = +""
764
1069
 
@@ -786,13 +1091,14 @@ module Herb
786
1091
  end
787
1092
 
788
1093
  class ERBIfNode < Node
789
- attr_reader :tag_opening
790
- attr_reader :content
791
- attr_reader :tag_closing
792
- attr_reader :statements
793
- attr_reader :subsequent
794
- attr_reader :end_node
795
-
1094
+ attr_reader :tag_opening #: Herb::Token
1095
+ attr_reader :content #: Herb::Token
1096
+ attr_reader :tag_closing #: Herb::Token
1097
+ attr_reader :statements #: Array[Herb::AST::Node]
1098
+ attr_reader :subsequent #: Herb::AST::Node
1099
+ attr_reader :end_node #: Herb::AST::ERBEndNode
1100
+
1101
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::Node, Herb::AST::ERBEndNode) -> void
796
1102
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements, subsequent, end_node)
797
1103
  super(type, location, errors)
798
1104
  @tag_opening = tag_opening
@@ -803,6 +1109,7 @@ module Herb
803
1109
  @end_node = end_node
804
1110
  end
805
1111
 
1112
+ #: () -> serialized_erb_if_node
806
1113
  def to_hash
807
1114
  super.merge({
808
1115
  tag_opening: tag_opening,
@@ -811,13 +1118,30 @@ module Herb
811
1118
  statements: statements,
812
1119
  subsequent: subsequent,
813
1120
  end_node: end_node,
814
- })
1121
+ }) #: Herb::serialized_erb_if_node
1122
+ end
1123
+
1124
+ #: (Visitor) -> void
1125
+ def accept(visitor)
1126
+ visitor.visit_erb_if_node(self)
815
1127
  end
816
1128
 
1129
+ #: () -> Array[Herb::AST::Node?]
1130
+ def child_nodes
1131
+ [*statements, subsequent, end_node]
1132
+ end
1133
+
1134
+ #: () -> Array[Herb::AST::Node]
1135
+ def compact_child_nodes
1136
+ child_nodes.compact
1137
+ end
1138
+
1139
+ #: () -> String
817
1140
  def inspect
818
1141
  tree_inspect.rstrip.gsub(/\s+$/, "")
819
1142
  end
820
1143
 
1144
+ #: (?Integer) -> String
821
1145
  def tree_inspect(indent = 0)
822
1146
  output = +""
823
1147
 
@@ -861,12 +1185,13 @@ module Herb
861
1185
  end
862
1186
 
863
1187
  class ERBBlockNode < Node
864
- attr_reader :tag_opening
865
- attr_reader :content
866
- attr_reader :tag_closing
867
- attr_reader :body
868
- attr_reader :end_node
1188
+ attr_reader :tag_opening #: Herb::Token
1189
+ attr_reader :content #: Herb::Token
1190
+ attr_reader :tag_closing #: Herb::Token
1191
+ attr_reader :body #: Array[Herb::AST::Node]
1192
+ attr_reader :end_node #: Herb::AST::ERBEndNode
869
1193
 
1194
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::ERBEndNode) -> void
870
1195
  def initialize(type, location, errors, tag_opening, content, tag_closing, body, end_node)
871
1196
  super(type, location, errors)
872
1197
  @tag_opening = tag_opening
@@ -876,6 +1201,7 @@ module Herb
876
1201
  @end_node = end_node
877
1202
  end
878
1203
 
1204
+ #: () -> serialized_erb_block_node
879
1205
  def to_hash
880
1206
  super.merge({
881
1207
  tag_opening: tag_opening,
@@ -883,13 +1209,30 @@ module Herb
883
1209
  tag_closing: tag_closing,
884
1210
  body: body,
885
1211
  end_node: end_node,
886
- })
1212
+ }) #: Herb::serialized_erb_block_node
1213
+ end
1214
+
1215
+ #: (Visitor) -> void
1216
+ def accept(visitor)
1217
+ visitor.visit_erb_block_node(self)
1218
+ end
1219
+
1220
+ #: () -> Array[Herb::AST::Node?]
1221
+ def child_nodes
1222
+ [*body, end_node]
887
1223
  end
888
1224
 
1225
+ #: () -> Array[Herb::AST::Node]
1226
+ def compact_child_nodes
1227
+ child_nodes.compact
1228
+ end
1229
+
1230
+ #: () -> String
889
1231
  def inspect
890
1232
  tree_inspect.rstrip.gsub(/\s+$/, "")
891
1233
  end
892
1234
 
1235
+ #: (?Integer) -> String
893
1236
  def tree_inspect(indent = 0)
894
1237
  output = +""
895
1238
 
@@ -925,11 +1268,12 @@ module Herb
925
1268
  end
926
1269
 
927
1270
  class ERBWhenNode < Node
928
- attr_reader :tag_opening
929
- attr_reader :content
930
- attr_reader :tag_closing
931
- attr_reader :statements
1271
+ attr_reader :tag_opening #: Herb::Token
1272
+ attr_reader :content #: Herb::Token
1273
+ attr_reader :tag_closing #: Herb::Token
1274
+ attr_reader :statements #: Array[Herb::AST::Node]
932
1275
 
1276
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node]) -> void
933
1277
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements)
934
1278
  super(type, location, errors)
935
1279
  @tag_opening = tag_opening
@@ -938,19 +1282,37 @@ module Herb
938
1282
  @statements = statements
939
1283
  end
940
1284
 
1285
+ #: () -> serialized_erb_when_node
941
1286
  def to_hash
942
1287
  super.merge({
943
1288
  tag_opening: tag_opening,
944
1289
  content: content,
945
1290
  tag_closing: tag_closing,
946
1291
  statements: statements,
947
- })
1292
+ }) #: Herb::serialized_erb_when_node
1293
+ end
1294
+
1295
+ #: (Visitor) -> void
1296
+ def accept(visitor)
1297
+ visitor.visit_erb_when_node(self)
1298
+ end
1299
+
1300
+ #: () -> Array[Herb::AST::Node?]
1301
+ def child_nodes
1302
+ [*statements]
948
1303
  end
949
1304
 
1305
+ #: () -> Array[Herb::AST::Node]
1306
+ def compact_child_nodes
1307
+ child_nodes.compact
1308
+ end
1309
+
1310
+ #: () -> String
950
1311
  def inspect
951
1312
  tree_inspect.rstrip.gsub(/\s+$/, "")
952
1313
  end
953
1314
 
1315
+ #: (?Integer) -> String
954
1316
  def tree_inspect(indent = 0)
955
1317
  output = +""
956
1318
 
@@ -978,14 +1340,114 @@ module Herb
978
1340
  end
979
1341
 
980
1342
  class ERBCaseNode < Node
981
- attr_reader :tag_opening
982
- attr_reader :content
983
- attr_reader :tag_closing
984
- attr_reader :children
985
- attr_reader :conditions
986
- attr_reader :else_clause
987
- attr_reader :end_node
1343
+ attr_reader :tag_opening #: Herb::Token
1344
+ attr_reader :content #: Herb::Token
1345
+ attr_reader :tag_closing #: Herb::Token
1346
+ attr_reader :children #: Array[Herb::AST::Node]
1347
+ attr_reader :conditions #: Array[Herb::AST::ERBWhenNode]
1348
+ attr_reader :else_clause #: Herb::AST::ERBElseNode
1349
+ attr_reader :end_node #: Herb::AST::ERBEndNode
1350
+
1351
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Array[Herb::AST::ERBWhenNode], Herb::AST::ERBElseNode, Herb::AST::ERBEndNode) -> void
1352
+ def initialize(type, location, errors, tag_opening, content, tag_closing, children, conditions, else_clause, end_node)
1353
+ super(type, location, errors)
1354
+ @tag_opening = tag_opening
1355
+ @content = content
1356
+ @tag_closing = tag_closing
1357
+ @children = children
1358
+ @conditions = conditions
1359
+ @else_clause = else_clause
1360
+ @end_node = end_node
1361
+ end
1362
+
1363
+ #: () -> serialized_erb_case_node
1364
+ def to_hash
1365
+ super.merge({
1366
+ tag_opening: tag_opening,
1367
+ content: content,
1368
+ tag_closing: tag_closing,
1369
+ children: children,
1370
+ conditions: conditions,
1371
+ else_clause: else_clause,
1372
+ end_node: end_node,
1373
+ }) #: Herb::serialized_erb_case_node
1374
+ end
1375
+
1376
+ #: (Visitor) -> void
1377
+ def accept(visitor)
1378
+ visitor.visit_erb_case_node(self)
1379
+ end
1380
+
1381
+ #: () -> Array[Herb::AST::Node?]
1382
+ def child_nodes
1383
+ [*children, *conditions, else_clause, end_node]
1384
+ end
1385
+
1386
+ #: () -> Array[Herb::AST::Node]
1387
+ def compact_child_nodes
1388
+ child_nodes.compact
1389
+ end
1390
+
1391
+ #: () -> String
1392
+ def inspect
1393
+ tree_inspect.rstrip.gsub(/\s+$/, "")
1394
+ end
1395
+
1396
+ #: (?Integer) -> String
1397
+ def tree_inspect(indent = 0)
1398
+ output = +""
1399
+
1400
+ output += "@ #{node_name} "
1401
+ output += location.tree_inspect
1402
+ output += "\n"
1403
+
1404
+ output += inspect_errors(prefix: "│ ")
1405
+
1406
+ output += "├── tag_opening: "
1407
+ output += tag_opening ? tag_opening.tree_inspect : "∅"
1408
+ output += "\n"
1409
+ output += "├── content: "
1410
+ output += content ? content.tree_inspect : "∅"
1411
+ output += "\n"
1412
+ output += "├── tag_closing: "
1413
+ output += tag_closing ? tag_closing.tree_inspect : "∅"
1414
+ output += "\n"
1415
+ output += "├── children: "
1416
+ output += inspect_array(children, prefix: "│ ")
1417
+ output += "├── conditions: "
1418
+ output += inspect_array(conditions, prefix: "│ ")
1419
+ output += "├── else_clause: "
1420
+ if else_clause
1421
+ output += "\n"
1422
+ output += "│ └── "
1423
+ output += else_clause.tree_inspect(indent).gsub(/^/, " " * (indent + 1)).lstrip.gsub(/^/, "│ ").delete_prefix("│ ")
1424
+ else
1425
+ output += "∅\n"
1426
+ end
1427
+ output += "└── end_node: "
1428
+ if end_node
1429
+ output += "\n"
1430
+ output += " └── "
1431
+ output += end_node.tree_inspect(indent).gsub(/^/, " " * (indent + 1)).lstrip.gsub(/^/, " ").delete_prefix(" ")
1432
+ else
1433
+ output += "∅\n"
1434
+ end
1435
+ output += "\n"
988
1436
 
1437
+ output.gsub(/^/, " " * indent)
1438
+ end
1439
+ end
1440
+
1441
+ class ERBCaseMatchNode < Node
1442
+ attr_reader :tag_opening #: Herb::Token
1443
+ attr_reader :content #: Herb::Token
1444
+ attr_reader :tag_closing #: Herb::Token
1445
+ attr_reader :children #: Array[Herb::AST::Node]
1446
+ attr_reader :conditions #: Array[Herb::AST::ERBInNode]
1447
+ attr_reader :else_clause #: Herb::AST::ERBElseNode
1448
+ attr_reader :end_node #: Herb::AST::ERBEndNode
1449
+
1450
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Array[Herb::AST::ERBInNode], Herb::AST::ERBElseNode, Herb::AST::ERBEndNode) -> void
989
1451
  def initialize(type, location, errors, tag_opening, content, tag_closing, children, conditions, else_clause, end_node)
990
1452
  super(type, location, errors)
991
1453
  @tag_opening = tag_opening
@@ -997,6 +1459,7 @@ module Herb
997
1459
  @end_node = end_node
998
1460
  end
999
1461
 
1462
+ #: () -> serialized_erb_case_match_node
1000
1463
  def to_hash
1001
1464
  super.merge({
1002
1465
  tag_opening: tag_opening,
@@ -1006,13 +1469,30 @@ module Herb
1006
1469
  conditions: conditions,
1007
1470
  else_clause: else_clause,
1008
1471
  end_node: end_node,
1009
- })
1472
+ }) #: Herb::serialized_erb_case_match_node
1473
+ end
1474
+
1475
+ #: (Visitor) -> void
1476
+ def accept(visitor)
1477
+ visitor.visit_erb_case_match_node(self)
1010
1478
  end
1011
1479
 
1480
+ #: () -> Array[Herb::AST::Node?]
1481
+ def child_nodes
1482
+ [*children, *conditions, else_clause, end_node]
1483
+ end
1484
+
1485
+ #: () -> Array[Herb::AST::Node]
1486
+ def compact_child_nodes
1487
+ child_nodes.compact
1488
+ end
1489
+
1490
+ #: () -> String
1012
1491
  def inspect
1013
1492
  tree_inspect.rstrip.gsub(/\s+$/, "")
1014
1493
  end
1015
1494
 
1495
+ #: (?Integer) -> String
1016
1496
  def tree_inspect(indent = 0)
1017
1497
  output = +""
1018
1498
 
@@ -1058,12 +1538,13 @@ module Herb
1058
1538
  end
1059
1539
 
1060
1540
  class ERBWhileNode < Node
1061
- attr_reader :tag_opening
1062
- attr_reader :content
1063
- attr_reader :tag_closing
1064
- attr_reader :statements
1065
- attr_reader :end_node
1541
+ attr_reader :tag_opening #: Herb::Token
1542
+ attr_reader :content #: Herb::Token
1543
+ attr_reader :tag_closing #: Herb::Token
1544
+ attr_reader :statements #: Array[Herb::AST::Node]
1545
+ attr_reader :end_node #: Herb::AST::ERBEndNode
1066
1546
 
1547
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::ERBEndNode) -> void
1067
1548
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements, end_node)
1068
1549
  super(type, location, errors)
1069
1550
  @tag_opening = tag_opening
@@ -1073,6 +1554,7 @@ module Herb
1073
1554
  @end_node = end_node
1074
1555
  end
1075
1556
 
1557
+ #: () -> serialized_erb_while_node
1076
1558
  def to_hash
1077
1559
  super.merge({
1078
1560
  tag_opening: tag_opening,
@@ -1080,13 +1562,30 @@ module Herb
1080
1562
  tag_closing: tag_closing,
1081
1563
  statements: statements,
1082
1564
  end_node: end_node,
1083
- })
1565
+ }) #: Herb::serialized_erb_while_node
1566
+ end
1567
+
1568
+ #: (Visitor) -> void
1569
+ def accept(visitor)
1570
+ visitor.visit_erb_while_node(self)
1084
1571
  end
1085
1572
 
1573
+ #: () -> Array[Herb::AST::Node?]
1574
+ def child_nodes
1575
+ [*statements, end_node]
1576
+ end
1577
+
1578
+ #: () -> Array[Herb::AST::Node]
1579
+ def compact_child_nodes
1580
+ child_nodes.compact
1581
+ end
1582
+
1583
+ #: () -> String
1086
1584
  def inspect
1087
1585
  tree_inspect.rstrip.gsub(/\s+$/, "")
1088
1586
  end
1089
1587
 
1588
+ #: (?Integer) -> String
1090
1589
  def tree_inspect(indent = 0)
1091
1590
  output = +""
1092
1591
 
@@ -1122,12 +1621,13 @@ module Herb
1122
1621
  end
1123
1622
 
1124
1623
  class ERBUntilNode < Node
1125
- attr_reader :tag_opening
1126
- attr_reader :content
1127
- attr_reader :tag_closing
1128
- attr_reader :statements
1129
- attr_reader :end_node
1624
+ attr_reader :tag_opening #: Herb::Token
1625
+ attr_reader :content #: Herb::Token
1626
+ attr_reader :tag_closing #: Herb::Token
1627
+ attr_reader :statements #: Array[Herb::AST::Node]
1628
+ attr_reader :end_node #: Herb::AST::ERBEndNode
1130
1629
 
1630
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::ERBEndNode) -> void
1131
1631
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements, end_node)
1132
1632
  super(type, location, errors)
1133
1633
  @tag_opening = tag_opening
@@ -1137,6 +1637,7 @@ module Herb
1137
1637
  @end_node = end_node
1138
1638
  end
1139
1639
 
1640
+ #: () -> serialized_erb_until_node
1140
1641
  def to_hash
1141
1642
  super.merge({
1142
1643
  tag_opening: tag_opening,
@@ -1144,13 +1645,30 @@ module Herb
1144
1645
  tag_closing: tag_closing,
1145
1646
  statements: statements,
1146
1647
  end_node: end_node,
1147
- })
1648
+ }) #: Herb::serialized_erb_until_node
1148
1649
  end
1149
1650
 
1651
+ #: (Visitor) -> void
1652
+ def accept(visitor)
1653
+ visitor.visit_erb_until_node(self)
1654
+ end
1655
+
1656
+ #: () -> Array[Herb::AST::Node?]
1657
+ def child_nodes
1658
+ [*statements, end_node]
1659
+ end
1660
+
1661
+ #: () -> Array[Herb::AST::Node]
1662
+ def compact_child_nodes
1663
+ child_nodes.compact
1664
+ end
1665
+
1666
+ #: () -> String
1150
1667
  def inspect
1151
1668
  tree_inspect.rstrip.gsub(/\s+$/, "")
1152
1669
  end
1153
1670
 
1671
+ #: (?Integer) -> String
1154
1672
  def tree_inspect(indent = 0)
1155
1673
  output = +""
1156
1674
 
@@ -1186,12 +1704,13 @@ module Herb
1186
1704
  end
1187
1705
 
1188
1706
  class ERBForNode < Node
1189
- attr_reader :tag_opening
1190
- attr_reader :content
1191
- attr_reader :tag_closing
1192
- attr_reader :statements
1193
- attr_reader :end_node
1707
+ attr_reader :tag_opening #: Herb::Token
1708
+ attr_reader :content #: Herb::Token
1709
+ attr_reader :tag_closing #: Herb::Token
1710
+ attr_reader :statements #: Array[Herb::AST::Node]
1711
+ attr_reader :end_node #: Herb::AST::ERBEndNode
1194
1712
 
1713
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::ERBEndNode) -> void
1195
1714
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements, end_node)
1196
1715
  super(type, location, errors)
1197
1716
  @tag_opening = tag_opening
@@ -1201,6 +1720,7 @@ module Herb
1201
1720
  @end_node = end_node
1202
1721
  end
1203
1722
 
1723
+ #: () -> serialized_erb_for_node
1204
1724
  def to_hash
1205
1725
  super.merge({
1206
1726
  tag_opening: tag_opening,
@@ -1208,13 +1728,30 @@ module Herb
1208
1728
  tag_closing: tag_closing,
1209
1729
  statements: statements,
1210
1730
  end_node: end_node,
1211
- })
1731
+ }) #: Herb::serialized_erb_for_node
1732
+ end
1733
+
1734
+ #: (Visitor) -> void
1735
+ def accept(visitor)
1736
+ visitor.visit_erb_for_node(self)
1737
+ end
1738
+
1739
+ #: () -> Array[Herb::AST::Node?]
1740
+ def child_nodes
1741
+ [*statements, end_node]
1742
+ end
1743
+
1744
+ #: () -> Array[Herb::AST::Node]
1745
+ def compact_child_nodes
1746
+ child_nodes.compact
1212
1747
  end
1213
1748
 
1749
+ #: () -> String
1214
1750
  def inspect
1215
1751
  tree_inspect.rstrip.gsub(/\s+$/, "")
1216
1752
  end
1217
1753
 
1754
+ #: (?Integer) -> String
1218
1755
  def tree_inspect(indent = 0)
1219
1756
  output = +""
1220
1757
 
@@ -1250,12 +1787,13 @@ module Herb
1250
1787
  end
1251
1788
 
1252
1789
  class ERBRescueNode < Node
1253
- attr_reader :tag_opening
1254
- attr_reader :content
1255
- attr_reader :tag_closing
1256
- attr_reader :statements
1257
- attr_reader :subsequent
1790
+ attr_reader :tag_opening #: Herb::Token
1791
+ attr_reader :content #: Herb::Token
1792
+ attr_reader :tag_closing #: Herb::Token
1793
+ attr_reader :statements #: Array[Herb::AST::Node]
1794
+ attr_reader :subsequent #: Herb::AST::ERBRescueNode
1258
1795
 
1796
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::ERBRescueNode) -> void
1259
1797
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements, subsequent)
1260
1798
  super(type, location, errors)
1261
1799
  @tag_opening = tag_opening
@@ -1265,6 +1803,7 @@ module Herb
1265
1803
  @subsequent = subsequent
1266
1804
  end
1267
1805
 
1806
+ #: () -> serialized_erb_rescue_node
1268
1807
  def to_hash
1269
1808
  super.merge({
1270
1809
  tag_opening: tag_opening,
@@ -1272,13 +1811,30 @@ module Herb
1272
1811
  tag_closing: tag_closing,
1273
1812
  statements: statements,
1274
1813
  subsequent: subsequent,
1275
- })
1814
+ }) #: Herb::serialized_erb_rescue_node
1815
+ end
1816
+
1817
+ #: (Visitor) -> void
1818
+ def accept(visitor)
1819
+ visitor.visit_erb_rescue_node(self)
1276
1820
  end
1277
1821
 
1822
+ #: () -> Array[Herb::AST::Node?]
1823
+ def child_nodes
1824
+ [*statements, subsequent]
1825
+ end
1826
+
1827
+ #: () -> Array[Herb::AST::Node]
1828
+ def compact_child_nodes
1829
+ child_nodes.compact
1830
+ end
1831
+
1832
+ #: () -> String
1278
1833
  def inspect
1279
1834
  tree_inspect.rstrip.gsub(/\s+$/, "")
1280
1835
  end
1281
1836
 
1837
+ #: (?Integer) -> String
1282
1838
  def tree_inspect(indent = 0)
1283
1839
  output = +""
1284
1840
 
@@ -1314,11 +1870,12 @@ module Herb
1314
1870
  end
1315
1871
 
1316
1872
  class ERBEnsureNode < Node
1317
- attr_reader :tag_opening
1318
- attr_reader :content
1319
- attr_reader :tag_closing
1320
- attr_reader :statements
1873
+ attr_reader :tag_opening #: Herb::Token
1874
+ attr_reader :content #: Herb::Token
1875
+ attr_reader :tag_closing #: Herb::Token
1876
+ attr_reader :statements #: Array[Herb::AST::Node]
1321
1877
 
1878
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node]) -> void
1322
1879
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements)
1323
1880
  super(type, location, errors)
1324
1881
  @tag_opening = tag_opening
@@ -1327,19 +1884,37 @@ module Herb
1327
1884
  @statements = statements
1328
1885
  end
1329
1886
 
1887
+ #: () -> serialized_erb_ensure_node
1330
1888
  def to_hash
1331
1889
  super.merge({
1332
1890
  tag_opening: tag_opening,
1333
1891
  content: content,
1334
1892
  tag_closing: tag_closing,
1335
1893
  statements: statements,
1336
- })
1894
+ }) #: Herb::serialized_erb_ensure_node
1895
+ end
1896
+
1897
+ #: (Visitor) -> void
1898
+ def accept(visitor)
1899
+ visitor.visit_erb_ensure_node(self)
1900
+ end
1901
+
1902
+ #: () -> Array[Herb::AST::Node?]
1903
+ def child_nodes
1904
+ [*statements]
1337
1905
  end
1338
1906
 
1907
+ #: () -> Array[Herb::AST::Node]
1908
+ def compact_child_nodes
1909
+ child_nodes.compact
1910
+ end
1911
+
1912
+ #: () -> String
1339
1913
  def inspect
1340
1914
  tree_inspect.rstrip.gsub(/\s+$/, "")
1341
1915
  end
1342
1916
 
1917
+ #: (?Integer) -> String
1343
1918
  def tree_inspect(indent = 0)
1344
1919
  output = +""
1345
1920
 
@@ -1367,15 +1942,16 @@ module Herb
1367
1942
  end
1368
1943
 
1369
1944
  class ERBBeginNode < Node
1370
- attr_reader :tag_opening
1371
- attr_reader :content
1372
- attr_reader :tag_closing
1373
- attr_reader :statements
1374
- attr_reader :rescue_clause
1375
- attr_reader :else_clause
1376
- attr_reader :ensure_clause
1377
- attr_reader :end_node
1378
-
1945
+ attr_reader :tag_opening #: Herb::Token
1946
+ attr_reader :content #: Herb::Token
1947
+ attr_reader :tag_closing #: Herb::Token
1948
+ attr_reader :statements #: Array[Herb::AST::Node]
1949
+ attr_reader :rescue_clause #: Herb::AST::ERBRescueNode
1950
+ attr_reader :else_clause #: Herb::AST::ERBElseNode
1951
+ attr_reader :ensure_clause #: Herb::AST::ERBEnsureNode
1952
+ attr_reader :end_node #: Herb::AST::ERBEndNode
1953
+
1954
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::ERBRescueNode, Herb::AST::ERBElseNode, Herb::AST::ERBEnsureNode, Herb::AST::ERBEndNode) -> void
1379
1955
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements, rescue_clause, else_clause, ensure_clause, end_node)
1380
1956
  super(type, location, errors)
1381
1957
  @tag_opening = tag_opening
@@ -1388,6 +1964,7 @@ module Herb
1388
1964
  @end_node = end_node
1389
1965
  end
1390
1966
 
1967
+ #: () -> serialized_erb_begin_node
1391
1968
  def to_hash
1392
1969
  super.merge({
1393
1970
  tag_opening: tag_opening,
@@ -1398,13 +1975,30 @@ module Herb
1398
1975
  else_clause: else_clause,
1399
1976
  ensure_clause: ensure_clause,
1400
1977
  end_node: end_node,
1401
- })
1978
+ }) #: Herb::serialized_erb_begin_node
1402
1979
  end
1403
1980
 
1981
+ #: (Visitor) -> void
1982
+ def accept(visitor)
1983
+ visitor.visit_erb_begin_node(self)
1984
+ end
1985
+
1986
+ #: () -> Array[Herb::AST::Node?]
1987
+ def child_nodes
1988
+ [*statements, rescue_clause, else_clause, ensure_clause, end_node]
1989
+ end
1990
+
1991
+ #: () -> Array[Herb::AST::Node]
1992
+ def compact_child_nodes
1993
+ child_nodes.compact
1994
+ end
1995
+
1996
+ #: () -> String
1404
1997
  def inspect
1405
1998
  tree_inspect.rstrip.gsub(/\s+$/, "")
1406
1999
  end
1407
2000
 
2001
+ #: (?Integer) -> String
1408
2002
  def tree_inspect(indent = 0)
1409
2003
  output = +""
1410
2004
 
@@ -1464,13 +2058,14 @@ module Herb
1464
2058
  end
1465
2059
 
1466
2060
  class ERBUnlessNode < Node
1467
- attr_reader :tag_opening
1468
- attr_reader :content
1469
- attr_reader :tag_closing
1470
- attr_reader :statements
1471
- attr_reader :else_clause
1472
- attr_reader :end_node
1473
-
2061
+ attr_reader :tag_opening #: Herb::Token
2062
+ attr_reader :content #: Herb::Token
2063
+ attr_reader :tag_closing #: Herb::Token
2064
+ attr_reader :statements #: Array[Herb::AST::Node]
2065
+ attr_reader :else_clause #: Herb::AST::ERBElseNode
2066
+ attr_reader :end_node #: Herb::AST::ERBEndNode
2067
+
2068
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node], Herb::AST::ERBElseNode, Herb::AST::ERBEndNode) -> void
1474
2069
  def initialize(type, location, errors, tag_opening, content, tag_closing, statements, else_clause, end_node)
1475
2070
  super(type, location, errors)
1476
2071
  @tag_opening = tag_opening
@@ -1481,6 +2076,7 @@ module Herb
1481
2076
  @end_node = end_node
1482
2077
  end
1483
2078
 
2079
+ #: () -> serialized_erb_unless_node
1484
2080
  def to_hash
1485
2081
  super.merge({
1486
2082
  tag_opening: tag_opening,
@@ -1489,13 +2085,30 @@ module Herb
1489
2085
  statements: statements,
1490
2086
  else_clause: else_clause,
1491
2087
  end_node: end_node,
1492
- })
2088
+ }) #: Herb::serialized_erb_unless_node
1493
2089
  end
1494
2090
 
2091
+ #: (Visitor) -> void
2092
+ def accept(visitor)
2093
+ visitor.visit_erb_unless_node(self)
2094
+ end
2095
+
2096
+ #: () -> Array[Herb::AST::Node?]
2097
+ def child_nodes
2098
+ [*statements, else_clause, end_node]
2099
+ end
2100
+
2101
+ #: () -> Array[Herb::AST::Node]
2102
+ def compact_child_nodes
2103
+ child_nodes.compact
2104
+ end
2105
+
2106
+ #: () -> String
1495
2107
  def inspect
1496
2108
  tree_inspect.rstrip.gsub(/\s+$/, "")
1497
2109
  end
1498
2110
 
2111
+ #: (?Integer) -> String
1499
2112
  def tree_inspect(indent = 0)
1500
2113
  output = +""
1501
2114
 
@@ -1538,5 +2151,144 @@ module Herb
1538
2151
  end
1539
2152
  end
1540
2153
 
2154
+ class ERBYieldNode < Node
2155
+ attr_reader :tag_opening #: Herb::Token
2156
+ attr_reader :content #: Herb::Token
2157
+ attr_reader :tag_closing #: Herb::Token
2158
+
2159
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token) -> void
2160
+ def initialize(type, location, errors, tag_opening, content, tag_closing)
2161
+ super(type, location, errors)
2162
+ @tag_opening = tag_opening
2163
+ @content = content
2164
+ @tag_closing = tag_closing
2165
+ end
2166
+
2167
+ #: () -> serialized_erb_yield_node
2168
+ def to_hash
2169
+ super.merge({
2170
+ tag_opening: tag_opening,
2171
+ content: content,
2172
+ tag_closing: tag_closing,
2173
+ }) #: Herb::serialized_erb_yield_node
2174
+ end
2175
+
2176
+ #: (Visitor) -> void
2177
+ def accept(visitor)
2178
+ visitor.visit_erb_yield_node(self)
2179
+ end
2180
+
2181
+ #: () -> Array[Herb::AST::Node?]
2182
+ def child_nodes
2183
+ []
2184
+ end
2185
+
2186
+ #: () -> Array[Herb::AST::Node]
2187
+ def compact_child_nodes
2188
+ child_nodes.compact
2189
+ end
2190
+
2191
+ #: () -> String
2192
+ def inspect
2193
+ tree_inspect.rstrip.gsub(/\s+$/, "")
2194
+ end
2195
+
2196
+ #: (?Integer) -> String
2197
+ def tree_inspect(indent = 0)
2198
+ output = +""
2199
+
2200
+ output += "@ #{node_name} "
2201
+ output += location.tree_inspect
2202
+ output += "\n"
2203
+
2204
+ output += inspect_errors(prefix: "│ ")
2205
+
2206
+ output += "├── tag_opening: "
2207
+ output += tag_opening ? tag_opening.tree_inspect : "∅"
2208
+ output += "\n"
2209
+ output += "├── content: "
2210
+ output += content ? content.tree_inspect : "∅"
2211
+ output += "\n"
2212
+ output += "└── tag_closing: "
2213
+ output += tag_closing ? tag_closing.tree_inspect : "∅"
2214
+ output += "\n"
2215
+ output += "\n"
2216
+
2217
+ output.gsub(/^/, " " * indent)
2218
+ end
2219
+ end
2220
+
2221
+ class ERBInNode < Node
2222
+ attr_reader :tag_opening #: Herb::Token
2223
+ attr_reader :content #: Herb::Token
2224
+ attr_reader :tag_closing #: Herb::Token
2225
+ attr_reader :statements #: Array[Herb::AST::Node]
2226
+
2227
+ #: (String, Location, Array[Herb::Errors::Error], Herb::Token, Herb::Token, Herb::Token, Array[Herb::AST::Node]) -> void
2228
+ def initialize(type, location, errors, tag_opening, content, tag_closing, statements)
2229
+ super(type, location, errors)
2230
+ @tag_opening = tag_opening
2231
+ @content = content
2232
+ @tag_closing = tag_closing
2233
+ @statements = statements
2234
+ end
2235
+
2236
+ #: () -> serialized_erb_in_node
2237
+ def to_hash
2238
+ super.merge({
2239
+ tag_opening: tag_opening,
2240
+ content: content,
2241
+ tag_closing: tag_closing,
2242
+ statements: statements,
2243
+ }) #: Herb::serialized_erb_in_node
2244
+ end
2245
+
2246
+ #: (Visitor) -> void
2247
+ def accept(visitor)
2248
+ visitor.visit_erb_in_node(self)
2249
+ end
2250
+
2251
+ #: () -> Array[Herb::AST::Node?]
2252
+ def child_nodes
2253
+ [*statements]
2254
+ end
2255
+
2256
+ #: () -> Array[Herb::AST::Node]
2257
+ def compact_child_nodes
2258
+ child_nodes.compact
2259
+ end
2260
+
2261
+ #: () -> String
2262
+ def inspect
2263
+ tree_inspect.rstrip.gsub(/\s+$/, "")
2264
+ end
2265
+
2266
+ #: (?Integer) -> String
2267
+ def tree_inspect(indent = 0)
2268
+ output = +""
2269
+
2270
+ output += "@ #{node_name} "
2271
+ output += location.tree_inspect
2272
+ output += "\n"
2273
+
2274
+ output += inspect_errors(prefix: "│ ")
2275
+
2276
+ output += "├── tag_opening: "
2277
+ output += tag_opening ? tag_opening.tree_inspect : "∅"
2278
+ output += "\n"
2279
+ output += "├── content: "
2280
+ output += content ? content.tree_inspect : "∅"
2281
+ output += "\n"
2282
+ output += "├── tag_closing: "
2283
+ output += tag_closing ? tag_closing.tree_inspect : "∅"
2284
+ output += "\n"
2285
+ output += "└── statements: "
2286
+ output += inspect_array(statements, prefix: " ")
2287
+ output += "\n"
2288
+
2289
+ output.gsub(/^/, " " * indent)
2290
+ end
2291
+ end
2292
+
1541
2293
  end
1542
2294
  end