@herb-tools/core 0.1.0 → 0.2.0

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.
@@ -1,10 +1,11 @@
1
1
  import { Node } from "./node.js";
2
2
  import { Token, SerializedToken } from "./token.js";
3
3
  import { HerbError } from "./error.js";
4
+ import type { Visitor } from "./visitor.js";
4
5
  import type { SerializedNode, BaseNodeProps } from "./node.js";
5
6
  export declare function fromSerializedNode(node: SerializedNode): Node;
6
7
  export type SerializedNodeType = string;
7
- export type NodeType = "AST_DOCUMENT_NODE" | "AST_LITERAL_NODE" | "AST_HTML_OPEN_TAG_NODE" | "AST_HTML_CLOSE_TAG_NODE" | "AST_HTML_SELF_CLOSE_TAG_NODE" | "AST_HTML_ELEMENT_NODE" | "AST_HTML_ATTRIBUTE_VALUE_NODE" | "AST_HTML_ATTRIBUTE_NAME_NODE" | "AST_HTML_ATTRIBUTE_NODE" | "AST_HTML_TEXT_NODE" | "AST_HTML_COMMENT_NODE" | "AST_HTML_DOCTYPE_NODE" | "AST_WHITESPACE_NODE" | "AST_ERB_CONTENT_NODE" | "AST_ERB_END_NODE" | "AST_ERB_ELSE_NODE" | "AST_ERB_IF_NODE" | "AST_ERB_BLOCK_NODE" | "AST_ERB_WHEN_NODE" | "AST_ERB_CASE_NODE" | "AST_ERB_WHILE_NODE" | "AST_ERB_UNTIL_NODE" | "AST_ERB_FOR_NODE" | "AST_ERB_RESCUE_NODE" | "AST_ERB_ENSURE_NODE" | "AST_ERB_BEGIN_NODE" | "AST_ERB_UNLESS_NODE";
8
+ export type NodeType = "AST_DOCUMENT_NODE" | "AST_LITERAL_NODE" | "AST_HTML_OPEN_TAG_NODE" | "AST_HTML_CLOSE_TAG_NODE" | "AST_HTML_SELF_CLOSE_TAG_NODE" | "AST_HTML_ELEMENT_NODE" | "AST_HTML_ATTRIBUTE_VALUE_NODE" | "AST_HTML_ATTRIBUTE_NAME_NODE" | "AST_HTML_ATTRIBUTE_NODE" | "AST_HTML_TEXT_NODE" | "AST_HTML_COMMENT_NODE" | "AST_HTML_DOCTYPE_NODE" | "AST_WHITESPACE_NODE" | "AST_ERB_CONTENT_NODE" | "AST_ERB_END_NODE" | "AST_ERB_ELSE_NODE" | "AST_ERB_IF_NODE" | "AST_ERB_BLOCK_NODE" | "AST_ERB_WHEN_NODE" | "AST_ERB_CASE_NODE" | "AST_ERB_CASE_MATCH_NODE" | "AST_ERB_WHILE_NODE" | "AST_ERB_UNTIL_NODE" | "AST_ERB_FOR_NODE" | "AST_ERB_RESCUE_NODE" | "AST_ERB_ENSURE_NODE" | "AST_ERB_BEGIN_NODE" | "AST_ERB_UNLESS_NODE" | "AST_ERB_YIELD_NODE" | "AST_ERB_IN_NODE";
8
9
  export interface SerializedDocumentNode extends SerializedNode {
9
10
  type: "AST_DOCUMENT_NODE";
10
11
  children: SerializedNode[];
@@ -16,7 +17,9 @@ export declare class DocumentNode extends Node {
16
17
  readonly children: Node[];
17
18
  static from(data: SerializedDocumentNode): DocumentNode;
18
19
  constructor(props: DocumentNodeProps);
19
- childNodes(): Node[];
20
+ accept(visitor: Visitor): void;
21
+ childNodes(): (Node | null | undefined)[];
22
+ compactChildNodes(): Node[];
20
23
  recursiveErrors(): HerbError[];
21
24
  toJSON(): SerializedDocumentNode;
22
25
  treeInspect(): string;
@@ -32,7 +35,9 @@ export declare class LiteralNode extends Node {
32
35
  readonly content: string;
33
36
  static from(data: SerializedLiteralNode): LiteralNode;
34
37
  constructor(props: LiteralNodeProps);
35
- childNodes(): Node[];
38
+ accept(visitor: Visitor): void;
39
+ childNodes(): (Node | null | undefined)[];
40
+ compactChildNodes(): Node[];
36
41
  recursiveErrors(): HerbError[];
37
42
  toJSON(): SerializedLiteralNode;
38
43
  treeInspect(): string;
@@ -60,7 +65,9 @@ export declare class HTMLOpenTagNode extends Node {
60
65
  readonly is_void: boolean;
61
66
  static from(data: SerializedHTMLOpenTagNode): HTMLOpenTagNode;
62
67
  constructor(props: HTMLOpenTagNodeProps);
63
- childNodes(): Node[];
68
+ accept(visitor: Visitor): void;
69
+ childNodes(): (Node | null | undefined)[];
70
+ compactChildNodes(): Node[];
64
71
  recursiveErrors(): HerbError[];
65
72
  toJSON(): SerializedHTMLOpenTagNode;
66
73
  treeInspect(): string;
@@ -82,7 +89,9 @@ export declare class HTMLCloseTagNode extends Node {
82
89
  readonly tag_closing: Token | null;
83
90
  static from(data: SerializedHTMLCloseTagNode): HTMLCloseTagNode;
84
91
  constructor(props: HTMLCloseTagNodeProps);
85
- childNodes(): Node[];
92
+ accept(visitor: Visitor): void;
93
+ childNodes(): (Node | null | undefined)[];
94
+ compactChildNodes(): Node[];
86
95
  recursiveErrors(): HerbError[];
87
96
  toJSON(): SerializedHTMLCloseTagNode;
88
97
  treeInspect(): string;
@@ -98,19 +107,21 @@ export interface SerializedHTMLSelfCloseTagNode extends SerializedNode {
98
107
  export interface HTMLSelfCloseTagNodeProps extends BaseNodeProps {
99
108
  tag_opening: Token | null;
100
109
  tag_name: Token | null;
101
- attributes: Node[];
110
+ attributes: any[];
102
111
  tag_closing: Token | null;
103
112
  is_void: boolean;
104
113
  }
105
114
  export declare class HTMLSelfCloseTagNode extends Node {
106
115
  readonly tag_opening: Token | null;
107
116
  readonly tag_name: Token | null;
108
- readonly attributes: Node[];
117
+ readonly attributes: any[];
109
118
  readonly tag_closing: Token | null;
110
119
  readonly is_void: boolean;
111
120
  static from(data: SerializedHTMLSelfCloseTagNode): HTMLSelfCloseTagNode;
112
121
  constructor(props: HTMLSelfCloseTagNodeProps);
113
- childNodes(): Node[];
122
+ accept(visitor: Visitor): void;
123
+ childNodes(): (Node | null | undefined)[];
124
+ compactChildNodes(): Node[];
114
125
  recursiveErrors(): HerbError[];
115
126
  toJSON(): SerializedHTMLSelfCloseTagNode;
116
127
  treeInspect(): string;
@@ -138,7 +149,9 @@ export declare class HTMLElementNode extends Node {
138
149
  readonly is_void: boolean;
139
150
  static from(data: SerializedHTMLElementNode): HTMLElementNode;
140
151
  constructor(props: HTMLElementNodeProps);
141
- childNodes(): Node[];
152
+ accept(visitor: Visitor): void;
153
+ childNodes(): (Node | null | undefined)[];
154
+ compactChildNodes(): Node[];
142
155
  recursiveErrors(): HerbError[];
143
156
  toJSON(): SerializedHTMLElementNode;
144
157
  treeInspect(): string;
@@ -163,7 +176,9 @@ export declare class HTMLAttributeValueNode extends Node {
163
176
  readonly quoted: boolean;
164
177
  static from(data: SerializedHTMLAttributeValueNode): HTMLAttributeValueNode;
165
178
  constructor(props: HTMLAttributeValueNodeProps);
166
- childNodes(): Node[];
179
+ accept(visitor: Visitor): void;
180
+ childNodes(): (Node | null | undefined)[];
181
+ compactChildNodes(): Node[];
167
182
  recursiveErrors(): HerbError[];
168
183
  toJSON(): SerializedHTMLAttributeValueNode;
169
184
  treeInspect(): string;
@@ -179,7 +194,9 @@ export declare class HTMLAttributeNameNode extends Node {
179
194
  readonly name: Token | null;
180
195
  static from(data: SerializedHTMLAttributeNameNode): HTMLAttributeNameNode;
181
196
  constructor(props: HTMLAttributeNameNodeProps);
182
- childNodes(): Node[];
197
+ accept(visitor: Visitor): void;
198
+ childNodes(): (Node | null | undefined)[];
199
+ compactChildNodes(): Node[];
183
200
  recursiveErrors(): HerbError[];
184
201
  toJSON(): SerializedHTMLAttributeNameNode;
185
202
  treeInspect(): string;
@@ -201,7 +218,9 @@ export declare class HTMLAttributeNode extends Node {
201
218
  readonly value: Node | null;
202
219
  static from(data: SerializedHTMLAttributeNode): HTMLAttributeNode;
203
220
  constructor(props: HTMLAttributeNodeProps);
204
- childNodes(): Node[];
221
+ accept(visitor: Visitor): void;
222
+ childNodes(): (Node | null | undefined)[];
223
+ compactChildNodes(): Node[];
205
224
  recursiveErrors(): HerbError[];
206
225
  toJSON(): SerializedHTMLAttributeNode;
207
226
  treeInspect(): string;
@@ -217,7 +236,9 @@ export declare class HTMLTextNode extends Node {
217
236
  readonly content: string;
218
237
  static from(data: SerializedHTMLTextNode): HTMLTextNode;
219
238
  constructor(props: HTMLTextNodeProps);
220
- childNodes(): Node[];
239
+ accept(visitor: Visitor): void;
240
+ childNodes(): (Node | null | undefined)[];
241
+ compactChildNodes(): Node[];
221
242
  recursiveErrors(): HerbError[];
222
243
  toJSON(): SerializedHTMLTextNode;
223
244
  treeInspect(): string;
@@ -239,7 +260,9 @@ export declare class HTMLCommentNode extends Node {
239
260
  readonly comment_end: Token | null;
240
261
  static from(data: SerializedHTMLCommentNode): HTMLCommentNode;
241
262
  constructor(props: HTMLCommentNodeProps);
242
- childNodes(): Node[];
263
+ accept(visitor: Visitor): void;
264
+ childNodes(): (Node | null | undefined)[];
265
+ compactChildNodes(): Node[];
243
266
  recursiveErrors(): HerbError[];
244
267
  toJSON(): SerializedHTMLCommentNode;
245
268
  treeInspect(): string;
@@ -261,7 +284,9 @@ export declare class HTMLDoctypeNode extends Node {
261
284
  readonly tag_closing: Token | null;
262
285
  static from(data: SerializedHTMLDoctypeNode): HTMLDoctypeNode;
263
286
  constructor(props: HTMLDoctypeNodeProps);
264
- childNodes(): Node[];
287
+ accept(visitor: Visitor): void;
288
+ childNodes(): (Node | null | undefined)[];
289
+ compactChildNodes(): Node[];
265
290
  recursiveErrors(): HerbError[];
266
291
  toJSON(): SerializedHTMLDoctypeNode;
267
292
  treeInspect(): string;
@@ -277,7 +302,9 @@ export declare class WhitespaceNode extends Node {
277
302
  readonly value: Token | null;
278
303
  static from(data: SerializedWhitespaceNode): WhitespaceNode;
279
304
  constructor(props: WhitespaceNodeProps);
280
- childNodes(): Node[];
305
+ accept(visitor: Visitor): void;
306
+ childNodes(): (Node | null | undefined)[];
307
+ compactChildNodes(): Node[];
281
308
  recursiveErrors(): HerbError[];
282
309
  toJSON(): SerializedWhitespaceNode;
283
310
  treeInspect(): string;
@@ -305,7 +332,9 @@ export declare class ERBContentNode extends Node {
305
332
  readonly valid: boolean;
306
333
  static from(data: SerializedERBContentNode): ERBContentNode;
307
334
  constructor(props: ERBContentNodeProps);
308
- childNodes(): Node[];
335
+ accept(visitor: Visitor): void;
336
+ childNodes(): (Node | null | undefined)[];
337
+ compactChildNodes(): Node[];
309
338
  recursiveErrors(): HerbError[];
310
339
  toJSON(): SerializedERBContentNode;
311
340
  treeInspect(): string;
@@ -327,7 +356,9 @@ export declare class ERBEndNode extends Node {
327
356
  readonly tag_closing: Token | null;
328
357
  static from(data: SerializedERBEndNode): ERBEndNode;
329
358
  constructor(props: ERBEndNodeProps);
330
- childNodes(): Node[];
359
+ accept(visitor: Visitor): void;
360
+ childNodes(): (Node | null | undefined)[];
361
+ compactChildNodes(): Node[];
331
362
  recursiveErrors(): HerbError[];
332
363
  toJSON(): SerializedERBEndNode;
333
364
  treeInspect(): string;
@@ -352,7 +383,9 @@ export declare class ERBElseNode extends Node {
352
383
  readonly statements: Node[];
353
384
  static from(data: SerializedERBElseNode): ERBElseNode;
354
385
  constructor(props: ERBElseNodeProps);
355
- childNodes(): Node[];
386
+ accept(visitor: Visitor): void;
387
+ childNodes(): (Node | null | undefined)[];
388
+ compactChildNodes(): Node[];
356
389
  recursiveErrors(): HerbError[];
357
390
  toJSON(): SerializedERBElseNode;
358
391
  treeInspect(): string;
@@ -383,7 +416,9 @@ export declare class ERBIfNode extends Node {
383
416
  readonly end_node: Node | null;
384
417
  static from(data: SerializedERBIfNode): ERBIfNode;
385
418
  constructor(props: ERBIfNodeProps);
386
- childNodes(): Node[];
419
+ accept(visitor: Visitor): void;
420
+ childNodes(): (Node | null | undefined)[];
421
+ compactChildNodes(): Node[];
387
422
  recursiveErrors(): HerbError[];
388
423
  toJSON(): SerializedERBIfNode;
389
424
  treeInspect(): string;
@@ -411,7 +446,9 @@ export declare class ERBBlockNode extends Node {
411
446
  readonly end_node: Node | null;
412
447
  static from(data: SerializedERBBlockNode): ERBBlockNode;
413
448
  constructor(props: ERBBlockNodeProps);
414
- childNodes(): Node[];
449
+ accept(visitor: Visitor): void;
450
+ childNodes(): (Node | null | undefined)[];
451
+ compactChildNodes(): Node[];
415
452
  recursiveErrors(): HerbError[];
416
453
  toJSON(): SerializedERBBlockNode;
417
454
  treeInspect(): string;
@@ -436,7 +473,9 @@ export declare class ERBWhenNode extends Node {
436
473
  readonly statements: Node[];
437
474
  static from(data: SerializedERBWhenNode): ERBWhenNode;
438
475
  constructor(props: ERBWhenNodeProps);
439
- childNodes(): Node[];
476
+ accept(visitor: Visitor): void;
477
+ childNodes(): (Node | null | undefined)[];
478
+ compactChildNodes(): Node[];
440
479
  recursiveErrors(): HerbError[];
441
480
  toJSON(): SerializedERBWhenNode;
442
481
  treeInspect(): string;
@@ -456,7 +495,7 @@ export interface ERBCaseNodeProps extends BaseNodeProps {
456
495
  content: Token | null;
457
496
  tag_closing: Token | null;
458
497
  children: Node[];
459
- conditions: Node[];
498
+ conditions: any[];
460
499
  else_clause: Node | null;
461
500
  end_node: Node | null;
462
501
  }
@@ -465,16 +504,54 @@ export declare class ERBCaseNode extends Node {
465
504
  readonly content: Token | null;
466
505
  readonly tag_closing: Token | null;
467
506
  readonly children: Node[];
468
- readonly conditions: Node[];
507
+ readonly conditions: any[];
469
508
  readonly else_clause: Node | null;
470
509
  readonly end_node: Node | null;
471
510
  static from(data: SerializedERBCaseNode): ERBCaseNode;
472
511
  constructor(props: ERBCaseNodeProps);
473
- childNodes(): Node[];
512
+ accept(visitor: Visitor): void;
513
+ childNodes(): (Node | null | undefined)[];
514
+ compactChildNodes(): Node[];
474
515
  recursiveErrors(): HerbError[];
475
516
  toJSON(): SerializedERBCaseNode;
476
517
  treeInspect(): string;
477
518
  }
519
+ export interface SerializedERBCaseMatchNode extends SerializedNode {
520
+ type: "AST_ERB_CASE_MATCH_NODE";
521
+ tag_opening: SerializedToken | null;
522
+ content: SerializedToken | null;
523
+ tag_closing: SerializedToken | null;
524
+ children: SerializedNode[];
525
+ conditions: SerializedNode[];
526
+ else_clause: SerializedNode | null;
527
+ end_node: SerializedNode | null;
528
+ }
529
+ export interface ERBCaseMatchNodeProps extends BaseNodeProps {
530
+ tag_opening: Token | null;
531
+ content: Token | null;
532
+ tag_closing: Token | null;
533
+ children: Node[];
534
+ conditions: any[];
535
+ else_clause: Node | null;
536
+ end_node: Node | null;
537
+ }
538
+ export declare class ERBCaseMatchNode extends Node {
539
+ readonly tag_opening: Token | null;
540
+ readonly content: Token | null;
541
+ readonly tag_closing: Token | null;
542
+ readonly children: Node[];
543
+ readonly conditions: any[];
544
+ readonly else_clause: Node | null;
545
+ readonly end_node: Node | null;
546
+ static from(data: SerializedERBCaseMatchNode): ERBCaseMatchNode;
547
+ constructor(props: ERBCaseMatchNodeProps);
548
+ accept(visitor: Visitor): void;
549
+ childNodes(): (Node | null | undefined)[];
550
+ compactChildNodes(): Node[];
551
+ recursiveErrors(): HerbError[];
552
+ toJSON(): SerializedERBCaseMatchNode;
553
+ treeInspect(): string;
554
+ }
478
555
  export interface SerializedERBWhileNode extends SerializedNode {
479
556
  type: "AST_ERB_WHILE_NODE";
480
557
  tag_opening: SerializedToken | null;
@@ -498,7 +575,9 @@ export declare class ERBWhileNode extends Node {
498
575
  readonly end_node: Node | null;
499
576
  static from(data: SerializedERBWhileNode): ERBWhileNode;
500
577
  constructor(props: ERBWhileNodeProps);
501
- childNodes(): Node[];
578
+ accept(visitor: Visitor): void;
579
+ childNodes(): (Node | null | undefined)[];
580
+ compactChildNodes(): Node[];
502
581
  recursiveErrors(): HerbError[];
503
582
  toJSON(): SerializedERBWhileNode;
504
583
  treeInspect(): string;
@@ -526,7 +605,9 @@ export declare class ERBUntilNode extends Node {
526
605
  readonly end_node: Node | null;
527
606
  static from(data: SerializedERBUntilNode): ERBUntilNode;
528
607
  constructor(props: ERBUntilNodeProps);
529
- childNodes(): Node[];
608
+ accept(visitor: Visitor): void;
609
+ childNodes(): (Node | null | undefined)[];
610
+ compactChildNodes(): Node[];
530
611
  recursiveErrors(): HerbError[];
531
612
  toJSON(): SerializedERBUntilNode;
532
613
  treeInspect(): string;
@@ -554,7 +635,9 @@ export declare class ERBForNode extends Node {
554
635
  readonly end_node: Node | null;
555
636
  static from(data: SerializedERBForNode): ERBForNode;
556
637
  constructor(props: ERBForNodeProps);
557
- childNodes(): Node[];
638
+ accept(visitor: Visitor): void;
639
+ childNodes(): (Node | null | undefined)[];
640
+ compactChildNodes(): Node[];
558
641
  recursiveErrors(): HerbError[];
559
642
  toJSON(): SerializedERBForNode;
560
643
  treeInspect(): string;
@@ -582,7 +665,9 @@ export declare class ERBRescueNode extends Node {
582
665
  readonly subsequent: Node | null;
583
666
  static from(data: SerializedERBRescueNode): ERBRescueNode;
584
667
  constructor(props: ERBRescueNodeProps);
585
- childNodes(): Node[];
668
+ accept(visitor: Visitor): void;
669
+ childNodes(): (Node | null | undefined)[];
670
+ compactChildNodes(): Node[];
586
671
  recursiveErrors(): HerbError[];
587
672
  toJSON(): SerializedERBRescueNode;
588
673
  treeInspect(): string;
@@ -607,7 +692,9 @@ export declare class ERBEnsureNode extends Node {
607
692
  readonly statements: Node[];
608
693
  static from(data: SerializedERBEnsureNode): ERBEnsureNode;
609
694
  constructor(props: ERBEnsureNodeProps);
610
- childNodes(): Node[];
695
+ accept(visitor: Visitor): void;
696
+ childNodes(): (Node | null | undefined)[];
697
+ compactChildNodes(): Node[];
611
698
  recursiveErrors(): HerbError[];
612
699
  toJSON(): SerializedERBEnsureNode;
613
700
  treeInspect(): string;
@@ -644,7 +731,9 @@ export declare class ERBBeginNode extends Node {
644
731
  readonly end_node: Node | null;
645
732
  static from(data: SerializedERBBeginNode): ERBBeginNode;
646
733
  constructor(props: ERBBeginNodeProps);
647
- childNodes(): Node[];
734
+ accept(visitor: Visitor): void;
735
+ childNodes(): (Node | null | undefined)[];
736
+ compactChildNodes(): Node[];
648
737
  recursiveErrors(): HerbError[];
649
738
  toJSON(): SerializedERBBeginNode;
650
739
  treeInspect(): string;
@@ -675,8 +764,61 @@ export declare class ERBUnlessNode extends Node {
675
764
  readonly end_node: Node | null;
676
765
  static from(data: SerializedERBUnlessNode): ERBUnlessNode;
677
766
  constructor(props: ERBUnlessNodeProps);
678
- childNodes(): Node[];
767
+ accept(visitor: Visitor): void;
768
+ childNodes(): (Node | null | undefined)[];
769
+ compactChildNodes(): Node[];
679
770
  recursiveErrors(): HerbError[];
680
771
  toJSON(): SerializedERBUnlessNode;
681
772
  treeInspect(): string;
682
773
  }
774
+ export interface SerializedERBYieldNode extends SerializedNode {
775
+ type: "AST_ERB_YIELD_NODE";
776
+ tag_opening: SerializedToken | null;
777
+ content: SerializedToken | null;
778
+ tag_closing: SerializedToken | null;
779
+ }
780
+ export interface ERBYieldNodeProps extends BaseNodeProps {
781
+ tag_opening: Token | null;
782
+ content: Token | null;
783
+ tag_closing: Token | null;
784
+ }
785
+ export declare class ERBYieldNode extends Node {
786
+ readonly tag_opening: Token | null;
787
+ readonly content: Token | null;
788
+ readonly tag_closing: Token | null;
789
+ static from(data: SerializedERBYieldNode): ERBYieldNode;
790
+ constructor(props: ERBYieldNodeProps);
791
+ accept(visitor: Visitor): void;
792
+ childNodes(): (Node | null | undefined)[];
793
+ compactChildNodes(): Node[];
794
+ recursiveErrors(): HerbError[];
795
+ toJSON(): SerializedERBYieldNode;
796
+ treeInspect(): string;
797
+ }
798
+ export interface SerializedERBInNode extends SerializedNode {
799
+ type: "AST_ERB_IN_NODE";
800
+ tag_opening: SerializedToken | null;
801
+ content: SerializedToken | null;
802
+ tag_closing: SerializedToken | null;
803
+ statements: SerializedNode[];
804
+ }
805
+ export interface ERBInNodeProps extends BaseNodeProps {
806
+ tag_opening: Token | null;
807
+ content: Token | null;
808
+ tag_closing: Token | null;
809
+ statements: Node[];
810
+ }
811
+ export declare class ERBInNode extends Node {
812
+ readonly tag_opening: Token | null;
813
+ readonly content: Token | null;
814
+ readonly tag_closing: Token | null;
815
+ readonly statements: Node[];
816
+ static from(data: SerializedERBInNode): ERBInNode;
817
+ constructor(props: ERBInNodeProps);
818
+ accept(visitor: Visitor): void;
819
+ childNodes(): (Node | null | undefined)[];
820
+ compactChildNodes(): Node[];
821
+ recursiveErrors(): HerbError[];
822
+ toJSON(): SerializedERBInNode;
823
+ treeInspect(): string;
824
+ }
@@ -1,11 +1,37 @@
1
- import { Node } from "./node.js";
2
- /**
3
- * Represents a visitor that can traverse nodes.
4
- */
1
+ import { Node } from "./node";
2
+ import { DocumentNode, LiteralNode, HTMLOpenTagNode, HTMLCloseTagNode, HTMLSelfCloseTagNode, HTMLElementNode, HTMLAttributeValueNode, HTMLAttributeNameNode, HTMLAttributeNode, HTMLTextNode, HTMLCommentNode, HTMLDoctypeNode, WhitespaceNode, ERBContentNode, ERBEndNode, ERBElseNode, ERBIfNode, ERBBlockNode, ERBWhenNode, ERBCaseNode, ERBCaseMatchNode, ERBWhileNode, ERBUntilNode, ERBForNode, ERBRescueNode, ERBEnsureNode, ERBBeginNode, ERBUnlessNode, ERBYieldNode, ERBInNode } from "./nodes.js";
5
3
  export declare class Visitor {
6
- /**
7
- * Visits a node and performs an action.
8
- * @param node - The node to visit.
9
- */
10
- visit(node: Node): void;
4
+ visit(node: Node | null | undefined): void;
5
+ visitAll(nodes: (Node | null | undefined)[]): void;
6
+ visitChildNodes(node: Node): void;
7
+ visitDocumentNode(node: DocumentNode): void;
8
+ visitLiteralNode(node: LiteralNode): void;
9
+ visitHTMLOpenTagNode(node: HTMLOpenTagNode): void;
10
+ visitHTMLCloseTagNode(node: HTMLCloseTagNode): void;
11
+ visitHTMLSelfCloseTagNode(node: HTMLSelfCloseTagNode): void;
12
+ visitHTMLElementNode(node: HTMLElementNode): void;
13
+ visitHTMLAttributeValueNode(node: HTMLAttributeValueNode): void;
14
+ visitHTMLAttributeNameNode(node: HTMLAttributeNameNode): void;
15
+ visitHTMLAttributeNode(node: HTMLAttributeNode): void;
16
+ visitHTMLTextNode(node: HTMLTextNode): void;
17
+ visitHTMLCommentNode(node: HTMLCommentNode): void;
18
+ visitHTMLDoctypeNode(node: HTMLDoctypeNode): void;
19
+ visitWhitespaceNode(node: WhitespaceNode): void;
20
+ visitERBContentNode(node: ERBContentNode): void;
21
+ visitERBEndNode(node: ERBEndNode): void;
22
+ visitERBElseNode(node: ERBElseNode): void;
23
+ visitERBIfNode(node: ERBIfNode): void;
24
+ visitERBBlockNode(node: ERBBlockNode): void;
25
+ visitERBWhenNode(node: ERBWhenNode): void;
26
+ visitERBCaseNode(node: ERBCaseNode): void;
27
+ visitERBCaseMatchNode(node: ERBCaseMatchNode): void;
28
+ visitERBWhileNode(node: ERBWhileNode): void;
29
+ visitERBUntilNode(node: ERBUntilNode): void;
30
+ visitERBForNode(node: ERBForNode): void;
31
+ visitERBRescueNode(node: ERBRescueNode): void;
32
+ visitERBEnsureNode(node: ERBEnsureNode): void;
33
+ visitERBBeginNode(node: ERBBeginNode): void;
34
+ visitERBUnlessNode(node: ERBUnlessNode): void;
35
+ visitERBYieldNode(node: ERBYieldNode): void;
36
+ visitERBInNode(node: ERBInNode): void;
11
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@herb-tools/core",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "homepage": "https://herb-tools.dev",
@@ -30,16 +30,7 @@
30
30
  }
31
31
  },
32
32
  "dependencies": {},
33
- "devDependencies": {
34
- "@rollup/plugin-json": "^6.1.0",
35
- "@rollup/plugin-node-resolve": "^16.0.1",
36
- "@rollup/plugin-typescript": "^12.1.2",
37
- "rimraf": "^6.0.1",
38
- "rollup": "^4.35.0",
39
- "tslib": "^2.8.1",
40
- "typescript": "^5.8.2",
41
- "vitest": "^3.0.0"
42
- },
33
+ "devDependencies": {},
43
34
  "files": [
44
35
  "package.json",
45
36
  "README.md",
package/src/index.ts CHANGED
@@ -1,9 +1,9 @@
1
- export * from "./ast.js"
2
1
  export * from "./backend.js"
3
2
  export * from "./errors.js"
4
3
  export * from "./herb-backend.js"
5
4
  export * from "./lex-result.js"
6
5
  export * from "./location.js"
6
+ export * from "./node.js"
7
7
  export * from "./nodes.js"
8
8
  export * from "./parse-result.js"
9
9
  export * from "./position.js"
package/src/node.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { Location, SerializedLocation } from "./location.js"
2
2
  import { HerbError, SerializedHerbError } from "./error.js"
3
3
  import { NodeType, SerializedNodeType, fromSerializedNode } from "./nodes.js"
4
+ import type { Visitor } from "./visitor.js"
4
5
 
5
6
  export interface SerializedNode {
6
7
  type: SerializedNodeType
@@ -43,7 +44,9 @@ export abstract class Node implements BaseNodeProps {
43
44
 
44
45
  abstract treeInspect(indent?: number): string
45
46
  abstract recursiveErrors(): HerbError[]
46
- abstract childNodes(): Node[]
47
+ abstract accept(visitor: Visitor): void
48
+ abstract childNodes(): (Node | null | undefined)[]
49
+ abstract compactChildNodes(): Node[]
47
50
 
48
51
  protected inspectArray(
49
52
  array: (Node | HerbError)[] | null | undefined,