@herb-tools/core 0.7.4 → 0.8.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,5 +1,5 @@
1
1
  // NOTE: This file is generated by the templates/template.rb script and should not
2
- // be modified manually. See /Users/marcoroth/Development/herb-release-0.7.4/templates/javascript/packages/core/src/node-type-guards.ts.erb
2
+ // be modified manually. See /Users/marcoroth/Development/herb-release-0.8.0/templates/javascript/packages/core/src/node-type-guards.ts.erb
3
3
 
4
4
  import type { Node, NodeType, ERBNode } from "./nodes.js"
5
5
 
package/src/nodes.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  // NOTE: This file is generated by the templates/template.rb script and should not
2
- // be modified manually. See /Users/marcoroth/Development/herb-release-0.7.4/templates/javascript/packages/core/src/nodes.ts.erb
2
+ // be modified manually. See /Users/marcoroth/Development/herb-release-0.8.0/templates/javascript/packages/core/src/nodes.ts.erb
3
3
 
4
4
  import { Location } from "./location.js"
5
5
  import { Token, SerializedToken } from "./token.js"
package/src/position.ts CHANGED
@@ -7,8 +7,18 @@ export class Position {
7
7
  readonly line: number
8
8
  readonly column: number
9
9
 
10
- static from(position: SerializedPosition) {
11
- return new Position(position.line, position.column)
10
+ static from(position: SerializedPosition): Position
11
+ static from(line: number, column: number): Position
12
+ static from(positionOrLine: SerializedPosition | number, column?: number): Position {
13
+ if (typeof positionOrLine === "number") {
14
+ return new Position(positionOrLine, column!)
15
+ } else {
16
+ return new Position(positionOrLine.line, positionOrLine.column)
17
+ }
18
+ }
19
+
20
+ static get zero() {
21
+ return new Position(0, 0)
12
22
  }
13
23
 
14
24
  constructor(line: number, column: number) {
package/src/range.ts CHANGED
@@ -4,8 +4,18 @@ export class Range {
4
4
  readonly start: number
5
5
  readonly end: number
6
6
 
7
- static from(range: SerializedRange) {
8
- return new Range(range[0], range[1])
7
+ static from(range: SerializedRange): Range
8
+ static from(start: number, end: number): Range
9
+ static from(rangeOrStart: SerializedRange | number, end?: number): Range {
10
+ if (typeof rangeOrStart === "number") {
11
+ return new Range(rangeOrStart, end!)
12
+ } else {
13
+ return new Range(rangeOrStart[0], rangeOrStart[1])
14
+ }
15
+ }
16
+
17
+ static get zero() {
18
+ return new Range(0, 0)
9
19
  }
10
20
 
11
21
  constructor(start: number, end: number) {
package/src/visitor.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  // NOTE: This file is generated by the templates/template.rb script and should not
2
- // be modified manually. See /Users/marcoroth/Development/herb-release-0.7.4/templates/javascript/packages/core/src/visitor.ts.erb
2
+ // be modified manually. See /Users/marcoroth/Development/herb-release-0.8.0/templates/javascript/packages/core/src/visitor.ts.erb
3
3
 
4
4
  import {
5
5
  Node,
6
+ ERBNode,
6
7
  DocumentNode,
7
8
  LiteralNode,
8
9
  HTMLOpenTagNode,
@@ -36,7 +37,50 @@ import {
36
37
  ERBInNode,
37
38
  } from "./nodes.js"
38
39
 
39
- export class Visitor {
40
+ /**
41
+ * Interface that enforces all node visit methods are implemented
42
+ * This ensures that any class implementing IVisitor must have a visit method for every node type
43
+ */
44
+ export interface IVisitor {
45
+ visit(node: Node | null | undefined): void
46
+ visitAll(nodes: (Node | null | undefined)[]): void
47
+ visitChildNodes(node: Node): void
48
+ visitDocumentNode(node: DocumentNode): void
49
+ visitLiteralNode(node: LiteralNode): void
50
+ visitHTMLOpenTagNode(node: HTMLOpenTagNode): void
51
+ visitHTMLCloseTagNode(node: HTMLCloseTagNode): void
52
+ visitHTMLElementNode(node: HTMLElementNode): void
53
+ visitHTMLAttributeValueNode(node: HTMLAttributeValueNode): void
54
+ visitHTMLAttributeNameNode(node: HTMLAttributeNameNode): void
55
+ visitHTMLAttributeNode(node: HTMLAttributeNode): void
56
+ visitHTMLTextNode(node: HTMLTextNode): void
57
+ visitHTMLCommentNode(node: HTMLCommentNode): void
58
+ visitHTMLDoctypeNode(node: HTMLDoctypeNode): void
59
+ visitXMLDeclarationNode(node: XMLDeclarationNode): void
60
+ visitCDATANode(node: CDATANode): void
61
+ visitWhitespaceNode(node: WhitespaceNode): void
62
+ visitERBContentNode(node: ERBContentNode): void
63
+ visitERBEndNode(node: ERBEndNode): void
64
+ visitERBElseNode(node: ERBElseNode): void
65
+ visitERBIfNode(node: ERBIfNode): void
66
+ visitERBBlockNode(node: ERBBlockNode): void
67
+ visitERBWhenNode(node: ERBWhenNode): void
68
+ visitERBCaseNode(node: ERBCaseNode): void
69
+ visitERBCaseMatchNode(node: ERBCaseMatchNode): void
70
+ visitERBWhileNode(node: ERBWhileNode): void
71
+ visitERBUntilNode(node: ERBUntilNode): void
72
+ visitERBForNode(node: ERBForNode): void
73
+ visitERBRescueNode(node: ERBRescueNode): void
74
+ visitERBEnsureNode(node: ERBEnsureNode): void
75
+ visitERBBeginNode(node: ERBBeginNode): void
76
+ visitERBUnlessNode(node: ERBUnlessNode): void
77
+ visitERBYieldNode(node: ERBYieldNode): void
78
+ visitERBInNode(node: ERBInNode): void
79
+ visitNode(node: Node): void
80
+ visitERBNode(node: ERBNode): void
81
+ }
82
+
83
+ export class Visitor implements IVisitor {
40
84
  visit(node: Node | null | undefined): void {
41
85
  if (!node) return
42
86
 
@@ -51,127 +95,183 @@ export class Visitor {
51
95
  node.compactChildNodes().forEach(node => node.accept(this))
52
96
  }
53
97
 
98
+ visitNode(_node: Node): void {
99
+ // Default implementation does nothing
100
+ }
101
+
102
+ visitERBNode(_node: ERBNode): void {
103
+ // Default implementation does nothing
104
+ }
105
+
54
106
  visitDocumentNode(node: DocumentNode): void {
107
+ this.visitNode(node)
55
108
  this.visitChildNodes(node)
56
109
  }
57
110
 
58
111
  visitLiteralNode(node: LiteralNode): void {
112
+ this.visitNode(node)
59
113
  this.visitChildNodes(node)
60
114
  }
61
115
 
62
116
  visitHTMLOpenTagNode(node: HTMLOpenTagNode): void {
117
+ this.visitNode(node)
63
118
  this.visitChildNodes(node)
64
119
  }
65
120
 
66
121
  visitHTMLCloseTagNode(node: HTMLCloseTagNode): void {
122
+ this.visitNode(node)
67
123
  this.visitChildNodes(node)
68
124
  }
69
125
 
70
126
  visitHTMLElementNode(node: HTMLElementNode): void {
127
+ this.visitNode(node)
71
128
  this.visitChildNodes(node)
72
129
  }
73
130
 
74
131
  visitHTMLAttributeValueNode(node: HTMLAttributeValueNode): void {
132
+ this.visitNode(node)
75
133
  this.visitChildNodes(node)
76
134
  }
77
135
 
78
136
  visitHTMLAttributeNameNode(node: HTMLAttributeNameNode): void {
137
+ this.visitNode(node)
79
138
  this.visitChildNodes(node)
80
139
  }
81
140
 
82
141
  visitHTMLAttributeNode(node: HTMLAttributeNode): void {
142
+ this.visitNode(node)
83
143
  this.visitChildNodes(node)
84
144
  }
85
145
 
86
146
  visitHTMLTextNode(node: HTMLTextNode): void {
147
+ this.visitNode(node)
87
148
  this.visitChildNodes(node)
88
149
  }
89
150
 
90
151
  visitHTMLCommentNode(node: HTMLCommentNode): void {
152
+ this.visitNode(node)
91
153
  this.visitChildNodes(node)
92
154
  }
93
155
 
94
156
  visitHTMLDoctypeNode(node: HTMLDoctypeNode): void {
157
+ this.visitNode(node)
95
158
  this.visitChildNodes(node)
96
159
  }
97
160
 
98
161
  visitXMLDeclarationNode(node: XMLDeclarationNode): void {
162
+ this.visitNode(node)
99
163
  this.visitChildNodes(node)
100
164
  }
101
165
 
102
166
  visitCDATANode(node: CDATANode): void {
167
+ this.visitNode(node)
103
168
  this.visitChildNodes(node)
104
169
  }
105
170
 
106
171
  visitWhitespaceNode(node: WhitespaceNode): void {
172
+ this.visitNode(node)
107
173
  this.visitChildNodes(node)
108
174
  }
109
175
 
110
176
  visitERBContentNode(node: ERBContentNode): void {
177
+ this.visitNode(node)
178
+ this.visitERBNode(node)
111
179
  this.visitChildNodes(node)
112
180
  }
113
181
 
114
182
  visitERBEndNode(node: ERBEndNode): void {
183
+ this.visitNode(node)
184
+ this.visitERBNode(node)
115
185
  this.visitChildNodes(node)
116
186
  }
117
187
 
118
188
  visitERBElseNode(node: ERBElseNode): void {
189
+ this.visitNode(node)
190
+ this.visitERBNode(node)
119
191
  this.visitChildNodes(node)
120
192
  }
121
193
 
122
194
  visitERBIfNode(node: ERBIfNode): void {
195
+ this.visitNode(node)
196
+ this.visitERBNode(node)
123
197
  this.visitChildNodes(node)
124
198
  }
125
199
 
126
200
  visitERBBlockNode(node: ERBBlockNode): void {
201
+ this.visitNode(node)
202
+ this.visitERBNode(node)
127
203
  this.visitChildNodes(node)
128
204
  }
129
205
 
130
206
  visitERBWhenNode(node: ERBWhenNode): void {
207
+ this.visitNode(node)
208
+ this.visitERBNode(node)
131
209
  this.visitChildNodes(node)
132
210
  }
133
211
 
134
212
  visitERBCaseNode(node: ERBCaseNode): void {
213
+ this.visitNode(node)
214
+ this.visitERBNode(node)
135
215
  this.visitChildNodes(node)
136
216
  }
137
217
 
138
218
  visitERBCaseMatchNode(node: ERBCaseMatchNode): void {
219
+ this.visitNode(node)
220
+ this.visitERBNode(node)
139
221
  this.visitChildNodes(node)
140
222
  }
141
223
 
142
224
  visitERBWhileNode(node: ERBWhileNode): void {
225
+ this.visitNode(node)
226
+ this.visitERBNode(node)
143
227
  this.visitChildNodes(node)
144
228
  }
145
229
 
146
230
  visitERBUntilNode(node: ERBUntilNode): void {
231
+ this.visitNode(node)
232
+ this.visitERBNode(node)
147
233
  this.visitChildNodes(node)
148
234
  }
149
235
 
150
236
  visitERBForNode(node: ERBForNode): void {
237
+ this.visitNode(node)
238
+ this.visitERBNode(node)
151
239
  this.visitChildNodes(node)
152
240
  }
153
241
 
154
242
  visitERBRescueNode(node: ERBRescueNode): void {
243
+ this.visitNode(node)
244
+ this.visitERBNode(node)
155
245
  this.visitChildNodes(node)
156
246
  }
157
247
 
158
248
  visitERBEnsureNode(node: ERBEnsureNode): void {
249
+ this.visitNode(node)
250
+ this.visitERBNode(node)
159
251
  this.visitChildNodes(node)
160
252
  }
161
253
 
162
254
  visitERBBeginNode(node: ERBBeginNode): void {
255
+ this.visitNode(node)
256
+ this.visitERBNode(node)
163
257
  this.visitChildNodes(node)
164
258
  }
165
259
 
166
260
  visitERBUnlessNode(node: ERBUnlessNode): void {
261
+ this.visitNode(node)
262
+ this.visitERBNode(node)
167
263
  this.visitChildNodes(node)
168
264
  }
169
265
 
170
266
  visitERBYieldNode(node: ERBYieldNode): void {
267
+ this.visitNode(node)
268
+ this.visitERBNode(node)
171
269
  this.visitChildNodes(node)
172
270
  }
173
271
 
174
272
  visitERBInNode(node: ERBInNode): void {
273
+ this.visitNode(node)
274
+ this.visitERBNode(node)
175
275
  this.visitChildNodes(node)
176
276
  }
177
277