@herb-tools/core 0.9.0 → 0.9.1
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/dist/herb-core.browser.js +557 -10
- package/dist/herb-core.browser.js.map +1 -1
- package/dist/herb-core.cjs +570 -10
- package/dist/herb-core.cjs.map +1 -1
- package/dist/herb-core.esm.js +557 -10
- package/dist/herb-core.esm.js.map +1 -1
- package/dist/herb-core.umd.js +570 -10
- package/dist/herb-core.umd.js.map +1 -1
- package/dist/types/ast-utils.d.ts +2 -3
- package/dist/types/diagnostic.d.ts +6 -0
- package/dist/types/errors.d.ts +141 -1
- package/dist/types/node-type-guards.d.ts +19 -1
- package/dist/types/nodes.d.ts +115 -4
- package/dist/types/parser-options.d.ts +3 -0
- package/dist/types/visitor.d.ts +5 -1
- package/package.json +1 -1
- package/src/ast-utils.ts +3 -4
- package/src/diagnostic.ts +7 -0
- package/src/errors.ts +465 -17
- package/src/node-type-guards.ts +42 -1
- package/src/nodes.ts +322 -2
- package/src/parser-options.ts +6 -0
- package/src/visitor.ts +16 -1
package/dist/herb-core.umd.js
CHANGED
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
}
|
|
162
162
|
|
|
163
163
|
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
164
|
-
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.
|
|
164
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/javascript/packages/core/src/errors.ts.erb
|
|
165
165
|
class HerbError {
|
|
166
166
|
type;
|
|
167
167
|
message;
|
|
@@ -1162,6 +1162,279 @@
|
|
|
1162
1162
|
return output;
|
|
1163
1163
|
}
|
|
1164
1164
|
}
|
|
1165
|
+
class RenderAmbiguousLocalsError extends HerbError {
|
|
1166
|
+
partial;
|
|
1167
|
+
static from(data) {
|
|
1168
|
+
return new RenderAmbiguousLocalsError({
|
|
1169
|
+
type: data.type,
|
|
1170
|
+
message: data.message,
|
|
1171
|
+
location: Location.from(data.location),
|
|
1172
|
+
partial: data.partial,
|
|
1173
|
+
});
|
|
1174
|
+
}
|
|
1175
|
+
constructor(props) {
|
|
1176
|
+
super(props.type, props.message, props.location);
|
|
1177
|
+
this.partial = props.partial;
|
|
1178
|
+
}
|
|
1179
|
+
toJSON() {
|
|
1180
|
+
return {
|
|
1181
|
+
...super.toJSON(),
|
|
1182
|
+
type: "RENDER_AMBIGUOUS_LOCALS_ERROR",
|
|
1183
|
+
partial: this.partial,
|
|
1184
|
+
};
|
|
1185
|
+
}
|
|
1186
|
+
toMonacoDiagnostic() {
|
|
1187
|
+
return {
|
|
1188
|
+
line: this.location.start.line,
|
|
1189
|
+
column: this.location.start.column,
|
|
1190
|
+
endLine: this.location.end.line,
|
|
1191
|
+
endColumn: this.location.end.column,
|
|
1192
|
+
message: this.message,
|
|
1193
|
+
severity: 'error'
|
|
1194
|
+
};
|
|
1195
|
+
}
|
|
1196
|
+
treeInspect() {
|
|
1197
|
+
let output = "";
|
|
1198
|
+
output += `@ RenderAmbiguousLocalsError ${this.location.treeInspectWithLabel()}\n`;
|
|
1199
|
+
output += `├── message: "${this.message}"\n`;
|
|
1200
|
+
output += `└── partial: ${JSON.stringify(this.partial)}\n`;
|
|
1201
|
+
return output;
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1204
|
+
class RenderMissingLocalsError extends HerbError {
|
|
1205
|
+
partial;
|
|
1206
|
+
keywords;
|
|
1207
|
+
static from(data) {
|
|
1208
|
+
return new RenderMissingLocalsError({
|
|
1209
|
+
type: data.type,
|
|
1210
|
+
message: data.message,
|
|
1211
|
+
location: Location.from(data.location),
|
|
1212
|
+
partial: data.partial,
|
|
1213
|
+
keywords: data.keywords,
|
|
1214
|
+
});
|
|
1215
|
+
}
|
|
1216
|
+
constructor(props) {
|
|
1217
|
+
super(props.type, props.message, props.location);
|
|
1218
|
+
this.partial = props.partial;
|
|
1219
|
+
this.keywords = props.keywords;
|
|
1220
|
+
}
|
|
1221
|
+
toJSON() {
|
|
1222
|
+
return {
|
|
1223
|
+
...super.toJSON(),
|
|
1224
|
+
type: "RENDER_MISSING_LOCALS_ERROR",
|
|
1225
|
+
partial: this.partial,
|
|
1226
|
+
keywords: this.keywords,
|
|
1227
|
+
};
|
|
1228
|
+
}
|
|
1229
|
+
toMonacoDiagnostic() {
|
|
1230
|
+
return {
|
|
1231
|
+
line: this.location.start.line,
|
|
1232
|
+
column: this.location.start.column,
|
|
1233
|
+
endLine: this.location.end.line,
|
|
1234
|
+
endColumn: this.location.end.column,
|
|
1235
|
+
message: this.message,
|
|
1236
|
+
severity: 'error'
|
|
1237
|
+
};
|
|
1238
|
+
}
|
|
1239
|
+
treeInspect() {
|
|
1240
|
+
let output = "";
|
|
1241
|
+
output += `@ RenderMissingLocalsError ${this.location.treeInspectWithLabel()}\n`;
|
|
1242
|
+
output += `├── message: "${this.message}"\n`;
|
|
1243
|
+
output += `├── partial: ${JSON.stringify(this.partial)}\n`;
|
|
1244
|
+
output += `└── keywords: ${JSON.stringify(this.keywords)}\n`;
|
|
1245
|
+
return output;
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
class RenderNoArgumentsError extends HerbError {
|
|
1249
|
+
static from(data) {
|
|
1250
|
+
return new RenderNoArgumentsError({
|
|
1251
|
+
type: data.type,
|
|
1252
|
+
message: data.message,
|
|
1253
|
+
location: Location.from(data.location),
|
|
1254
|
+
});
|
|
1255
|
+
}
|
|
1256
|
+
constructor(props) {
|
|
1257
|
+
super(props.type, props.message, props.location);
|
|
1258
|
+
}
|
|
1259
|
+
toJSON() {
|
|
1260
|
+
return {
|
|
1261
|
+
...super.toJSON(),
|
|
1262
|
+
type: "RENDER_NO_ARGUMENTS_ERROR",
|
|
1263
|
+
};
|
|
1264
|
+
}
|
|
1265
|
+
toMonacoDiagnostic() {
|
|
1266
|
+
return {
|
|
1267
|
+
line: this.location.start.line,
|
|
1268
|
+
column: this.location.start.column,
|
|
1269
|
+
endLine: this.location.end.line,
|
|
1270
|
+
endColumn: this.location.end.column,
|
|
1271
|
+
message: this.message,
|
|
1272
|
+
severity: 'error'
|
|
1273
|
+
};
|
|
1274
|
+
}
|
|
1275
|
+
treeInspect() {
|
|
1276
|
+
let output = "";
|
|
1277
|
+
output += `@ RenderNoArgumentsError ${this.location.treeInspectWithLabel()}\n`;
|
|
1278
|
+
output += `└── message: "${this.message}"\n`;
|
|
1279
|
+
return output;
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
class RenderConflictingPartialError extends HerbError {
|
|
1283
|
+
positional_partial;
|
|
1284
|
+
keyword_partial;
|
|
1285
|
+
static from(data) {
|
|
1286
|
+
return new RenderConflictingPartialError({
|
|
1287
|
+
type: data.type,
|
|
1288
|
+
message: data.message,
|
|
1289
|
+
location: Location.from(data.location),
|
|
1290
|
+
positional_partial: data.positional_partial,
|
|
1291
|
+
keyword_partial: data.keyword_partial,
|
|
1292
|
+
});
|
|
1293
|
+
}
|
|
1294
|
+
constructor(props) {
|
|
1295
|
+
super(props.type, props.message, props.location);
|
|
1296
|
+
this.positional_partial = props.positional_partial;
|
|
1297
|
+
this.keyword_partial = props.keyword_partial;
|
|
1298
|
+
}
|
|
1299
|
+
toJSON() {
|
|
1300
|
+
return {
|
|
1301
|
+
...super.toJSON(),
|
|
1302
|
+
type: "RENDER_CONFLICTING_PARTIAL_ERROR",
|
|
1303
|
+
positional_partial: this.positional_partial,
|
|
1304
|
+
keyword_partial: this.keyword_partial,
|
|
1305
|
+
};
|
|
1306
|
+
}
|
|
1307
|
+
toMonacoDiagnostic() {
|
|
1308
|
+
return {
|
|
1309
|
+
line: this.location.start.line,
|
|
1310
|
+
column: this.location.start.column,
|
|
1311
|
+
endLine: this.location.end.line,
|
|
1312
|
+
endColumn: this.location.end.column,
|
|
1313
|
+
message: this.message,
|
|
1314
|
+
severity: 'error'
|
|
1315
|
+
};
|
|
1316
|
+
}
|
|
1317
|
+
treeInspect() {
|
|
1318
|
+
let output = "";
|
|
1319
|
+
output += `@ RenderConflictingPartialError ${this.location.treeInspectWithLabel()}\n`;
|
|
1320
|
+
output += `├── message: "${this.message}"\n`;
|
|
1321
|
+
output += `├── positional_partial: ${JSON.stringify(this.positional_partial)}\n`;
|
|
1322
|
+
output += `└── keyword_partial: ${JSON.stringify(this.keyword_partial)}\n`;
|
|
1323
|
+
return output;
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
class RenderInvalidAsOptionError extends HerbError {
|
|
1327
|
+
as_value;
|
|
1328
|
+
static from(data) {
|
|
1329
|
+
return new RenderInvalidAsOptionError({
|
|
1330
|
+
type: data.type,
|
|
1331
|
+
message: data.message,
|
|
1332
|
+
location: Location.from(data.location),
|
|
1333
|
+
as_value: data.as_value,
|
|
1334
|
+
});
|
|
1335
|
+
}
|
|
1336
|
+
constructor(props) {
|
|
1337
|
+
super(props.type, props.message, props.location);
|
|
1338
|
+
this.as_value = props.as_value;
|
|
1339
|
+
}
|
|
1340
|
+
toJSON() {
|
|
1341
|
+
return {
|
|
1342
|
+
...super.toJSON(),
|
|
1343
|
+
type: "RENDER_INVALID_AS_OPTION_ERROR",
|
|
1344
|
+
as_value: this.as_value,
|
|
1345
|
+
};
|
|
1346
|
+
}
|
|
1347
|
+
toMonacoDiagnostic() {
|
|
1348
|
+
return {
|
|
1349
|
+
line: this.location.start.line,
|
|
1350
|
+
column: this.location.start.column,
|
|
1351
|
+
endLine: this.location.end.line,
|
|
1352
|
+
endColumn: this.location.end.column,
|
|
1353
|
+
message: this.message,
|
|
1354
|
+
severity: 'error'
|
|
1355
|
+
};
|
|
1356
|
+
}
|
|
1357
|
+
treeInspect() {
|
|
1358
|
+
let output = "";
|
|
1359
|
+
output += `@ RenderInvalidAsOptionError ${this.location.treeInspectWithLabel()}\n`;
|
|
1360
|
+
output += `├── message: "${this.message}"\n`;
|
|
1361
|
+
output += `└── as_value: ${JSON.stringify(this.as_value)}\n`;
|
|
1362
|
+
return output;
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
class RenderObjectAndCollectionError extends HerbError {
|
|
1366
|
+
static from(data) {
|
|
1367
|
+
return new RenderObjectAndCollectionError({
|
|
1368
|
+
type: data.type,
|
|
1369
|
+
message: data.message,
|
|
1370
|
+
location: Location.from(data.location),
|
|
1371
|
+
});
|
|
1372
|
+
}
|
|
1373
|
+
constructor(props) {
|
|
1374
|
+
super(props.type, props.message, props.location);
|
|
1375
|
+
}
|
|
1376
|
+
toJSON() {
|
|
1377
|
+
return {
|
|
1378
|
+
...super.toJSON(),
|
|
1379
|
+
type: "RENDER_OBJECT_AND_COLLECTION_ERROR",
|
|
1380
|
+
};
|
|
1381
|
+
}
|
|
1382
|
+
toMonacoDiagnostic() {
|
|
1383
|
+
return {
|
|
1384
|
+
line: this.location.start.line,
|
|
1385
|
+
column: this.location.start.column,
|
|
1386
|
+
endLine: this.location.end.line,
|
|
1387
|
+
endColumn: this.location.end.column,
|
|
1388
|
+
message: this.message,
|
|
1389
|
+
severity: 'error'
|
|
1390
|
+
};
|
|
1391
|
+
}
|
|
1392
|
+
treeInspect() {
|
|
1393
|
+
let output = "";
|
|
1394
|
+
output += `@ RenderObjectAndCollectionError ${this.location.treeInspectWithLabel()}\n`;
|
|
1395
|
+
output += `└── message: "${this.message}"\n`;
|
|
1396
|
+
return output;
|
|
1397
|
+
}
|
|
1398
|
+
}
|
|
1399
|
+
class RenderLayoutWithoutBlockError extends HerbError {
|
|
1400
|
+
layout;
|
|
1401
|
+
static from(data) {
|
|
1402
|
+
return new RenderLayoutWithoutBlockError({
|
|
1403
|
+
type: data.type,
|
|
1404
|
+
message: data.message,
|
|
1405
|
+
location: Location.from(data.location),
|
|
1406
|
+
layout: data.layout,
|
|
1407
|
+
});
|
|
1408
|
+
}
|
|
1409
|
+
constructor(props) {
|
|
1410
|
+
super(props.type, props.message, props.location);
|
|
1411
|
+
this.layout = props.layout;
|
|
1412
|
+
}
|
|
1413
|
+
toJSON() {
|
|
1414
|
+
return {
|
|
1415
|
+
...super.toJSON(),
|
|
1416
|
+
type: "RENDER_LAYOUT_WITHOUT_BLOCK_ERROR",
|
|
1417
|
+
layout: this.layout,
|
|
1418
|
+
};
|
|
1419
|
+
}
|
|
1420
|
+
toMonacoDiagnostic() {
|
|
1421
|
+
return {
|
|
1422
|
+
line: this.location.start.line,
|
|
1423
|
+
column: this.location.start.column,
|
|
1424
|
+
endLine: this.location.end.line,
|
|
1425
|
+
endColumn: this.location.end.column,
|
|
1426
|
+
message: this.message,
|
|
1427
|
+
severity: 'error'
|
|
1428
|
+
};
|
|
1429
|
+
}
|
|
1430
|
+
treeInspect() {
|
|
1431
|
+
let output = "";
|
|
1432
|
+
output += `@ RenderLayoutWithoutBlockError ${this.location.treeInspectWithLabel()}\n`;
|
|
1433
|
+
output += `├── message: "${this.message}"\n`;
|
|
1434
|
+
output += `└── layout: ${JSON.stringify(this.layout)}\n`;
|
|
1435
|
+
return output;
|
|
1436
|
+
}
|
|
1437
|
+
}
|
|
1165
1438
|
function fromSerializedError(error) {
|
|
1166
1439
|
switch (error.type) {
|
|
1167
1440
|
case "UNEXPECTED_ERROR": return UnexpectedError.from(error);
|
|
@@ -1187,6 +1460,13 @@
|
|
|
1187
1460
|
case "UNCLOSED_ERB_TAG_ERROR": return UnclosedERBTagError.from(error);
|
|
1188
1461
|
case "STRAY_ERB_CLOSING_TAG_ERROR": return StrayERBClosingTagError.from(error);
|
|
1189
1462
|
case "NESTED_ERB_TAG_ERROR": return NestedERBTagError.from(error);
|
|
1463
|
+
case "RENDER_AMBIGUOUS_LOCALS_ERROR": return RenderAmbiguousLocalsError.from(error);
|
|
1464
|
+
case "RENDER_MISSING_LOCALS_ERROR": return RenderMissingLocalsError.from(error);
|
|
1465
|
+
case "RENDER_NO_ARGUMENTS_ERROR": return RenderNoArgumentsError.from(error);
|
|
1466
|
+
case "RENDER_CONFLICTING_PARTIAL_ERROR": return RenderConflictingPartialError.from(error);
|
|
1467
|
+
case "RENDER_INVALID_AS_OPTION_ERROR": return RenderInvalidAsOptionError.from(error);
|
|
1468
|
+
case "RENDER_OBJECT_AND_COLLECTION_ERROR": return RenderObjectAndCollectionError.from(error);
|
|
1469
|
+
case "RENDER_LAYOUT_WITHOUT_BLOCK_ERROR": return RenderLayoutWithoutBlockError.from(error);
|
|
1190
1470
|
default:
|
|
1191
1471
|
throw new Error(`Unknown node type: ${error.type}`);
|
|
1192
1472
|
}
|
|
@@ -21357,7 +21637,7 @@
|
|
|
21357
21637
|
}
|
|
21358
21638
|
|
|
21359
21639
|
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
21360
|
-
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.
|
|
21640
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/javascript/packages/core/src/nodes.ts.erb
|
|
21361
21641
|
class Node {
|
|
21362
21642
|
type;
|
|
21363
21643
|
location;
|
|
@@ -23901,6 +24181,225 @@
|
|
|
23901
24181
|
return output;
|
|
23902
24182
|
}
|
|
23903
24183
|
}
|
|
24184
|
+
class RubyRenderLocalNode extends Node {
|
|
24185
|
+
name;
|
|
24186
|
+
value;
|
|
24187
|
+
static get type() {
|
|
24188
|
+
return "AST_RUBY_RENDER_LOCAL_NODE";
|
|
24189
|
+
}
|
|
24190
|
+
static from(data) {
|
|
24191
|
+
return new RubyRenderLocalNode({
|
|
24192
|
+
type: data.type,
|
|
24193
|
+
location: Location.from(data.location),
|
|
24194
|
+
errors: (data.errors || []).map(error => HerbError.from(error)),
|
|
24195
|
+
name: data.name ? Token.from(data.name) : null,
|
|
24196
|
+
value: data.value ? fromSerializedNode((data.value)) : null,
|
|
24197
|
+
});
|
|
24198
|
+
}
|
|
24199
|
+
constructor(props) {
|
|
24200
|
+
super(props.type, props.location, props.errors);
|
|
24201
|
+
this.name = props.name;
|
|
24202
|
+
this.value = props.value;
|
|
24203
|
+
}
|
|
24204
|
+
accept(visitor) {
|
|
24205
|
+
visitor.visitRubyRenderLocalNode(this);
|
|
24206
|
+
}
|
|
24207
|
+
childNodes() {
|
|
24208
|
+
return [
|
|
24209
|
+
this.value,
|
|
24210
|
+
];
|
|
24211
|
+
}
|
|
24212
|
+
compactChildNodes() {
|
|
24213
|
+
return this.childNodes().filter(node => node !== null && node !== undefined);
|
|
24214
|
+
}
|
|
24215
|
+
recursiveErrors() {
|
|
24216
|
+
return [
|
|
24217
|
+
...this.errors,
|
|
24218
|
+
this.value ? this.value.recursiveErrors() : [],
|
|
24219
|
+
].flat();
|
|
24220
|
+
}
|
|
24221
|
+
toJSON() {
|
|
24222
|
+
return {
|
|
24223
|
+
...super.toJSON(),
|
|
24224
|
+
type: "AST_RUBY_RENDER_LOCAL_NODE",
|
|
24225
|
+
name: this.name ? this.name.toJSON() : null,
|
|
24226
|
+
value: this.value ? this.value.toJSON() : null,
|
|
24227
|
+
};
|
|
24228
|
+
}
|
|
24229
|
+
treeInspect() {
|
|
24230
|
+
let output = "";
|
|
24231
|
+
output += `@ RubyRenderLocalNode ${this.location.treeInspectWithLabel()}\n`;
|
|
24232
|
+
output += `├── errors: ${this.inspectArray(this.errors, "│ ")}`;
|
|
24233
|
+
output += `├── name: ${this.name ? this.name.treeInspect() : "∅"}\n`;
|
|
24234
|
+
output += `└── value: ${this.inspectNode(this.value, " ")}`;
|
|
24235
|
+
return output;
|
|
24236
|
+
}
|
|
24237
|
+
}
|
|
24238
|
+
class ERBRenderNode extends Node {
|
|
24239
|
+
tag_opening;
|
|
24240
|
+
content;
|
|
24241
|
+
tag_closing;
|
|
24242
|
+
// no-op for analyzed_ruby
|
|
24243
|
+
prism_node;
|
|
24244
|
+
partial;
|
|
24245
|
+
template_path;
|
|
24246
|
+
layout;
|
|
24247
|
+
file;
|
|
24248
|
+
inline_template;
|
|
24249
|
+
body;
|
|
24250
|
+
plain;
|
|
24251
|
+
html;
|
|
24252
|
+
renderable;
|
|
24253
|
+
collection;
|
|
24254
|
+
object;
|
|
24255
|
+
as_name;
|
|
24256
|
+
spacer_template;
|
|
24257
|
+
formats;
|
|
24258
|
+
variants;
|
|
24259
|
+
handlers;
|
|
24260
|
+
content_type;
|
|
24261
|
+
locals;
|
|
24262
|
+
static get type() {
|
|
24263
|
+
return "AST_ERB_RENDER_NODE";
|
|
24264
|
+
}
|
|
24265
|
+
static from(data) {
|
|
24266
|
+
return new ERBRenderNode({
|
|
24267
|
+
type: data.type,
|
|
24268
|
+
location: Location.from(data.location),
|
|
24269
|
+
errors: (data.errors || []).map(error => HerbError.from(error)),
|
|
24270
|
+
tag_opening: data.tag_opening ? Token.from(data.tag_opening) : null,
|
|
24271
|
+
content: data.content ? Token.from(data.content) : null,
|
|
24272
|
+
tag_closing: data.tag_closing ? Token.from(data.tag_closing) : null,
|
|
24273
|
+
// no-op for analyzed_ruby
|
|
24274
|
+
prism_node: data.prism_node ? new Uint8Array(data.prism_node) : null,
|
|
24275
|
+
partial: data.partial ? Token.from(data.partial) : null,
|
|
24276
|
+
template_path: data.template_path ? Token.from(data.template_path) : null,
|
|
24277
|
+
layout: data.layout ? Token.from(data.layout) : null,
|
|
24278
|
+
file: data.file ? Token.from(data.file) : null,
|
|
24279
|
+
inline_template: data.inline_template ? Token.from(data.inline_template) : null,
|
|
24280
|
+
body: data.body ? Token.from(data.body) : null,
|
|
24281
|
+
plain: data.plain ? Token.from(data.plain) : null,
|
|
24282
|
+
html: data.html ? Token.from(data.html) : null,
|
|
24283
|
+
renderable: data.renderable ? Token.from(data.renderable) : null,
|
|
24284
|
+
collection: data.collection ? Token.from(data.collection) : null,
|
|
24285
|
+
object: data.object ? Token.from(data.object) : null,
|
|
24286
|
+
as_name: data.as_name ? Token.from(data.as_name) : null,
|
|
24287
|
+
spacer_template: data.spacer_template ? Token.from(data.spacer_template) : null,
|
|
24288
|
+
formats: data.formats ? Token.from(data.formats) : null,
|
|
24289
|
+
variants: data.variants ? Token.from(data.variants) : null,
|
|
24290
|
+
handlers: data.handlers ? Token.from(data.handlers) : null,
|
|
24291
|
+
content_type: data.content_type ? Token.from(data.content_type) : null,
|
|
24292
|
+
locals: (data.locals || []).map(node => fromSerializedNode(node)),
|
|
24293
|
+
});
|
|
24294
|
+
}
|
|
24295
|
+
constructor(props) {
|
|
24296
|
+
super(props.type, props.location, props.errors);
|
|
24297
|
+
this.tag_opening = props.tag_opening;
|
|
24298
|
+
this.content = props.content;
|
|
24299
|
+
this.tag_closing = props.tag_closing;
|
|
24300
|
+
// no-op for analyzed_ruby
|
|
24301
|
+
this.prism_node = props.prism_node;
|
|
24302
|
+
this.partial = props.partial;
|
|
24303
|
+
this.template_path = props.template_path;
|
|
24304
|
+
this.layout = props.layout;
|
|
24305
|
+
this.file = props.file;
|
|
24306
|
+
this.inline_template = props.inline_template;
|
|
24307
|
+
this.body = props.body;
|
|
24308
|
+
this.plain = props.plain;
|
|
24309
|
+
this.html = props.html;
|
|
24310
|
+
this.renderable = props.renderable;
|
|
24311
|
+
this.collection = props.collection;
|
|
24312
|
+
this.object = props.object;
|
|
24313
|
+
this.as_name = props.as_name;
|
|
24314
|
+
this.spacer_template = props.spacer_template;
|
|
24315
|
+
this.formats = props.formats;
|
|
24316
|
+
this.variants = props.variants;
|
|
24317
|
+
this.handlers = props.handlers;
|
|
24318
|
+
this.content_type = props.content_type;
|
|
24319
|
+
this.locals = props.locals;
|
|
24320
|
+
}
|
|
24321
|
+
accept(visitor) {
|
|
24322
|
+
visitor.visitERBRenderNode(this);
|
|
24323
|
+
}
|
|
24324
|
+
childNodes() {
|
|
24325
|
+
return [
|
|
24326
|
+
...this.locals,
|
|
24327
|
+
];
|
|
24328
|
+
}
|
|
24329
|
+
compactChildNodes() {
|
|
24330
|
+
return this.childNodes().filter(node => node !== null && node !== undefined);
|
|
24331
|
+
}
|
|
24332
|
+
get prismNode() {
|
|
24333
|
+
if (!this.prism_node || !this.source)
|
|
24334
|
+
return null;
|
|
24335
|
+
return deserializePrismNode(this.prism_node, this.source);
|
|
24336
|
+
}
|
|
24337
|
+
recursiveErrors() {
|
|
24338
|
+
return [
|
|
24339
|
+
...this.errors,
|
|
24340
|
+
...this.locals.map(node => node.recursiveErrors()),
|
|
24341
|
+
].flat();
|
|
24342
|
+
}
|
|
24343
|
+
toJSON() {
|
|
24344
|
+
return {
|
|
24345
|
+
...super.toJSON(),
|
|
24346
|
+
type: "AST_ERB_RENDER_NODE",
|
|
24347
|
+
tag_opening: this.tag_opening ? this.tag_opening.toJSON() : null,
|
|
24348
|
+
content: this.content ? this.content.toJSON() : null,
|
|
24349
|
+
tag_closing: this.tag_closing ? this.tag_closing.toJSON() : null,
|
|
24350
|
+
// no-op for analyzed_ruby
|
|
24351
|
+
prism_node: this.prism_node ? Array.from(this.prism_node) : null,
|
|
24352
|
+
partial: this.partial ? this.partial.toJSON() : null,
|
|
24353
|
+
template_path: this.template_path ? this.template_path.toJSON() : null,
|
|
24354
|
+
layout: this.layout ? this.layout.toJSON() : null,
|
|
24355
|
+
file: this.file ? this.file.toJSON() : null,
|
|
24356
|
+
inline_template: this.inline_template ? this.inline_template.toJSON() : null,
|
|
24357
|
+
body: this.body ? this.body.toJSON() : null,
|
|
24358
|
+
plain: this.plain ? this.plain.toJSON() : null,
|
|
24359
|
+
html: this.html ? this.html.toJSON() : null,
|
|
24360
|
+
renderable: this.renderable ? this.renderable.toJSON() : null,
|
|
24361
|
+
collection: this.collection ? this.collection.toJSON() : null,
|
|
24362
|
+
object: this.object ? this.object.toJSON() : null,
|
|
24363
|
+
as_name: this.as_name ? this.as_name.toJSON() : null,
|
|
24364
|
+
spacer_template: this.spacer_template ? this.spacer_template.toJSON() : null,
|
|
24365
|
+
formats: this.formats ? this.formats.toJSON() : null,
|
|
24366
|
+
variants: this.variants ? this.variants.toJSON() : null,
|
|
24367
|
+
handlers: this.handlers ? this.handlers.toJSON() : null,
|
|
24368
|
+
content_type: this.content_type ? this.content_type.toJSON() : null,
|
|
24369
|
+
locals: this.locals.map(node => node.toJSON()),
|
|
24370
|
+
};
|
|
24371
|
+
}
|
|
24372
|
+
treeInspect() {
|
|
24373
|
+
let output = "";
|
|
24374
|
+
output += `@ ERBRenderNode ${this.location.treeInspectWithLabel()}\n`;
|
|
24375
|
+
output += `├── errors: ${this.inspectArray(this.errors, "│ ")}`;
|
|
24376
|
+
output += `├── tag_opening: ${this.tag_opening ? this.tag_opening.treeInspect() : "∅"}\n`;
|
|
24377
|
+
output += `├── content: ${this.content ? this.content.treeInspect() : "∅"}\n`;
|
|
24378
|
+
output += `├── tag_closing: ${this.tag_closing ? this.tag_closing.treeInspect() : "∅"}\n`;
|
|
24379
|
+
if (this.prism_node) {
|
|
24380
|
+
output += `├── prism_node: ${this.source ? inspectPrismSerialized(this.prism_node, this.source, "│ ") : `(${this.prism_node.length} bytes)`}\n`;
|
|
24381
|
+
}
|
|
24382
|
+
output += `├── partial: ${this.partial ? this.partial.treeInspect() : "∅"}\n`;
|
|
24383
|
+
output += `├── template_path: ${this.template_path ? this.template_path.treeInspect() : "∅"}\n`;
|
|
24384
|
+
output += `├── layout: ${this.layout ? this.layout.treeInspect() : "∅"}\n`;
|
|
24385
|
+
output += `├── file: ${this.file ? this.file.treeInspect() : "∅"}\n`;
|
|
24386
|
+
output += `├── inline_template: ${this.inline_template ? this.inline_template.treeInspect() : "∅"}\n`;
|
|
24387
|
+
output += `├── body: ${this.body ? this.body.treeInspect() : "∅"}\n`;
|
|
24388
|
+
output += `├── plain: ${this.plain ? this.plain.treeInspect() : "∅"}\n`;
|
|
24389
|
+
output += `├── html: ${this.html ? this.html.treeInspect() : "∅"}\n`;
|
|
24390
|
+
output += `├── renderable: ${this.renderable ? this.renderable.treeInspect() : "∅"}\n`;
|
|
24391
|
+
output += `├── collection: ${this.collection ? this.collection.treeInspect() : "∅"}\n`;
|
|
24392
|
+
output += `├── object: ${this.object ? this.object.treeInspect() : "∅"}\n`;
|
|
24393
|
+
output += `├── as_name: ${this.as_name ? this.as_name.treeInspect() : "∅"}\n`;
|
|
24394
|
+
output += `├── spacer_template: ${this.spacer_template ? this.spacer_template.treeInspect() : "∅"}\n`;
|
|
24395
|
+
output += `├── formats: ${this.formats ? this.formats.treeInspect() : "∅"}\n`;
|
|
24396
|
+
output += `├── variants: ${this.variants ? this.variants.treeInspect() : "∅"}\n`;
|
|
24397
|
+
output += `├── handlers: ${this.handlers ? this.handlers.treeInspect() : "∅"}\n`;
|
|
24398
|
+
output += `├── content_type: ${this.content_type ? this.content_type.treeInspect() : "∅"}\n`;
|
|
24399
|
+
output += `└── locals: ${this.inspectArray(this.locals, " ")}`;
|
|
24400
|
+
return output;
|
|
24401
|
+
}
|
|
24402
|
+
}
|
|
23904
24403
|
class ERBYieldNode extends Node {
|
|
23905
24404
|
tag_opening;
|
|
23906
24405
|
content;
|
|
@@ -24064,6 +24563,8 @@
|
|
|
24064
24563
|
case "AST_ERB_ENSURE_NODE": return ERBEnsureNode.from(node);
|
|
24065
24564
|
case "AST_ERB_BEGIN_NODE": return ERBBeginNode.from(node);
|
|
24066
24565
|
case "AST_ERB_UNLESS_NODE": return ERBUnlessNode.from(node);
|
|
24566
|
+
case "AST_RUBY_RENDER_LOCAL_NODE": return RubyRenderLocalNode.from(node);
|
|
24567
|
+
case "AST_ERB_RENDER_NODE": return ERBRenderNode.from(node);
|
|
24067
24568
|
case "AST_ERB_YIELD_NODE": return ERBYieldNode.from(node);
|
|
24068
24569
|
case "AST_ERB_IN_NODE": return ERBInNode.from(node);
|
|
24069
24570
|
default:
|
|
@@ -24087,6 +24588,7 @@
|
|
|
24087
24588
|
ERBEnsureNode,
|
|
24088
24589
|
ERBBeginNode,
|
|
24089
24590
|
ERBUnlessNode,
|
|
24591
|
+
ERBRenderNode,
|
|
24090
24592
|
ERBYieldNode,
|
|
24091
24593
|
ERBInNode,
|
|
24092
24594
|
];
|
|
@@ -24133,6 +24635,7 @@
|
|
|
24133
24635
|
analyze: true,
|
|
24134
24636
|
strict: true,
|
|
24135
24637
|
action_view_helpers: false,
|
|
24638
|
+
render_nodes: false,
|
|
24136
24639
|
prism_nodes: false,
|
|
24137
24640
|
prism_nodes_deep: false,
|
|
24138
24641
|
prism_program: false,
|
|
@@ -24149,6 +24652,8 @@
|
|
|
24149
24652
|
analyze;
|
|
24150
24653
|
/** Whether ActionView tag helper transformation was enabled during parsing. */
|
|
24151
24654
|
action_view_helpers;
|
|
24655
|
+
/** Whether ActionView render call detection was enabled during parsing. */
|
|
24656
|
+
render_nodes;
|
|
24152
24657
|
/** Whether Prism node serialization was enabled during parsing. */
|
|
24153
24658
|
prism_nodes;
|
|
24154
24659
|
/** Whether deep Prism node serialization was enabled during parsing. */
|
|
@@ -24163,6 +24668,7 @@
|
|
|
24163
24668
|
this.track_whitespace = options.track_whitespace ?? DEFAULT_PARSER_OPTIONS.track_whitespace;
|
|
24164
24669
|
this.analyze = options.analyze ?? DEFAULT_PARSER_OPTIONS.analyze;
|
|
24165
24670
|
this.action_view_helpers = options.action_view_helpers ?? DEFAULT_PARSER_OPTIONS.action_view_helpers;
|
|
24671
|
+
this.render_nodes = options.render_nodes ?? DEFAULT_PARSER_OPTIONS.render_nodes;
|
|
24166
24672
|
this.prism_nodes = options.prism_nodes ?? DEFAULT_PARSER_OPTIONS.prism_nodes;
|
|
24167
24673
|
this.prism_nodes_deep = options.prism_nodes_deep ?? DEFAULT_PARSER_OPTIONS.prism_nodes_deep;
|
|
24168
24674
|
this.prism_program = options.prism_program ?? DEFAULT_PARSER_OPTIONS.prism_program;
|
|
@@ -24242,7 +24748,7 @@
|
|
|
24242
24748
|
}
|
|
24243
24749
|
|
|
24244
24750
|
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
24245
|
-
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.
|
|
24751
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/javascript/packages/core/src/node-type-guards.ts.erb
|
|
24246
24752
|
/**
|
|
24247
24753
|
* Type guard functions for AST nodes.
|
|
24248
24754
|
* These functions provide type checking by combining both instanceof
|
|
@@ -24537,6 +25043,22 @@
|
|
|
24537
25043
|
return false;
|
|
24538
25044
|
return node instanceof ERBUnlessNode || node.type === "AST_ERB_UNLESS_NODE" || node.constructor.type === "AST_ERB_UNLESS_NODE";
|
|
24539
25045
|
}
|
|
25046
|
+
/**
|
|
25047
|
+
* Checks if a node is a RubyRenderLocalNode
|
|
25048
|
+
*/
|
|
25049
|
+
function isRubyRenderLocalNode(node) {
|
|
25050
|
+
if (!node)
|
|
25051
|
+
return false;
|
|
25052
|
+
return node instanceof RubyRenderLocalNode || node.type === "AST_RUBY_RENDER_LOCAL_NODE" || node.constructor.type === "AST_RUBY_RENDER_LOCAL_NODE";
|
|
25053
|
+
}
|
|
25054
|
+
/**
|
|
25055
|
+
* Checks if a node is a ERBRenderNode
|
|
25056
|
+
*/
|
|
25057
|
+
function isERBRenderNode(node) {
|
|
25058
|
+
if (!node)
|
|
25059
|
+
return false;
|
|
25060
|
+
return node instanceof ERBRenderNode || node.type === "AST_ERB_RENDER_NODE" || node.constructor.type === "AST_ERB_RENDER_NODE";
|
|
25061
|
+
}
|
|
24540
25062
|
/**
|
|
24541
25063
|
* Checks if a node is a ERBYieldNode
|
|
24542
25064
|
*/
|
|
@@ -24594,6 +25116,7 @@
|
|
|
24594
25116
|
isERBEnsureNode(node) ||
|
|
24595
25117
|
isERBBeginNode(node) ||
|
|
24596
25118
|
isERBUnlessNode(node) ||
|
|
25119
|
+
isERBRenderNode(node) ||
|
|
24597
25120
|
isERBYieldNode(node) ||
|
|
24598
25121
|
isERBInNode(node);
|
|
24599
25122
|
}
|
|
@@ -24644,6 +25167,8 @@
|
|
|
24644
25167
|
[ERBEnsureNode, isERBEnsureNode],
|
|
24645
25168
|
[ERBBeginNode, isERBBeginNode],
|
|
24646
25169
|
[ERBUnlessNode, isERBUnlessNode],
|
|
25170
|
+
[RubyRenderLocalNode, isRubyRenderLocalNode],
|
|
25171
|
+
[ERBRenderNode, isERBRenderNode],
|
|
24647
25172
|
[ERBYieldNode, isERBYieldNode],
|
|
24648
25173
|
[ERBInNode, isERBInNode],
|
|
24649
25174
|
]);
|
|
@@ -24694,6 +25219,8 @@
|
|
|
24694
25219
|
["AST_ERB_ENSURE_NODE", isERBEnsureNode],
|
|
24695
25220
|
["AST_ERB_BEGIN_NODE", isERBBeginNode],
|
|
24696
25221
|
["AST_ERB_UNLESS_NODE", isERBUnlessNode],
|
|
25222
|
+
["AST_RUBY_RENDER_LOCAL_NODE", isRubyRenderLocalNode],
|
|
25223
|
+
["AST_ERB_RENDER_NODE", isERBRenderNode],
|
|
24697
25224
|
["AST_ERB_YIELD_NODE", isERBYieldNode],
|
|
24698
25225
|
["AST_ERB_IN_NODE", isERBInNode],
|
|
24699
25226
|
]);
|
|
@@ -25025,6 +25552,18 @@
|
|
|
25025
25552
|
function filterERBUnlessNodes(nodes) {
|
|
25026
25553
|
return nodes.filter(isERBUnlessNode);
|
|
25027
25554
|
}
|
|
25555
|
+
/**
|
|
25556
|
+
* Filters an array of nodes to only include RubyRenderLocalNode nodes
|
|
25557
|
+
*/
|
|
25558
|
+
function filterRubyRenderLocalNodes(nodes) {
|
|
25559
|
+
return nodes.filter(isRubyRenderLocalNode);
|
|
25560
|
+
}
|
|
25561
|
+
/**
|
|
25562
|
+
* Filters an array of nodes to only include ERBRenderNode nodes
|
|
25563
|
+
*/
|
|
25564
|
+
function filterERBRenderNodes(nodes) {
|
|
25565
|
+
return nodes.filter(isERBRenderNode);
|
|
25566
|
+
}
|
|
25028
25567
|
/**
|
|
25029
25568
|
* Filters an array of nodes to only include ERBYieldNode nodes
|
|
25030
25569
|
*/
|
|
@@ -25154,7 +25693,7 @@
|
|
|
25154
25693
|
/**
|
|
25155
25694
|
* Checks if an HTML attribute name node has dynamic content (contains ERB)
|
|
25156
25695
|
*/
|
|
25157
|
-
function
|
|
25696
|
+
function hasDynamicAttributeNameNode(attributeNameNode) {
|
|
25158
25697
|
if (!attributeNameNode.children) {
|
|
25159
25698
|
return false;
|
|
25160
25699
|
}
|
|
@@ -25291,12 +25830,11 @@
|
|
|
25291
25830
|
}
|
|
25292
25831
|
/**
|
|
25293
25832
|
* Checks if an attribute has a dynamic (ERB-containing) name.
|
|
25294
|
-
* Accepts an HTMLAttributeNode (wraps the core HTMLAttributeNameNode-level check).
|
|
25295
25833
|
*/
|
|
25296
|
-
function
|
|
25834
|
+
function hasDynamicAttributeName(attributeNode) {
|
|
25297
25835
|
if (!isHTMLAttributeNameNode(attributeNode.name))
|
|
25298
25836
|
return false;
|
|
25299
|
-
return
|
|
25837
|
+
return hasDynamicAttributeNameNode(attributeNode.name);
|
|
25300
25838
|
}
|
|
25301
25839
|
/**
|
|
25302
25840
|
* Gets the combined string representation of an attribute name (including ERB syntax).
|
|
@@ -25954,7 +26492,7 @@
|
|
|
25954
26492
|
};
|
|
25955
26493
|
|
|
25956
26494
|
var name = "@herb-tools/core";
|
|
25957
|
-
var version = "0.9.
|
|
26495
|
+
var version = "0.9.1";
|
|
25958
26496
|
var packageJSON = {
|
|
25959
26497
|
name: name,
|
|
25960
26498
|
version: version};
|
|
@@ -26176,7 +26714,7 @@
|
|
|
26176
26714
|
}
|
|
26177
26715
|
|
|
26178
26716
|
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
26179
|
-
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.
|
|
26717
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/javascript/packages/core/src/visitor.ts.erb
|
|
26180
26718
|
class Visitor {
|
|
26181
26719
|
visit(node) {
|
|
26182
26720
|
if (!node)
|
|
@@ -26355,6 +26893,15 @@
|
|
|
26355
26893
|
this.visitERBNode(node);
|
|
26356
26894
|
this.visitChildNodes(node);
|
|
26357
26895
|
}
|
|
26896
|
+
visitRubyRenderLocalNode(node) {
|
|
26897
|
+
this.visitNode(node);
|
|
26898
|
+
this.visitChildNodes(node);
|
|
26899
|
+
}
|
|
26900
|
+
visitERBRenderNode(node) {
|
|
26901
|
+
this.visitNode(node);
|
|
26902
|
+
this.visitERBNode(node);
|
|
26903
|
+
this.visitChildNodes(node);
|
|
26904
|
+
}
|
|
26358
26905
|
visitERBYieldNode(node) {
|
|
26359
26906
|
this.visitNode(node);
|
|
26360
26907
|
this.visitERBNode(node);
|
|
@@ -26390,6 +26937,7 @@
|
|
|
26390
26937
|
exports.ERBMultipleBlocksInTagError = ERBMultipleBlocksInTagError;
|
|
26391
26938
|
exports.ERBNodeClasses = ERBNodeClasses;
|
|
26392
26939
|
exports.ERBOpenTagNode = ERBOpenTagNode;
|
|
26940
|
+
exports.ERBRenderNode = ERBRenderNode;
|
|
26393
26941
|
exports.ERBRescueNode = ERBRescueNode;
|
|
26394
26942
|
exports.ERBUnlessNode = ERBUnlessNode;
|
|
26395
26943
|
exports.ERBUntilNode = ERBUntilNode;
|
|
@@ -26431,10 +26979,18 @@
|
|
|
26431
26979
|
exports.PrismNodes = nodes;
|
|
26432
26980
|
exports.PrismVisitor = Visitor$1;
|
|
26433
26981
|
exports.Range = Range;
|
|
26982
|
+
exports.RenderAmbiguousLocalsError = RenderAmbiguousLocalsError;
|
|
26983
|
+
exports.RenderConflictingPartialError = RenderConflictingPartialError;
|
|
26984
|
+
exports.RenderInvalidAsOptionError = RenderInvalidAsOptionError;
|
|
26985
|
+
exports.RenderLayoutWithoutBlockError = RenderLayoutWithoutBlockError;
|
|
26986
|
+
exports.RenderMissingLocalsError = RenderMissingLocalsError;
|
|
26987
|
+
exports.RenderNoArgumentsError = RenderNoArgumentsError;
|
|
26988
|
+
exports.RenderObjectAndCollectionError = RenderObjectAndCollectionError;
|
|
26434
26989
|
exports.Result = Result;
|
|
26435
26990
|
exports.RubyHTMLAttributesSplatNode = RubyHTMLAttributesSplatNode;
|
|
26436
26991
|
exports.RubyLiteralNode = RubyLiteralNode;
|
|
26437
26992
|
exports.RubyParseError = RubyParseError;
|
|
26993
|
+
exports.RubyRenderLocalNode = RubyRenderLocalNode;
|
|
26438
26994
|
exports.StrayERBClosingTagError = StrayERBClosingTagError;
|
|
26439
26995
|
exports.TOKEN_LIST_ATTRIBUTES = TOKEN_LIST_ATTRIBUTES;
|
|
26440
26996
|
exports.TagNamesMismatchError = TagNamesMismatchError;
|
|
@@ -26476,6 +27032,7 @@
|
|
|
26476
27032
|
exports.filterERBIfNodes = filterERBIfNodes;
|
|
26477
27033
|
exports.filterERBInNodes = filterERBInNodes;
|
|
26478
27034
|
exports.filterERBOpenTagNodes = filterERBOpenTagNodes;
|
|
27035
|
+
exports.filterERBRenderNodes = filterERBRenderNodes;
|
|
26479
27036
|
exports.filterERBRescueNodes = filterERBRescueNodes;
|
|
26480
27037
|
exports.filterERBUnlessNodes = filterERBUnlessNodes;
|
|
26481
27038
|
exports.filterERBUntilNodes = filterERBUntilNodes;
|
|
@@ -26499,6 +27056,7 @@
|
|
|
26499
27056
|
exports.filterNodes = filterNodes;
|
|
26500
27057
|
exports.filterRubyHTMLAttributesSplatNodes = filterRubyHTMLAttributesSplatNodes;
|
|
26501
27058
|
exports.filterRubyLiteralNodes = filterRubyLiteralNodes;
|
|
27059
|
+
exports.filterRubyRenderLocalNodes = filterRubyRenderLocalNodes;
|
|
26502
27060
|
exports.filterWhitespaceNodes = filterWhitespaceNodes;
|
|
26503
27061
|
exports.filterXMLDeclarationNodes = filterXMLDeclarationNodes;
|
|
26504
27062
|
exports.findAttributeByName = findAttributeByName;
|
|
@@ -26534,7 +27092,7 @@
|
|
|
26534
27092
|
exports.hasAttributeValue = hasAttributeValue;
|
|
26535
27093
|
exports.hasChildren = hasChildren;
|
|
26536
27094
|
exports.hasDynamicAttributeName = hasDynamicAttributeName;
|
|
26537
|
-
exports.
|
|
27095
|
+
exports.hasDynamicAttributeNameNode = hasDynamicAttributeNameNode;
|
|
26538
27096
|
exports.hasDynamicAttributeValue = hasDynamicAttributeValue;
|
|
26539
27097
|
exports.hasERBContent = hasERBContent;
|
|
26540
27098
|
exports.hasERBOutput = hasERBOutput;
|
|
@@ -26565,6 +27123,7 @@
|
|
|
26565
27123
|
exports.isERBNode = isERBNode;
|
|
26566
27124
|
exports.isERBOpenTagNode = isERBOpenTagNode;
|
|
26567
27125
|
exports.isERBOutputNode = isERBOutputNode;
|
|
27126
|
+
exports.isERBRenderNode = isERBRenderNode;
|
|
26568
27127
|
exports.isERBRescueNode = isERBRescueNode;
|
|
26569
27128
|
exports.isERBUnlessNode = isERBUnlessNode;
|
|
26570
27129
|
exports.isERBUntilNode = isERBUntilNode;
|
|
@@ -26599,6 +27158,7 @@
|
|
|
26599
27158
|
exports.isPureWhitespaceNode = isPureWhitespaceNode;
|
|
26600
27159
|
exports.isRubyHTMLAttributesSplatNode = isRubyHTMLAttributesSplatNode;
|
|
26601
27160
|
exports.isRubyLiteralNode = isRubyLiteralNode;
|
|
27161
|
+
exports.isRubyRenderLocalNode = isRubyRenderLocalNode;
|
|
26602
27162
|
exports.isToken = isToken;
|
|
26603
27163
|
exports.isWhitespaceNode = isWhitespaceNode;
|
|
26604
27164
|
exports.isXMLDeclarationNode = isXMLDeclarationNode;
|