@herb-tools/node 0.8.10 → 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 +27 -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 +598 -73
- package/extension/error_helpers.h +20 -3
- package/extension/extension_helpers.cpp +40 -35
- package/extension/extension_helpers.h +2 -2
- package/extension/herb.cpp +194 -64
- package/extension/libherb/analyze/action_view/attribute_extraction_helpers.c +303 -0
- package/extension/libherb/analyze/action_view/attribute_extraction_helpers.h +36 -0
- package/extension/libherb/analyze/action_view/content_tag.c +78 -0
- package/extension/libherb/analyze/action_view/link_to.c +167 -0
- package/extension/libherb/analyze/action_view/registry.c +83 -0
- package/extension/libherb/analyze/action_view/tag.c +70 -0
- package/extension/libherb/analyze/action_view/tag_helper_handler.h +43 -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 +815 -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 +885 -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 +399 -0
- package/extension/libherb/analyze/prism_annotate.h +16 -0
- package/extension/libherb/analyze/render_nodes.c +761 -0
- package/extension/libherb/analyze/render_nodes.h +11 -0
- package/extension/libherb/{analyze_transform.c → analyze/transform.c} +24 -3
- package/extension/libherb/ast_node.c +17 -7
- package/extension/libherb/ast_node.h +11 -5
- package/extension/libherb/ast_nodes.c +760 -388
- package/extension/libherb/ast_nodes.h +155 -39
- package/extension/libherb/ast_pretty_print.c +265 -7
- package/extension/libherb/ast_pretty_print.h +6 -1
- package/extension/libherb/element_source.h +3 -8
- package/extension/libherb/errors.c +1455 -520
- package/extension/libherb/errors.h +207 -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 +43 -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/analyze/render_nodes.h +11 -0
- package/extension/libherb/include/ast_node.h +11 -5
- package/extension/libherb/include/ast_nodes.h +155 -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 +207 -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 +28 -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 +784 -247
- package/extension/libherb/parser.h +28 -2
- package/extension/libherb/parser_helpers.c +110 -23
- package/extension/libherb/parser_helpers.h +19 -3
- package/extension/libherb/parser_match_tags.c +130 -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 +68 -1
- package/extension/nodes.cpp +593 -6
- package/extension/nodes.h +10 -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.1/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
|
|
|
@@ -1040,6 +1462,142 @@ napi_value erb_unless_nodeNodeFromCStruct(napi_env env, AST_ERB_UNLESS_NODE_T* e
|
|
|
1040
1462
|
napi_set_named_property(env, result, "end_node", end_node);
|
|
1041
1463
|
|
|
1042
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
|
+
|
|
1043
1601
|
return result;
|
|
1044
1602
|
}
|
|
1045
1603
|
napi_value erb_yield_nodeNodeFromCStruct(napi_env env, AST_ERB_YIELD_NODE_T* erb_yield_node) {
|
|
@@ -1121,11 +1679,13 @@ napi_value NodesArrayFromCArray(napi_env env, hb_array_T* array) {
|
|
|
1121
1679
|
napi_create_array(env, &result);
|
|
1122
1680
|
|
|
1123
1681
|
if (array) {
|
|
1682
|
+
uint32_t index = 0;
|
|
1683
|
+
|
|
1124
1684
|
for (size_t i = 0; i < hb_array_size(array); i++) {
|
|
1125
1685
|
AST_NODE_T* child_node = (AST_NODE_T*) hb_array_get(array, i);
|
|
1126
1686
|
if (child_node) {
|
|
1127
1687
|
napi_value js_child = NodeFromCStruct(env, child_node);
|
|
1128
|
-
napi_set_element(env, result,
|
|
1688
|
+
napi_set_element(env, result, index++, js_child);
|
|
1129
1689
|
}
|
|
1130
1690
|
}
|
|
1131
1691
|
}
|
|
@@ -1150,12 +1710,24 @@ napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node) {
|
|
|
1150
1710
|
case AST_HTML_OPEN_TAG_NODE:
|
|
1151
1711
|
return html_open_tag_nodeNodeFromCStruct(env, (AST_HTML_OPEN_TAG_NODE_T*) node);
|
|
1152
1712
|
break;
|
|
1713
|
+
case AST_HTML_CONDITIONAL_OPEN_TAG_NODE:
|
|
1714
|
+
return html_conditional_open_tag_nodeNodeFromCStruct(env, (AST_HTML_CONDITIONAL_OPEN_TAG_NODE_T*) node);
|
|
1715
|
+
break;
|
|
1153
1716
|
case AST_HTML_CLOSE_TAG_NODE:
|
|
1154
1717
|
return html_close_tag_nodeNodeFromCStruct(env, (AST_HTML_CLOSE_TAG_NODE_T*) node);
|
|
1155
1718
|
break;
|
|
1719
|
+
case AST_HTML_OMITTED_CLOSE_TAG_NODE:
|
|
1720
|
+
return html_omitted_close_tag_nodeNodeFromCStruct(env, (AST_HTML_OMITTED_CLOSE_TAG_NODE_T*) node);
|
|
1721
|
+
break;
|
|
1722
|
+
case AST_HTML_VIRTUAL_CLOSE_TAG_NODE:
|
|
1723
|
+
return html_virtual_close_tag_nodeNodeFromCStruct(env, (AST_HTML_VIRTUAL_CLOSE_TAG_NODE_T*) node);
|
|
1724
|
+
break;
|
|
1156
1725
|
case AST_HTML_ELEMENT_NODE:
|
|
1157
1726
|
return html_element_nodeNodeFromCStruct(env, (AST_HTML_ELEMENT_NODE_T*) node);
|
|
1158
1727
|
break;
|
|
1728
|
+
case AST_HTML_CONDITIONAL_ELEMENT_NODE:
|
|
1729
|
+
return html_conditional_element_nodeNodeFromCStruct(env, (AST_HTML_CONDITIONAL_ELEMENT_NODE_T*) node);
|
|
1730
|
+
break;
|
|
1159
1731
|
case AST_HTML_ATTRIBUTE_VALUE_NODE:
|
|
1160
1732
|
return html_attribute_value_nodeNodeFromCStruct(env, (AST_HTML_ATTRIBUTE_VALUE_NODE_T*) node);
|
|
1161
1733
|
break;
|
|
@@ -1165,6 +1737,15 @@ napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node) {
|
|
|
1165
1737
|
case AST_HTML_ATTRIBUTE_NODE:
|
|
1166
1738
|
return html_attribute_nodeNodeFromCStruct(env, (AST_HTML_ATTRIBUTE_NODE_T*) node);
|
|
1167
1739
|
break;
|
|
1740
|
+
case AST_RUBY_LITERAL_NODE:
|
|
1741
|
+
return ruby_literal_nodeNodeFromCStruct(env, (AST_RUBY_LITERAL_NODE_T*) node);
|
|
1742
|
+
break;
|
|
1743
|
+
case AST_RUBY_HTML_ATTRIBUTES_SPLAT_NODE:
|
|
1744
|
+
return ruby_html_attributes_splat_nodeNodeFromCStruct(env, (AST_RUBY_HTML_ATTRIBUTES_SPLAT_NODE_T*) node);
|
|
1745
|
+
break;
|
|
1746
|
+
case AST_ERB_OPEN_TAG_NODE:
|
|
1747
|
+
return erb_open_tag_nodeNodeFromCStruct(env, (AST_ERB_OPEN_TAG_NODE_T*) node);
|
|
1748
|
+
break;
|
|
1168
1749
|
case AST_HTML_TEXT_NODE:
|
|
1169
1750
|
return html_text_nodeNodeFromCStruct(env, (AST_HTML_TEXT_NODE_T*) node);
|
|
1170
1751
|
break;
|
|
@@ -1228,6 +1809,12 @@ napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node) {
|
|
|
1228
1809
|
case AST_ERB_UNLESS_NODE:
|
|
1229
1810
|
return erb_unless_nodeNodeFromCStruct(env, (AST_ERB_UNLESS_NODE_T*) node);
|
|
1230
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;
|
|
1231
1818
|
case AST_ERB_YIELD_NODE:
|
|
1232
1819
|
return erb_yield_nodeNodeFromCStruct(env, (AST_ERB_YIELD_NODE_T*) node);
|
|
1233
1820
|
break;
|