@herb-tools/core 0.1.1 → 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.
- package/CHANGELOG.md +4 -0
- package/dist/herb-core.browser.js +494 -44
- package/dist/herb-core.browser.js.map +1 -1
- package/dist/herb-core.cjs +497 -44
- package/dist/herb-core.cjs.map +1 -1
- package/dist/herb-core.esm.js +494 -44
- package/dist/herb-core.esm.js.map +1 -1
- package/dist/herb-core.umd.js +497 -44
- package/dist/herb-core.umd.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/node.d.ts +4 -1
- package/dist/types/nodes.d.ts +174 -32
- package/dist/types/visitor.d.ts +35 -9
- package/package.json +2 -11
- package/src/index.ts +1 -1
- package/src/node.ts +4 -1
- package/src/nodes.ts +568 -60
- package/src/visitor.ts +170 -10
- package/dist/types/ast.d.ts +0 -4
- package/src/ast.ts +0 -7
package/dist/types/nodes.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
+
}
|
package/dist/types/visitor.d.ts
CHANGED
|
@@ -1,11 +1,37 @@
|
|
|
1
|
-
import { Node } from "./node
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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.
|
|
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
|
|
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,
|