@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.
@@ -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.0/templates/javascript/packages/core/src/errors.ts.erb
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.0/templates/javascript/packages/core/src/nodes.ts.erb
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.0/templates/javascript/packages/core/src/node-type-guards.ts.erb
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 hasDynamicAttributeName(attributeNameNode) {
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 hasDynamicAttributeNameOnAttribute(attributeNode) {
25834
+ function hasDynamicAttributeName(attributeNode) {
25297
25835
  if (!isHTMLAttributeNameNode(attributeNode.name))
25298
25836
  return false;
25299
- return hasDynamicAttributeName(attributeNode.name);
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.0";
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.0/templates/javascript/packages/core/src/visitor.ts.erb
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.hasDynamicAttributeNameOnAttribute = hasDynamicAttributeNameOnAttribute;
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;