@herb-tools/node 0.8.10 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/binding.gyp +26 -8
- package/dist/herb-node.cjs +41 -12
- package/dist/herb-node.cjs.map +1 -1
- package/dist/herb-node.esm.js +8 -1
- package/dist/herb-node.esm.js.map +1 -1
- package/dist/types/node-backend.d.ts +3 -1
- package/extension/error_helpers.cpp +395 -73
- package/extension/error_helpers.h +13 -3
- package/extension/extension_helpers.cpp +38 -35
- package/extension/extension_helpers.h +2 -2
- package/extension/herb.cpp +183 -64
- package/extension/libherb/analyze/action_view/attribute_extraction_helpers.c +290 -0
- package/extension/libherb/analyze/action_view/attribute_extraction_helpers.h +36 -0
- package/extension/libherb/analyze/action_view/content_tag.c +70 -0
- package/extension/libherb/analyze/action_view/link_to.c +143 -0
- package/extension/libherb/analyze/action_view/registry.c +60 -0
- package/extension/libherb/analyze/action_view/tag.c +64 -0
- package/extension/libherb/analyze/action_view/tag_helper_handler.h +41 -0
- package/extension/libherb/analyze/action_view/tag_helper_node_builders.c +305 -0
- package/extension/libherb/analyze/action_view/tag_helper_node_builders.h +70 -0
- package/extension/libherb/analyze/action_view/tag_helpers.c +748 -0
- package/extension/libherb/analyze/action_view/tag_helpers.h +38 -0
- package/extension/libherb/analyze/action_view/turbo_frame_tag.c +88 -0
- package/extension/libherb/analyze/analyze.c +882 -0
- package/extension/libherb/{include → analyze}/analyze.h +14 -4
- package/extension/libherb/{analyzed_ruby.c → analyze/analyzed_ruby.c} +13 -11
- package/extension/libherb/{analyzed_ruby.h → analyze/analyzed_ruby.h} +3 -3
- package/extension/libherb/analyze/builders.c +343 -0
- package/extension/libherb/analyze/builders.h +27 -0
- package/extension/libherb/analyze/conditional_elements.c +594 -0
- package/extension/libherb/analyze/conditional_elements.h +9 -0
- package/extension/libherb/analyze/conditional_open_tags.c +640 -0
- package/extension/libherb/analyze/conditional_open_tags.h +9 -0
- package/extension/libherb/analyze/control_type.c +250 -0
- package/extension/libherb/analyze/control_type.h +14 -0
- package/extension/libherb/{analyze_helpers.c → analyze/helpers.c} +48 -23
- package/extension/libherb/{analyze_helpers.h → analyze/helpers.h} +4 -2
- package/extension/libherb/analyze/invalid_structures.c +193 -0
- package/extension/libherb/analyze/invalid_structures.h +11 -0
- package/extension/libherb/{analyze_missing_end.c → analyze/missing_end.c} +33 -22
- package/extension/libherb/analyze/parse_errors.c +84 -0
- package/extension/libherb/analyze/prism_annotate.c +397 -0
- package/extension/libherb/analyze/prism_annotate.h +16 -0
- package/extension/libherb/{analyze_transform.c → analyze/transform.c} +17 -3
- package/extension/libherb/ast_node.c +17 -7
- package/extension/libherb/ast_node.h +11 -5
- package/extension/libherb/ast_nodes.c +663 -388
- package/extension/libherb/ast_nodes.h +118 -39
- package/extension/libherb/ast_pretty_print.c +191 -7
- package/extension/libherb/ast_pretty_print.h +6 -1
- package/extension/libherb/element_source.h +3 -8
- package/extension/libherb/errors.c +1077 -521
- package/extension/libherb/errors.h +149 -56
- package/extension/libherb/extract.c +145 -49
- package/extension/libherb/extract.h +21 -5
- package/extension/libherb/herb.c +52 -34
- package/extension/libherb/herb.h +18 -6
- package/extension/libherb/herb_prism_node.h +13 -0
- package/extension/libherb/html_util.c +241 -12
- package/extension/libherb/html_util.h +7 -2
- package/extension/libherb/include/analyze/action_view/attribute_extraction_helpers.h +36 -0
- package/extension/libherb/include/analyze/action_view/tag_helper_handler.h +41 -0
- package/extension/libherb/include/analyze/action_view/tag_helper_node_builders.h +70 -0
- package/extension/libherb/include/analyze/action_view/tag_helpers.h +38 -0
- package/extension/libherb/{analyze.h → include/analyze/analyze.h} +14 -4
- package/extension/libherb/include/{analyzed_ruby.h → analyze/analyzed_ruby.h} +3 -3
- package/extension/libherb/include/analyze/builders.h +27 -0
- package/extension/libherb/include/analyze/conditional_elements.h +9 -0
- package/extension/libherb/include/analyze/conditional_open_tags.h +9 -0
- package/extension/libherb/include/analyze/control_type.h +14 -0
- package/extension/libherb/include/{analyze_helpers.h → analyze/helpers.h} +4 -2
- package/extension/libherb/include/analyze/invalid_structures.h +11 -0
- package/extension/libherb/include/analyze/prism_annotate.h +16 -0
- package/extension/libherb/include/ast_node.h +11 -5
- package/extension/libherb/include/ast_nodes.h +118 -39
- package/extension/libherb/include/ast_pretty_print.h +6 -1
- package/extension/libherb/include/element_source.h +3 -8
- package/extension/libherb/include/errors.h +149 -56
- package/extension/libherb/include/extract.h +21 -5
- package/extension/libherb/include/herb.h +18 -6
- package/extension/libherb/include/herb_prism_node.h +13 -0
- package/extension/libherb/include/html_util.h +7 -2
- package/extension/libherb/include/io.h +3 -1
- package/extension/libherb/include/lex_helpers.h +29 -0
- package/extension/libherb/include/lexer.h +1 -1
- package/extension/libherb/include/lexer_peek_helpers.h +87 -13
- package/extension/libherb/include/lexer_struct.h +2 -0
- package/extension/libherb/include/location.h +2 -1
- package/extension/libherb/include/parser.h +27 -2
- package/extension/libherb/include/parser_helpers.h +19 -3
- package/extension/libherb/include/pretty_print.h +10 -5
- package/extension/libherb/include/prism_context.h +45 -0
- package/extension/libherb/include/prism_helpers.h +10 -7
- package/extension/libherb/include/prism_serialized.h +12 -0
- package/extension/libherb/include/token.h +16 -4
- package/extension/libherb/include/token_struct.h +10 -3
- package/extension/libherb/include/utf8.h +2 -1
- package/extension/libherb/include/util/hb_allocator.h +78 -0
- package/extension/libherb/include/util/hb_arena.h +6 -1
- package/extension/libherb/include/util/hb_arena_debug.h +12 -1
- package/extension/libherb/include/util/hb_array.h +7 -3
- package/extension/libherb/include/util/hb_buffer.h +6 -4
- package/extension/libherb/include/util/hb_foreach.h +79 -0
- package/extension/libherb/include/util/hb_narray.h +8 -4
- package/extension/libherb/include/util/hb_string.h +56 -9
- package/extension/libherb/include/util.h +6 -3
- package/extension/libherb/include/version.h +1 -1
- package/extension/libherb/io.c +3 -2
- package/extension/libherb/io.h +3 -1
- package/extension/libherb/lex_helpers.h +29 -0
- package/extension/libherb/lexer.c +42 -30
- package/extension/libherb/lexer.h +1 -1
- package/extension/libherb/lexer_peek_helpers.c +12 -74
- package/extension/libherb/lexer_peek_helpers.h +87 -13
- package/extension/libherb/lexer_struct.h +2 -0
- package/extension/libherb/location.c +2 -2
- package/extension/libherb/location.h +2 -1
- package/extension/libherb/main.c +53 -28
- package/extension/libherb/parser.c +783 -247
- package/extension/libherb/parser.h +27 -2
- package/extension/libherb/parser_helpers.c +110 -23
- package/extension/libherb/parser_helpers.h +19 -3
- package/extension/libherb/parser_match_tags.c +110 -49
- package/extension/libherb/pretty_print.c +29 -24
- package/extension/libherb/pretty_print.h +10 -5
- package/extension/libherb/prism_context.h +45 -0
- package/extension/libherb/prism_helpers.c +30 -27
- package/extension/libherb/prism_helpers.h +10 -7
- package/extension/libherb/prism_serialized.h +12 -0
- package/extension/libherb/ruby_parser.c +2 -0
- package/extension/libherb/token.c +151 -66
- package/extension/libherb/token.h +16 -4
- package/extension/libherb/token_matchers.c +0 -1
- package/extension/libherb/token_struct.h +10 -3
- package/extension/libherb/utf8.c +7 -6
- package/extension/libherb/utf8.h +2 -1
- package/extension/libherb/util/hb_allocator.c +341 -0
- package/extension/libherb/util/hb_allocator.h +78 -0
- package/extension/libherb/util/hb_arena.c +81 -56
- package/extension/libherb/util/hb_arena.h +6 -1
- package/extension/libherb/util/hb_arena_debug.c +32 -17
- package/extension/libherb/util/hb_arena_debug.h +12 -1
- package/extension/libherb/util/hb_array.c +30 -15
- package/extension/libherb/util/hb_array.h +7 -3
- package/extension/libherb/util/hb_buffer.c +17 -21
- package/extension/libherb/util/hb_buffer.h +6 -4
- package/extension/libherb/util/hb_foreach.h +79 -0
- package/extension/libherb/util/hb_narray.c +22 -7
- package/extension/libherb/util/hb_narray.h +8 -4
- package/extension/libherb/util/hb_string.c +49 -35
- package/extension/libherb/util/hb_string.h +56 -9
- package/extension/libherb/util.c +21 -11
- package/extension/libherb/util.h +6 -3
- package/extension/libherb/version.h +1 -1
- package/extension/libherb/visitor.c +48 -1
- package/extension/nodes.cpp +451 -6
- package/extension/nodes.h +8 -1
- package/package.json +12 -8
- package/src/node-backend.ts +11 -1
- package/dist/types/index-cjs.d.cts +0 -1
- package/extension/libherb/analyze.c +0 -1608
- package/extension/libherb/element_source.c +0 -12
- package/extension/libherb/include/util/hb_system.h +0 -9
- package/extension/libherb/util/hb_system.c +0 -30
- package/extension/libherb/util/hb_system.h +0 -9
- package/src/index-cjs.cts +0 -22
- /package/dist/types/{index-esm.d.mts → index.d.ts} +0 -0
- /package/src/{index-esm.mts → index.ts} +0 -0
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.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.0/templates/javascript/packages/node/extension/nodes.cpp.erb
|
|
3
3
|
|
|
4
4
|
#include <node_api.h>
|
|
5
5
|
#include "error_helpers.h"
|
|
@@ -39,6 +39,29 @@ napi_value document_nodeNodeFromCStruct(napi_env env, AST_DOCUMENT_NODE_T* docum
|
|
|
39
39
|
napi_value children = NodesArrayFromCArray(env, document_node->children);
|
|
40
40
|
napi_set_named_property(env, result, "children", children);
|
|
41
41
|
|
|
42
|
+
/* prism_context is internal parser state, not exposed to JavaScript */
|
|
43
|
+
napi_value prism_context;
|
|
44
|
+
napi_get_null(env, &prism_context);
|
|
45
|
+
napi_set_named_property(env, result, "prism_context", prism_context);
|
|
46
|
+
|
|
47
|
+
napi_value prism_node;
|
|
48
|
+
if (document_node->prism_node.node != NULL && document_node->prism_node.parser != NULL) {
|
|
49
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
50
|
+
pm_serialize(document_node->prism_node.parser, document_node->prism_node.node, &pm_buffer);
|
|
51
|
+
|
|
52
|
+
if (pm_buffer.length > 0) {
|
|
53
|
+
void* buffer_data;
|
|
54
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
55
|
+
} else {
|
|
56
|
+
napi_get_null(env, &prism_node);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
pm_buffer_free(&pm_buffer);
|
|
60
|
+
} else {
|
|
61
|
+
napi_get_null(env, &prism_node);
|
|
62
|
+
}
|
|
63
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
64
|
+
|
|
42
65
|
|
|
43
66
|
return result;
|
|
44
67
|
}
|
|
@@ -61,7 +84,7 @@ napi_value literal_nodeNodeFromCStruct(napi_env env, AST_LITERAL_NODE_T* literal
|
|
|
61
84
|
napi_value errors = ErrorsArrayFromCArray(env, literal_node->base.errors);
|
|
62
85
|
napi_set_named_property(env, result, "errors", errors);
|
|
63
86
|
|
|
64
|
-
napi_value content =
|
|
87
|
+
napi_value content = CreateStringFromHbString(env, literal_node->content);
|
|
65
88
|
napi_set_named_property(env, result, "content", content);
|
|
66
89
|
|
|
67
90
|
|
|
@@ -103,6 +126,38 @@ napi_value html_open_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_OPEN_TAG_NOD
|
|
|
103
126
|
napi_set_named_property(env, result, "is_void", is_void);
|
|
104
127
|
|
|
105
128
|
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
napi_value html_conditional_open_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_CONDITIONAL_OPEN_TAG_NODE_T* html_conditional_open_tag_node) {
|
|
132
|
+
if (!html_conditional_open_tag_node) {
|
|
133
|
+
napi_value null_value;
|
|
134
|
+
napi_get_null(env, &null_value);
|
|
135
|
+
return null_value;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
napi_value result;
|
|
139
|
+
napi_create_object(env, &result);
|
|
140
|
+
|
|
141
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&html_conditional_open_tag_node->base));
|
|
142
|
+
napi_set_named_property(env, result, "type", type);
|
|
143
|
+
|
|
144
|
+
napi_value location = CreateLocation(env, html_conditional_open_tag_node->base.location);
|
|
145
|
+
napi_set_named_property(env, result, "location", location);
|
|
146
|
+
|
|
147
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_conditional_open_tag_node->base.errors);
|
|
148
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
149
|
+
|
|
150
|
+
napi_value conditional = NodeFromCStruct(env, (AST_NODE_T*) html_conditional_open_tag_node->conditional);
|
|
151
|
+
napi_set_named_property(env, result, "conditional", conditional);
|
|
152
|
+
|
|
153
|
+
napi_value tag_name = CreateToken(env, html_conditional_open_tag_node->tag_name);
|
|
154
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
155
|
+
|
|
156
|
+
napi_value is_void;
|
|
157
|
+
napi_get_boolean(env, html_conditional_open_tag_node->is_void, &is_void);
|
|
158
|
+
napi_set_named_property(env, result, "is_void", is_void);
|
|
159
|
+
|
|
160
|
+
|
|
106
161
|
return result;
|
|
107
162
|
}
|
|
108
163
|
napi_value html_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_CLOSE_TAG_NODE_T* html_close_tag_node) {
|
|
@@ -137,6 +192,56 @@ napi_value html_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_CLOSE_TAG_N
|
|
|
137
192
|
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
138
193
|
|
|
139
194
|
|
|
195
|
+
return result;
|
|
196
|
+
}
|
|
197
|
+
napi_value html_omitted_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_OMITTED_CLOSE_TAG_NODE_T* html_omitted_close_tag_node) {
|
|
198
|
+
if (!html_omitted_close_tag_node) {
|
|
199
|
+
napi_value null_value;
|
|
200
|
+
napi_get_null(env, &null_value);
|
|
201
|
+
return null_value;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
napi_value result;
|
|
205
|
+
napi_create_object(env, &result);
|
|
206
|
+
|
|
207
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&html_omitted_close_tag_node->base));
|
|
208
|
+
napi_set_named_property(env, result, "type", type);
|
|
209
|
+
|
|
210
|
+
napi_value location = CreateLocation(env, html_omitted_close_tag_node->base.location);
|
|
211
|
+
napi_set_named_property(env, result, "location", location);
|
|
212
|
+
|
|
213
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_omitted_close_tag_node->base.errors);
|
|
214
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
215
|
+
|
|
216
|
+
napi_value tag_name = CreateToken(env, html_omitted_close_tag_node->tag_name);
|
|
217
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
return result;
|
|
221
|
+
}
|
|
222
|
+
napi_value html_virtual_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_VIRTUAL_CLOSE_TAG_NODE_T* html_virtual_close_tag_node) {
|
|
223
|
+
if (!html_virtual_close_tag_node) {
|
|
224
|
+
napi_value null_value;
|
|
225
|
+
napi_get_null(env, &null_value);
|
|
226
|
+
return null_value;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
napi_value result;
|
|
230
|
+
napi_create_object(env, &result);
|
|
231
|
+
|
|
232
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&html_virtual_close_tag_node->base));
|
|
233
|
+
napi_set_named_property(env, result, "type", type);
|
|
234
|
+
|
|
235
|
+
napi_value location = CreateLocation(env, html_virtual_close_tag_node->base.location);
|
|
236
|
+
napi_set_named_property(env, result, "location", location);
|
|
237
|
+
|
|
238
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_virtual_close_tag_node->base.errors);
|
|
239
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
240
|
+
|
|
241
|
+
napi_value tag_name = CreateToken(env, html_virtual_close_tag_node->tag_name);
|
|
242
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
243
|
+
|
|
244
|
+
|
|
140
245
|
return result;
|
|
141
246
|
}
|
|
142
247
|
napi_value html_element_nodeNodeFromCStruct(napi_env env, AST_HTML_ELEMENT_NODE_T* html_element_node) {
|
|
@@ -174,8 +279,54 @@ napi_value html_element_nodeNodeFromCStruct(napi_env env, AST_HTML_ELEMENT_NODE_
|
|
|
174
279
|
napi_get_boolean(env, html_element_node->is_void, &is_void);
|
|
175
280
|
napi_set_named_property(env, result, "is_void", is_void);
|
|
176
281
|
|
|
177
|
-
napi_value
|
|
178
|
-
napi_set_named_property(env, result, "
|
|
282
|
+
napi_value element_source = CreateStringFromHbString(env, html_element_node->element_source);
|
|
283
|
+
napi_set_named_property(env, result, "element_source", element_source);
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
return result;
|
|
287
|
+
}
|
|
288
|
+
napi_value html_conditional_element_nodeNodeFromCStruct(napi_env env, AST_HTML_CONDITIONAL_ELEMENT_NODE_T* html_conditional_element_node) {
|
|
289
|
+
if (!html_conditional_element_node) {
|
|
290
|
+
napi_value null_value;
|
|
291
|
+
napi_get_null(env, &null_value);
|
|
292
|
+
return null_value;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
napi_value result;
|
|
296
|
+
napi_create_object(env, &result);
|
|
297
|
+
|
|
298
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&html_conditional_element_node->base));
|
|
299
|
+
napi_set_named_property(env, result, "type", type);
|
|
300
|
+
|
|
301
|
+
napi_value location = CreateLocation(env, html_conditional_element_node->base.location);
|
|
302
|
+
napi_set_named_property(env, result, "location", location);
|
|
303
|
+
|
|
304
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_conditional_element_node->base.errors);
|
|
305
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
306
|
+
|
|
307
|
+
napi_value condition = CreateStringFromHbString(env, html_conditional_element_node->condition);
|
|
308
|
+
napi_set_named_property(env, result, "condition", condition);
|
|
309
|
+
|
|
310
|
+
napi_value open_conditional = NodeFromCStruct(env, (AST_NODE_T*) html_conditional_element_node->open_conditional);
|
|
311
|
+
napi_set_named_property(env, result, "open_conditional", open_conditional);
|
|
312
|
+
|
|
313
|
+
napi_value open_tag = NodeFromCStruct(env, (AST_NODE_T*) html_conditional_element_node->open_tag);
|
|
314
|
+
napi_set_named_property(env, result, "open_tag", open_tag);
|
|
315
|
+
|
|
316
|
+
napi_value body = NodesArrayFromCArray(env, html_conditional_element_node->body);
|
|
317
|
+
napi_set_named_property(env, result, "body", body);
|
|
318
|
+
|
|
319
|
+
napi_value close_tag = NodeFromCStruct(env, (AST_NODE_T*) html_conditional_element_node->close_tag);
|
|
320
|
+
napi_set_named_property(env, result, "close_tag", close_tag);
|
|
321
|
+
|
|
322
|
+
napi_value close_conditional = NodeFromCStruct(env, (AST_NODE_T*) html_conditional_element_node->close_conditional);
|
|
323
|
+
napi_set_named_property(env, result, "close_conditional", close_conditional);
|
|
324
|
+
|
|
325
|
+
napi_value tag_name = CreateToken(env, html_conditional_element_node->tag_name);
|
|
326
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
327
|
+
|
|
328
|
+
napi_value element_source = CreateStringFromHbString(env, html_conditional_element_node->element_source);
|
|
329
|
+
napi_set_named_property(env, result, "element_source", element_source);
|
|
179
330
|
|
|
180
331
|
|
|
181
332
|
return result;
|
|
@@ -269,6 +420,96 @@ napi_value html_attribute_nodeNodeFromCStruct(napi_env env, AST_HTML_ATTRIBUTE_N
|
|
|
269
420
|
napi_set_named_property(env, result, "value", value);
|
|
270
421
|
|
|
271
422
|
|
|
423
|
+
return result;
|
|
424
|
+
}
|
|
425
|
+
napi_value ruby_literal_nodeNodeFromCStruct(napi_env env, AST_RUBY_LITERAL_NODE_T* ruby_literal_node) {
|
|
426
|
+
if (!ruby_literal_node) {
|
|
427
|
+
napi_value null_value;
|
|
428
|
+
napi_get_null(env, &null_value);
|
|
429
|
+
return null_value;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
napi_value result;
|
|
433
|
+
napi_create_object(env, &result);
|
|
434
|
+
|
|
435
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&ruby_literal_node->base));
|
|
436
|
+
napi_set_named_property(env, result, "type", type);
|
|
437
|
+
|
|
438
|
+
napi_value location = CreateLocation(env, ruby_literal_node->base.location);
|
|
439
|
+
napi_set_named_property(env, result, "location", location);
|
|
440
|
+
|
|
441
|
+
napi_value errors = ErrorsArrayFromCArray(env, ruby_literal_node->base.errors);
|
|
442
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
443
|
+
|
|
444
|
+
napi_value content = CreateStringFromHbString(env, ruby_literal_node->content);
|
|
445
|
+
napi_set_named_property(env, result, "content", content);
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
return result;
|
|
449
|
+
}
|
|
450
|
+
napi_value ruby_html_attributes_splat_nodeNodeFromCStruct(napi_env env, AST_RUBY_HTML_ATTRIBUTES_SPLAT_NODE_T* ruby_html_attributes_splat_node) {
|
|
451
|
+
if (!ruby_html_attributes_splat_node) {
|
|
452
|
+
napi_value null_value;
|
|
453
|
+
napi_get_null(env, &null_value);
|
|
454
|
+
return null_value;
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
napi_value result;
|
|
458
|
+
napi_create_object(env, &result);
|
|
459
|
+
|
|
460
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&ruby_html_attributes_splat_node->base));
|
|
461
|
+
napi_set_named_property(env, result, "type", type);
|
|
462
|
+
|
|
463
|
+
napi_value location = CreateLocation(env, ruby_html_attributes_splat_node->base.location);
|
|
464
|
+
napi_set_named_property(env, result, "location", location);
|
|
465
|
+
|
|
466
|
+
napi_value errors = ErrorsArrayFromCArray(env, ruby_html_attributes_splat_node->base.errors);
|
|
467
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
468
|
+
|
|
469
|
+
napi_value content = CreateStringFromHbString(env, ruby_html_attributes_splat_node->content);
|
|
470
|
+
napi_set_named_property(env, result, "content", content);
|
|
471
|
+
|
|
472
|
+
napi_value prefix = CreateStringFromHbString(env, ruby_html_attributes_splat_node->prefix);
|
|
473
|
+
napi_set_named_property(env, result, "prefix", prefix);
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
return result;
|
|
477
|
+
}
|
|
478
|
+
napi_value erb_open_tag_nodeNodeFromCStruct(napi_env env, AST_ERB_OPEN_TAG_NODE_T* erb_open_tag_node) {
|
|
479
|
+
if (!erb_open_tag_node) {
|
|
480
|
+
napi_value null_value;
|
|
481
|
+
napi_get_null(env, &null_value);
|
|
482
|
+
return null_value;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
napi_value result;
|
|
486
|
+
napi_create_object(env, &result);
|
|
487
|
+
|
|
488
|
+
napi_value type = CreateStringFromHbString(env, ast_node_type_to_string(&erb_open_tag_node->base));
|
|
489
|
+
napi_set_named_property(env, result, "type", type);
|
|
490
|
+
|
|
491
|
+
napi_value location = CreateLocation(env, erb_open_tag_node->base.location);
|
|
492
|
+
napi_set_named_property(env, result, "location", location);
|
|
493
|
+
|
|
494
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_open_tag_node->base.errors);
|
|
495
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
496
|
+
|
|
497
|
+
napi_value tag_opening = CreateToken(env, erb_open_tag_node->tag_opening);
|
|
498
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
499
|
+
|
|
500
|
+
napi_value content = CreateToken(env, erb_open_tag_node->content);
|
|
501
|
+
napi_set_named_property(env, result, "content", content);
|
|
502
|
+
|
|
503
|
+
napi_value tag_closing = CreateToken(env, erb_open_tag_node->tag_closing);
|
|
504
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
505
|
+
|
|
506
|
+
napi_value tag_name = CreateToken(env, erb_open_tag_node->tag_name);
|
|
507
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
508
|
+
|
|
509
|
+
napi_value children = NodesArrayFromCArray(env, erb_open_tag_node->children);
|
|
510
|
+
napi_set_named_property(env, result, "children", children);
|
|
511
|
+
|
|
512
|
+
|
|
272
513
|
return result;
|
|
273
514
|
}
|
|
274
515
|
napi_value html_text_nodeNodeFromCStruct(napi_env env, AST_HTML_TEXT_NODE_T* html_text_node) {
|
|
@@ -290,7 +531,7 @@ napi_value html_text_nodeNodeFromCStruct(napi_env env, AST_HTML_TEXT_NODE_T* htm
|
|
|
290
531
|
napi_value errors = ErrorsArrayFromCArray(env, html_text_node->base.errors);
|
|
291
532
|
napi_set_named_property(env, result, "errors", errors);
|
|
292
533
|
|
|
293
|
-
napi_value content =
|
|
534
|
+
napi_value content = CreateStringFromHbString(env, html_text_node->content);
|
|
294
535
|
napi_set_named_property(env, result, "content", content);
|
|
295
536
|
|
|
296
537
|
|
|
@@ -473,6 +714,7 @@ napi_value erb_content_nodeNodeFromCStruct(napi_env env, AST_ERB_CONTENT_NODE_T*
|
|
|
473
714
|
napi_value tag_closing = CreateToken(env, erb_content_node->tag_closing);
|
|
474
715
|
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
475
716
|
|
|
717
|
+
/* analyzed_ruby is internal parser state, not exposed to JavaScript */
|
|
476
718
|
napi_value analyzed_ruby;
|
|
477
719
|
napi_get_null(env, &analyzed_ruby);
|
|
478
720
|
napi_set_named_property(env, result, "analyzed_ruby", analyzed_ruby);
|
|
@@ -485,6 +727,24 @@ napi_value erb_content_nodeNodeFromCStruct(napi_env env, AST_ERB_CONTENT_NODE_T*
|
|
|
485
727
|
napi_get_boolean(env, erb_content_node->valid, &valid);
|
|
486
728
|
napi_set_named_property(env, result, "valid", valid);
|
|
487
729
|
|
|
730
|
+
napi_value prism_node;
|
|
731
|
+
if (erb_content_node->prism_node.node != NULL && erb_content_node->prism_node.parser != NULL) {
|
|
732
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
733
|
+
pm_serialize(erb_content_node->prism_node.parser, erb_content_node->prism_node.node, &pm_buffer);
|
|
734
|
+
|
|
735
|
+
if (pm_buffer.length > 0) {
|
|
736
|
+
void* buffer_data;
|
|
737
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
738
|
+
} else {
|
|
739
|
+
napi_get_null(env, &prism_node);
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
pm_buffer_free(&pm_buffer);
|
|
743
|
+
} else {
|
|
744
|
+
napi_get_null(env, &prism_node);
|
|
745
|
+
}
|
|
746
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
747
|
+
|
|
488
748
|
|
|
489
749
|
return result;
|
|
490
750
|
}
|
|
@@ -589,6 +849,24 @@ napi_value erb_if_nodeNodeFromCStruct(napi_env env, AST_ERB_IF_NODE_T* erb_if_no
|
|
|
589
849
|
}
|
|
590
850
|
napi_set_named_property(env, result, "then_keyword", then_keyword);
|
|
591
851
|
|
|
852
|
+
napi_value prism_node;
|
|
853
|
+
if (erb_if_node->prism_node.node != NULL && erb_if_node->prism_node.parser != NULL) {
|
|
854
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
855
|
+
pm_serialize(erb_if_node->prism_node.parser, erb_if_node->prism_node.node, &pm_buffer);
|
|
856
|
+
|
|
857
|
+
if (pm_buffer.length > 0) {
|
|
858
|
+
void* buffer_data;
|
|
859
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
860
|
+
} else {
|
|
861
|
+
napi_get_null(env, &prism_node);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
pm_buffer_free(&pm_buffer);
|
|
865
|
+
} else {
|
|
866
|
+
napi_get_null(env, &prism_node);
|
|
867
|
+
}
|
|
868
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
869
|
+
|
|
592
870
|
napi_value statements = NodesArrayFromCArray(env, erb_if_node->statements);
|
|
593
871
|
napi_set_named_property(env, result, "statements", statements);
|
|
594
872
|
|
|
@@ -629,6 +907,24 @@ napi_value erb_block_nodeNodeFromCStruct(napi_env env, AST_ERB_BLOCK_NODE_T* erb
|
|
|
629
907
|
napi_value tag_closing = CreateToken(env, erb_block_node->tag_closing);
|
|
630
908
|
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
631
909
|
|
|
910
|
+
napi_value prism_node;
|
|
911
|
+
if (erb_block_node->prism_node.node != NULL && erb_block_node->prism_node.parser != NULL) {
|
|
912
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
913
|
+
pm_serialize(erb_block_node->prism_node.parser, erb_block_node->prism_node.node, &pm_buffer);
|
|
914
|
+
|
|
915
|
+
if (pm_buffer.length > 0) {
|
|
916
|
+
void* buffer_data;
|
|
917
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
918
|
+
} else {
|
|
919
|
+
napi_get_null(env, &prism_node);
|
|
920
|
+
}
|
|
921
|
+
|
|
922
|
+
pm_buffer_free(&pm_buffer);
|
|
923
|
+
} else {
|
|
924
|
+
napi_get_null(env, &prism_node);
|
|
925
|
+
}
|
|
926
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
927
|
+
|
|
632
928
|
napi_value body = NodesArrayFromCArray(env, erb_block_node->body);
|
|
633
929
|
napi_set_named_property(env, result, "body", body);
|
|
634
930
|
|
|
@@ -711,6 +1007,24 @@ napi_value erb_case_nodeNodeFromCStruct(napi_env env, AST_ERB_CASE_NODE_T* erb_c
|
|
|
711
1007
|
napi_value children = NodesArrayFromCArray(env, erb_case_node->children);
|
|
712
1008
|
napi_set_named_property(env, result, "children", children);
|
|
713
1009
|
|
|
1010
|
+
napi_value prism_node;
|
|
1011
|
+
if (erb_case_node->prism_node.node != NULL && erb_case_node->prism_node.parser != NULL) {
|
|
1012
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1013
|
+
pm_serialize(erb_case_node->prism_node.parser, erb_case_node->prism_node.node, &pm_buffer);
|
|
1014
|
+
|
|
1015
|
+
if (pm_buffer.length > 0) {
|
|
1016
|
+
void* buffer_data;
|
|
1017
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1018
|
+
} else {
|
|
1019
|
+
napi_get_null(env, &prism_node);
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
pm_buffer_free(&pm_buffer);
|
|
1023
|
+
} else {
|
|
1024
|
+
napi_get_null(env, &prism_node);
|
|
1025
|
+
}
|
|
1026
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1027
|
+
|
|
714
1028
|
napi_value conditions = NodesArrayFromCArray(env, erb_case_node->conditions);
|
|
715
1029
|
napi_set_named_property(env, result, "conditions", conditions);
|
|
716
1030
|
|
|
@@ -754,6 +1068,24 @@ napi_value erb_case_match_nodeNodeFromCStruct(napi_env env, AST_ERB_CASE_MATCH_N
|
|
|
754
1068
|
napi_value children = NodesArrayFromCArray(env, erb_case_match_node->children);
|
|
755
1069
|
napi_set_named_property(env, result, "children", children);
|
|
756
1070
|
|
|
1071
|
+
napi_value prism_node;
|
|
1072
|
+
if (erb_case_match_node->prism_node.node != NULL && erb_case_match_node->prism_node.parser != NULL) {
|
|
1073
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1074
|
+
pm_serialize(erb_case_match_node->prism_node.parser, erb_case_match_node->prism_node.node, &pm_buffer);
|
|
1075
|
+
|
|
1076
|
+
if (pm_buffer.length > 0) {
|
|
1077
|
+
void* buffer_data;
|
|
1078
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1079
|
+
} else {
|
|
1080
|
+
napi_get_null(env, &prism_node);
|
|
1081
|
+
}
|
|
1082
|
+
|
|
1083
|
+
pm_buffer_free(&pm_buffer);
|
|
1084
|
+
} else {
|
|
1085
|
+
napi_get_null(env, &prism_node);
|
|
1086
|
+
}
|
|
1087
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1088
|
+
|
|
757
1089
|
napi_value conditions = NodesArrayFromCArray(env, erb_case_match_node->conditions);
|
|
758
1090
|
napi_set_named_property(env, result, "conditions", conditions);
|
|
759
1091
|
|
|
@@ -794,6 +1126,24 @@ napi_value erb_while_nodeNodeFromCStruct(napi_env env, AST_ERB_WHILE_NODE_T* erb
|
|
|
794
1126
|
napi_value tag_closing = CreateToken(env, erb_while_node->tag_closing);
|
|
795
1127
|
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
796
1128
|
|
|
1129
|
+
napi_value prism_node;
|
|
1130
|
+
if (erb_while_node->prism_node.node != NULL && erb_while_node->prism_node.parser != NULL) {
|
|
1131
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1132
|
+
pm_serialize(erb_while_node->prism_node.parser, erb_while_node->prism_node.node, &pm_buffer);
|
|
1133
|
+
|
|
1134
|
+
if (pm_buffer.length > 0) {
|
|
1135
|
+
void* buffer_data;
|
|
1136
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1137
|
+
} else {
|
|
1138
|
+
napi_get_null(env, &prism_node);
|
|
1139
|
+
}
|
|
1140
|
+
|
|
1141
|
+
pm_buffer_free(&pm_buffer);
|
|
1142
|
+
} else {
|
|
1143
|
+
napi_get_null(env, &prism_node);
|
|
1144
|
+
}
|
|
1145
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1146
|
+
|
|
797
1147
|
napi_value statements = NodesArrayFromCArray(env, erb_while_node->statements);
|
|
798
1148
|
napi_set_named_property(env, result, "statements", statements);
|
|
799
1149
|
|
|
@@ -831,6 +1181,24 @@ napi_value erb_until_nodeNodeFromCStruct(napi_env env, AST_ERB_UNTIL_NODE_T* erb
|
|
|
831
1181
|
napi_value tag_closing = CreateToken(env, erb_until_node->tag_closing);
|
|
832
1182
|
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
833
1183
|
|
|
1184
|
+
napi_value prism_node;
|
|
1185
|
+
if (erb_until_node->prism_node.node != NULL && erb_until_node->prism_node.parser != NULL) {
|
|
1186
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1187
|
+
pm_serialize(erb_until_node->prism_node.parser, erb_until_node->prism_node.node, &pm_buffer);
|
|
1188
|
+
|
|
1189
|
+
if (pm_buffer.length > 0) {
|
|
1190
|
+
void* buffer_data;
|
|
1191
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1192
|
+
} else {
|
|
1193
|
+
napi_get_null(env, &prism_node);
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
pm_buffer_free(&pm_buffer);
|
|
1197
|
+
} else {
|
|
1198
|
+
napi_get_null(env, &prism_node);
|
|
1199
|
+
}
|
|
1200
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1201
|
+
|
|
834
1202
|
napi_value statements = NodesArrayFromCArray(env, erb_until_node->statements);
|
|
835
1203
|
napi_set_named_property(env, result, "statements", statements);
|
|
836
1204
|
|
|
@@ -868,6 +1236,24 @@ napi_value erb_for_nodeNodeFromCStruct(napi_env env, AST_ERB_FOR_NODE_T* erb_for
|
|
|
868
1236
|
napi_value tag_closing = CreateToken(env, erb_for_node->tag_closing);
|
|
869
1237
|
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
870
1238
|
|
|
1239
|
+
napi_value prism_node;
|
|
1240
|
+
if (erb_for_node->prism_node.node != NULL && erb_for_node->prism_node.parser != NULL) {
|
|
1241
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1242
|
+
pm_serialize(erb_for_node->prism_node.parser, erb_for_node->prism_node.node, &pm_buffer);
|
|
1243
|
+
|
|
1244
|
+
if (pm_buffer.length > 0) {
|
|
1245
|
+
void* buffer_data;
|
|
1246
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1247
|
+
} else {
|
|
1248
|
+
napi_get_null(env, &prism_node);
|
|
1249
|
+
}
|
|
1250
|
+
|
|
1251
|
+
pm_buffer_free(&pm_buffer);
|
|
1252
|
+
} else {
|
|
1253
|
+
napi_get_null(env, &prism_node);
|
|
1254
|
+
}
|
|
1255
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1256
|
+
|
|
871
1257
|
napi_value statements = NodesArrayFromCArray(env, erb_for_node->statements);
|
|
872
1258
|
napi_set_named_property(env, result, "statements", statements);
|
|
873
1259
|
|
|
@@ -976,6 +1362,24 @@ napi_value erb_begin_nodeNodeFromCStruct(napi_env env, AST_ERB_BEGIN_NODE_T* erb
|
|
|
976
1362
|
napi_value tag_closing = CreateToken(env, erb_begin_node->tag_closing);
|
|
977
1363
|
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
978
1364
|
|
|
1365
|
+
napi_value prism_node;
|
|
1366
|
+
if (erb_begin_node->prism_node.node != NULL && erb_begin_node->prism_node.parser != NULL) {
|
|
1367
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1368
|
+
pm_serialize(erb_begin_node->prism_node.parser, erb_begin_node->prism_node.node, &pm_buffer);
|
|
1369
|
+
|
|
1370
|
+
if (pm_buffer.length > 0) {
|
|
1371
|
+
void* buffer_data;
|
|
1372
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1373
|
+
} else {
|
|
1374
|
+
napi_get_null(env, &prism_node);
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
pm_buffer_free(&pm_buffer);
|
|
1378
|
+
} else {
|
|
1379
|
+
napi_get_null(env, &prism_node);
|
|
1380
|
+
}
|
|
1381
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1382
|
+
|
|
979
1383
|
napi_value statements = NodesArrayFromCArray(env, erb_begin_node->statements);
|
|
980
1384
|
napi_set_named_property(env, result, "statements", statements);
|
|
981
1385
|
|
|
@@ -1030,6 +1434,24 @@ napi_value erb_unless_nodeNodeFromCStruct(napi_env env, AST_ERB_UNLESS_NODE_T* e
|
|
|
1030
1434
|
}
|
|
1031
1435
|
napi_set_named_property(env, result, "then_keyword", then_keyword);
|
|
1032
1436
|
|
|
1437
|
+
napi_value prism_node;
|
|
1438
|
+
if (erb_unless_node->prism_node.node != NULL && erb_unless_node->prism_node.parser != NULL) {
|
|
1439
|
+
pm_buffer_t pm_buffer = { 0 };
|
|
1440
|
+
pm_serialize(erb_unless_node->prism_node.parser, erb_unless_node->prism_node.node, &pm_buffer);
|
|
1441
|
+
|
|
1442
|
+
if (pm_buffer.length > 0) {
|
|
1443
|
+
void* buffer_data;
|
|
1444
|
+
napi_create_buffer_copy(env, pm_buffer.length, pm_buffer.value, &buffer_data, &prism_node);
|
|
1445
|
+
} else {
|
|
1446
|
+
napi_get_null(env, &prism_node);
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
pm_buffer_free(&pm_buffer);
|
|
1450
|
+
} else {
|
|
1451
|
+
napi_get_null(env, &prism_node);
|
|
1452
|
+
}
|
|
1453
|
+
napi_set_named_property(env, result, "prism_node", prism_node);
|
|
1454
|
+
|
|
1033
1455
|
napi_value statements = NodesArrayFromCArray(env, erb_unless_node->statements);
|
|
1034
1456
|
napi_set_named_property(env, result, "statements", statements);
|
|
1035
1457
|
|
|
@@ -1121,11 +1543,13 @@ napi_value NodesArrayFromCArray(napi_env env, hb_array_T* array) {
|
|
|
1121
1543
|
napi_create_array(env, &result);
|
|
1122
1544
|
|
|
1123
1545
|
if (array) {
|
|
1546
|
+
uint32_t index = 0;
|
|
1547
|
+
|
|
1124
1548
|
for (size_t i = 0; i < hb_array_size(array); i++) {
|
|
1125
1549
|
AST_NODE_T* child_node = (AST_NODE_T*) hb_array_get(array, i);
|
|
1126
1550
|
if (child_node) {
|
|
1127
1551
|
napi_value js_child = NodeFromCStruct(env, child_node);
|
|
1128
|
-
napi_set_element(env, result,
|
|
1552
|
+
napi_set_element(env, result, index++, js_child);
|
|
1129
1553
|
}
|
|
1130
1554
|
}
|
|
1131
1555
|
}
|
|
@@ -1150,12 +1574,24 @@ napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node) {
|
|
|
1150
1574
|
case AST_HTML_OPEN_TAG_NODE:
|
|
1151
1575
|
return html_open_tag_nodeNodeFromCStruct(env, (AST_HTML_OPEN_TAG_NODE_T*) node);
|
|
1152
1576
|
break;
|
|
1577
|
+
case AST_HTML_CONDITIONAL_OPEN_TAG_NODE:
|
|
1578
|
+
return html_conditional_open_tag_nodeNodeFromCStruct(env, (AST_HTML_CONDITIONAL_OPEN_TAG_NODE_T*) node);
|
|
1579
|
+
break;
|
|
1153
1580
|
case AST_HTML_CLOSE_TAG_NODE:
|
|
1154
1581
|
return html_close_tag_nodeNodeFromCStruct(env, (AST_HTML_CLOSE_TAG_NODE_T*) node);
|
|
1155
1582
|
break;
|
|
1583
|
+
case AST_HTML_OMITTED_CLOSE_TAG_NODE:
|
|
1584
|
+
return html_omitted_close_tag_nodeNodeFromCStruct(env, (AST_HTML_OMITTED_CLOSE_TAG_NODE_T*) node);
|
|
1585
|
+
break;
|
|
1586
|
+
case AST_HTML_VIRTUAL_CLOSE_TAG_NODE:
|
|
1587
|
+
return html_virtual_close_tag_nodeNodeFromCStruct(env, (AST_HTML_VIRTUAL_CLOSE_TAG_NODE_T*) node);
|
|
1588
|
+
break;
|
|
1156
1589
|
case AST_HTML_ELEMENT_NODE:
|
|
1157
1590
|
return html_element_nodeNodeFromCStruct(env, (AST_HTML_ELEMENT_NODE_T*) node);
|
|
1158
1591
|
break;
|
|
1592
|
+
case AST_HTML_CONDITIONAL_ELEMENT_NODE:
|
|
1593
|
+
return html_conditional_element_nodeNodeFromCStruct(env, (AST_HTML_CONDITIONAL_ELEMENT_NODE_T*) node);
|
|
1594
|
+
break;
|
|
1159
1595
|
case AST_HTML_ATTRIBUTE_VALUE_NODE:
|
|
1160
1596
|
return html_attribute_value_nodeNodeFromCStruct(env, (AST_HTML_ATTRIBUTE_VALUE_NODE_T*) node);
|
|
1161
1597
|
break;
|
|
@@ -1165,6 +1601,15 @@ napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node) {
|
|
|
1165
1601
|
case AST_HTML_ATTRIBUTE_NODE:
|
|
1166
1602
|
return html_attribute_nodeNodeFromCStruct(env, (AST_HTML_ATTRIBUTE_NODE_T*) node);
|
|
1167
1603
|
break;
|
|
1604
|
+
case AST_RUBY_LITERAL_NODE:
|
|
1605
|
+
return ruby_literal_nodeNodeFromCStruct(env, (AST_RUBY_LITERAL_NODE_T*) node);
|
|
1606
|
+
break;
|
|
1607
|
+
case AST_RUBY_HTML_ATTRIBUTES_SPLAT_NODE:
|
|
1608
|
+
return ruby_html_attributes_splat_nodeNodeFromCStruct(env, (AST_RUBY_HTML_ATTRIBUTES_SPLAT_NODE_T*) node);
|
|
1609
|
+
break;
|
|
1610
|
+
case AST_ERB_OPEN_TAG_NODE:
|
|
1611
|
+
return erb_open_tag_nodeNodeFromCStruct(env, (AST_ERB_OPEN_TAG_NODE_T*) node);
|
|
1612
|
+
break;
|
|
1168
1613
|
case AST_HTML_TEXT_NODE:
|
|
1169
1614
|
return html_text_nodeNodeFromCStruct(env, (AST_HTML_TEXT_NODE_T*) node);
|
|
1170
1615
|
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.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.0/templates/javascript/packages/node/extension/nodes.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HERB_EXTENSION_NODES_H
|
|
5
5
|
#define HERB_EXTENSION_NODES_H
|
|
@@ -16,11 +16,18 @@ napi_value NodesArrayFromCArray(napi_env env, hb_array_T* array);
|
|
|
16
16
|
napi_value document_nodeNodeFromCStruct(napi_env env, AST_DOCUMENT_NODE_T* document_node);
|
|
17
17
|
napi_value literal_nodeNodeFromCStruct(napi_env env, AST_LITERAL_NODE_T* literal_node);
|
|
18
18
|
napi_value html_open_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_OPEN_TAG_NODE_T* html_open_tag_node);
|
|
19
|
+
napi_value html_conditional_open_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_CONDITIONAL_OPEN_TAG_NODE_T* html_conditional_open_tag_node);
|
|
19
20
|
napi_value html_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_CLOSE_TAG_NODE_T* html_close_tag_node);
|
|
21
|
+
napi_value html_omitted_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_OMITTED_CLOSE_TAG_NODE_T* html_omitted_close_tag_node);
|
|
22
|
+
napi_value html_virtual_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_VIRTUAL_CLOSE_TAG_NODE_T* html_virtual_close_tag_node);
|
|
20
23
|
napi_value html_element_nodeNodeFromCStruct(napi_env env, AST_HTML_ELEMENT_NODE_T* html_element_node);
|
|
24
|
+
napi_value html_conditional_element_nodeNodeFromCStruct(napi_env env, AST_HTML_CONDITIONAL_ELEMENT_NODE_T* html_conditional_element_node);
|
|
21
25
|
napi_value html_attribute_value_nodeNodeFromCStruct(napi_env env, AST_HTML_ATTRIBUTE_VALUE_NODE_T* html_attribute_value_node);
|
|
22
26
|
napi_value html_attribute_name_nodeNodeFromCStruct(napi_env env, AST_HTML_ATTRIBUTE_NAME_NODE_T* html_attribute_name_node);
|
|
23
27
|
napi_value html_attribute_nodeNodeFromCStruct(napi_env env, AST_HTML_ATTRIBUTE_NODE_T* html_attribute_node);
|
|
28
|
+
napi_value ruby_literal_nodeNodeFromCStruct(napi_env env, AST_RUBY_LITERAL_NODE_T* ruby_literal_node);
|
|
29
|
+
napi_value ruby_html_attributes_splat_nodeNodeFromCStruct(napi_env env, AST_RUBY_HTML_ATTRIBUTES_SPLAT_NODE_T* ruby_html_attributes_splat_node);
|
|
30
|
+
napi_value erb_open_tag_nodeNodeFromCStruct(napi_env env, AST_ERB_OPEN_TAG_NODE_T* erb_open_tag_node);
|
|
24
31
|
napi_value html_text_nodeNodeFromCStruct(napi_env env, AST_HTML_TEXT_NODE_T* html_text_node);
|
|
25
32
|
napi_value html_comment_nodeNodeFromCStruct(napi_env env, AST_HTML_COMMENT_NODE_T* html_comment_node);
|
|
26
33
|
napi_value html_doctype_nodeNodeFromCStruct(napi_env env, AST_HTML_DOCTYPE_NODE_T* html_doctype_node);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@herb-tools/node",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Native Node.js addon for HTML-aware ERB parsing using Herb.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -14,14 +14,18 @@
|
|
|
14
14
|
"gypfile": true,
|
|
15
15
|
"main": "./dist/herb-node.cjs",
|
|
16
16
|
"module": "./dist/herb-node.esm.js",
|
|
17
|
-
"types": "./dist/types/index
|
|
17
|
+
"types": "./dist/types/index.d.ts",
|
|
18
18
|
"exports": {
|
|
19
19
|
"./package.json": "./package.json",
|
|
20
20
|
".": {
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
"import": {
|
|
22
|
+
"types": "./dist/types/index.d.ts",
|
|
23
|
+
"default": "./dist/herb-node.esm.js"
|
|
24
|
+
},
|
|
25
|
+
"require": {
|
|
26
|
+
"types": "./dist/types/index.d.ts",
|
|
27
|
+
"default": "./dist/herb-node.cjs"
|
|
28
|
+
}
|
|
25
29
|
}
|
|
26
30
|
},
|
|
27
31
|
"scripts": {
|
|
@@ -48,9 +52,9 @@
|
|
|
48
52
|
"host": "https://github.com/marcoroth/herb/releases/download/"
|
|
49
53
|
},
|
|
50
54
|
"dependencies": {
|
|
51
|
-
"@herb-tools/core": "0.
|
|
55
|
+
"@herb-tools/core": "0.9.0",
|
|
52
56
|
"@mapbox/node-pre-gyp": "^2.0.3",
|
|
53
|
-
"node-addon-api": "^8.
|
|
57
|
+
"node-addon-api": "^8.6.0",
|
|
54
58
|
"node-pre-gyp-github": "^2.0.0"
|
|
55
59
|
},
|
|
56
60
|
"files": [
|