@herb-tools/node 0.1.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 +3 -0
- package/README.md +9 -0
- package/binding.gyp +98 -0
- package/dist/herb-node.cjs +20 -0
- package/dist/herb-node.cjs.map +1 -0
- package/dist/herb-node.esm.js +33 -0
- package/dist/herb-node.esm.js.map +1 -0
- package/dist/types/index-cjs.d.cts +1 -0
- package/dist/types/index-esm.d.mts +8 -0
- package/dist/types/node-backend.d.ts +4 -0
- package/dist/types/util.d.ts +2 -0
- package/extension/error_helpers.cpp +340 -0
- package/extension/error_helpers.h +26 -0
- package/extension/extension_helpers.cpp +206 -0
- package/extension/extension_helpers.h +22 -0
- package/extension/herb.cpp +232 -0
- package/extension/libherb/analyze.c +989 -0
- package/extension/libherb/analyze_helpers.c +241 -0
- package/extension/libherb/analyzed_ruby.c +35 -0
- package/extension/libherb/array.c +137 -0
- package/extension/libherb/ast_node.c +81 -0
- package/extension/libherb/ast_nodes.c +866 -0
- package/extension/libherb/ast_pretty_print.c +588 -0
- package/extension/libherb/buffer.c +199 -0
- package/extension/libherb/errors.c +740 -0
- package/extension/libherb/extract.c +110 -0
- package/extension/libherb/herb.c +103 -0
- package/extension/libherb/html_util.c +143 -0
- package/extension/libherb/include/analyze.h +36 -0
- package/extension/libherb/include/analyze_helpers.h +43 -0
- package/extension/libherb/include/analyzed_ruby.h +33 -0
- package/extension/libherb/include/array.h +33 -0
- package/extension/libherb/include/ast_node.h +35 -0
- package/extension/libherb/include/ast_nodes.h +303 -0
- package/extension/libherb/include/ast_pretty_print.h +17 -0
- package/extension/libherb/include/buffer.h +36 -0
- package/extension/libherb/include/errors.h +125 -0
- package/extension/libherb/include/extract.h +20 -0
- package/extension/libherb/include/herb.h +32 -0
- package/extension/libherb/include/html_util.h +13 -0
- package/extension/libherb/include/io.h +9 -0
- package/extension/libherb/include/json.h +28 -0
- package/extension/libherb/include/lexer.h +13 -0
- package/extension/libherb/include/lexer_peek_helpers.h +23 -0
- package/extension/libherb/include/lexer_struct.h +32 -0
- package/extension/libherb/include/location.h +25 -0
- package/extension/libherb/include/macros.h +10 -0
- package/extension/libherb/include/memory.h +12 -0
- package/extension/libherb/include/parser.h +22 -0
- package/extension/libherb/include/parser_helpers.h +33 -0
- package/extension/libherb/include/position.h +22 -0
- package/extension/libherb/include/pretty_print.h +53 -0
- package/extension/libherb/include/prism_helpers.h +18 -0
- package/extension/libherb/include/range.h +23 -0
- package/extension/libherb/include/ruby_parser.h +6 -0
- package/extension/libherb/include/token.h +25 -0
- package/extension/libherb/include/token_matchers.h +21 -0
- package/extension/libherb/include/token_struct.h +51 -0
- package/extension/libherb/include/util.h +25 -0
- package/extension/libherb/include/version.h +6 -0
- package/extension/libherb/include/visitor.h +11 -0
- package/extension/libherb/io.c +30 -0
- package/extension/libherb/json.c +205 -0
- package/extension/libherb/lexer.c +284 -0
- package/extension/libherb/lexer_peek_helpers.c +59 -0
- package/extension/libherb/location.c +41 -0
- package/extension/libherb/main.c +162 -0
- package/extension/libherb/memory.c +53 -0
- package/extension/libherb/parser.c +704 -0
- package/extension/libherb/parser_helpers.c +161 -0
- package/extension/libherb/position.c +33 -0
- package/extension/libherb/pretty_print.c +242 -0
- package/extension/libherb/prism_helpers.c +50 -0
- package/extension/libherb/range.c +38 -0
- package/extension/libherb/ruby_parser.c +47 -0
- package/extension/libherb/token.c +194 -0
- package/extension/libherb/token_matchers.c +32 -0
- package/extension/libherb/util.c +128 -0
- package/extension/libherb/visitor.c +321 -0
- package/extension/nodes.cpp +1060 -0
- package/extension/nodes.h +44 -0
- package/extension/prism/include/prism/ast.h +7964 -0
- package/extension/prism/include/prism/defines.h +260 -0
- package/extension/prism/include/prism/diagnostic.h +451 -0
- package/extension/prism/include/prism/encoding.h +283 -0
- package/extension/prism/include/prism/node.h +129 -0
- package/extension/prism/include/prism/options.h +442 -0
- package/extension/prism/include/prism/pack.h +163 -0
- package/extension/prism/include/prism/parser.h +933 -0
- package/extension/prism/include/prism/prettyprint.h +34 -0
- package/extension/prism/include/prism/regexp.h +43 -0
- package/extension/prism/include/prism/static_literals.h +121 -0
- package/extension/prism/include/prism/util/pm_buffer.h +228 -0
- package/extension/prism/include/prism/util/pm_char.h +204 -0
- package/extension/prism/include/prism/util/pm_constant_pool.h +218 -0
- package/extension/prism/include/prism/util/pm_integer.h +126 -0
- package/extension/prism/include/prism/util/pm_list.h +97 -0
- package/extension/prism/include/prism/util/pm_memchr.h +29 -0
- package/extension/prism/include/prism/util/pm_newline_list.h +113 -0
- package/extension/prism/include/prism/util/pm_string.h +190 -0
- package/extension/prism/include/prism/util/pm_strncasecmp.h +32 -0
- package/extension/prism/include/prism/util/pm_strpbrk.h +46 -0
- package/extension/prism/include/prism/version.h +29 -0
- package/extension/prism/include/prism.h +383 -0
- package/extension/prism/src/diagnostic.c +842 -0
- package/extension/prism/src/encoding.c +5235 -0
- package/extension/prism/src/node.c +8674 -0
- package/extension/prism/src/options.c +328 -0
- package/extension/prism/src/pack.c +509 -0
- package/extension/prism/src/prettyprint.c +8939 -0
- package/extension/prism/src/prism.c +23184 -0
- package/extension/prism/src/regexp.c +790 -0
- package/extension/prism/src/serialize.c +2266 -0
- package/extension/prism/src/static_literals.c +617 -0
- package/extension/prism/src/token_type.c +701 -0
- package/extension/prism/src/util/pm_buffer.c +357 -0
- package/extension/prism/src/util/pm_char.c +318 -0
- package/extension/prism/src/util/pm_constant_pool.c +342 -0
- package/extension/prism/src/util/pm_integer.c +670 -0
- package/extension/prism/src/util/pm_list.c +49 -0
- package/extension/prism/src/util/pm_memchr.c +35 -0
- package/extension/prism/src/util/pm_newline_list.c +125 -0
- package/extension/prism/src/util/pm_string.c +383 -0
- package/extension/prism/src/util/pm_strncasecmp.c +36 -0
- package/extension/prism/src/util/pm_strpbrk.c +206 -0
- package/package.json +74 -0
- package/src/index-cjs.cts +22 -0
- package/src/index-esm.mts +28 -0
- package/src/node-backend.ts +9 -0
- package/src/types/global.d.ts +18 -0
- package/src/util.ts +35 -0
|
@@ -0,0 +1,1060 @@
|
|
|
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/templates/javascript/packages/node/extension/nodes.cpp.erb
|
|
3
|
+
|
|
4
|
+
#include <node_api.h>
|
|
5
|
+
#include "error_helpers.h"
|
|
6
|
+
#include "extension_helpers.h"
|
|
7
|
+
#include "nodes.h"
|
|
8
|
+
|
|
9
|
+
extern "C" {
|
|
10
|
+
#include "../extension/libherb/include/herb.h"
|
|
11
|
+
#include "../extension/libherb/include/token.h"
|
|
12
|
+
#include "../extension/libherb/include/array.h"
|
|
13
|
+
#include "../extension/libherb/include/ast_node.h"
|
|
14
|
+
#include "../extension/libherb/include/ast_nodes.h"
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node);
|
|
18
|
+
napi_value NodesArrayFromCArray(napi_env env, array_T* array);
|
|
19
|
+
|
|
20
|
+
napi_value document_nodeNodeFromCStruct(napi_env env, AST_DOCUMENT_NODE_T* document_node) {
|
|
21
|
+
if (!document_node) {
|
|
22
|
+
napi_value null_value;
|
|
23
|
+
napi_get_null(env, &null_value);
|
|
24
|
+
return null_value;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
napi_value result;
|
|
28
|
+
napi_create_object(env, &result);
|
|
29
|
+
|
|
30
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&document_node->base));
|
|
31
|
+
napi_set_named_property(env, result, "type", type);
|
|
32
|
+
|
|
33
|
+
napi_value location = CreateLocation(env, document_node->base.location);
|
|
34
|
+
napi_set_named_property(env, result, "location", location);
|
|
35
|
+
|
|
36
|
+
napi_value errors = ErrorsArrayFromCArray(env, document_node->base.errors);
|
|
37
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
38
|
+
|
|
39
|
+
napi_value children = NodesArrayFromCArray(env, document_node->children);
|
|
40
|
+
napi_set_named_property(env, result, "children", children);
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
napi_value literal_nodeNodeFromCStruct(napi_env env, AST_LITERAL_NODE_T* literal_node) {
|
|
46
|
+
if (!literal_node) {
|
|
47
|
+
napi_value null_value;
|
|
48
|
+
napi_get_null(env, &null_value);
|
|
49
|
+
return null_value;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
napi_value result;
|
|
53
|
+
napi_create_object(env, &result);
|
|
54
|
+
|
|
55
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&literal_node->base));
|
|
56
|
+
napi_set_named_property(env, result, "type", type);
|
|
57
|
+
|
|
58
|
+
napi_value location = CreateLocation(env, literal_node->base.location);
|
|
59
|
+
napi_set_named_property(env, result, "location", location);
|
|
60
|
+
|
|
61
|
+
napi_value errors = ErrorsArrayFromCArray(env, literal_node->base.errors);
|
|
62
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
63
|
+
|
|
64
|
+
napi_value content = CreateString(env, literal_node->content);
|
|
65
|
+
napi_set_named_property(env, result, "content", content);
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
napi_value html_open_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_OPEN_TAG_NODE_T* html_open_tag_node) {
|
|
71
|
+
if (!html_open_tag_node) {
|
|
72
|
+
napi_value null_value;
|
|
73
|
+
napi_get_null(env, &null_value);
|
|
74
|
+
return null_value;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
napi_value result;
|
|
78
|
+
napi_create_object(env, &result);
|
|
79
|
+
|
|
80
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_open_tag_node->base));
|
|
81
|
+
napi_set_named_property(env, result, "type", type);
|
|
82
|
+
|
|
83
|
+
napi_value location = CreateLocation(env, html_open_tag_node->base.location);
|
|
84
|
+
napi_set_named_property(env, result, "location", location);
|
|
85
|
+
|
|
86
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_open_tag_node->base.errors);
|
|
87
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
88
|
+
|
|
89
|
+
napi_value tag_opening = CreateToken(env, html_open_tag_node->tag_opening);
|
|
90
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
91
|
+
|
|
92
|
+
napi_value tag_name = CreateToken(env, html_open_tag_node->tag_name);
|
|
93
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
94
|
+
|
|
95
|
+
napi_value tag_closing = CreateToken(env, html_open_tag_node->tag_closing);
|
|
96
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
97
|
+
|
|
98
|
+
napi_value children = NodesArrayFromCArray(env, html_open_tag_node->children);
|
|
99
|
+
napi_set_named_property(env, result, "children", children);
|
|
100
|
+
|
|
101
|
+
napi_value is_void;
|
|
102
|
+
napi_get_boolean(env, html_open_tag_node->is_void, &is_void);
|
|
103
|
+
napi_set_named_property(env, result, "is_void", is_void);
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
napi_value html_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_CLOSE_TAG_NODE_T* html_close_tag_node) {
|
|
109
|
+
if (!html_close_tag_node) {
|
|
110
|
+
napi_value null_value;
|
|
111
|
+
napi_get_null(env, &null_value);
|
|
112
|
+
return null_value;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
napi_value result;
|
|
116
|
+
napi_create_object(env, &result);
|
|
117
|
+
|
|
118
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_close_tag_node->base));
|
|
119
|
+
napi_set_named_property(env, result, "type", type);
|
|
120
|
+
|
|
121
|
+
napi_value location = CreateLocation(env, html_close_tag_node->base.location);
|
|
122
|
+
napi_set_named_property(env, result, "location", location);
|
|
123
|
+
|
|
124
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_close_tag_node->base.errors);
|
|
125
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
126
|
+
|
|
127
|
+
napi_value tag_opening = CreateToken(env, html_close_tag_node->tag_opening);
|
|
128
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
129
|
+
|
|
130
|
+
napi_value tag_name = CreateToken(env, html_close_tag_node->tag_name);
|
|
131
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
132
|
+
|
|
133
|
+
napi_value tag_closing = CreateToken(env, html_close_tag_node->tag_closing);
|
|
134
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
return result;
|
|
138
|
+
}
|
|
139
|
+
napi_value html_self_close_tag_nodeNodeFromCStruct(napi_env env, AST_HTML_SELF_CLOSE_TAG_NODE_T* html_self_close_tag_node) {
|
|
140
|
+
if (!html_self_close_tag_node) {
|
|
141
|
+
napi_value null_value;
|
|
142
|
+
napi_get_null(env, &null_value);
|
|
143
|
+
return null_value;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
napi_value result;
|
|
147
|
+
napi_create_object(env, &result);
|
|
148
|
+
|
|
149
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_self_close_tag_node->base));
|
|
150
|
+
napi_set_named_property(env, result, "type", type);
|
|
151
|
+
|
|
152
|
+
napi_value location = CreateLocation(env, html_self_close_tag_node->base.location);
|
|
153
|
+
napi_set_named_property(env, result, "location", location);
|
|
154
|
+
|
|
155
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_self_close_tag_node->base.errors);
|
|
156
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
157
|
+
|
|
158
|
+
napi_value tag_opening = CreateToken(env, html_self_close_tag_node->tag_opening);
|
|
159
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
160
|
+
|
|
161
|
+
napi_value tag_name = CreateToken(env, html_self_close_tag_node->tag_name);
|
|
162
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
163
|
+
|
|
164
|
+
napi_value attributes = NodesArrayFromCArray(env, html_self_close_tag_node->attributes);
|
|
165
|
+
napi_set_named_property(env, result, "attributes", attributes);
|
|
166
|
+
|
|
167
|
+
napi_value tag_closing = CreateToken(env, html_self_close_tag_node->tag_closing);
|
|
168
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
169
|
+
|
|
170
|
+
napi_value is_void;
|
|
171
|
+
napi_get_boolean(env, html_self_close_tag_node->is_void, &is_void);
|
|
172
|
+
napi_set_named_property(env, result, "is_void", is_void);
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
napi_value html_element_nodeNodeFromCStruct(napi_env env, AST_HTML_ELEMENT_NODE_T* html_element_node) {
|
|
178
|
+
if (!html_element_node) {
|
|
179
|
+
napi_value null_value;
|
|
180
|
+
napi_get_null(env, &null_value);
|
|
181
|
+
return null_value;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
napi_value result;
|
|
185
|
+
napi_create_object(env, &result);
|
|
186
|
+
|
|
187
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_element_node->base));
|
|
188
|
+
napi_set_named_property(env, result, "type", type);
|
|
189
|
+
|
|
190
|
+
napi_value location = CreateLocation(env, html_element_node->base.location);
|
|
191
|
+
napi_set_named_property(env, result, "location", location);
|
|
192
|
+
|
|
193
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_element_node->base.errors);
|
|
194
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
195
|
+
|
|
196
|
+
napi_value open_tag = NodeFromCStruct(env, (AST_NODE_T*) html_element_node->open_tag);
|
|
197
|
+
napi_set_named_property(env, result, "open_tag", open_tag);
|
|
198
|
+
|
|
199
|
+
napi_value tag_name = CreateToken(env, html_element_node->tag_name);
|
|
200
|
+
napi_set_named_property(env, result, "tag_name", tag_name);
|
|
201
|
+
|
|
202
|
+
napi_value body = NodesArrayFromCArray(env, html_element_node->body);
|
|
203
|
+
napi_set_named_property(env, result, "body", body);
|
|
204
|
+
|
|
205
|
+
napi_value close_tag = NodeFromCStruct(env, (AST_NODE_T*) html_element_node->close_tag);
|
|
206
|
+
napi_set_named_property(env, result, "close_tag", close_tag);
|
|
207
|
+
|
|
208
|
+
napi_value is_void;
|
|
209
|
+
napi_get_boolean(env, html_element_node->is_void, &is_void);
|
|
210
|
+
napi_set_named_property(env, result, "is_void", is_void);
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
return result;
|
|
214
|
+
}
|
|
215
|
+
napi_value html_attribute_value_nodeNodeFromCStruct(napi_env env, AST_HTML_ATTRIBUTE_VALUE_NODE_T* html_attribute_value_node) {
|
|
216
|
+
if (!html_attribute_value_node) {
|
|
217
|
+
napi_value null_value;
|
|
218
|
+
napi_get_null(env, &null_value);
|
|
219
|
+
return null_value;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
napi_value result;
|
|
223
|
+
napi_create_object(env, &result);
|
|
224
|
+
|
|
225
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_attribute_value_node->base));
|
|
226
|
+
napi_set_named_property(env, result, "type", type);
|
|
227
|
+
|
|
228
|
+
napi_value location = CreateLocation(env, html_attribute_value_node->base.location);
|
|
229
|
+
napi_set_named_property(env, result, "location", location);
|
|
230
|
+
|
|
231
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_attribute_value_node->base.errors);
|
|
232
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
233
|
+
|
|
234
|
+
napi_value open_quote = CreateToken(env, html_attribute_value_node->open_quote);
|
|
235
|
+
napi_set_named_property(env, result, "open_quote", open_quote);
|
|
236
|
+
|
|
237
|
+
napi_value children = NodesArrayFromCArray(env, html_attribute_value_node->children);
|
|
238
|
+
napi_set_named_property(env, result, "children", children);
|
|
239
|
+
|
|
240
|
+
napi_value close_quote = CreateToken(env, html_attribute_value_node->close_quote);
|
|
241
|
+
napi_set_named_property(env, result, "close_quote", close_quote);
|
|
242
|
+
|
|
243
|
+
napi_value quoted;
|
|
244
|
+
napi_get_boolean(env, html_attribute_value_node->quoted, "ed);
|
|
245
|
+
napi_set_named_property(env, result, "quoted", quoted);
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
return result;
|
|
249
|
+
}
|
|
250
|
+
napi_value html_attribute_name_nodeNodeFromCStruct(napi_env env, AST_HTML_ATTRIBUTE_NAME_NODE_T* html_attribute_name_node) {
|
|
251
|
+
if (!html_attribute_name_node) {
|
|
252
|
+
napi_value null_value;
|
|
253
|
+
napi_get_null(env, &null_value);
|
|
254
|
+
return null_value;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
napi_value result;
|
|
258
|
+
napi_create_object(env, &result);
|
|
259
|
+
|
|
260
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_attribute_name_node->base));
|
|
261
|
+
napi_set_named_property(env, result, "type", type);
|
|
262
|
+
|
|
263
|
+
napi_value location = CreateLocation(env, html_attribute_name_node->base.location);
|
|
264
|
+
napi_set_named_property(env, result, "location", location);
|
|
265
|
+
|
|
266
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_attribute_name_node->base.errors);
|
|
267
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
268
|
+
|
|
269
|
+
napi_value name = CreateToken(env, html_attribute_name_node->name);
|
|
270
|
+
napi_set_named_property(env, result, "name", name);
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
napi_value html_attribute_nodeNodeFromCStruct(napi_env env, AST_HTML_ATTRIBUTE_NODE_T* html_attribute_node) {
|
|
276
|
+
if (!html_attribute_node) {
|
|
277
|
+
napi_value null_value;
|
|
278
|
+
napi_get_null(env, &null_value);
|
|
279
|
+
return null_value;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
napi_value result;
|
|
283
|
+
napi_create_object(env, &result);
|
|
284
|
+
|
|
285
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_attribute_node->base));
|
|
286
|
+
napi_set_named_property(env, result, "type", type);
|
|
287
|
+
|
|
288
|
+
napi_value location = CreateLocation(env, html_attribute_node->base.location);
|
|
289
|
+
napi_set_named_property(env, result, "location", location);
|
|
290
|
+
|
|
291
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_attribute_node->base.errors);
|
|
292
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
293
|
+
|
|
294
|
+
napi_value name = NodeFromCStruct(env, (AST_NODE_T*) html_attribute_node->name);
|
|
295
|
+
napi_set_named_property(env, result, "name", name);
|
|
296
|
+
|
|
297
|
+
napi_value equals = CreateToken(env, html_attribute_node->equals);
|
|
298
|
+
napi_set_named_property(env, result, "equals", equals);
|
|
299
|
+
|
|
300
|
+
napi_value value = NodeFromCStruct(env, (AST_NODE_T*) html_attribute_node->value);
|
|
301
|
+
napi_set_named_property(env, result, "value", value);
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
return result;
|
|
305
|
+
}
|
|
306
|
+
napi_value html_text_nodeNodeFromCStruct(napi_env env, AST_HTML_TEXT_NODE_T* html_text_node) {
|
|
307
|
+
if (!html_text_node) {
|
|
308
|
+
napi_value null_value;
|
|
309
|
+
napi_get_null(env, &null_value);
|
|
310
|
+
return null_value;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
napi_value result;
|
|
314
|
+
napi_create_object(env, &result);
|
|
315
|
+
|
|
316
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_text_node->base));
|
|
317
|
+
napi_set_named_property(env, result, "type", type);
|
|
318
|
+
|
|
319
|
+
napi_value location = CreateLocation(env, html_text_node->base.location);
|
|
320
|
+
napi_set_named_property(env, result, "location", location);
|
|
321
|
+
|
|
322
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_text_node->base.errors);
|
|
323
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
324
|
+
|
|
325
|
+
napi_value content = CreateString(env, html_text_node->content);
|
|
326
|
+
napi_set_named_property(env, result, "content", content);
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
return result;
|
|
330
|
+
}
|
|
331
|
+
napi_value html_comment_nodeNodeFromCStruct(napi_env env, AST_HTML_COMMENT_NODE_T* html_comment_node) {
|
|
332
|
+
if (!html_comment_node) {
|
|
333
|
+
napi_value null_value;
|
|
334
|
+
napi_get_null(env, &null_value);
|
|
335
|
+
return null_value;
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
napi_value result;
|
|
339
|
+
napi_create_object(env, &result);
|
|
340
|
+
|
|
341
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_comment_node->base));
|
|
342
|
+
napi_set_named_property(env, result, "type", type);
|
|
343
|
+
|
|
344
|
+
napi_value location = CreateLocation(env, html_comment_node->base.location);
|
|
345
|
+
napi_set_named_property(env, result, "location", location);
|
|
346
|
+
|
|
347
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_comment_node->base.errors);
|
|
348
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
349
|
+
|
|
350
|
+
napi_value comment_start = CreateToken(env, html_comment_node->comment_start);
|
|
351
|
+
napi_set_named_property(env, result, "comment_start", comment_start);
|
|
352
|
+
|
|
353
|
+
napi_value children = NodesArrayFromCArray(env, html_comment_node->children);
|
|
354
|
+
napi_set_named_property(env, result, "children", children);
|
|
355
|
+
|
|
356
|
+
napi_value comment_end = CreateToken(env, html_comment_node->comment_end);
|
|
357
|
+
napi_set_named_property(env, result, "comment_end", comment_end);
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
return result;
|
|
361
|
+
}
|
|
362
|
+
napi_value html_doctype_nodeNodeFromCStruct(napi_env env, AST_HTML_DOCTYPE_NODE_T* html_doctype_node) {
|
|
363
|
+
if (!html_doctype_node) {
|
|
364
|
+
napi_value null_value;
|
|
365
|
+
napi_get_null(env, &null_value);
|
|
366
|
+
return null_value;
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
napi_value result;
|
|
370
|
+
napi_create_object(env, &result);
|
|
371
|
+
|
|
372
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&html_doctype_node->base));
|
|
373
|
+
napi_set_named_property(env, result, "type", type);
|
|
374
|
+
|
|
375
|
+
napi_value location = CreateLocation(env, html_doctype_node->base.location);
|
|
376
|
+
napi_set_named_property(env, result, "location", location);
|
|
377
|
+
|
|
378
|
+
napi_value errors = ErrorsArrayFromCArray(env, html_doctype_node->base.errors);
|
|
379
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
380
|
+
|
|
381
|
+
napi_value tag_opening = CreateToken(env, html_doctype_node->tag_opening);
|
|
382
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
383
|
+
|
|
384
|
+
napi_value children = NodesArrayFromCArray(env, html_doctype_node->children);
|
|
385
|
+
napi_set_named_property(env, result, "children", children);
|
|
386
|
+
|
|
387
|
+
napi_value tag_closing = CreateToken(env, html_doctype_node->tag_closing);
|
|
388
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
389
|
+
|
|
390
|
+
|
|
391
|
+
return result;
|
|
392
|
+
}
|
|
393
|
+
napi_value whitespace_nodeNodeFromCStruct(napi_env env, AST_WHITESPACE_NODE_T* whitespace_node) {
|
|
394
|
+
if (!whitespace_node) {
|
|
395
|
+
napi_value null_value;
|
|
396
|
+
napi_get_null(env, &null_value);
|
|
397
|
+
return null_value;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
napi_value result;
|
|
401
|
+
napi_create_object(env, &result);
|
|
402
|
+
|
|
403
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&whitespace_node->base));
|
|
404
|
+
napi_set_named_property(env, result, "type", type);
|
|
405
|
+
|
|
406
|
+
napi_value location = CreateLocation(env, whitespace_node->base.location);
|
|
407
|
+
napi_set_named_property(env, result, "location", location);
|
|
408
|
+
|
|
409
|
+
napi_value errors = ErrorsArrayFromCArray(env, whitespace_node->base.errors);
|
|
410
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
411
|
+
|
|
412
|
+
napi_value value = CreateToken(env, whitespace_node->value);
|
|
413
|
+
napi_set_named_property(env, result, "value", value);
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
return result;
|
|
417
|
+
}
|
|
418
|
+
napi_value erb_content_nodeNodeFromCStruct(napi_env env, AST_ERB_CONTENT_NODE_T* erb_content_node) {
|
|
419
|
+
if (!erb_content_node) {
|
|
420
|
+
napi_value null_value;
|
|
421
|
+
napi_get_null(env, &null_value);
|
|
422
|
+
return null_value;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
napi_value result;
|
|
426
|
+
napi_create_object(env, &result);
|
|
427
|
+
|
|
428
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_content_node->base));
|
|
429
|
+
napi_set_named_property(env, result, "type", type);
|
|
430
|
+
|
|
431
|
+
napi_value location = CreateLocation(env, erb_content_node->base.location);
|
|
432
|
+
napi_set_named_property(env, result, "location", location);
|
|
433
|
+
|
|
434
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_content_node->base.errors);
|
|
435
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
436
|
+
|
|
437
|
+
napi_value tag_opening = CreateToken(env, erb_content_node->tag_opening);
|
|
438
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
439
|
+
|
|
440
|
+
napi_value content = CreateToken(env, erb_content_node->content);
|
|
441
|
+
napi_set_named_property(env, result, "content", content);
|
|
442
|
+
|
|
443
|
+
napi_value tag_closing = CreateToken(env, erb_content_node->tag_closing);
|
|
444
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
445
|
+
|
|
446
|
+
napi_value analyzed_ruby;
|
|
447
|
+
napi_get_null(env, &analyzed_ruby);
|
|
448
|
+
napi_set_named_property(env, result, "analyzed_ruby", analyzed_ruby);
|
|
449
|
+
|
|
450
|
+
napi_value parsed;
|
|
451
|
+
napi_get_boolean(env, erb_content_node->parsed, &parsed);
|
|
452
|
+
napi_set_named_property(env, result, "parsed", parsed);
|
|
453
|
+
|
|
454
|
+
napi_value valid;
|
|
455
|
+
napi_get_boolean(env, erb_content_node->valid, &valid);
|
|
456
|
+
napi_set_named_property(env, result, "valid", valid);
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
return result;
|
|
460
|
+
}
|
|
461
|
+
napi_value erb_end_nodeNodeFromCStruct(napi_env env, AST_ERB_END_NODE_T* erb_end_node) {
|
|
462
|
+
if (!erb_end_node) {
|
|
463
|
+
napi_value null_value;
|
|
464
|
+
napi_get_null(env, &null_value);
|
|
465
|
+
return null_value;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
napi_value result;
|
|
469
|
+
napi_create_object(env, &result);
|
|
470
|
+
|
|
471
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_end_node->base));
|
|
472
|
+
napi_set_named_property(env, result, "type", type);
|
|
473
|
+
|
|
474
|
+
napi_value location = CreateLocation(env, erb_end_node->base.location);
|
|
475
|
+
napi_set_named_property(env, result, "location", location);
|
|
476
|
+
|
|
477
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_end_node->base.errors);
|
|
478
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
479
|
+
|
|
480
|
+
napi_value tag_opening = CreateToken(env, erb_end_node->tag_opening);
|
|
481
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
482
|
+
|
|
483
|
+
napi_value content = CreateToken(env, erb_end_node->content);
|
|
484
|
+
napi_set_named_property(env, result, "content", content);
|
|
485
|
+
|
|
486
|
+
napi_value tag_closing = CreateToken(env, erb_end_node->tag_closing);
|
|
487
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
return result;
|
|
491
|
+
}
|
|
492
|
+
napi_value erb_else_nodeNodeFromCStruct(napi_env env, AST_ERB_ELSE_NODE_T* erb_else_node) {
|
|
493
|
+
if (!erb_else_node) {
|
|
494
|
+
napi_value null_value;
|
|
495
|
+
napi_get_null(env, &null_value);
|
|
496
|
+
return null_value;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
napi_value result;
|
|
500
|
+
napi_create_object(env, &result);
|
|
501
|
+
|
|
502
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_else_node->base));
|
|
503
|
+
napi_set_named_property(env, result, "type", type);
|
|
504
|
+
|
|
505
|
+
napi_value location = CreateLocation(env, erb_else_node->base.location);
|
|
506
|
+
napi_set_named_property(env, result, "location", location);
|
|
507
|
+
|
|
508
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_else_node->base.errors);
|
|
509
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
510
|
+
|
|
511
|
+
napi_value tag_opening = CreateToken(env, erb_else_node->tag_opening);
|
|
512
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
513
|
+
|
|
514
|
+
napi_value content = CreateToken(env, erb_else_node->content);
|
|
515
|
+
napi_set_named_property(env, result, "content", content);
|
|
516
|
+
|
|
517
|
+
napi_value tag_closing = CreateToken(env, erb_else_node->tag_closing);
|
|
518
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
519
|
+
|
|
520
|
+
napi_value statements = NodesArrayFromCArray(env, erb_else_node->statements);
|
|
521
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
return result;
|
|
525
|
+
}
|
|
526
|
+
napi_value erb_if_nodeNodeFromCStruct(napi_env env, AST_ERB_IF_NODE_T* erb_if_node) {
|
|
527
|
+
if (!erb_if_node) {
|
|
528
|
+
napi_value null_value;
|
|
529
|
+
napi_get_null(env, &null_value);
|
|
530
|
+
return null_value;
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
napi_value result;
|
|
534
|
+
napi_create_object(env, &result);
|
|
535
|
+
|
|
536
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_if_node->base));
|
|
537
|
+
napi_set_named_property(env, result, "type", type);
|
|
538
|
+
|
|
539
|
+
napi_value location = CreateLocation(env, erb_if_node->base.location);
|
|
540
|
+
napi_set_named_property(env, result, "location", location);
|
|
541
|
+
|
|
542
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_if_node->base.errors);
|
|
543
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
544
|
+
|
|
545
|
+
napi_value tag_opening = CreateToken(env, erb_if_node->tag_opening);
|
|
546
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
547
|
+
|
|
548
|
+
napi_value content = CreateToken(env, erb_if_node->content);
|
|
549
|
+
napi_set_named_property(env, result, "content", content);
|
|
550
|
+
|
|
551
|
+
napi_value tag_closing = CreateToken(env, erb_if_node->tag_closing);
|
|
552
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
553
|
+
|
|
554
|
+
napi_value statements = NodesArrayFromCArray(env, erb_if_node->statements);
|
|
555
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
556
|
+
|
|
557
|
+
napi_value subsequent = NodeFromCStruct(env, (AST_NODE_T*) erb_if_node->subsequent);
|
|
558
|
+
napi_set_named_property(env, result, "subsequent", subsequent);
|
|
559
|
+
|
|
560
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_if_node->end_node);
|
|
561
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
return result;
|
|
565
|
+
}
|
|
566
|
+
napi_value erb_block_nodeNodeFromCStruct(napi_env env, AST_ERB_BLOCK_NODE_T* erb_block_node) {
|
|
567
|
+
if (!erb_block_node) {
|
|
568
|
+
napi_value null_value;
|
|
569
|
+
napi_get_null(env, &null_value);
|
|
570
|
+
return null_value;
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
napi_value result;
|
|
574
|
+
napi_create_object(env, &result);
|
|
575
|
+
|
|
576
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_block_node->base));
|
|
577
|
+
napi_set_named_property(env, result, "type", type);
|
|
578
|
+
|
|
579
|
+
napi_value location = CreateLocation(env, erb_block_node->base.location);
|
|
580
|
+
napi_set_named_property(env, result, "location", location);
|
|
581
|
+
|
|
582
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_block_node->base.errors);
|
|
583
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
584
|
+
|
|
585
|
+
napi_value tag_opening = CreateToken(env, erb_block_node->tag_opening);
|
|
586
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
587
|
+
|
|
588
|
+
napi_value content = CreateToken(env, erb_block_node->content);
|
|
589
|
+
napi_set_named_property(env, result, "content", content);
|
|
590
|
+
|
|
591
|
+
napi_value tag_closing = CreateToken(env, erb_block_node->tag_closing);
|
|
592
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
593
|
+
|
|
594
|
+
napi_value body = NodesArrayFromCArray(env, erb_block_node->body);
|
|
595
|
+
napi_set_named_property(env, result, "body", body);
|
|
596
|
+
|
|
597
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_block_node->end_node);
|
|
598
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
return result;
|
|
602
|
+
}
|
|
603
|
+
napi_value erb_when_nodeNodeFromCStruct(napi_env env, AST_ERB_WHEN_NODE_T* erb_when_node) {
|
|
604
|
+
if (!erb_when_node) {
|
|
605
|
+
napi_value null_value;
|
|
606
|
+
napi_get_null(env, &null_value);
|
|
607
|
+
return null_value;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
napi_value result;
|
|
611
|
+
napi_create_object(env, &result);
|
|
612
|
+
|
|
613
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_when_node->base));
|
|
614
|
+
napi_set_named_property(env, result, "type", type);
|
|
615
|
+
|
|
616
|
+
napi_value location = CreateLocation(env, erb_when_node->base.location);
|
|
617
|
+
napi_set_named_property(env, result, "location", location);
|
|
618
|
+
|
|
619
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_when_node->base.errors);
|
|
620
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
621
|
+
|
|
622
|
+
napi_value tag_opening = CreateToken(env, erb_when_node->tag_opening);
|
|
623
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
624
|
+
|
|
625
|
+
napi_value content = CreateToken(env, erb_when_node->content);
|
|
626
|
+
napi_set_named_property(env, result, "content", content);
|
|
627
|
+
|
|
628
|
+
napi_value tag_closing = CreateToken(env, erb_when_node->tag_closing);
|
|
629
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
630
|
+
|
|
631
|
+
napi_value statements = NodesArrayFromCArray(env, erb_when_node->statements);
|
|
632
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
633
|
+
|
|
634
|
+
|
|
635
|
+
return result;
|
|
636
|
+
}
|
|
637
|
+
napi_value erb_case_nodeNodeFromCStruct(napi_env env, AST_ERB_CASE_NODE_T* erb_case_node) {
|
|
638
|
+
if (!erb_case_node) {
|
|
639
|
+
napi_value null_value;
|
|
640
|
+
napi_get_null(env, &null_value);
|
|
641
|
+
return null_value;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
napi_value result;
|
|
645
|
+
napi_create_object(env, &result);
|
|
646
|
+
|
|
647
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_case_node->base));
|
|
648
|
+
napi_set_named_property(env, result, "type", type);
|
|
649
|
+
|
|
650
|
+
napi_value location = CreateLocation(env, erb_case_node->base.location);
|
|
651
|
+
napi_set_named_property(env, result, "location", location);
|
|
652
|
+
|
|
653
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_case_node->base.errors);
|
|
654
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
655
|
+
|
|
656
|
+
napi_value tag_opening = CreateToken(env, erb_case_node->tag_opening);
|
|
657
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
658
|
+
|
|
659
|
+
napi_value content = CreateToken(env, erb_case_node->content);
|
|
660
|
+
napi_set_named_property(env, result, "content", content);
|
|
661
|
+
|
|
662
|
+
napi_value tag_closing = CreateToken(env, erb_case_node->tag_closing);
|
|
663
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
664
|
+
|
|
665
|
+
napi_value children = NodesArrayFromCArray(env, erb_case_node->children);
|
|
666
|
+
napi_set_named_property(env, result, "children", children);
|
|
667
|
+
|
|
668
|
+
napi_value conditions = NodesArrayFromCArray(env, erb_case_node->conditions);
|
|
669
|
+
napi_set_named_property(env, result, "conditions", conditions);
|
|
670
|
+
|
|
671
|
+
napi_value else_clause = NodeFromCStruct(env, (AST_NODE_T*) erb_case_node->else_clause);
|
|
672
|
+
napi_set_named_property(env, result, "else_clause", else_clause);
|
|
673
|
+
|
|
674
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_case_node->end_node);
|
|
675
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
return result;
|
|
679
|
+
}
|
|
680
|
+
napi_value erb_while_nodeNodeFromCStruct(napi_env env, AST_ERB_WHILE_NODE_T* erb_while_node) {
|
|
681
|
+
if (!erb_while_node) {
|
|
682
|
+
napi_value null_value;
|
|
683
|
+
napi_get_null(env, &null_value);
|
|
684
|
+
return null_value;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
napi_value result;
|
|
688
|
+
napi_create_object(env, &result);
|
|
689
|
+
|
|
690
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_while_node->base));
|
|
691
|
+
napi_set_named_property(env, result, "type", type);
|
|
692
|
+
|
|
693
|
+
napi_value location = CreateLocation(env, erb_while_node->base.location);
|
|
694
|
+
napi_set_named_property(env, result, "location", location);
|
|
695
|
+
|
|
696
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_while_node->base.errors);
|
|
697
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
698
|
+
|
|
699
|
+
napi_value tag_opening = CreateToken(env, erb_while_node->tag_opening);
|
|
700
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
701
|
+
|
|
702
|
+
napi_value content = CreateToken(env, erb_while_node->content);
|
|
703
|
+
napi_set_named_property(env, result, "content", content);
|
|
704
|
+
|
|
705
|
+
napi_value tag_closing = CreateToken(env, erb_while_node->tag_closing);
|
|
706
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
707
|
+
|
|
708
|
+
napi_value statements = NodesArrayFromCArray(env, erb_while_node->statements);
|
|
709
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
710
|
+
|
|
711
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_while_node->end_node);
|
|
712
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
return result;
|
|
716
|
+
}
|
|
717
|
+
napi_value erb_until_nodeNodeFromCStruct(napi_env env, AST_ERB_UNTIL_NODE_T* erb_until_node) {
|
|
718
|
+
if (!erb_until_node) {
|
|
719
|
+
napi_value null_value;
|
|
720
|
+
napi_get_null(env, &null_value);
|
|
721
|
+
return null_value;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
napi_value result;
|
|
725
|
+
napi_create_object(env, &result);
|
|
726
|
+
|
|
727
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_until_node->base));
|
|
728
|
+
napi_set_named_property(env, result, "type", type);
|
|
729
|
+
|
|
730
|
+
napi_value location = CreateLocation(env, erb_until_node->base.location);
|
|
731
|
+
napi_set_named_property(env, result, "location", location);
|
|
732
|
+
|
|
733
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_until_node->base.errors);
|
|
734
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
735
|
+
|
|
736
|
+
napi_value tag_opening = CreateToken(env, erb_until_node->tag_opening);
|
|
737
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
738
|
+
|
|
739
|
+
napi_value content = CreateToken(env, erb_until_node->content);
|
|
740
|
+
napi_set_named_property(env, result, "content", content);
|
|
741
|
+
|
|
742
|
+
napi_value tag_closing = CreateToken(env, erb_until_node->tag_closing);
|
|
743
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
744
|
+
|
|
745
|
+
napi_value statements = NodesArrayFromCArray(env, erb_until_node->statements);
|
|
746
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
747
|
+
|
|
748
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_until_node->end_node);
|
|
749
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
return result;
|
|
753
|
+
}
|
|
754
|
+
napi_value erb_for_nodeNodeFromCStruct(napi_env env, AST_ERB_FOR_NODE_T* erb_for_node) {
|
|
755
|
+
if (!erb_for_node) {
|
|
756
|
+
napi_value null_value;
|
|
757
|
+
napi_get_null(env, &null_value);
|
|
758
|
+
return null_value;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
napi_value result;
|
|
762
|
+
napi_create_object(env, &result);
|
|
763
|
+
|
|
764
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_for_node->base));
|
|
765
|
+
napi_set_named_property(env, result, "type", type);
|
|
766
|
+
|
|
767
|
+
napi_value location = CreateLocation(env, erb_for_node->base.location);
|
|
768
|
+
napi_set_named_property(env, result, "location", location);
|
|
769
|
+
|
|
770
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_for_node->base.errors);
|
|
771
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
772
|
+
|
|
773
|
+
napi_value tag_opening = CreateToken(env, erb_for_node->tag_opening);
|
|
774
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
775
|
+
|
|
776
|
+
napi_value content = CreateToken(env, erb_for_node->content);
|
|
777
|
+
napi_set_named_property(env, result, "content", content);
|
|
778
|
+
|
|
779
|
+
napi_value tag_closing = CreateToken(env, erb_for_node->tag_closing);
|
|
780
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
781
|
+
|
|
782
|
+
napi_value statements = NodesArrayFromCArray(env, erb_for_node->statements);
|
|
783
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
784
|
+
|
|
785
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_for_node->end_node);
|
|
786
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
return result;
|
|
790
|
+
}
|
|
791
|
+
napi_value erb_rescue_nodeNodeFromCStruct(napi_env env, AST_ERB_RESCUE_NODE_T* erb_rescue_node) {
|
|
792
|
+
if (!erb_rescue_node) {
|
|
793
|
+
napi_value null_value;
|
|
794
|
+
napi_get_null(env, &null_value);
|
|
795
|
+
return null_value;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
napi_value result;
|
|
799
|
+
napi_create_object(env, &result);
|
|
800
|
+
|
|
801
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_rescue_node->base));
|
|
802
|
+
napi_set_named_property(env, result, "type", type);
|
|
803
|
+
|
|
804
|
+
napi_value location = CreateLocation(env, erb_rescue_node->base.location);
|
|
805
|
+
napi_set_named_property(env, result, "location", location);
|
|
806
|
+
|
|
807
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_rescue_node->base.errors);
|
|
808
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
809
|
+
|
|
810
|
+
napi_value tag_opening = CreateToken(env, erb_rescue_node->tag_opening);
|
|
811
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
812
|
+
|
|
813
|
+
napi_value content = CreateToken(env, erb_rescue_node->content);
|
|
814
|
+
napi_set_named_property(env, result, "content", content);
|
|
815
|
+
|
|
816
|
+
napi_value tag_closing = CreateToken(env, erb_rescue_node->tag_closing);
|
|
817
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
818
|
+
|
|
819
|
+
napi_value statements = NodesArrayFromCArray(env, erb_rescue_node->statements);
|
|
820
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
821
|
+
|
|
822
|
+
napi_value subsequent = NodeFromCStruct(env, (AST_NODE_T*) erb_rescue_node->subsequent);
|
|
823
|
+
napi_set_named_property(env, result, "subsequent", subsequent);
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
return result;
|
|
827
|
+
}
|
|
828
|
+
napi_value erb_ensure_nodeNodeFromCStruct(napi_env env, AST_ERB_ENSURE_NODE_T* erb_ensure_node) {
|
|
829
|
+
if (!erb_ensure_node) {
|
|
830
|
+
napi_value null_value;
|
|
831
|
+
napi_get_null(env, &null_value);
|
|
832
|
+
return null_value;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
napi_value result;
|
|
836
|
+
napi_create_object(env, &result);
|
|
837
|
+
|
|
838
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_ensure_node->base));
|
|
839
|
+
napi_set_named_property(env, result, "type", type);
|
|
840
|
+
|
|
841
|
+
napi_value location = CreateLocation(env, erb_ensure_node->base.location);
|
|
842
|
+
napi_set_named_property(env, result, "location", location);
|
|
843
|
+
|
|
844
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_ensure_node->base.errors);
|
|
845
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
846
|
+
|
|
847
|
+
napi_value tag_opening = CreateToken(env, erb_ensure_node->tag_opening);
|
|
848
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
849
|
+
|
|
850
|
+
napi_value content = CreateToken(env, erb_ensure_node->content);
|
|
851
|
+
napi_set_named_property(env, result, "content", content);
|
|
852
|
+
|
|
853
|
+
napi_value tag_closing = CreateToken(env, erb_ensure_node->tag_closing);
|
|
854
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
855
|
+
|
|
856
|
+
napi_value statements = NodesArrayFromCArray(env, erb_ensure_node->statements);
|
|
857
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
return result;
|
|
861
|
+
}
|
|
862
|
+
napi_value erb_begin_nodeNodeFromCStruct(napi_env env, AST_ERB_BEGIN_NODE_T* erb_begin_node) {
|
|
863
|
+
if (!erb_begin_node) {
|
|
864
|
+
napi_value null_value;
|
|
865
|
+
napi_get_null(env, &null_value);
|
|
866
|
+
return null_value;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
napi_value result;
|
|
870
|
+
napi_create_object(env, &result);
|
|
871
|
+
|
|
872
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_begin_node->base));
|
|
873
|
+
napi_set_named_property(env, result, "type", type);
|
|
874
|
+
|
|
875
|
+
napi_value location = CreateLocation(env, erb_begin_node->base.location);
|
|
876
|
+
napi_set_named_property(env, result, "location", location);
|
|
877
|
+
|
|
878
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_begin_node->base.errors);
|
|
879
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
880
|
+
|
|
881
|
+
napi_value tag_opening = CreateToken(env, erb_begin_node->tag_opening);
|
|
882
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
883
|
+
|
|
884
|
+
napi_value content = CreateToken(env, erb_begin_node->content);
|
|
885
|
+
napi_set_named_property(env, result, "content", content);
|
|
886
|
+
|
|
887
|
+
napi_value tag_closing = CreateToken(env, erb_begin_node->tag_closing);
|
|
888
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
889
|
+
|
|
890
|
+
napi_value statements = NodesArrayFromCArray(env, erb_begin_node->statements);
|
|
891
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
892
|
+
|
|
893
|
+
napi_value rescue_clause = NodeFromCStruct(env, (AST_NODE_T*) erb_begin_node->rescue_clause);
|
|
894
|
+
napi_set_named_property(env, result, "rescue_clause", rescue_clause);
|
|
895
|
+
|
|
896
|
+
napi_value else_clause = NodeFromCStruct(env, (AST_NODE_T*) erb_begin_node->else_clause);
|
|
897
|
+
napi_set_named_property(env, result, "else_clause", else_clause);
|
|
898
|
+
|
|
899
|
+
napi_value ensure_clause = NodeFromCStruct(env, (AST_NODE_T*) erb_begin_node->ensure_clause);
|
|
900
|
+
napi_set_named_property(env, result, "ensure_clause", ensure_clause);
|
|
901
|
+
|
|
902
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_begin_node->end_node);
|
|
903
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
return result;
|
|
907
|
+
}
|
|
908
|
+
napi_value erb_unless_nodeNodeFromCStruct(napi_env env, AST_ERB_UNLESS_NODE_T* erb_unless_node) {
|
|
909
|
+
if (!erb_unless_node) {
|
|
910
|
+
napi_value null_value;
|
|
911
|
+
napi_get_null(env, &null_value);
|
|
912
|
+
return null_value;
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
napi_value result;
|
|
916
|
+
napi_create_object(env, &result);
|
|
917
|
+
|
|
918
|
+
napi_value type = CreateString(env, ast_node_type_to_string(&erb_unless_node->base));
|
|
919
|
+
napi_set_named_property(env, result, "type", type);
|
|
920
|
+
|
|
921
|
+
napi_value location = CreateLocation(env, erb_unless_node->base.location);
|
|
922
|
+
napi_set_named_property(env, result, "location", location);
|
|
923
|
+
|
|
924
|
+
napi_value errors = ErrorsArrayFromCArray(env, erb_unless_node->base.errors);
|
|
925
|
+
napi_set_named_property(env, result, "errors", errors);
|
|
926
|
+
|
|
927
|
+
napi_value tag_opening = CreateToken(env, erb_unless_node->tag_opening);
|
|
928
|
+
napi_set_named_property(env, result, "tag_opening", tag_opening);
|
|
929
|
+
|
|
930
|
+
napi_value content = CreateToken(env, erb_unless_node->content);
|
|
931
|
+
napi_set_named_property(env, result, "content", content);
|
|
932
|
+
|
|
933
|
+
napi_value tag_closing = CreateToken(env, erb_unless_node->tag_closing);
|
|
934
|
+
napi_set_named_property(env, result, "tag_closing", tag_closing);
|
|
935
|
+
|
|
936
|
+
napi_value statements = NodesArrayFromCArray(env, erb_unless_node->statements);
|
|
937
|
+
napi_set_named_property(env, result, "statements", statements);
|
|
938
|
+
|
|
939
|
+
napi_value else_clause = NodeFromCStruct(env, (AST_NODE_T*) erb_unless_node->else_clause);
|
|
940
|
+
napi_set_named_property(env, result, "else_clause", else_clause);
|
|
941
|
+
|
|
942
|
+
napi_value end_node = NodeFromCStruct(env, (AST_NODE_T*) erb_unless_node->end_node);
|
|
943
|
+
napi_set_named_property(env, result, "end_node", end_node);
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
return result;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
napi_value NodesArrayFromCArray(napi_env env, array_T* array) {
|
|
950
|
+
napi_value result;
|
|
951
|
+
napi_create_array(env, &result);
|
|
952
|
+
|
|
953
|
+
if (array) {
|
|
954
|
+
for (size_t i = 0; i < array_size(array); i++) {
|
|
955
|
+
AST_NODE_T* child_node = (AST_NODE_T*) array_get(array, i);
|
|
956
|
+
if (child_node) {
|
|
957
|
+
napi_value js_child = NodeFromCStruct(env, child_node);
|
|
958
|
+
napi_set_element(env, result, i, js_child);
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
|
|
963
|
+
return result;
|
|
964
|
+
}
|
|
965
|
+
|
|
966
|
+
napi_value NodeFromCStruct(napi_env env, AST_NODE_T* node) {
|
|
967
|
+
if (!node) {
|
|
968
|
+
napi_value null_value;
|
|
969
|
+
napi_get_null(env, &null_value);
|
|
970
|
+
return null_value;
|
|
971
|
+
}
|
|
972
|
+
|
|
973
|
+
switch (node->type) {
|
|
974
|
+
case AST_DOCUMENT_NODE:
|
|
975
|
+
return document_nodeNodeFromCStruct(env, (AST_DOCUMENT_NODE_T*) node);
|
|
976
|
+
break;
|
|
977
|
+
case AST_LITERAL_NODE:
|
|
978
|
+
return literal_nodeNodeFromCStruct(env, (AST_LITERAL_NODE_T*) node);
|
|
979
|
+
break;
|
|
980
|
+
case AST_HTML_OPEN_TAG_NODE:
|
|
981
|
+
return html_open_tag_nodeNodeFromCStruct(env, (AST_HTML_OPEN_TAG_NODE_T*) node);
|
|
982
|
+
break;
|
|
983
|
+
case AST_HTML_CLOSE_TAG_NODE:
|
|
984
|
+
return html_close_tag_nodeNodeFromCStruct(env, (AST_HTML_CLOSE_TAG_NODE_T*) node);
|
|
985
|
+
break;
|
|
986
|
+
case AST_HTML_SELF_CLOSE_TAG_NODE:
|
|
987
|
+
return html_self_close_tag_nodeNodeFromCStruct(env, (AST_HTML_SELF_CLOSE_TAG_NODE_T*) node);
|
|
988
|
+
break;
|
|
989
|
+
case AST_HTML_ELEMENT_NODE:
|
|
990
|
+
return html_element_nodeNodeFromCStruct(env, (AST_HTML_ELEMENT_NODE_T*) node);
|
|
991
|
+
break;
|
|
992
|
+
case AST_HTML_ATTRIBUTE_VALUE_NODE:
|
|
993
|
+
return html_attribute_value_nodeNodeFromCStruct(env, (AST_HTML_ATTRIBUTE_VALUE_NODE_T*) node);
|
|
994
|
+
break;
|
|
995
|
+
case AST_HTML_ATTRIBUTE_NAME_NODE:
|
|
996
|
+
return html_attribute_name_nodeNodeFromCStruct(env, (AST_HTML_ATTRIBUTE_NAME_NODE_T*) node);
|
|
997
|
+
break;
|
|
998
|
+
case AST_HTML_ATTRIBUTE_NODE:
|
|
999
|
+
return html_attribute_nodeNodeFromCStruct(env, (AST_HTML_ATTRIBUTE_NODE_T*) node);
|
|
1000
|
+
break;
|
|
1001
|
+
case AST_HTML_TEXT_NODE:
|
|
1002
|
+
return html_text_nodeNodeFromCStruct(env, (AST_HTML_TEXT_NODE_T*) node);
|
|
1003
|
+
break;
|
|
1004
|
+
case AST_HTML_COMMENT_NODE:
|
|
1005
|
+
return html_comment_nodeNodeFromCStruct(env, (AST_HTML_COMMENT_NODE_T*) node);
|
|
1006
|
+
break;
|
|
1007
|
+
case AST_HTML_DOCTYPE_NODE:
|
|
1008
|
+
return html_doctype_nodeNodeFromCStruct(env, (AST_HTML_DOCTYPE_NODE_T*) node);
|
|
1009
|
+
break;
|
|
1010
|
+
case AST_WHITESPACE_NODE:
|
|
1011
|
+
return whitespace_nodeNodeFromCStruct(env, (AST_WHITESPACE_NODE_T*) node);
|
|
1012
|
+
break;
|
|
1013
|
+
case AST_ERB_CONTENT_NODE:
|
|
1014
|
+
return erb_content_nodeNodeFromCStruct(env, (AST_ERB_CONTENT_NODE_T*) node);
|
|
1015
|
+
break;
|
|
1016
|
+
case AST_ERB_END_NODE:
|
|
1017
|
+
return erb_end_nodeNodeFromCStruct(env, (AST_ERB_END_NODE_T*) node);
|
|
1018
|
+
break;
|
|
1019
|
+
case AST_ERB_ELSE_NODE:
|
|
1020
|
+
return erb_else_nodeNodeFromCStruct(env, (AST_ERB_ELSE_NODE_T*) node);
|
|
1021
|
+
break;
|
|
1022
|
+
case AST_ERB_IF_NODE:
|
|
1023
|
+
return erb_if_nodeNodeFromCStruct(env, (AST_ERB_IF_NODE_T*) node);
|
|
1024
|
+
break;
|
|
1025
|
+
case AST_ERB_BLOCK_NODE:
|
|
1026
|
+
return erb_block_nodeNodeFromCStruct(env, (AST_ERB_BLOCK_NODE_T*) node);
|
|
1027
|
+
break;
|
|
1028
|
+
case AST_ERB_WHEN_NODE:
|
|
1029
|
+
return erb_when_nodeNodeFromCStruct(env, (AST_ERB_WHEN_NODE_T*) node);
|
|
1030
|
+
break;
|
|
1031
|
+
case AST_ERB_CASE_NODE:
|
|
1032
|
+
return erb_case_nodeNodeFromCStruct(env, (AST_ERB_CASE_NODE_T*) node);
|
|
1033
|
+
break;
|
|
1034
|
+
case AST_ERB_WHILE_NODE:
|
|
1035
|
+
return erb_while_nodeNodeFromCStruct(env, (AST_ERB_WHILE_NODE_T*) node);
|
|
1036
|
+
break;
|
|
1037
|
+
case AST_ERB_UNTIL_NODE:
|
|
1038
|
+
return erb_until_nodeNodeFromCStruct(env, (AST_ERB_UNTIL_NODE_T*) node);
|
|
1039
|
+
break;
|
|
1040
|
+
case AST_ERB_FOR_NODE:
|
|
1041
|
+
return erb_for_nodeNodeFromCStruct(env, (AST_ERB_FOR_NODE_T*) node);
|
|
1042
|
+
break;
|
|
1043
|
+
case AST_ERB_RESCUE_NODE:
|
|
1044
|
+
return erb_rescue_nodeNodeFromCStruct(env, (AST_ERB_RESCUE_NODE_T*) node);
|
|
1045
|
+
break;
|
|
1046
|
+
case AST_ERB_ENSURE_NODE:
|
|
1047
|
+
return erb_ensure_nodeNodeFromCStruct(env, (AST_ERB_ENSURE_NODE_T*) node);
|
|
1048
|
+
break;
|
|
1049
|
+
case AST_ERB_BEGIN_NODE:
|
|
1050
|
+
return erb_begin_nodeNodeFromCStruct(env, (AST_ERB_BEGIN_NODE_T*) node);
|
|
1051
|
+
break;
|
|
1052
|
+
case AST_ERB_UNLESS_NODE:
|
|
1053
|
+
return erb_unless_nodeNodeFromCStruct(env, (AST_ERB_UNLESS_NODE_T*) node);
|
|
1054
|
+
break;
|
|
1055
|
+
default:
|
|
1056
|
+
napi_value null_value;
|
|
1057
|
+
napi_get_null(env, &null_value);
|
|
1058
|
+
return null_value;
|
|
1059
|
+
}
|
|
1060
|
+
}
|