herb 0.9.5-arm-linux-gnu → 0.9.7-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/ext/herb/extension.c +8 -0
- data/ext/herb/extension_helpers.c +1 -0
- data/lib/herb/3.0/herb.so +0 -0
- data/lib/herb/3.1/herb.so +0 -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/action_view/helper_registry.rb +8107 -0
- data/lib/herb/parser_options.rb +7 -2
- data/lib/herb/project.rb +2 -5
- data/lib/herb/version.rb +1 -1
- data/sig/herb/action_view/helper_registry.rbs +1144 -0
- data/sig/herb/parser_options.rbs +6 -2
- data/src/analyze/action_view/generated_handlers.c +355 -0
- data/src/analyze/action_view/generated_handlers.h +16 -0
- data/src/analyze/action_view/helper_registry.c +7244 -0
- data/src/analyze/action_view/image_tag.c +4 -31
- data/src/analyze/action_view/javascript_include_tag.c +1 -42
- data/src/analyze/action_view/javascript_tag.c +0 -52
- data/src/analyze/action_view/registry.c +2 -2
- data/src/analyze/action_view/tag_helpers.c +8 -120
- data/src/analyze/action_view/turbo_frame_tag.c +1 -36
- data/src/analyze/analyze.c +7 -0
- data/src/analyze/postfix_conditionals.c +326 -0
- data/src/analyze/ternary_conditionals.c +265 -0
- data/src/include/analyze/action_view/helper_registry.h +325 -0
- data/src/include/analyze/action_view/tag_helpers.h +0 -1
- data/src/include/analyze/postfix_conditionals.h +9 -0
- data/src/include/analyze/ternary_conditionals.h +15 -0
- data/src/include/parser/parser.h +1 -0
- data/src/include/version.h +1 -1
- data/src/parser.c +1 -0
- data/templates/java/org/herb/ast/HelperRegistry.java.erb +258 -0
- data/templates/javascript/packages/core/src/action-view-helpers.ts.erb +171 -0
- data/templates/javascript/packages/core/src/nodes.ts.erb +5 -1
- data/templates/lib/herb/action_view/helper_registry.rb.erb +288 -0
- data/templates/rust/src/action_view_helpers.rs.erb +154 -0
- data/templates/src/analyze/action_view/generated_handlers.c.erb +230 -0
- data/templates/src/analyze/action_view/generated_handlers.h.erb +12 -0
- data/templates/src/analyze/action_view/helper_registry.c.erb +114 -0
- data/templates/src/include/analyze/action_view/helper_registry.h.erb +82 -0
- data/templates/template.rb +338 -1
- metadata +19 -3
- data/src/analyze/action_view/content_tag.c +0 -78
- data/src/analyze/action_view/tag.c +0 -87
data/sig/herb/parser_options.rbs
CHANGED
|
@@ -10,6 +10,8 @@ module Herb
|
|
|
10
10
|
|
|
11
11
|
attr_reader action_view_helpers: bool
|
|
12
12
|
|
|
13
|
+
attr_reader transform_conditionals: bool
|
|
14
|
+
|
|
13
15
|
attr_reader render_nodes: bool
|
|
14
16
|
|
|
15
17
|
attr_reader strict_locals: bool
|
|
@@ -28,6 +30,8 @@ module Herb
|
|
|
28
30
|
|
|
29
31
|
DEFAULT_ACTION_VIEW_HELPERS: bool
|
|
30
32
|
|
|
33
|
+
DEFAULT_TRANSFORM_CONDITIONALS: bool
|
|
34
|
+
|
|
31
35
|
DEFAULT_RENDER_NODES: bool
|
|
32
36
|
|
|
33
37
|
DEFAULT_STRICT_LOCALS: bool
|
|
@@ -38,8 +42,8 @@ module Herb
|
|
|
38
42
|
|
|
39
43
|
DEFAULT_PRISM_NODES_DEEP: bool
|
|
40
44
|
|
|
41
|
-
# : (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?render_nodes: bool, ?strict_locals: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
42
|
-
def initialize: (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?render_nodes: bool, ?strict_locals: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
45
|
+
# : (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?transform_conditionals: bool, ?render_nodes: bool, ?strict_locals: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
46
|
+
def initialize: (?strict: bool, ?track_whitespace: bool, ?analyze: bool, ?action_view_helpers: bool, ?transform_conditionals: bool, ?render_nodes: bool, ?strict_locals: bool, ?prism_nodes: bool, ?prism_nodes_deep: bool, ?prism_program: bool) -> void
|
|
43
47
|
|
|
44
48
|
# : () -> Hash[Symbol, bool]
|
|
45
49
|
def to_h: () -> Hash[Symbol, bool]
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
2
|
+
// be modified manually. See /home/runner/work/herb/herb/templates/src/analyze/action_view/generated_handlers.c.erb
|
|
3
|
+
|
|
4
|
+
#include "../../include/analyze/action_view/tag_helper_handler.h"
|
|
5
|
+
#include "../../include/lib/hb_allocator.h"
|
|
6
|
+
#include "../../include/lib/hb_string.h"
|
|
7
|
+
|
|
8
|
+
#include <prism.h>
|
|
9
|
+
#include <stdbool.h>
|
|
10
|
+
#include <string.h>
|
|
11
|
+
|
|
12
|
+
// ==========================================================================
|
|
13
|
+
// Generated detect functions
|
|
14
|
+
// ==========================================================================
|
|
15
|
+
|
|
16
|
+
bool detect_image_tag(pm_call_node_t* call_node, pm_parser_t* parser) {
|
|
17
|
+
if (!call_node || !call_node->name) { return false; }
|
|
18
|
+
|
|
19
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, call_node->name);
|
|
20
|
+
|
|
21
|
+
return constant && constant->length == 9 && strncmp((const char*) constant->start, "image_tag", 9) == 0;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
bool detect_javascript_include_tag(pm_call_node_t* call_node, pm_parser_t* parser) {
|
|
25
|
+
if (!call_node || !call_node->name) { return false; }
|
|
26
|
+
|
|
27
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, call_node->name);
|
|
28
|
+
|
|
29
|
+
return constant && constant->length == 22 && strncmp((const char*) constant->start, "javascript_include_tag", 22) == 0;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
bool detect_javascript_tag(pm_call_node_t* call_node, pm_parser_t* parser) {
|
|
33
|
+
if (!call_node || !call_node->name) { return false; }
|
|
34
|
+
|
|
35
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, call_node->name);
|
|
36
|
+
|
|
37
|
+
return constant && constant->length == 14 && strncmp((const char*) constant->start, "javascript_tag", 14) == 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
bool detect_content_tag(pm_call_node_t* call_node, pm_parser_t* parser) {
|
|
41
|
+
if (!call_node || !call_node->name) { return false; }
|
|
42
|
+
|
|
43
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, call_node->name);
|
|
44
|
+
|
|
45
|
+
return constant && constant->length == 11 && strncmp((const char*) constant->start, "content_tag", 11) == 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
bool detect_tag(pm_call_node_t* call_node, pm_parser_t* parser) {
|
|
49
|
+
if (!call_node || !call_node->receiver) { return false; }
|
|
50
|
+
if (call_node->receiver->type != PM_CALL_NODE) { return false; }
|
|
51
|
+
|
|
52
|
+
pm_call_node_t* receiver_node = (pm_call_node_t*) call_node->receiver;
|
|
53
|
+
if (!receiver_node->name) { return false; }
|
|
54
|
+
|
|
55
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, receiver_node->name);
|
|
56
|
+
|
|
57
|
+
return constant && constant->length == 3 && strncmp((const char*) constant->start, "tag", 3) == 0;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
bool detect_turbo_frame_tag(pm_call_node_t* call_node, pm_parser_t* parser) {
|
|
61
|
+
if (!call_node || !call_node->name) { return false; }
|
|
62
|
+
|
|
63
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, call_node->name);
|
|
64
|
+
|
|
65
|
+
return constant && constant->length == 15 && strncmp((const char*) constant->start, "turbo_frame_tag", 15) == 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// ==========================================================================
|
|
69
|
+
// Generated extract_tag_name functions
|
|
70
|
+
// ==========================================================================
|
|
71
|
+
|
|
72
|
+
static char* extract_image_tag_tag_name(pm_call_node_t* _call_node, pm_parser_t* _parser, hb_allocator_T* allocator) {
|
|
73
|
+
(void) _call_node;
|
|
74
|
+
(void) _parser;
|
|
75
|
+
|
|
76
|
+
return hb_allocator_strdup(allocator, "img");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static char* extract_javascript_include_tag_tag_name(pm_call_node_t* _call_node, pm_parser_t* _parser, hb_allocator_T* allocator) {
|
|
80
|
+
(void) _call_node;
|
|
81
|
+
(void) _parser;
|
|
82
|
+
|
|
83
|
+
return hb_allocator_strdup(allocator, "script");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static char* extract_javascript_tag_tag_name(pm_call_node_t* _call_node, pm_parser_t* _parser, hb_allocator_T* allocator) {
|
|
87
|
+
(void) _call_node;
|
|
88
|
+
(void) _parser;
|
|
89
|
+
|
|
90
|
+
return hb_allocator_strdup(allocator, "script");
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
static char* extract_content_tag_tag_name(pm_call_node_t* call_node, pm_parser_t* parser, hb_allocator_T* allocator) {
|
|
94
|
+
(void) parser;
|
|
95
|
+
|
|
96
|
+
if (!call_node || !call_node->arguments) { return NULL; }
|
|
97
|
+
|
|
98
|
+
pm_arguments_node_t* arguments = call_node->arguments;
|
|
99
|
+
if (!arguments->arguments.size) { return NULL; }
|
|
100
|
+
|
|
101
|
+
pm_node_t* first_argument = arguments->arguments.nodes[0];
|
|
102
|
+
|
|
103
|
+
if (first_argument->type == PM_STRING_NODE) {
|
|
104
|
+
pm_string_node_t* string_node = (pm_string_node_t*) first_argument;
|
|
105
|
+
size_t length = pm_string_length(&string_node->unescaped);
|
|
106
|
+
return hb_allocator_strndup(allocator, (const char*) pm_string_source(&string_node->unescaped), length);
|
|
107
|
+
} else if (first_argument->type == PM_SYMBOL_NODE) {
|
|
108
|
+
pm_symbol_node_t* symbol_node = (pm_symbol_node_t*) first_argument;
|
|
109
|
+
size_t length = pm_string_length(&symbol_node->unescaped);
|
|
110
|
+
return hb_allocator_strndup(allocator, (const char*) pm_string_source(&symbol_node->unescaped), length);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return NULL;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
extern bool is_ruby_introspection_method(hb_string_T method_name);
|
|
117
|
+
|
|
118
|
+
static char* extract_tag_tag_name(pm_call_node_t* call_node, pm_parser_t* parser, hb_allocator_T* allocator) {
|
|
119
|
+
if (!call_node || !call_node->name) { return NULL; }
|
|
120
|
+
|
|
121
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, call_node->name);
|
|
122
|
+
if (!constant) { return NULL; }
|
|
123
|
+
|
|
124
|
+
if (is_ruby_introspection_method(hb_string_from_data((const char*) constant->start, constant->length))) { return NULL; }
|
|
125
|
+
|
|
126
|
+
char* name = hb_allocator_strndup(allocator, (const char*) constant->start, constant->length);
|
|
127
|
+
|
|
128
|
+
for (size_t i = 0; i < constant->length && name[i] != '\0'; i++) {
|
|
129
|
+
if (name[i] == '_') { name[i] = '-'; }
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
return name;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
static char* extract_turbo_frame_tag_tag_name(pm_call_node_t* _call_node, pm_parser_t* _parser, hb_allocator_T* allocator) {
|
|
136
|
+
(void) _call_node;
|
|
137
|
+
(void) _parser;
|
|
138
|
+
|
|
139
|
+
return hb_allocator_strdup(allocator, "turbo-frame");
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// ==========================================================================
|
|
143
|
+
// Generated extract_content functions
|
|
144
|
+
// ==========================================================================
|
|
145
|
+
|
|
146
|
+
static char* extract_image_tag_content(pm_call_node_t* _call_node, pm_parser_t* _parser, hb_allocator_T* _allocator) {
|
|
147
|
+
(void) _call_node;
|
|
148
|
+
(void) _parser;
|
|
149
|
+
(void) _allocator;
|
|
150
|
+
|
|
151
|
+
return NULL;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
static char* extract_javascript_include_tag_content(pm_call_node_t* _call_node, pm_parser_t* _parser, hb_allocator_T* _allocator) {
|
|
155
|
+
(void) _call_node;
|
|
156
|
+
(void) _parser;
|
|
157
|
+
(void) _allocator;
|
|
158
|
+
|
|
159
|
+
return NULL;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
static char* extract_javascript_tag_content(pm_call_node_t* call_node, pm_parser_t* _parser, hb_allocator_T* allocator) {
|
|
163
|
+
(void) _parser;
|
|
164
|
+
|
|
165
|
+
if (!call_node || !call_node->arguments) { return NULL; }
|
|
166
|
+
|
|
167
|
+
pm_arguments_node_t* arguments = call_node->arguments;
|
|
168
|
+
if (!arguments->arguments.size) { return NULL; }
|
|
169
|
+
|
|
170
|
+
pm_node_t* first_argument = arguments->arguments.nodes[0];
|
|
171
|
+
|
|
172
|
+
if (first_argument->type == PM_KEYWORD_HASH_NODE) { return NULL; }
|
|
173
|
+
|
|
174
|
+
if (first_argument->type == PM_STRING_NODE) {
|
|
175
|
+
pm_string_node_t* string_node = (pm_string_node_t*) first_argument;
|
|
176
|
+
size_t length = pm_string_length(&string_node->unescaped);
|
|
177
|
+
return hb_allocator_strndup(allocator, (const char*) pm_string_source(&string_node->unescaped), length);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
size_t source_length = first_argument->location.end - first_argument->location.start;
|
|
181
|
+
return hb_allocator_strndup(allocator, (const char*) first_argument->location.start, source_length);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
static char* extract_content_tag_content(pm_call_node_t* call_node, pm_parser_t* _parser, hb_allocator_T* allocator) {
|
|
185
|
+
(void) _parser;
|
|
186
|
+
|
|
187
|
+
if (!call_node) { return NULL; }
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
char* block_content = extract_inline_block_content(call_node, allocator);
|
|
191
|
+
if (block_content) { return block_content; }
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
if (call_node->arguments) {
|
|
195
|
+
pm_arguments_node_t* arguments = call_node->arguments;
|
|
196
|
+
|
|
197
|
+
if (arguments->arguments.size >= 2) {
|
|
198
|
+
pm_node_t* argument = arguments->arguments.nodes[1];
|
|
199
|
+
|
|
200
|
+
if (argument->type != PM_KEYWORD_HASH_NODE) {
|
|
201
|
+
|
|
202
|
+
if (argument->type == PM_STRING_NODE) {
|
|
203
|
+
pm_string_node_t* string_node = (pm_string_node_t*) argument;
|
|
204
|
+
size_t length = pm_string_length(&string_node->unescaped);
|
|
205
|
+
return hb_allocator_strndup(allocator, (const char*) pm_string_source(&string_node->unescaped), length);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
size_t source_length = argument->location.end - argument->location.start;
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
return hb_allocator_strndup(allocator, (const char*) argument->location.start, source_length);
|
|
212
|
+
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
return NULL;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
static char* extract_tag_content(pm_call_node_t* call_node, pm_parser_t* parser, hb_allocator_T* allocator) {
|
|
221
|
+
(void) parser;
|
|
222
|
+
|
|
223
|
+
if (!call_node) { return NULL; }
|
|
224
|
+
|
|
225
|
+
if (call_node->name) {
|
|
226
|
+
pm_constant_t* constant = pm_constant_pool_id_to_constant(&parser->constant_pool, call_node->name);
|
|
227
|
+
|
|
228
|
+
if (constant && is_ruby_introspection_method(hb_string_from_data((const char*) constant->start, constant->length))) {
|
|
229
|
+
return NULL;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
char* block_content = extract_inline_block_content(call_node, allocator);
|
|
234
|
+
if (block_content) { return block_content; }
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
if (call_node->arguments) {
|
|
238
|
+
pm_arguments_node_t* arguments = call_node->arguments;
|
|
239
|
+
|
|
240
|
+
if (arguments->arguments.size >= 1) {
|
|
241
|
+
pm_node_t* argument = arguments->arguments.nodes[0];
|
|
242
|
+
|
|
243
|
+
if (argument->type != PM_KEYWORD_HASH_NODE) {
|
|
244
|
+
|
|
245
|
+
if (argument->type == PM_STRING_NODE) {
|
|
246
|
+
pm_string_node_t* string_node = (pm_string_node_t*) argument;
|
|
247
|
+
size_t length = pm_string_length(&string_node->unescaped);
|
|
248
|
+
return hb_allocator_strndup(allocator, (const char*) pm_string_source(&string_node->unescaped), length);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
size_t source_length = argument->location.end - argument->location.start;
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
return hb_allocator_strndup(allocator, (const char*) argument->location.start, source_length);
|
|
255
|
+
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
return NULL;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
static char* extract_turbo_frame_tag_content(pm_call_node_t* _call_node, pm_parser_t* _parser, hb_allocator_T* _allocator) {
|
|
264
|
+
(void) _call_node;
|
|
265
|
+
(void) _parser;
|
|
266
|
+
(void) _allocator;
|
|
267
|
+
|
|
268
|
+
return NULL;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// ==========================================================================
|
|
272
|
+
// Generated supports_block functions
|
|
273
|
+
// ==========================================================================
|
|
274
|
+
|
|
275
|
+
static bool image_tag_supports_block(void) {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
static bool javascript_include_tag_supports_block(void) {
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
static bool javascript_tag_supports_block(void) {
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
static bool content_tag_supports_block(void) {
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
static bool tag_supports_block(void) {
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
static bool turbo_frame_tag_supports_block(void) {
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// ==========================================================================
|
|
300
|
+
// Generated handler structs
|
|
301
|
+
// ==========================================================================
|
|
302
|
+
|
|
303
|
+
const tag_helper_handler_T image_tag_handler = {
|
|
304
|
+
.name = "image_tag",
|
|
305
|
+
.source = HB_STRING_LITERAL("ActionView::Helpers::AssetTagHelper#image_tag"),
|
|
306
|
+
.detect = detect_image_tag,
|
|
307
|
+
.extract_tag_name = extract_image_tag_tag_name,
|
|
308
|
+
.extract_content = extract_image_tag_content,
|
|
309
|
+
.supports_block = image_tag_supports_block,
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
const tag_helper_handler_T javascript_include_tag_handler = {
|
|
313
|
+
.name = "javascript_include_tag",
|
|
314
|
+
.source = HB_STRING_LITERAL("ActionView::Helpers::AssetTagHelper#javascript_include_tag"),
|
|
315
|
+
.detect = detect_javascript_include_tag,
|
|
316
|
+
.extract_tag_name = extract_javascript_include_tag_tag_name,
|
|
317
|
+
.extract_content = extract_javascript_include_tag_content,
|
|
318
|
+
.supports_block = javascript_include_tag_supports_block,
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
const tag_helper_handler_T javascript_tag_handler = {
|
|
322
|
+
.name = "javascript_tag",
|
|
323
|
+
.source = HB_STRING_LITERAL("ActionView::Helpers::JavaScriptHelper#javascript_tag"),
|
|
324
|
+
.detect = detect_javascript_tag,
|
|
325
|
+
.extract_tag_name = extract_javascript_tag_tag_name,
|
|
326
|
+
.extract_content = extract_javascript_tag_content,
|
|
327
|
+
.supports_block = javascript_tag_supports_block,
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
const tag_helper_handler_T content_tag_handler = {
|
|
331
|
+
.name = "content_tag",
|
|
332
|
+
.source = HB_STRING_LITERAL("ActionView::Helpers::TagHelper#content_tag"),
|
|
333
|
+
.detect = detect_content_tag,
|
|
334
|
+
.extract_tag_name = extract_content_tag_tag_name,
|
|
335
|
+
.extract_content = extract_content_tag_content,
|
|
336
|
+
.supports_block = content_tag_supports_block,
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
const tag_helper_handler_T tag_handler = {
|
|
340
|
+
.name = "tag",
|
|
341
|
+
.source = HB_STRING_LITERAL("ActionView::Helpers::TagHelper#tag"),
|
|
342
|
+
.detect = detect_tag,
|
|
343
|
+
.extract_tag_name = extract_tag_tag_name,
|
|
344
|
+
.extract_content = extract_tag_content,
|
|
345
|
+
.supports_block = tag_supports_block,
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
const tag_helper_handler_T turbo_frame_tag_handler = {
|
|
349
|
+
.name = "turbo_frame_tag",
|
|
350
|
+
.source = HB_STRING_LITERAL("Turbo::FramesHelper#turbo_frame_tag"),
|
|
351
|
+
.detect = detect_turbo_frame_tag,
|
|
352
|
+
.extract_tag_name = extract_turbo_frame_tag_tag_name,
|
|
353
|
+
.extract_content = extract_turbo_frame_tag_content,
|
|
354
|
+
.supports_block = turbo_frame_tag_supports_block,
|
|
355
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
2
|
+
// be modified manually. See /home/runner/work/herb/herb/templates/src/analyze/action_view/generated_handlers.h.erb
|
|
3
|
+
|
|
4
|
+
#ifndef GENERATED_HANDLERS_H
|
|
5
|
+
#define GENERATED_HANDLERS_H
|
|
6
|
+
|
|
7
|
+
#include "../../include/analyze/action_view/tag_helper_handler.h"
|
|
8
|
+
|
|
9
|
+
extern const tag_helper_handler_T image_tag_handler;
|
|
10
|
+
extern const tag_helper_handler_T javascript_include_tag_handler;
|
|
11
|
+
extern const tag_helper_handler_T javascript_tag_handler;
|
|
12
|
+
extern const tag_helper_handler_T content_tag_handler;
|
|
13
|
+
extern const tag_helper_handler_T tag_handler;
|
|
14
|
+
extern const tag_helper_handler_T turbo_frame_tag_handler;
|
|
15
|
+
|
|
16
|
+
#endif
|