@herb-tools/node 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/binding.gyp +1 -0
- package/dist/herb-node.cjs +1 -1
- package/dist/herb-node.esm.js +1 -1
- package/extension/error_helpers.cpp +204 -1
- package/extension/error_helpers.h +8 -1
- package/extension/extension_helpers.cpp +3 -1
- package/extension/herb.cpp +11 -0
- package/extension/libherb/analyze/action_view/attribute_extraction_helpers.c +14 -1
- package/extension/libherb/analyze/action_view/content_tag.c +19 -11
- package/extension/libherb/analyze/action_view/link_to.c +25 -1
- package/extension/libherb/analyze/action_view/registry.c +23 -0
- package/extension/libherb/analyze/action_view/tag.c +14 -8
- package/extension/libherb/analyze/action_view/tag_helper_handler.h +2 -0
- package/extension/libherb/analyze/action_view/tag_helpers.c +78 -11
- package/extension/libherb/analyze/analyze.c +3 -0
- package/extension/libherb/analyze/missing_end.c +1 -1
- package/extension/libherb/analyze/prism_annotate.c +4 -2
- package/extension/libherb/analyze/render_nodes.c +761 -0
- package/extension/libherb/analyze/render_nodes.h +11 -0
- package/extension/libherb/analyze/transform.c +8 -1
- package/extension/libherb/ast_nodes.c +98 -1
- package/extension/libherb/ast_nodes.h +38 -1
- package/extension/libherb/ast_pretty_print.c +75 -1
- package/extension/libherb/ast_pretty_print.h +1 -1
- package/extension/libherb/errors.c +380 -1
- package/extension/libherb/errors.h +59 -1
- package/extension/libherb/include/analyze/action_view/tag_helper_handler.h +2 -0
- package/extension/libherb/include/analyze/render_nodes.h +11 -0
- package/extension/libherb/include/ast_nodes.h +38 -1
- package/extension/libherb/include/ast_pretty_print.h +1 -1
- package/extension/libherb/include/errors.h +59 -1
- package/extension/libherb/include/parser.h +1 -0
- package/extension/libherb/include/util/hb_foreach.h +1 -1
- package/extension/libherb/include/version.h +1 -1
- package/extension/libherb/parser.c +1 -0
- package/extension/libherb/parser.h +1 -0
- package/extension/libherb/parser_match_tags.c +21 -1
- package/extension/libherb/util/hb_foreach.h +1 -1
- package/extension/libherb/version.h +1 -1
- package/extension/libherb/visitor.c +21 -1
- package/extension/nodes.cpp +143 -1
- package/extension/nodes.h +3 -1
- package/package.json +2 -2
- package/CHANGELOG.md +0 -19
|
@@ -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.9.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/src/include/errors.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HERB_ERRORS_H
|
|
5
5
|
#define HERB_ERRORS_H
|
|
@@ -37,6 +37,13 @@ typedef enum {
|
|
|
37
37
|
UNCLOSED_ERB_TAG_ERROR,
|
|
38
38
|
STRAY_ERB_CLOSING_TAG_ERROR,
|
|
39
39
|
NESTED_ERB_TAG_ERROR,
|
|
40
|
+
RENDER_AMBIGUOUS_LOCALS_ERROR,
|
|
41
|
+
RENDER_MISSING_LOCALS_ERROR,
|
|
42
|
+
RENDER_NO_ARGUMENTS_ERROR,
|
|
43
|
+
RENDER_CONFLICTING_PARTIAL_ERROR,
|
|
44
|
+
RENDER_INVALID_AS_OPTION_ERROR,
|
|
45
|
+
RENDER_OBJECT_AND_COLLECTION_ERROR,
|
|
46
|
+
RENDER_LAYOUT_WITHOUT_BLOCK_ERROR,
|
|
40
47
|
} error_type_T;
|
|
41
48
|
|
|
42
49
|
typedef struct ERROR_STRUCT {
|
|
@@ -179,6 +186,43 @@ typedef struct {
|
|
|
179
186
|
size_t nested_tag_column;
|
|
180
187
|
} NESTED_ERB_TAG_ERROR_T;
|
|
181
188
|
|
|
189
|
+
typedef struct {
|
|
190
|
+
ERROR_T base;
|
|
191
|
+
hb_string_T partial;
|
|
192
|
+
} RENDER_AMBIGUOUS_LOCALS_ERROR_T;
|
|
193
|
+
|
|
194
|
+
typedef struct {
|
|
195
|
+
ERROR_T base;
|
|
196
|
+
hb_string_T partial;
|
|
197
|
+
hb_string_T keywords;
|
|
198
|
+
} RENDER_MISSING_LOCALS_ERROR_T;
|
|
199
|
+
|
|
200
|
+
typedef struct {
|
|
201
|
+
ERROR_T base;
|
|
202
|
+
/* no additional fields */
|
|
203
|
+
} RENDER_NO_ARGUMENTS_ERROR_T;
|
|
204
|
+
|
|
205
|
+
typedef struct {
|
|
206
|
+
ERROR_T base;
|
|
207
|
+
hb_string_T positional_partial;
|
|
208
|
+
hb_string_T keyword_partial;
|
|
209
|
+
} RENDER_CONFLICTING_PARTIAL_ERROR_T;
|
|
210
|
+
|
|
211
|
+
typedef struct {
|
|
212
|
+
ERROR_T base;
|
|
213
|
+
hb_string_T as_value;
|
|
214
|
+
} RENDER_INVALID_AS_OPTION_ERROR_T;
|
|
215
|
+
|
|
216
|
+
typedef struct {
|
|
217
|
+
ERROR_T base;
|
|
218
|
+
/* no additional fields */
|
|
219
|
+
} RENDER_OBJECT_AND_COLLECTION_ERROR_T;
|
|
220
|
+
|
|
221
|
+
typedef struct {
|
|
222
|
+
ERROR_T base;
|
|
223
|
+
hb_string_T layout;
|
|
224
|
+
} RENDER_LAYOUT_WITHOUT_BLOCK_ERROR_T;
|
|
225
|
+
|
|
182
226
|
UNEXPECTED_ERROR_T* unexpected_error_init(hb_string_T description, hb_string_T expected, hb_string_T found, position_T start, position_T end, hb_allocator_T* allocator);
|
|
183
227
|
void append_unexpected_error(hb_string_T description, hb_string_T expected, hb_string_T found, position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
184
228
|
UNEXPECTED_TOKEN_ERROR_T* unexpected_token_error_init(token_type_T expected_type, token_T* found, position_T start, position_T end, hb_allocator_T* allocator);
|
|
@@ -225,6 +269,20 @@ STRAY_ERB_CLOSING_TAG_ERROR_T* stray_erb_closing_tag_error_init(position_T start
|
|
|
225
269
|
void append_stray_erb_closing_tag_error(position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
226
270
|
NESTED_ERB_TAG_ERROR_T* nested_erb_tag_error_init(token_T* opening_tag, size_t nested_tag_line, size_t nested_tag_column, position_T start, position_T end, hb_allocator_T* allocator);
|
|
227
271
|
void append_nested_erb_tag_error(token_T* opening_tag, size_t nested_tag_line, size_t nested_tag_column, position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
272
|
+
RENDER_AMBIGUOUS_LOCALS_ERROR_T* render_ambiguous_locals_error_init(hb_string_T partial, position_T start, position_T end, hb_allocator_T* allocator);
|
|
273
|
+
void append_render_ambiguous_locals_error(hb_string_T partial, position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
274
|
+
RENDER_MISSING_LOCALS_ERROR_T* render_missing_locals_error_init(hb_string_T partial, hb_string_T keywords, position_T start, position_T end, hb_allocator_T* allocator);
|
|
275
|
+
void append_render_missing_locals_error(hb_string_T partial, hb_string_T keywords, position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
276
|
+
RENDER_NO_ARGUMENTS_ERROR_T* render_no_arguments_error_init(position_T start, position_T end, hb_allocator_T* allocator);
|
|
277
|
+
void append_render_no_arguments_error(position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
278
|
+
RENDER_CONFLICTING_PARTIAL_ERROR_T* render_conflicting_partial_error_init(hb_string_T positional_partial, hb_string_T keyword_partial, position_T start, position_T end, hb_allocator_T* allocator);
|
|
279
|
+
void append_render_conflicting_partial_error(hb_string_T positional_partial, hb_string_T keyword_partial, position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
280
|
+
RENDER_INVALID_AS_OPTION_ERROR_T* render_invalid_as_option_error_init(hb_string_T as_value, position_T start, position_T end, hb_allocator_T* allocator);
|
|
281
|
+
void append_render_invalid_as_option_error(hb_string_T as_value, position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
282
|
+
RENDER_OBJECT_AND_COLLECTION_ERROR_T* render_object_and_collection_error_init(position_T start, position_T end, hb_allocator_T* allocator);
|
|
283
|
+
void append_render_object_and_collection_error(position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
284
|
+
RENDER_LAYOUT_WITHOUT_BLOCK_ERROR_T* render_layout_without_block_error_init(hb_string_T layout, position_T start, position_T end, hb_allocator_T* allocator);
|
|
285
|
+
void append_render_layout_without_block_error(hb_string_T layout, position_T start, position_T end, hb_allocator_T* allocator, hb_array_T* errors);
|
|
228
286
|
|
|
229
287
|
void error_init(ERROR_T* error, error_type_T type, position_T start, position_T end);
|
|
230
288
|
|
|
@@ -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.9.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/src/include/util/hb_foreach.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HB_FOREACH_H
|
|
5
5
|
#define HB_FOREACH_H
|
|
@@ -37,6 +37,7 @@ const parser_options_T HERB_DEFAULT_PARSER_OPTIONS = { .track_whitespace = false
|
|
|
37
37
|
.analyze = true,
|
|
38
38
|
.strict = true,
|
|
39
39
|
.action_view_helpers = false,
|
|
40
|
+
.render_nodes = false,
|
|
40
41
|
.prism_nodes_deep = false,
|
|
41
42
|
.prism_nodes = false,
|
|
42
43
|
.prism_program = false };
|
|
@@ -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.9.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/src/parser_match_tags.c.erb
|
|
3
3
|
|
|
4
4
|
#include "include/parser.h"
|
|
5
5
|
#include "include/ast_nodes.h"
|
|
@@ -360,6 +360,26 @@ bool match_tags_visitor(const AST_NODE_T* node, void* data) {
|
|
|
360
360
|
|
|
361
361
|
|
|
362
362
|
|
|
363
|
+
case AST_RUBY_RENDER_LOCAL_NODE: {
|
|
364
|
+
const AST_RUBY_RENDER_LOCAL_NODE_T* ruby_render_local_node = (const AST_RUBY_RENDER_LOCAL_NODE_T*) node;
|
|
365
|
+
|
|
366
|
+
if (ruby_render_local_node->value != NULL) {
|
|
367
|
+
herb_visit_node((AST_NODE_T*) ruby_render_local_node->value, match_tags_visitor, context);
|
|
368
|
+
}
|
|
369
|
+
} break;
|
|
370
|
+
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
case AST_ERB_RENDER_NODE: {
|
|
374
|
+
const AST_ERB_RENDER_NODE_T* erb_render_node = (const AST_ERB_RENDER_NODE_T*) node;
|
|
375
|
+
|
|
376
|
+
if (erb_render_node->locals != NULL) {
|
|
377
|
+
match_tags_in_node_array(erb_render_node->locals, context->errors, context->options, context->allocator);
|
|
378
|
+
}
|
|
379
|
+
} break;
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
363
383
|
|
|
364
384
|
|
|
365
385
|
case AST_ERB_IN_NODE: {
|
|
@@ -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.9.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/src/include/util/hb_foreach.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HB_FOREACH_H
|
|
5
5
|
#define HB_FOREACH_H
|
|
@@ -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.9.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/src/visitor.c.erb
|
|
3
3
|
|
|
4
4
|
#include <stdio.h>
|
|
5
5
|
|
|
@@ -421,6 +421,26 @@ void herb_visit_child_nodes(const AST_NODE_T *node, bool (*visitor)(const AST_NO
|
|
|
421
421
|
|
|
422
422
|
} break;
|
|
423
423
|
|
|
424
|
+
case AST_RUBY_RENDER_LOCAL_NODE: {
|
|
425
|
+
const AST_RUBY_RENDER_LOCAL_NODE_T* ruby_render_local_node = ((const AST_RUBY_RENDER_LOCAL_NODE_T *) node);
|
|
426
|
+
|
|
427
|
+
if (ruby_render_local_node->value != NULL) {
|
|
428
|
+
herb_visit_node((AST_NODE_T *) ruby_render_local_node->value, visitor, data);
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
} break;
|
|
432
|
+
|
|
433
|
+
case AST_ERB_RENDER_NODE: {
|
|
434
|
+
const AST_ERB_RENDER_NODE_T* erb_render_node = ((const AST_ERB_RENDER_NODE_T *) node);
|
|
435
|
+
|
|
436
|
+
if (erb_render_node->locals != NULL) {
|
|
437
|
+
for (size_t index = 0; index < hb_array_size(erb_render_node->locals); index++) {
|
|
438
|
+
herb_visit_node(hb_array_get(erb_render_node->locals, index), visitor, data);
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
} break;
|
|
443
|
+
|
|
424
444
|
case AST_ERB_IN_NODE: {
|
|
425
445
|
const AST_ERB_IN_NODE_T* erb_in_node = ((const AST_ERB_IN_NODE_T *) node);
|
|
426
446
|
|
package/extension/nodes.cpp
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.9.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/javascript/packages/node/extension/nodes.cpp.erb
|
|
3
3
|
|
|
4
4
|
#include <node_api.h>
|
|
5
5
|
#include "error_helpers.h"
|
|
@@ -1462,6 +1462,142 @@ napi_value erb_unless_nodeNodeFromCStruct(napi_env env, AST_ERB_UNLESS_NODE_T* e
|
|
|
1462
1462
|
napi_set_named_property(env, result, "end_node", end_node);
|
|
1463
1463
|
|
|
1464
1464
|
|
|
1465
|
+
return result;
|
|
1466
|
+
}
|
|
1467
|
+
napi_value ruby_render_local_nodeNodeFromCStruct(napi_env env, AST_RUBY_RENDER_LOCAL_NODE_T* ruby_render_local_node) {
|
|
1468
|
+
if (!ruby_render_local_node) {
|
|
1469
|
+
napi_value null_value;
|
|
1470
|
+
napi_get_null(env, &null_value);
|
|
1471
|
+
return null_value;
|
|
1472
|
+
}
|
|
1473
|
+
|
|
1474
|
+
napi_value result;
|
|
1475
|
+
napi_create_object(env, &result);
|
|
1476
|
+
|
|
1477
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&ruby_render_local_node->base));
|
|
1478
|
+
napi_set_named_property(env, result, "type", type);
|
|
1479
|
+
|
|
1480
|
+
napi_value location = CreateLocation(env, ruby_render_local_node->base.location);
|
|
1481
|
+
napi_set_named_property(env, result, "location", location);
|
|
1482
|
+
|
|
1483
|
+
napi_value errors = ErrorsArrayFromCArray(env, ruby_render_local_node->base.errors);
|
|
1484
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
1485
|
+
|
|
1486
|
+
napi_value name = CreateToken(env, ruby_render_local_node->name);
|
|
1487
|
+
napi_set_named_property(env, result, "name", name);
|
|
1488
|
+
|
|
1489
|
+
napi_value value = NodeFromCStruct(env, (AST_NODE_T*) ruby_render_local_node->value);
|
|
1490
|
+
napi_set_named_property(env, result, "value", value);
|
|
1491
|
+
|
|
1492
|
+
|
|
1493
|
+
return result;
|
|
1494
|
+
}
|
|
1495
|
+
napi_value erb_render_nodeNodeFromCStruct(napi_env env, AST_ERB_RENDER_NODE_T* erb_render_node) {
|
|
1496
|
+
if (!erb_render_node) {
|
|
1497
|
+
napi_value null_value;
|
|
1498
|
+
napi_get_null(env, &null_value);
|
|
1499
|
+
return null_value;
|
|
1500
|
+
}
|
|
1501
|
+
|
|
1502
|
+
napi_value result;
|
|
1503
|
+
napi_create_object(env, &result);
|
|
1504
|
+
|
|
1505
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&erb_render_node->base));
|
|
1506
|
+
napi_set_named_property(env, result, "type", type);
|
|
1507
|
+
|
|
1508
|
+
napi_value location = CreateLocation(env, erb_render_node->base.location);
|
|
1509
|
+
napi_set_named_property(env, result, "location", location);
|
|
1510
|
+
|
|
1511
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_render_node->base.errors);
|
|
1512
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
1513
|
+
|
|
1514
|
+
napi_value tag_opening = CreateToken(env, erb_render_node->tag_opening);
|
|
1515
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
1516
|
+
|
|
1517
|
+
napi_value content = CreateToken(env, erb_render_node->content);
|
|
1518
|
+
napi_set_named_property(env, result, "content", content);
|
|
1519
|
+
|
|
1520
|
+
napi_value tag_closing = CreateToken(env, erb_render_node->tag_closing);
|
|
1521
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
1522
|
+
|
|
1523
|
+
/* analyzed_ruby is internal parser state, not exposed to JavaScript */
|
|
1524
|
+
napi_value analyzed_ruby;
|
|
1525
|
+
napi_get_null(env, &analyzed_ruby);
|
|
1526
|
+
napi_set_named_property(env, result, "analyzed_ruby", analyzed_ruby);
|
|
1527
|
+
|
|
1528
|
+
napi_value prism_node;
|
|
1529
|
+
if (erb_render_node->prism_node.node != NULL && erb_render_node->prism_node.parser != NULL) {
|
|
1530
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1531
|
+
pm_serialize(erb_render_node->prism_node.parser, erb_render_node->prism_node.node, &pm_buffer);
|
|
1532
|
+
|
|
1533
|
+
if (pm_buffer.length > 0) {
|
|
1534
|
+
void* buffer_data;
|
|
1535
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1536
|
+
} else {
|
|
1537
|
+
napi_get_null(env, &prism_node);
|
|
1538
|
+
}
|
|
1539
|
+
|
|
1540
|
+
pm_buffer_free(&pm_buffer);
|
|
1541
|
+
} else {
|
|
1542
|
+
napi_get_null(env, &prism_node);
|
|
1543
|
+
}
|
|
1544
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1545
|
+
|
|
1546
|
+
napi_value partial = CreateToken(env, erb_render_node->partial);
|
|
1547
|
+
napi_set_named_property(env, result, "partial", partial);
|
|
1548
|
+
|
|
1549
|
+
napi_value template_path = CreateToken(env, erb_render_node->template_path);
|
|
1550
|
+
napi_set_named_property(env, result, "template_path", template_path);
|
|
1551
|
+
|
|
1552
|
+
napi_value layout = CreateToken(env, erb_render_node->layout);
|
|
1553
|
+
napi_set_named_property(env, result, "layout", layout);
|
|
1554
|
+
|
|
1555
|
+
napi_value file = CreateToken(env, erb_render_node->file);
|
|
1556
|
+
napi_set_named_property(env, result, "file", file);
|
|
1557
|
+
|
|
1558
|
+
napi_value inline_template = CreateToken(env, erb_render_node->inline_template);
|
|
1559
|
+
napi_set_named_property(env, result, "inline_template", inline_template);
|
|
1560
|
+
|
|
1561
|
+
napi_value body = CreateToken(env, erb_render_node->body);
|
|
1562
|
+
napi_set_named_property(env, result, "body", body);
|
|
1563
|
+
|
|
1564
|
+
napi_value plain = CreateToken(env, erb_render_node->plain);
|
|
1565
|
+
napi_set_named_property(env, result, "plain", plain);
|
|
1566
|
+
|
|
1567
|
+
napi_value html = CreateToken(env, erb_render_node->html);
|
|
1568
|
+
napi_set_named_property(env, result, "html", html);
|
|
1569
|
+
|
|
1570
|
+
napi_value renderable = CreateToken(env, erb_render_node->renderable);
|
|
1571
|
+
napi_set_named_property(env, result, "renderable", renderable);
|
|
1572
|
+
|
|
1573
|
+
napi_value collection = CreateToken(env, erb_render_node->collection);
|
|
1574
|
+
napi_set_named_property(env, result, "collection", collection);
|
|
1575
|
+
|
|
1576
|
+
napi_value object = CreateToken(env, erb_render_node->object);
|
|
1577
|
+
napi_set_named_property(env, result, "object", object);
|
|
1578
|
+
|
|
1579
|
+
napi_value as_name = CreateToken(env, erb_render_node->as_name);
|
|
1580
|
+
napi_set_named_property(env, result, "as_name", as_name);
|
|
1581
|
+
|
|
1582
|
+
napi_value spacer_template = CreateToken(env, erb_render_node->spacer_template);
|
|
1583
|
+
napi_set_named_property(env, result, "spacer_template", spacer_template);
|
|
1584
|
+
|
|
1585
|
+
napi_value formats = CreateToken(env, erb_render_node->formats);
|
|
1586
|
+
napi_set_named_property(env, result, "formats", formats);
|
|
1587
|
+
|
|
1588
|
+
napi_value variants = CreateToken(env, erb_render_node->variants);
|
|
1589
|
+
napi_set_named_property(env, result, "variants", variants);
|
|
1590
|
+
|
|
1591
|
+
napi_value handlers = CreateToken(env, erb_render_node->handlers);
|
|
1592
|
+
napi_set_named_property(env, result, "handlers", handlers);
|
|
1593
|
+
|
|
1594
|
+
napi_value content_type = CreateToken(env, erb_render_node->content_type);
|
|
1595
|
+
napi_set_named_property(env, result, "content_type", content_type);
|
|
1596
|
+
|
|
1597
|
+
napi_value locals = NodesArrayFromCArray(env, erb_render_node->locals);
|
|
1598
|
+
napi_set_named_property(env, result, "locals", locals);
|
|
1599
|
+
|
|
1600
|
+
|
|
1465
1601
|
return result;
|
|
1466
1602
|
}
|
|
1467
1603
|
napi_value erb_yield_nodeNodeFromCStruct(napi_env env, AST_ERB_YIELD_NODE_T* erb_yield_node) {
|
|
@@ -1673,6 +1809,12 @@ napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node) {
|
|
|
1673
1809
|
case AST_ERB_UNLESS_NODE:
|
|
1674
1810
|
return erb_unless_nodeNodeFromCStruct(env, (AST_ERB_UNLESS_NODE_T*) node);
|
|
1675
1811
|
break;
|
|
1812
|
+
case AST_RUBY_RENDER_LOCAL_NODE:
|
|
1813
|
+
return ruby_render_local_nodeNodeFromCStruct(env, (AST_RUBY_RENDER_LOCAL_NODE_T*) node);
|
|
1814
|
+
break;
|
|
1815
|
+
case AST_ERB_RENDER_NODE:
|
|
1816
|
+
return erb_render_nodeNodeFromCStruct(env, (AST_ERB_RENDER_NODE_T*) node);
|
|
1817
|
+
break;
|
|
1676
1818
|
case AST_ERB_YIELD_NODE:
|
|
1677
1819
|
return erb_yield_nodeNodeFromCStruct(env, (AST_ERB_YIELD_NODE_T*) node);
|
|
1678
1820
|
break;
|
package/extension/nodes.h
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.9.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.1/templates/javascript/packages/node/extension/nodes.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HERB_EXTENSION_NODES_H
|
|
5
5
|
#define HERB_EXTENSION_NODES_H
|
|
@@ -49,6 +49,8 @@ napi_value erb_rescue_nodeNodeFromCStruct(napi_env env, AST_ERB_RESCUE_NODE_T* e
|
|
|
49
49
|
napi_value erb_ensure_nodeNodeFromCStruct(napi_env env, AST_ERB_ENSURE_NODE_T* erb_ensure_node);
|
|
50
50
|
napi_value erb_begin_nodeNodeFromCStruct(napi_env env, AST_ERB_BEGIN_NODE_T* erb_begin_node);
|
|
51
51
|
napi_value erb_unless_nodeNodeFromCStruct(napi_env env, AST_ERB_UNLESS_NODE_T* erb_unless_node);
|
|
52
|
+
napi_value ruby_render_local_nodeNodeFromCStruct(napi_env env, AST_RUBY_RENDER_LOCAL_NODE_T* ruby_render_local_node);
|
|
53
|
+
napi_value erb_render_nodeNodeFromCStruct(napi_env env, AST_ERB_RENDER_NODE_T* erb_render_node);
|
|
52
54
|
napi_value erb_yield_nodeNodeFromCStruct(napi_env env, AST_ERB_YIELD_NODE_T* erb_yield_node);
|
|
53
55
|
napi_value erb_in_nodeNodeFromCStruct(napi_env env, AST_ERB_IN_NODE_T* erb_in_node);
|
|
54
56
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@herb-tools/node",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Native Node.js addon for HTML-aware ERB parsing using Herb.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"host": "https://github.com/marcoroth/herb/releases/download/"
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@herb-tools/core": "0.9.
|
|
55
|
+
"@herb-tools/core": "0.9.1",
|
|
56
56
|
"@mapbox/node-pre-gyp": "^2.0.3",
|
|
57
57
|
"node-addon-api": "^8.6.0",
|
|
58
58
|
"node-pre-gyp-github": "^2.0.0"
|
package/CHANGELOG.md
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
## 0.3.1 (2025-06-23)
|
|
2
|
-
|
|
3
|
-
This was a version bump only for @herb-tools/node to align it with other projects, there were no code changes.
|
|
4
|
-
|
|
5
|
-
## 0.3.0 (2025-06-21)
|
|
6
|
-
|
|
7
|
-
This was a version bump only for @herb-tools/node to align it with other projects, there were no code changes.
|
|
8
|
-
|
|
9
|
-
## 0.2.0 (2025-06-11)
|
|
10
|
-
|
|
11
|
-
This was a version bump only for @herb-tools/node to align it with other projects, there were no code changes.
|
|
12
|
-
|
|
13
|
-
## 0.1.1 (2025-04-20)
|
|
14
|
-
|
|
15
|
-
This was a version bump only for @herb-tools/node to align it with other projects, there were no code changes.
|
|
16
|
-
|
|
17
|
-
## 0.1.0 (2025-04-15)
|
|
18
|
-
|
|
19
|
-
This was a version bump only for @herb-tools/node to align it with other projects, there were no code changes.
|