herb 0.11.0-arm-linux-gnu → 0.11.2-arm-linux-gnu
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.
- checksums.yaml +4 -4
- data/Rakefile +4 -2
- data/config.yml +9 -0
- data/ext/herb/extconf.rb +8 -31
- data/ext/herb/nodes.c +90 -73
- data/ext/herb/parser_options_helpers.c +26 -0
- data/lib/herb/3.2/herb.so +0 -0
- data/lib/herb/3.3/herb.so +0 -0
- data/lib/herb/3.4/herb.so +0 -0
- data/lib/herb/4.0/herb.so +0 -0
- data/lib/herb/analysis/partial_index.rb +1 -1
- data/lib/herb/analysis/partial_resolution.rb +27 -0
- data/lib/herb/ast/helpers.rb +1 -1
- data/lib/herb/ast/nodes.rb +32 -6
- data/lib/herb/bootstrap.rb +6 -2
- data/lib/herb/configuration.rb +11 -1
- data/lib/herb/dev/classifier.rb +1 -1
- data/lib/herb/dev/runner.rb +6 -1
- data/lib/herb/engine/compiler.rb +52 -19
- data/lib/herb/engine/slots/dynamics_compiler.rb +63 -14
- data/lib/herb/engine/slots/markers.rb +24 -0
- data/lib/herb/engine/slots/state_compiler.rb +1 -2
- data/lib/herb/engine/slots/subtree_compiler.rb +1 -1
- data/lib/herb/engine/slots/visitor.rb +71 -32
- data/lib/herb/engine/visitors/instrumentation_visitor.rb +18 -6
- data/lib/herb/engine.rb +0 -2
- data/lib/herb/parser_options.rb +6 -3
- data/lib/herb/project.rb +19 -8
- data/lib/herb/version.rb +1 -1
- data/lib/herb.rb +1 -1
- data/sig/herb/analysis/partial_resolution.rbs +8 -0
- data/sig/herb/ast/nodes.rbs +10 -4
- data/sig/herb/bootstrap.rbs +2 -0
- data/sig/herb/configuration.rbs +3 -0
- data/sig/herb/dev/runner.rbs +3 -0
- data/sig/herb/engine/compiler.rbs +14 -3
- data/sig/herb/engine/slots/dynamics_compiler.rbs +27 -7
- data/sig/herb/engine/slots/markers.rbs +14 -0
- data/sig/herb/engine/slots/visitor.rbs +31 -13
- data/sig/herb/engine/visitors/instrumentation_visitor.rbs +5 -1
- data/sig/herb/parser_options.rbs +6 -4
- data/sig/herb.rbs +2 -2
- data/sig/serialized_ast_nodes.rbs +1 -0
- data/src/analyze/action_view/attribute_extraction_helpers.c +40 -21
- data/src/analyze/action_view/generated_handlers.c +36 -36
- data/src/analyze/action_view/image_tag.c +7 -3
- data/src/analyze/action_view/javascript_include_tag.c +6 -3
- data/src/analyze/action_view/link_to.c +23 -23
- data/src/analyze/action_view/registry.c +7 -3
- data/src/analyze/action_view/tag_helper_node_builders.c +12 -16
- data/src/analyze/action_view/tag_helpers.c +215 -110
- data/src/analyze/action_view/turbo_frame_tag.c +5 -4
- data/src/analyze/analyze.c +41 -45
- data/src/analyze/analyze_helpers.c +240 -405
- data/src/analyze/analyzed_ruby.c +10 -7
- data/src/analyze/builders.c +1 -0
- data/src/analyze/control_type.c +46 -29
- data/src/analyze/herb_directives.c +16 -20
- data/src/analyze/iteration_nodes.c +69 -24
- data/src/analyze/parse_errors.c +32 -22
- data/src/analyze/postfix_conditionals.c +23 -13
- data/src/analyze/prism_annotate.c +56 -32
- data/src/analyze/render_nodes.c +51 -41
- data/src/analyze/strict_locals.c +14 -15
- data/src/analyze/ternary_conditionals.c +14 -10
- data/src/ast/ast_nodes.c +3 -1
- data/src/ast/ast_pretty_print.c +5 -1
- data/src/extract.c +204 -143
- data/src/herb.c +10 -8
- data/src/include/analyze/action_view/tag_helper_handler.h +1 -1
- data/src/include/analyze/action_view/tag_helper_node_builders.h +1 -0
- data/src/include/analyze/action_view/tag_helpers.h +1 -1
- data/src/include/analyze/analyze.h +3 -24
- data/src/include/analyze/analyzed_ruby.h +29 -2
- data/src/include/analyze/helpers.h +7 -27
- data/src/include/ast/ast_nodes.h +2 -1
- data/src/include/herb.h +3 -2
- data/src/include/lexer/lexer.h +1 -0
- data/src/include/parser/parser_options.h +5 -0
- data/src/include/prism/herb_prism_node.h +6 -1
- data/src/include/prism/prism_context.h +12 -12
- data/src/include/prism/prism_helpers.h +30 -0
- data/src/include/prism_version.h +11 -0
- data/src/include/version.h +1 -1
- data/src/lexer.c +32 -0
- data/src/parser/parser_helpers.c +1 -2
- data/src/parser.c +6 -7
- data/src/parser_options_defaults.c +1 -0
- data/src/prism/prism_helpers.c +167 -42
- data/src/prism/ruby_parser.c +20 -20
- data/templates/ext/herb/nodes.c.erb +5 -5
- data/templates/ext/herb/parser_options_helpers.c.erb +33 -0
- data/templates/java/nodes.c.erb +6 -6
- data/templates/java/parser_options_helpers.c.erb +41 -2
- data/templates/java/parser_options_helpers.h.erb +2 -1
- data/templates/javascript/packages/core/src/nodes.ts.erb +21 -1
- data/templates/javascript/packages/node/extension/nodes.cpp.erb +5 -5
- data/templates/javascript/packages/node/extension/parser_options_helpers.cpp.erb +34 -2
- data/templates/javascript/packages/node/extension/parser_options_helpers.h.erb +1 -1
- data/templates/lib/herb/parser_options.rb.erb +1 -1
- data/templates/rust/src/ast/nodes.rs.erb +1 -4
- data/templates/rust/src/prism/generated_deserialize.rs.erb +90 -44
- data/templates/rust/src/prism/generated_prettyprint.rs.erb +18 -27
- data/templates/src/analyze/action_view/generated_handlers.c.erb +23 -22
- data/templates/src/include/parser/parser_options.h.erb +10 -0
- data/templates/src/include/prism_version.h.erb +17 -0
- data/templates/src/parser_options_defaults.c.erb +1 -1
- data/templates/template.rb +17 -2
- data/templates/wasm/nodes.cpp.erb +8 -18
- data/templates/wasm/parser_options_helpers.cpp.erb +24 -0
- data/vendor/prism/Rakefile +76 -7
- data/vendor/prism/config.yml +174 -161
- data/vendor/prism/include/prism/arena.h +45 -0
- data/vendor/prism/include/prism/arena.hpp +42 -0
- data/vendor/prism/include/prism/ast.h +2738 -611
- data/vendor/prism/include/prism/ast.hpp +641 -0
- data/vendor/prism/include/prism/buffer.h +60 -0
- data/vendor/prism/include/prism/buffer.hpp +55 -0
- data/vendor/prism/include/prism/comments.h +72 -0
- data/vendor/prism/include/prism/compiler/accel.h +26 -0
- data/vendor/prism/include/prism/compiler/align.h +36 -0
- data/vendor/prism/include/prism/compiler/assume.h +25 -0
- data/vendor/prism/include/prism/compiler/branch.h +26 -0
- data/vendor/prism/include/prism/compiler/bswap.h +46 -0
- data/vendor/prism/include/prism/compiler/cplusplus.hpp +16 -0
- data/vendor/prism/include/prism/compiler/endianness.h +34 -0
- data/vendor/prism/include/prism/compiler/exceptions.hpp +17 -0
- data/vendor/prism/include/prism/compiler/exported.h +24 -0
- data/vendor/prism/include/prism/compiler/fallthrough.h +22 -0
- data/vendor/prism/include/prism/compiler/filesystem.h +32 -0
- data/vendor/prism/include/prism/compiler/flex_array.h +19 -0
- data/vendor/prism/include/prism/compiler/force_inline.h +21 -0
- data/vendor/prism/include/prism/compiler/format.h +27 -0
- data/vendor/prism/include/prism/compiler/inline.h +17 -0
- data/vendor/prism/include/prism/compiler/lifetimebound.hpp +25 -0
- data/vendor/prism/include/prism/compiler/nodiscard.h +22 -0
- data/vendor/prism/include/prism/compiler/nonnull.h +18 -0
- data/vendor/prism/include/prism/compiler/unused.h +18 -0
- data/vendor/prism/include/prism/constant_pool.h +106 -0
- data/vendor/prism/include/prism/diagnostic.h +55 -402
- data/vendor/prism/include/prism/errors_format.h +61 -0
- data/vendor/prism/include/prism/excludes.h +29 -0
- data/vendor/prism/include/prism/integer.h +41 -0
- data/vendor/prism/include/prism/internal/allocator.h +68 -0
- data/vendor/prism/include/prism/internal/allocator_debug.h +88 -0
- data/vendor/prism/include/prism/internal/arena.h +108 -0
- data/vendor/prism/include/prism/internal/bit.h +42 -0
- data/vendor/prism/include/prism/internal/buffer.h +94 -0
- data/vendor/prism/include/prism/internal/char.h +145 -0
- data/vendor/prism/include/prism/internal/comments.h +54 -0
- data/vendor/prism/include/prism/internal/constant_pool.h +152 -0
- data/vendor/prism/include/prism/internal/diagnostic.h +389 -0
- data/vendor/prism/include/prism/{encoding.h → internal/encoding.h} +27 -68
- data/vendor/prism/include/prism/internal/integer.h +68 -0
- data/vendor/prism/include/prism/internal/isinf.h +16 -0
- data/vendor/prism/include/prism/internal/line_offset_list.h +34 -0
- data/vendor/prism/include/prism/{util/pm_list.h → internal/list.h} +11 -52
- data/vendor/prism/include/prism/internal/magic_comments.h +23 -0
- data/vendor/prism/include/prism/internal/memchr.h +15 -0
- data/vendor/prism/include/prism/internal/node.h +42 -0
- data/vendor/prism/include/prism/internal/options.h +232 -0
- data/vendor/prism/include/prism/internal/parser.h +1015 -0
- data/vendor/prism/include/prism/internal/regexp.h +26 -0
- data/vendor/prism/include/prism/internal/serialize.h +39 -0
- data/vendor/prism/include/prism/internal/source.h +72 -0
- data/vendor/prism/include/prism/internal/static_literals.h +60 -0
- data/vendor/prism/include/prism/internal/stringy.h +30 -0
- data/vendor/prism/include/prism/{util/pm_strncasecmp.h → internal/strncasecmp.h} +3 -17
- data/vendor/prism/include/prism/{util/pm_strpbrk.h → internal/strpbrk.h} +7 -20
- data/vendor/prism/include/prism/internal/tokens.h +11 -0
- data/vendor/prism/include/prism/internal/xxh3.h +16 -0
- data/vendor/prism/include/prism/json.h +40 -0
- data/vendor/prism/include/prism/line_offset_list.h +69 -0
- data/vendor/prism/include/prism/magic_comments.h +53 -0
- data/vendor/prism/include/prism/node.h +59 -49
- data/vendor/prism/include/prism/node.hpp +272 -0
- data/vendor/prism/include/prism/node_type.hpp +38 -0
- data/vendor/prism/include/prism/options.h +154 -279
- data/vendor/prism/include/prism/options.hpp +43 -0
- data/vendor/prism/include/prism/parser.h +367 -870
- data/vendor/prism/include/prism/parser.hpp +274 -0
- data/vendor/prism/include/prism/prettyprint.h +14 -9
- data/vendor/prism/include/prism/serialize.h +123 -0
- data/vendor/prism/include/prism/source.h +163 -0
- data/vendor/prism/include/prism/stream.h +36 -0
- data/vendor/prism/include/prism/string_query.h +82 -0
- data/vendor/prism/include/prism/stringy.h +61 -0
- data/vendor/prism/include/prism/stringy.hpp +31 -0
- data/vendor/prism/include/prism/version.h +20 -3
- data/vendor/prism/include/prism.h +35 -320
- data/vendor/prism/include/prism.hpp +24 -0
- data/vendor/prism/src/arena.c +122 -0
- data/vendor/prism/src/{util/pm_buffer.c → buffer.c} +53 -21
- data/vendor/prism/src/{util/pm_char.c → char.c} +28 -57
- data/vendor/prism/src/comments.c +455 -0
- data/vendor/prism/src/constant_pool.c +406 -0
- data/vendor/prism/src/diagnostic.c +120 -68
- data/vendor/prism/src/encoding.c +8 -3
- data/vendor/prism/src/errors_format.c +519 -0
- data/vendor/prism/src/{util/pm_integer.c → integer.c} +38 -22
- data/vendor/prism/src/json.c +5733 -0
- data/vendor/prism/src/line_offset_list.c +100 -0
- data/vendor/prism/src/list.c +24 -0
- data/vendor/prism/src/{util/pm_memchr.c → memchr.c} +8 -6
- data/vendor/prism/src/node.c +3465 -7787
- data/vendor/prism/src/options.c +161 -54
- data/vendor/prism/src/parser.c +371 -0
- data/vendor/prism/src/prettyprint.c +421 -354
- data/vendor/prism/src/prism.c +8522 -7280
- data/vendor/prism/src/regexp.c +960 -45
- data/vendor/prism/src/serialize.c +2434 -2048
- data/vendor/prism/src/source.c +524 -0
- data/vendor/prism/src/static_literals.c +303 -360
- data/vendor/prism/src/string_query.c +180 -0
- data/vendor/prism/src/stringy.c +61 -0
- data/vendor/prism/src/{util/pm_strncasecmp.c → strncasecmp.c} +5 -4
- data/vendor/prism/src/strpbrk.c +447 -0
- data/vendor/prism/src/{token_type.c → tokens.c} +39 -18
- data/vendor/prism/src/xxh3.c +292 -0
- data/vendor/prism/templates/ext/prism/api_node.c.erb +58 -44
- data/vendor/prism/templates/include/prism/ast.h.erb +67 -17
- data/vendor/prism/templates/include/prism/ast.hpp.erb +31 -0
- data/vendor/prism/templates/include/prism/internal/diagnostic.h.erb +60 -0
- data/vendor/prism/templates/java/{org → api/src/main/java-templates/org/ruby_lang}/prism/AbstractNodeVisitor.java.erb +1 -1
- data/vendor/prism/templates/java/{org → api/src/main/java-templates/org/ruby_lang}/prism/Loader.java.erb +232 -133
- data/vendor/prism/templates/java/{org → api/src/main/java-templates/org/ruby_lang}/prism/Nodes.java.erb +62 -23
- data/vendor/prism/templates/javascript/src/deserialize.js.erb +153 -146
- data/vendor/prism/templates/javascript/src/nodes.js.erb +4 -9
- data/vendor/prism/templates/lib/prism/compiler.rb.erb +14 -5
- data/vendor/prism/templates/lib/prism/dispatcher.rb.erb +20 -12
- data/vendor/prism/templates/lib/prism/dot_visitor.rb.erb +37 -11
- data/vendor/prism/templates/lib/prism/dsl.rb.erb +43 -4
- data/vendor/prism/templates/lib/prism/inspect_visitor.rb.erb +26 -10
- data/vendor/prism/templates/lib/prism/mutation_compiler.rb.erb +5 -2
- data/vendor/prism/templates/lib/prism/node.rb.erb +283 -105
- data/vendor/prism/templates/lib/prism/reflection.rb.erb +11 -2
- data/vendor/prism/templates/lib/prism/serialize.rb.erb +291 -134
- data/vendor/prism/templates/lib/prism/visitor.rb.erb +18 -0
- data/vendor/prism/templates/src/diagnostic.c.erb +114 -63
- data/vendor/prism/templates/src/json.c.erb +130 -0
- data/vendor/prism/templates/src/node.c.erb +79 -236
- data/vendor/prism/templates/src/prettyprint.c.erb +24 -13
- data/vendor/prism/templates/src/serialize.c.erb +369 -183
- data/vendor/prism/templates/src/{token_type.c.erb → tokens.c.erb} +22 -11
- data/vendor/prism/templates/template.rb +193 -91
- metadata +100 -42
- data/vendor/prism/include/prism/defines.h +0 -260
- data/vendor/prism/include/prism/pack.h +0 -163
- data/vendor/prism/include/prism/regexp.h +0 -43
- data/vendor/prism/include/prism/static_literals.h +0 -121
- data/vendor/prism/include/prism/util/pm_buffer.h +0 -236
- data/vendor/prism/include/prism/util/pm_char.h +0 -204
- data/vendor/prism/include/prism/util/pm_constant_pool.h +0 -218
- data/vendor/prism/include/prism/util/pm_integer.h +0 -130
- data/vendor/prism/include/prism/util/pm_memchr.h +0 -29
- data/vendor/prism/include/prism/util/pm_newline_list.h +0 -113
- data/vendor/prism/include/prism/util/pm_string.h +0 -200
- data/vendor/prism/src/pack.c +0 -509
- data/vendor/prism/src/util/pm_constant_pool.c +0 -342
- data/vendor/prism/src/util/pm_list.c +0 -49
- data/vendor/prism/src/util/pm_newline_list.c +0 -125
- data/vendor/prism/src/util/pm_string.c +0 -381
- data/vendor/prism/src/util/pm_strpbrk.c +0 -206
- data/vendor/prism/templates/include/prism/diagnostic.h.erb +0 -130
- data/vendor/prism/templates/rbi/prism/dsl.rbi.erb +0 -68
- data/vendor/prism/templates/rbi/prism/node.rbi.erb +0 -167
- data/vendor/prism/templates/rbi/prism/visitor.rbi.erb +0 -18
- data/vendor/prism/templates/sig/prism/_private/dot_visitor.rbs.erb +0 -45
- data/vendor/prism/templates/sig/prism/dsl.rbs.erb +0 -31
- data/vendor/prism/templates/sig/prism/mutation_compiler.rbs.erb +0 -7
- data/vendor/prism/templates/sig/prism/node.rbs.erb +0 -136
- data/vendor/prism/templates/sig/prism/visitor.rbs.erb +0 -17
- data/vendor/prism/templates/sig/prism.rbs.erb +0 -92
data/src/analyze/analyze.c
CHANGED
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
#include "../include/location/location.h"
|
|
27
27
|
#include "../include/location/position.h"
|
|
28
28
|
#include "../include/parser/parser.h"
|
|
29
|
+
#include "../include/prism/prism_helpers.h"
|
|
29
30
|
#include "../include/visitor.h"
|
|
30
31
|
|
|
31
32
|
#include <prism.h>
|
|
@@ -34,34 +35,14 @@
|
|
|
34
35
|
#include <stdlib.h>
|
|
35
36
|
#include <string.h>
|
|
36
37
|
|
|
37
|
-
static analyzed_ruby_T* herb_analyze_ruby(hb_string_T source) {
|
|
38
|
-
analyzed_ruby_T* analyzed = init_analyzed_ruby(source);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
pm_visit_node(analyzed->root,
|
|
43
|
-
|
|
44
|
-
pm_visit_node(analyzed->root,
|
|
45
|
-
pm_visit_node(analyzed->root, search_for_nodes, analyzed);
|
|
46
|
-
pm_visit_node(analyzed->root, search_until_nodes, analyzed);
|
|
47
|
-
pm_visit_node(analyzed->root, search_begin_nodes, analyzed);
|
|
48
|
-
pm_visit_node(analyzed->root, search_unless_nodes, analyzed);
|
|
49
|
-
pm_visit_node(analyzed->root, search_when_nodes, analyzed);
|
|
50
|
-
pm_visit_node(analyzed->root, search_in_nodes, analyzed);
|
|
51
|
-
|
|
52
|
-
search_unexpected_elsif_nodes(analyzed);
|
|
53
|
-
search_unexpected_else_nodes(analyzed);
|
|
54
|
-
search_unexpected_end_nodes(analyzed);
|
|
55
|
-
search_unexpected_when_nodes(analyzed);
|
|
56
|
-
search_unexpected_in_nodes(analyzed);
|
|
57
|
-
|
|
58
|
-
search_unexpected_rescue_nodes(analyzed);
|
|
59
|
-
search_unexpected_ensure_nodes(analyzed);
|
|
60
|
-
search_yield_nodes(analyzed->root, analyzed);
|
|
61
|
-
search_then_keywords(analyzed->root, analyzed);
|
|
62
|
-
search_unexpected_block_closing_nodes(analyzed);
|
|
63
|
-
|
|
64
|
-
if (!analyzed->valid) { pm_visit_node(analyzed->root, search_unclosed_control_flows, analyzed); }
|
|
38
|
+
static analyzed_ruby_T* herb_analyze_ruby(hb_string_T source, const parser_options_T* options) {
|
|
39
|
+
analyzed_ruby_T* analyzed = init_analyzed_ruby(source, options);
|
|
40
|
+
|
|
41
|
+
if (analyzed->valid) { return analyzed; }
|
|
42
|
+
|
|
43
|
+
pm_visit_node(analyzed->root, search_control_flow_nodes, analyzed);
|
|
44
|
+
search_unexpected_keyword_errors(analyzed);
|
|
45
|
+
pm_visit_node(analyzed->root, search_unclosed_control_flows, analyzed);
|
|
65
46
|
|
|
66
47
|
return analyzed;
|
|
67
48
|
}
|
|
@@ -82,7 +63,7 @@ static bool analyze_erb_content(const AST_NODE_T* node, void* data) {
|
|
|
82
63
|
hb_string_T opening = erb_content_node->tag_opening->value;
|
|
83
64
|
|
|
84
65
|
if (!erb_opening_is_custom(opening)) {
|
|
85
|
-
analyzed_ruby_T* analyzed = herb_analyze_ruby(erb_content_node->content->value);
|
|
66
|
+
analyzed_ruby_T* analyzed = herb_analyze_ruby(erb_content_node->content->value, options);
|
|
86
67
|
|
|
87
68
|
erb_content_node->parsed = true;
|
|
88
69
|
erb_content_node->valid = analyzed->valid;
|
|
@@ -1022,9 +1003,10 @@ static AST_ERB_CONTENT_NODE_T* erb_content_part_node(
|
|
|
1022
1003
|
token_T* tag_opening,
|
|
1023
1004
|
token_T* content,
|
|
1024
1005
|
token_T* tag_closing,
|
|
1006
|
+
const parser_options_T* options,
|
|
1025
1007
|
hb_allocator_T* allocator
|
|
1026
1008
|
) {
|
|
1027
|
-
analyzed_ruby_T* analyzed = herb_analyze_ruby(content->value);
|
|
1009
|
+
analyzed_ruby_T* analyzed = herb_analyze_ruby(content->value, options);
|
|
1028
1010
|
|
|
1029
1011
|
position_T start_position = tag_opening ? tag_opening->location.start : content->location.start;
|
|
1030
1012
|
position_T end_position = tag_closing ? tag_closing->location.end : content->location.end;
|
|
@@ -1044,13 +1026,18 @@ static AST_ERB_CONTENT_NODE_T* erb_content_part_node(
|
|
|
1044
1026
|
);
|
|
1045
1027
|
}
|
|
1046
1028
|
|
|
1047
|
-
static void append_control_role_parts(
|
|
1029
|
+
static void append_control_role_parts(
|
|
1030
|
+
AST_ERB_CONTENT_NODE_T* erb_node,
|
|
1031
|
+
hb_array_T* output,
|
|
1032
|
+
const parser_options_T* options,
|
|
1033
|
+
hb_allocator_T* allocator
|
|
1034
|
+
) {
|
|
1048
1035
|
token_T* tag_opening = token_copy(erb_node->tag_opening, allocator);
|
|
1049
1036
|
token_T* content = erb_node->content;
|
|
1050
1037
|
bool split_content = false;
|
|
1051
1038
|
|
|
1052
1039
|
while (true) {
|
|
1053
|
-
analyzed_ruby_T* analyzed = split_content ? herb_analyze_ruby(content->value) : erb_node->analyzed_ruby;
|
|
1040
|
+
analyzed_ruby_T* analyzed = split_content ? herb_analyze_ruby(content->value, options) : erb_node->analyzed_ruby;
|
|
1054
1041
|
uint32_t offset = 0;
|
|
1055
1042
|
bool split = control_role_split_offset(analyzed, &offset);
|
|
1056
1043
|
|
|
@@ -1062,7 +1049,7 @@ static void append_control_role_parts(AST_ERB_CONTENT_NODE_T* erb_node, hb_array
|
|
|
1062
1049
|
|
|
1063
1050
|
if (!token_split(content, offset, allocator, &head, &tail)) { break; }
|
|
1064
1051
|
|
|
1065
|
-
hb_array_append(output, (AST_NODE_T*) erb_content_part_node(tag_opening, head, NULL, allocator));
|
|
1052
|
+
hb_array_append(output, (AST_NODE_T*) erb_content_part_node(tag_opening, head, NULL, options, allocator));
|
|
1066
1053
|
|
|
1067
1054
|
if (split_content) { token_free(content, allocator); }
|
|
1068
1055
|
|
|
@@ -1076,7 +1063,7 @@ static void append_control_role_parts(AST_ERB_CONTENT_NODE_T* erb_node, hb_array
|
|
|
1076
1063
|
hb_array_append(
|
|
1077
1064
|
output,
|
|
1078
1065
|
(AST_NODE_T*)
|
|
1079
|
-
erb_content_part_node(tag_opening, last_content, token_copy(erb_node->tag_closing, allocator), allocator)
|
|
1066
|
+
erb_content_part_node(tag_opening, last_content, token_copy(erb_node->tag_closing, allocator), options, allocator)
|
|
1080
1067
|
);
|
|
1081
1068
|
}
|
|
1082
1069
|
|
|
@@ -1121,7 +1108,7 @@ static hb_array_T* split_control_role_tags(hb_array_T* array, analyze_ruby_conte
|
|
|
1121
1108
|
|
|
1122
1109
|
AST_ERB_CONTENT_NODE_T* erb_node = (AST_ERB_CONTENT_NODE_T*) item;
|
|
1123
1110
|
|
|
1124
|
-
append_control_role_parts(erb_node, split, allocator);
|
|
1111
|
+
append_control_role_parts(erb_node, split, context->options, allocator);
|
|
1125
1112
|
ast_node_free(item, allocator);
|
|
1126
1113
|
}
|
|
1127
1114
|
|
|
@@ -1179,7 +1166,11 @@ hb_array_T* rewrite_node_array(AST_NODE_T* node, hb_array_T* array, analyze_ruby
|
|
|
1179
1166
|
return new_array;
|
|
1180
1167
|
}
|
|
1181
1168
|
|
|
1182
|
-
static tag_helper_scope_T* tag_helper_scope_init(
|
|
1169
|
+
static tag_helper_scope_T* tag_helper_scope_init(
|
|
1170
|
+
const char* source,
|
|
1171
|
+
const parser_options_T* options,
|
|
1172
|
+
hb_allocator_T* allocator
|
|
1173
|
+
) {
|
|
1183
1174
|
if (!source) { return NULL; }
|
|
1184
1175
|
|
|
1185
1176
|
tag_helper_scope_T* scope = hb_allocator_alloc(allocator, sizeof(tag_helper_scope_T));
|
|
@@ -1209,14 +1200,19 @@ static tag_helper_scope_T* tag_helper_scope_init(const char* source, hb_allocato
|
|
|
1209
1200
|
return NULL;
|
|
1210
1201
|
}
|
|
1211
1202
|
|
|
1212
|
-
|
|
1213
|
-
|
|
1203
|
+
scope->arena = pm_arena_new();
|
|
1204
|
+
scope->options = pm_options_new();
|
|
1205
|
+
pm_options_partial_script_set(scope->options, true);
|
|
1206
|
+
herb_prism_options_set_ruby_version(scope->options, options);
|
|
1207
|
+
scope->parser =
|
|
1208
|
+
pm_parser_new(scope->arena, (const uint8_t*) scope->buffer.value, scope->buffer.length, scope->options);
|
|
1214
1209
|
|
|
1215
|
-
scope->root = pm_parse(
|
|
1210
|
+
scope->root = pm_parse(scope->parser);
|
|
1216
1211
|
|
|
1217
1212
|
if (!scope->root) {
|
|
1218
|
-
pm_parser_free(
|
|
1219
|
-
|
|
1213
|
+
pm_parser_free(scope->parser);
|
|
1214
|
+
pm_arena_free(scope->arena);
|
|
1215
|
+
pm_options_free(scope->options);
|
|
1220
1216
|
hb_buffer_free(&scope->buffer);
|
|
1221
1217
|
hb_allocator_dealloc(allocator, scope);
|
|
1222
1218
|
|
|
@@ -1229,9 +1225,9 @@ static tag_helper_scope_T* tag_helper_scope_init(const char* source, hb_allocato
|
|
|
1229
1225
|
static void tag_helper_scope_free(tag_helper_scope_T* scope, hb_allocator_T* allocator) {
|
|
1230
1226
|
if (!scope) { return; }
|
|
1231
1227
|
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
pm_options_free(
|
|
1228
|
+
pm_parser_free(scope->parser);
|
|
1229
|
+
pm_arena_free(scope->arena);
|
|
1230
|
+
pm_options_free(scope->options);
|
|
1235
1231
|
hb_buffer_free(&scope->buffer);
|
|
1236
1232
|
hb_allocator_dealloc(allocator, scope);
|
|
1237
1233
|
}
|
|
@@ -1276,7 +1272,7 @@ void herb_analyze_parse_tree(
|
|
|
1276
1272
|
}
|
|
1277
1273
|
|
|
1278
1274
|
if (options && options->action_view_helpers) {
|
|
1279
|
-
context.tag_helper_scope = tag_helper_scope_init(source, allocator);
|
|
1275
|
+
context.tag_helper_scope = tag_helper_scope_init(source, options, allocator);
|
|
1280
1276
|
|
|
1281
1277
|
herb_visit_node((AST_NODE_T*) document, transform_tag_helper_nodes, &context);
|
|
1282
1278
|
|