@herb-tools/node 0.7.5 → 0.8.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 +8 -4
- package/dist/herb-node.esm.js +6 -6
- package/dist/herb-node.esm.js.map +1 -1
- package/extension/error_helpers.cpp +67 -9
- package/extension/error_helpers.h +4 -2
- package/extension/extension_helpers.cpp +12 -5
- package/extension/extension_helpers.h +4 -2
- package/extension/herb.cpp +10 -42
- package/extension/libherb/analyze.c +549 -204
- package/extension/libherb/analyze.h +10 -2
- package/extension/libherb/analyze_helpers.c +17 -4
- package/extension/libherb/analyze_helpers.h +3 -0
- package/extension/libherb/analyze_missing_end.c +147 -0
- package/extension/libherb/analyze_transform.c +196 -0
- package/extension/libherb/analyzed_ruby.c +23 -2
- package/extension/libherb/analyzed_ruby.h +4 -2
- package/extension/libherb/ast_node.c +5 -5
- package/extension/libherb/ast_node.h +2 -2
- package/extension/libherb/ast_nodes.c +180 -180
- package/extension/libherb/ast_nodes.h +68 -67
- package/extension/libherb/ast_pretty_print.c +233 -233
- package/extension/libherb/ast_pretty_print.h +3 -3
- package/extension/libherb/element_source.c +7 -6
- package/extension/libherb/element_source.h +3 -1
- package/extension/libherb/errors.c +247 -127
- package/extension/libherb/errors.h +31 -15
- package/extension/libherb/extract.c +92 -34
- package/extension/libherb/extract.h +4 -4
- package/extension/libherb/herb.c +37 -49
- package/extension/libherb/herb.h +6 -7
- package/extension/libherb/html_util.c +34 -96
- package/extension/libherb/html_util.h +4 -5
- package/extension/libherb/include/analyze.h +10 -2
- package/extension/libherb/include/analyze_helpers.h +3 -0
- package/extension/libherb/include/analyzed_ruby.h +4 -2
- package/extension/libherb/include/ast_node.h +2 -2
- package/extension/libherb/include/ast_nodes.h +68 -67
- package/extension/libherb/include/ast_pretty_print.h +3 -3
- package/extension/libherb/include/element_source.h +3 -1
- package/extension/libherb/include/errors.h +31 -15
- package/extension/libherb/include/extract.h +4 -4
- package/extension/libherb/include/herb.h +6 -7
- package/extension/libherb/include/html_util.h +4 -5
- package/extension/libherb/include/lexer.h +1 -3
- package/extension/libherb/include/lexer_peek_helpers.h +14 -14
- package/extension/libherb/include/lexer_struct.h +3 -2
- package/extension/libherb/include/macros.h +4 -0
- package/extension/libherb/include/parser.h +12 -6
- package/extension/libherb/include/parser_helpers.h +25 -15
- package/extension/libherb/include/pretty_print.h +38 -28
- package/extension/libherb/include/token.h +5 -8
- package/extension/libherb/include/utf8.h +3 -2
- package/extension/libherb/include/util/hb_arena.h +31 -0
- package/extension/libherb/include/util/hb_arena_debug.h +8 -0
- package/extension/libherb/include/util/hb_array.h +33 -0
- package/extension/libherb/include/util/hb_buffer.h +33 -0
- package/extension/libherb/include/util/hb_string.h +29 -0
- package/extension/libherb/include/util/hb_system.h +9 -0
- package/extension/libherb/include/util.h +3 -14
- package/extension/libherb/include/version.h +1 -1
- package/extension/libherb/include/visitor.h +1 -1
- package/extension/libherb/io.c +7 -4
- package/extension/libherb/lexer.c +61 -88
- package/extension/libherb/lexer.h +1 -3
- package/extension/libherb/lexer_peek_helpers.c +35 -37
- package/extension/libherb/lexer_peek_helpers.h +14 -14
- package/extension/libherb/lexer_struct.h +3 -2
- package/extension/libherb/macros.h +4 -0
- package/extension/libherb/main.c +19 -23
- package/extension/libherb/parser.c +280 -201
- package/extension/libherb/parser.h +12 -6
- package/extension/libherb/parser_helpers.c +46 -40
- package/extension/libherb/parser_helpers.h +25 -15
- package/extension/libherb/parser_match_tags.c +316 -0
- package/extension/libherb/pretty_print.c +82 -106
- package/extension/libherb/pretty_print.h +38 -28
- package/extension/libherb/token.c +18 -65
- package/extension/libherb/token.h +5 -8
- package/extension/libherb/utf8.c +4 -4
- package/extension/libherb/utf8.h +3 -2
- package/extension/libherb/util/hb_arena.c +179 -0
- package/extension/libherb/util/hb_arena.h +31 -0
- package/extension/libherb/util/hb_arena_debug.c +237 -0
- package/extension/libherb/util/hb_arena_debug.h +8 -0
- package/extension/libherb/{array.c → util/hb_array.c} +26 -27
- package/extension/libherb/util/hb_array.h +33 -0
- package/extension/libherb/util/hb_buffer.c +194 -0
- package/extension/libherb/util/hb_buffer.h +33 -0
- package/extension/libherb/util/hb_string.c +85 -0
- package/extension/libherb/util/hb_string.h +29 -0
- package/extension/libherb/util/hb_system.c +30 -0
- package/extension/libherb/util/hb_system.h +9 -0
- package/extension/libherb/util.c +29 -99
- package/extension/libherb/util.h +3 -14
- package/extension/libherb/version.h +1 -1
- package/extension/libherb/visitor.c +55 -55
- package/extension/libherb/visitor.h +1 -1
- package/extension/nodes.cpp +40 -40
- package/extension/nodes.h +2 -2
- package/extension/prism/include/prism/ast.h +31 -1
- package/extension/prism/include/prism/diagnostic.h +1 -0
- package/extension/prism/include/prism/version.h +3 -3
- package/extension/prism/src/diagnostic.c +3 -1
- package/extension/prism/src/prism.c +130 -71
- package/extension/prism/src/util/pm_string.c +6 -8
- package/package.json +3 -3
- package/extension/libherb/array.h +0 -33
- package/extension/libherb/buffer.c +0 -241
- package/extension/libherb/buffer.h +0 -39
- package/extension/libherb/include/array.h +0 -33
- package/extension/libherb/include/buffer.h +0 -39
- package/extension/libherb/include/json.h +0 -28
- package/extension/libherb/include/memory.h +0 -12
- package/extension/libherb/json.c +0 -205
- package/extension/libherb/json.h +0 -28
- package/extension/libherb/memory.c +0 -53
- package/extension/libherb/memory.h +0 -12
package/binding.gyp
CHANGED
|
@@ -11,25 +11,24 @@
|
|
|
11
11
|
|
|
12
12
|
# Herb main source files
|
|
13
13
|
"./extension/libherb/analyze_helpers.c",
|
|
14
|
+
"./extension/libherb/analyze_missing_end.c",
|
|
15
|
+
"./extension/libherb/analyze_transform.c",
|
|
14
16
|
"./extension/libherb/analyze.c",
|
|
15
17
|
"./extension/libherb/analyzed_ruby.c",
|
|
16
|
-
"./extension/libherb/array.c",
|
|
17
18
|
"./extension/libherb/ast_node.c",
|
|
18
19
|
"./extension/libherb/ast_nodes.c",
|
|
19
20
|
"./extension/libherb/ast_pretty_print.c",
|
|
20
|
-
"./extension/libherb/buffer.c",
|
|
21
21
|
"./extension/libherb/element_source.c",
|
|
22
22
|
"./extension/libherb/errors.c",
|
|
23
23
|
"./extension/libherb/extract.c",
|
|
24
24
|
"./extension/libherb/herb.c",
|
|
25
25
|
"./extension/libherb/html_util.c",
|
|
26
26
|
"./extension/libherb/io.c",
|
|
27
|
-
"./extension/libherb/json.c",
|
|
28
27
|
"./extension/libherb/lexer_peek_helpers.c",
|
|
29
28
|
"./extension/libherb/lexer.c",
|
|
30
29
|
"./extension/libherb/location.c",
|
|
31
|
-
"./extension/libherb/memory.c",
|
|
32
30
|
"./extension/libherb/parser_helpers.c",
|
|
31
|
+
"./extension/libherb/parser_match_tags.c",
|
|
33
32
|
"./extension/libherb/parser.c",
|
|
34
33
|
"./extension/libherb/pretty_print.c",
|
|
35
34
|
"./extension/libherb/prism_helpers.c",
|
|
@@ -38,6 +37,11 @@
|
|
|
38
37
|
"./extension/libherb/token.c",
|
|
39
38
|
"./extension/libherb/utf8.c",
|
|
40
39
|
"./extension/libherb/util.c",
|
|
40
|
+
"./extension/libherb/util/hb_arena.c",
|
|
41
|
+
"./extension/libherb/util/hb_array.c",
|
|
42
|
+
"./extension/libherb/util/hb_buffer.c",
|
|
43
|
+
"./extension/libherb/util/hb_string.c",
|
|
44
|
+
"./extension/libherb/util/hb_system.c",
|
|
41
45
|
"./extension/libherb/visitor.c",
|
|
42
46
|
|
|
43
47
|
# Prism main source files
|
package/dist/herb-node.esm.js
CHANGED
|
@@ -6,7 +6,7 @@ import { createRequire } from 'module';
|
|
|
6
6
|
import { fileURLToPath } from 'url';
|
|
7
7
|
|
|
8
8
|
var name = "@herb-tools/node";
|
|
9
|
-
var version = "0.
|
|
9
|
+
var version = "0.8.1";
|
|
10
10
|
var packageJSON = {
|
|
11
11
|
name: name,
|
|
12
12
|
version: version};
|
|
@@ -17,12 +17,12 @@ class HerbBackendNode extends HerbBackend {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
21
|
-
const __dirname = path.dirname(__filename);
|
|
22
|
-
const require = createRequire(import.meta.url);
|
|
23
|
-
const packagePath = path.resolve(__dirname, "../package.json");
|
|
20
|
+
const __filename$1 = fileURLToPath(import.meta.url);
|
|
21
|
+
const __dirname$1 = path.dirname(__filename$1);
|
|
22
|
+
const require$1 = createRequire(import.meta.url);
|
|
23
|
+
const packagePath = path.resolve(__dirname$1, "../package.json");
|
|
24
24
|
const libherbPath = binary.find(packagePath);
|
|
25
|
-
const libHerbBinary = require(libherbPath);
|
|
25
|
+
const libHerbBinary = require$1(libherbPath);
|
|
26
26
|
/**
|
|
27
27
|
* An instance of the `Herb` class using a Node.js backend.
|
|
28
28
|
* This loads `libherb` in a Node.js C++ native extension.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"herb-node.esm.js","sources":["../src/node-backend.ts","../src/index-esm.mts"],"sourcesContent":["import packageJSON from \"../package.json\" with { type: \"json\" }\n\nimport { HerbBackend } from \"@herb-tools/core\"\n\nexport class HerbBackendNode extends HerbBackend {\n backendVersion(): string {\n return `${packageJSON.name}@${packageJSON.version}`\n }\n}\n","export * from \"@herb-tools/core\"\n\nimport path from \"path\"\nimport binary from \"@mapbox/node-pre-gyp\"\n\nimport { createRequire } from \"module\"\nimport { fileURLToPath } from \"url\"\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\nconst require = createRequire(import.meta.url)\n\nconst packagePath = path.resolve(__dirname, \"../package.json\")\nconst libherbPath = binary.find(packagePath)\n\nconst libHerbBinary = require(libherbPath)\n\nimport { HerbBackendNode } from \"./node-backend.js\"\n\n/**\n * An instance of the `Herb` class using a Node.js backend.\n * This loads `libherb` in a Node.js C++ native extension.\n */\nconst Herb = new HerbBackendNode(\n () => new Promise((resolve, _reject) => resolve(libHerbBinary)),\n)\n\nexport { Herb, HerbBackendNode }\n"],"names":[],"mappings":";;;;;;;;;;;;;AAIM,MAAO,eAAgB,SAAQ,WAAW,CAAA;IAC9C,cAAc,GAAA;QACZ,OAAO,CAAA,EAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,CAAA,CAAE;IACrD;AACD;;ACAD,
|
|
1
|
+
{"version":3,"file":"herb-node.esm.js","sources":["../src/node-backend.ts","../src/index-esm.mts"],"sourcesContent":["import packageJSON from \"../package.json\" with { type: \"json\" }\n\nimport { HerbBackend } from \"@herb-tools/core\"\n\nexport class HerbBackendNode extends HerbBackend {\n backendVersion(): string {\n return `${packageJSON.name}@${packageJSON.version}`\n }\n}\n","export * from \"@herb-tools/core\"\n\nimport path from \"path\"\nimport binary from \"@mapbox/node-pre-gyp\"\n\nimport { createRequire } from \"module\"\nimport { fileURLToPath } from \"url\"\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = path.dirname(__filename)\nconst require = createRequire(import.meta.url)\n\nconst packagePath = path.resolve(__dirname, \"../package.json\")\nconst libherbPath = binary.find(packagePath)\n\nconst libHerbBinary = require(libherbPath)\n\nimport { HerbBackendNode } from \"./node-backend.js\"\n\n/**\n * An instance of the `Herb` class using a Node.js backend.\n * This loads `libherb` in a Node.js C++ native extension.\n */\nconst Herb = new HerbBackendNode(\n () => new Promise((resolve, _reject) => resolve(libHerbBinary)),\n)\n\nexport { Herb, HerbBackendNode }\n"],"names":["__filename","__dirname","require"],"mappings":";;;;;;;;;;;;;AAIM,MAAO,eAAgB,SAAQ,WAAW,CAAA;IAC9C,cAAc,GAAA;QACZ,OAAO,CAAA,EAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,CAAA,CAAE;IACrD;AACD;;ACAD,MAAMA,YAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AACjD,MAAMC,WAAS,GAAG,IAAI,CAAC,OAAO,CAACD,YAAU,CAAC;AAC1C,MAAME,SAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAE9C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAACD,WAAS,EAAE,iBAAiB,CAAC;AAC9D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;AAE5C,MAAM,aAAa,GAAGC,SAAO,CAAC,WAAW,CAAC;AAI1C;;;AAGG;AACH,MAAM,IAAI,GAAG,IAAI,eAAe,CAC9B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;;;;"}
|
|
@@ -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.8.1/templates/javascript/packages/node/extension/error_helpers.cpp.erb
|
|
3
3
|
|
|
4
4
|
#include <node_api.h>
|
|
5
5
|
#include "error_helpers.h"
|
|
@@ -7,16 +7,16 @@
|
|
|
7
7
|
#include "nodes.h"
|
|
8
8
|
|
|
9
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/errors.h"
|
|
14
10
|
#include "../extension/libherb/include/ast_node.h"
|
|
15
11
|
#include "../extension/libherb/include/ast_nodes.h"
|
|
12
|
+
#include "../extension/libherb/include/errors.h"
|
|
13
|
+
#include "../extension/libherb/include/herb.h"
|
|
14
|
+
#include "../extension/libherb/include/token.h"
|
|
15
|
+
#include "../extension/libherb/include/util/hb_array.h"
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
napi_value ErrorFromCStruct(napi_env env, ERROR_T* error);
|
|
19
|
-
napi_value ErrorsArrayFromCArray(napi_env env,
|
|
19
|
+
napi_value ErrorsArrayFromCArray(napi_env env, hb_array_T* array);
|
|
20
20
|
|
|
21
21
|
napi_value UnexpectedErrorFromCStruct(napi_env env, UNEXPECTED_ERROR_T* unexpected_error) {
|
|
22
22
|
if (!unexpected_error) {
|
|
@@ -279,14 +279,66 @@ napi_value RubyParseErrorFromCStruct(napi_env env, RUBY_PARSE_ERROR_T* ruby_pars
|
|
|
279
279
|
return result;
|
|
280
280
|
}
|
|
281
281
|
|
|
282
|
+
napi_value ERBControlFlowScopeErrorFromCStruct(napi_env env, ERB_CONTROL_FLOW_SCOPE_ERROR_T* erb_control_flow_scope_error) {
|
|
283
|
+
if (!erb_control_flow_scope_error) {
|
|
284
|
+
napi_value null_value;
|
|
285
|
+
napi_get_null(env, &null_value);
|
|
286
|
+
return null_value;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
napi_value result;
|
|
290
|
+
napi_create_object(env, &result);
|
|
291
|
+
|
|
292
|
+
napi_value type = CreateString(env, error_type_to_string(&erb_control_flow_scope_error->base));
|
|
293
|
+
napi_set_named_property(env, result, "type", type);
|
|
294
|
+
|
|
295
|
+
napi_value message = CreateString(env, erb_control_flow_scope_error->base.message);
|
|
296
|
+
napi_set_named_property(env, result, "message", message);
|
|
297
|
+
|
|
298
|
+
napi_value location = CreateLocation(env, erb_control_flow_scope_error->base.location);
|
|
299
|
+
napi_set_named_property(env, result, "location", location);
|
|
300
|
+
|
|
301
|
+
napi_value keyword = CreateString(env, erb_control_flow_scope_error->keyword);
|
|
302
|
+
napi_set_named_property(env, result, "keyword", keyword);
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
return result;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
napi_value MissingERBEndTagErrorFromCStruct(napi_env env, MISSINGERB_END_TAG_ERROR_T* missingerb_end_tag_error) {
|
|
309
|
+
if (!missingerb_end_tag_error) {
|
|
310
|
+
napi_value null_value;
|
|
311
|
+
napi_get_null(env, &null_value);
|
|
312
|
+
return null_value;
|
|
313
|
+
}
|
|
282
314
|
|
|
283
|
-
napi_value
|
|
315
|
+
napi_value result;
|
|
316
|
+
napi_create_object(env, &result);
|
|
317
|
+
|
|
318
|
+
napi_value type = CreateString(env, error_type_to_string(&missingerb_end_tag_error->base));
|
|
319
|
+
napi_set_named_property(env, result, "type", type);
|
|
320
|
+
|
|
321
|
+
napi_value message = CreateString(env, missingerb_end_tag_error->base.message);
|
|
322
|
+
napi_set_named_property(env, result, "message", message);
|
|
323
|
+
|
|
324
|
+
napi_value location = CreateLocation(env, missingerb_end_tag_error->base.location);
|
|
325
|
+
napi_set_named_property(env, result, "location", location);
|
|
326
|
+
|
|
327
|
+
napi_value keyword = CreateString(env, missingerb_end_tag_error->keyword);
|
|
328
|
+
napi_set_named_property(env, result, "keyword", keyword);
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
return result;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
napi_value ErrorsArrayFromCArray(napi_env env, hb_array_T* array) {
|
|
284
336
|
napi_value result;
|
|
285
337
|
napi_create_array(env, &result);
|
|
286
338
|
|
|
287
339
|
if (array) {
|
|
288
|
-
for (size_t i = 0; i <
|
|
289
|
-
ERROR_T* error = (ERROR_T*)
|
|
340
|
+
for (size_t i = 0; i < hb_array_size(array); i++) {
|
|
341
|
+
ERROR_T* error = (ERROR_T*) hb_array_get(array, i);
|
|
290
342
|
if (error) {
|
|
291
343
|
napi_value js_error = ErrorFromCStruct(env, error);
|
|
292
344
|
napi_set_element(env, result, i, js_error);
|
|
@@ -332,6 +384,12 @@ napi_value ErrorFromCStruct(napi_env env, ERROR_T* error) {
|
|
|
332
384
|
case RUBY_PARSE_ERROR:
|
|
333
385
|
return RubyParseErrorFromCStruct(env, (RUBY_PARSE_ERROR_T*) error);
|
|
334
386
|
break;
|
|
387
|
+
case ERB_CONTROL_FLOW_SCOPE_ERROR:
|
|
388
|
+
return ERBControlFlowScopeErrorFromCStruct(env, (ERB_CONTROL_FLOW_SCOPE_ERROR_T*) error);
|
|
389
|
+
break;
|
|
390
|
+
case MISSINGERB_END_TAG_ERROR:
|
|
391
|
+
return MissingERBEndTagErrorFromCStruct(env, (MISSINGERB_END_TAG_ERROR_T*) error);
|
|
392
|
+
break;
|
|
335
393
|
default:
|
|
336
394
|
napi_value null_value;
|
|
337
395
|
napi_get_null(env, &null_value);
|
|
@@ -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.8.1/templates/javascript/packages/node/extension/error_helpers.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HERB_EXTENSION_ERRORS_H
|
|
5
5
|
#define HERB_EXTENSION_ERRORS_H
|
|
@@ -11,7 +11,7 @@ extern "C" {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
napi_value ErrorFromCStruct(napi_env env, ERROR_T* error);
|
|
14
|
-
napi_value ErrorsArrayFromCArray(napi_env env,
|
|
14
|
+
napi_value ErrorsArrayFromCArray(napi_env env, hb_array_T* array);
|
|
15
15
|
|
|
16
16
|
napi_value UnexpectedErrorFromCStruct(napi_env env, UNEXPECTED_ERROR_T* unexpected_error);
|
|
17
17
|
napi_value UnexpectedTokenErrorFromCStruct(napi_env env, UNEXPECTED_TOKEN_ERROR_T* unexpected_token_error);
|
|
@@ -22,5 +22,7 @@ napi_value QuotesMismatchErrorFromCStruct(napi_env env, QUOTES_MISMATCH_ERROR_T*
|
|
|
22
22
|
napi_value VoidElementClosingTagErrorFromCStruct(napi_env env, VOID_ELEMENT_CLOSING_TAG_ERROR_T* void_element_closing_tag_error);
|
|
23
23
|
napi_value UnclosedElementErrorFromCStruct(napi_env env, UNCLOSED_ELEMENT_ERROR_T* unclosed_element_error);
|
|
24
24
|
napi_value RubyParseErrorFromCStruct(napi_env env, RUBY_PARSE_ERROR_T* ruby_parse_error);
|
|
25
|
+
napi_value ERBControlFlowScopeErrorFromCStruct(napi_env env, ERB_CONTROL_FLOW_SCOPE_ERROR_T* erb_control_flow_scope_error);
|
|
26
|
+
napi_value MissingERBEndTagErrorFromCStruct(napi_env env, MISSINGERB_END_TAG_ERROR_T* missingerb_end_tag_error);
|
|
25
27
|
|
|
26
28
|
#endif
|
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
#include <string.h>
|
|
5
5
|
|
|
6
6
|
extern "C" {
|
|
7
|
-
#include "../extension/libherb/include/array.h"
|
|
8
7
|
#include "../extension/libherb/include/ast_nodes.h"
|
|
9
|
-
#include "../extension/libherb/include/buffer.h"
|
|
10
8
|
#include "../extension/libherb/include/herb.h"
|
|
11
9
|
#include "../extension/libherb/include/io.h"
|
|
12
10
|
#include "../extension/libherb/include/location.h"
|
|
13
11
|
#include "../extension/libherb/include/position.h"
|
|
14
12
|
#include "../extension/libherb/include/range.h"
|
|
15
13
|
#include "../extension/libherb/include/token.h"
|
|
14
|
+
#include "../extension/libherb/include/util/hb_array.h"
|
|
15
|
+
#include "../extension/libherb/include/util/hb_buffer.h"
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
#include "error_helpers.h"
|
|
@@ -46,6 +46,13 @@ napi_value CreateString(napi_env env, const char* str) {
|
|
|
46
46
|
return result;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
napi_value CreateStringFromHbString(napi_env env, hb_string_T string) {
|
|
50
|
+
napi_value result;
|
|
51
|
+
napi_create_string_utf8(env, string.data, string.length, &result);
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
49
56
|
napi_value CreatePosition(napi_env env, position_T position) {
|
|
50
57
|
napi_value result;
|
|
51
58
|
napi_create_object(env, &result);
|
|
@@ -136,7 +143,7 @@ napi_value ReadFileToString(napi_env env, const char* file_path) {
|
|
|
136
143
|
return result;
|
|
137
144
|
}
|
|
138
145
|
|
|
139
|
-
napi_value CreateLexResult(napi_env env,
|
|
146
|
+
napi_value CreateLexResult(napi_env env, hb_array_T* tokens, napi_value source) {
|
|
140
147
|
napi_value result, tokens_array, errors_array, warnings_array;
|
|
141
148
|
|
|
142
149
|
napi_create_object(env, &result);
|
|
@@ -146,8 +153,8 @@ napi_value CreateLexResult(napi_env env, array_T* tokens, napi_value source) {
|
|
|
146
153
|
|
|
147
154
|
// Add tokens to array
|
|
148
155
|
if (tokens) {
|
|
149
|
-
for (size_t i = 0; i <
|
|
150
|
-
token_T* token = (token_T*)
|
|
156
|
+
for (size_t i = 0; i < hb_array_size(tokens); i++) {
|
|
157
|
+
token_T* token = (token_T*)hb_array_get(tokens, i);
|
|
151
158
|
if (token) {
|
|
152
159
|
napi_value token_obj = CreateToken(env, token);
|
|
153
160
|
napi_set_element(env, tokens_array, i, token_obj);
|
|
@@ -4,14 +4,16 @@
|
|
|
4
4
|
#include <node_api.h>
|
|
5
5
|
|
|
6
6
|
extern "C" {
|
|
7
|
-
#include "../extension/libherb/include/array.h"
|
|
8
7
|
#include "../extension/libherb/include/ast_nodes.h"
|
|
8
|
+
#include "../extension/libherb/include/util/hb_array.h"
|
|
9
|
+
#include "../extension/libherb/include/util/hb_string.h"
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
char* CheckString(napi_env env, napi_value value);
|
|
12
13
|
napi_value CreateString(napi_env env, const char* str);
|
|
14
|
+
napi_value CreateStringFromHbString(napi_env env, hb_string_T string);
|
|
13
15
|
napi_value ReadFileToString(napi_env env, const char* file_path);
|
|
14
|
-
napi_value CreateLexResult(napi_env env,
|
|
16
|
+
napi_value CreateLexResult(napi_env env, hb_array_T* tokens, napi_value source);
|
|
15
17
|
napi_value CreateParseResult(napi_env env, AST_DOCUMENT_NODE_T* root, napi_value source);
|
|
16
18
|
|
|
17
19
|
napi_value CreateLocation(napi_env env, location_T location);
|
package/extension/herb.cpp
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
extern "C" {
|
|
2
2
|
#include "../extension/libherb/include/analyze.h"
|
|
3
|
-
#include "../extension/libherb/include/array.h"
|
|
4
3
|
#include "../extension/libherb/include/ast_nodes.h"
|
|
5
|
-
#include "../extension/libherb/include/buffer.h"
|
|
6
4
|
#include "../extension/libherb/include/herb.h"
|
|
7
5
|
#include "../extension/libherb/include/location.h"
|
|
8
6
|
#include "../extension/libherb/include/range.h"
|
|
9
7
|
#include "../extension/libherb/include/token.h"
|
|
8
|
+
#include "../extension/libherb/include/util/hb_array.h"
|
|
9
|
+
#include "../extension/libherb/include/util/hb_buffer.h"
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
#include "error_helpers.h"
|
|
@@ -31,7 +31,7 @@ napi_value Herb_lex(napi_env env, napi_callback_info info) {
|
|
|
31
31
|
char* string = CheckString(env, args[0]);
|
|
32
32
|
if (!string) { return nullptr; }
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
hb_array_T* tokens = herb_lex(string);
|
|
35
35
|
napi_value result = CreateLexResult(env, tokens, args[0]);
|
|
36
36
|
|
|
37
37
|
herb_free_tokens(&tokens);
|
|
@@ -53,7 +53,7 @@ napi_value Herb_lex_file(napi_env env, napi_callback_info info) {
|
|
|
53
53
|
char* file_path = CheckString(env, args[0]);
|
|
54
54
|
if (!file_path) { return nullptr; }
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
hb_array_T* tokens = herb_lex_file(file_path);
|
|
57
57
|
napi_value source_value = ReadFileToString(env, file_path);
|
|
58
58
|
napi_value result = CreateLexResult(env, tokens, source_value);
|
|
59
59
|
|
|
@@ -142,37 +142,6 @@ napi_value Herb_parse_file(napi_env env, napi_callback_info info) {
|
|
|
142
142
|
return result;
|
|
143
143
|
}
|
|
144
144
|
|
|
145
|
-
napi_value Herb_lex_to_json(napi_env env, napi_callback_info info) {
|
|
146
|
-
size_t argc = 1;
|
|
147
|
-
napi_value args[1];
|
|
148
|
-
napi_get_cb_info(env, info, &argc, args, nullptr, nullptr);
|
|
149
|
-
|
|
150
|
-
if (argc < 1) {
|
|
151
|
-
napi_throw_error(env, nullptr, "Wrong number of arguments");
|
|
152
|
-
return nullptr;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
char* string = CheckString(env, args[0]);
|
|
156
|
-
if (!string) { return nullptr; }
|
|
157
|
-
|
|
158
|
-
buffer_T output;
|
|
159
|
-
if (!buffer_init(&output)) {
|
|
160
|
-
free(string);
|
|
161
|
-
napi_throw_error(env, nullptr, "Failed to initialize buffer");
|
|
162
|
-
return nullptr;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
herb_lex_json_to_buffer(string, &output);
|
|
166
|
-
|
|
167
|
-
napi_value result;
|
|
168
|
-
napi_create_string_utf8(env, output.value, output.length, &result);
|
|
169
|
-
|
|
170
|
-
buffer_free(&output);
|
|
171
|
-
free(string);
|
|
172
|
-
|
|
173
|
-
return result;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
145
|
napi_value Herb_extract_ruby(napi_env env, napi_callback_info info) {
|
|
177
146
|
size_t argc = 1;
|
|
178
147
|
napi_value args[1];
|
|
@@ -186,8 +155,8 @@ napi_value Herb_extract_ruby(napi_env env, napi_callback_info info) {
|
|
|
186
155
|
char* string = CheckString(env, args[0]);
|
|
187
156
|
if (!string) { return nullptr; }
|
|
188
157
|
|
|
189
|
-
|
|
190
|
-
if (!
|
|
158
|
+
hb_buffer_T output;
|
|
159
|
+
if (!hb_buffer_init(&output, strlen(string))) {
|
|
191
160
|
free(string);
|
|
192
161
|
napi_throw_error(env, nullptr, "Failed to initialize buffer");
|
|
193
162
|
return nullptr;
|
|
@@ -198,7 +167,7 @@ napi_value Herb_extract_ruby(napi_env env, napi_callback_info info) {
|
|
|
198
167
|
napi_value result;
|
|
199
168
|
napi_create_string_utf8(env, output.value, NAPI_AUTO_LENGTH, &result);
|
|
200
169
|
|
|
201
|
-
|
|
170
|
+
free(output.value);
|
|
202
171
|
free(string);
|
|
203
172
|
return result;
|
|
204
173
|
}
|
|
@@ -216,8 +185,8 @@ napi_value Herb_extract_html(napi_env env, napi_callback_info info) {
|
|
|
216
185
|
char* string = CheckString(env, args[0]);
|
|
217
186
|
if (!string) { return nullptr; }
|
|
218
187
|
|
|
219
|
-
|
|
220
|
-
if (!
|
|
188
|
+
hb_buffer_T output;
|
|
189
|
+
if (!hb_buffer_init(&output, strlen(string))) {
|
|
221
190
|
free(string);
|
|
222
191
|
napi_throw_error(env, nullptr, "Failed to initialize buffer");
|
|
223
192
|
return nullptr;
|
|
@@ -228,7 +197,7 @@ napi_value Herb_extract_html(napi_env env, napi_callback_info info) {
|
|
|
228
197
|
napi_value result;
|
|
229
198
|
napi_create_string_utf8(env, output.value, NAPI_AUTO_LENGTH, &result);
|
|
230
199
|
|
|
231
|
-
|
|
200
|
+
free(output.value);
|
|
232
201
|
free(string);
|
|
233
202
|
return result;
|
|
234
203
|
}
|
|
@@ -252,7 +221,6 @@ napi_value Init(napi_env env, napi_value exports) {
|
|
|
252
221
|
{ "lex", nullptr, Herb_lex, nullptr, nullptr, nullptr, napi_default, nullptr },
|
|
253
222
|
{ "parseFile", nullptr, Herb_parse_file, nullptr, nullptr, nullptr, napi_default, nullptr },
|
|
254
223
|
{ "lexFile", nullptr, Herb_lex_file, nullptr, nullptr, nullptr, napi_default, nullptr },
|
|
255
|
-
{ "lexToJson", nullptr, Herb_lex_to_json, nullptr, nullptr, nullptr, napi_default, nullptr },
|
|
256
224
|
{ "extractRuby", nullptr, Herb_extract_ruby, nullptr, nullptr, nullptr, napi_default, nullptr },
|
|
257
225
|
{ "extractHTML", nullptr, Herb_extract_html, nullptr, nullptr, nullptr, napi_default, nullptr },
|
|
258
226
|
{ "version", nullptr, Herb_version, nullptr, nullptr, nullptr, napi_default, nullptr },
|