@herb-tools/node 0.8.10 → 0.9.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 +19 -0
- package/binding.gyp +26 -8
- package/dist/herb-node.cjs +41 -12
- package/dist/herb-node.cjs.map +1 -1
- package/dist/herb-node.esm.js +8 -1
- package/dist/herb-node.esm.js.map +1 -1
- package/dist/types/node-backend.d.ts +3 -1
- package/extension/error_helpers.cpp +395 -73
- package/extension/error_helpers.h +13 -3
- package/extension/extension_helpers.cpp +38 -35
- package/extension/extension_helpers.h +2 -2
- package/extension/herb.cpp +183 -64
- package/extension/libherb/analyze/action_view/attribute_extraction_helpers.c +290 -0
- package/extension/libherb/analyze/action_view/attribute_extraction_helpers.h +36 -0
- package/extension/libherb/analyze/action_view/content_tag.c +70 -0
- package/extension/libherb/analyze/action_view/link_to.c +143 -0
- package/extension/libherb/analyze/action_view/registry.c +60 -0
- package/extension/libherb/analyze/action_view/tag.c +64 -0
- package/extension/libherb/analyze/action_view/tag_helper_handler.h +41 -0
- package/extension/libherb/analyze/action_view/tag_helper_node_builders.c +305 -0
- package/extension/libherb/analyze/action_view/tag_helper_node_builders.h +70 -0
- package/extension/libherb/analyze/action_view/tag_helpers.c +748 -0
- package/extension/libherb/analyze/action_view/tag_helpers.h +38 -0
- package/extension/libherb/analyze/action_view/turbo_frame_tag.c +88 -0
- package/extension/libherb/analyze/analyze.c +882 -0
- package/extension/libherb/{include → analyze}/analyze.h +14 -4
- package/extension/libherb/{analyzed_ruby.c → analyze/analyzed_ruby.c} +13 -11
- package/extension/libherb/{analyzed_ruby.h → analyze/analyzed_ruby.h} +3 -3
- package/extension/libherb/analyze/builders.c +343 -0
- package/extension/libherb/analyze/builders.h +27 -0
- package/extension/libherb/analyze/conditional_elements.c +594 -0
- package/extension/libherb/analyze/conditional_elements.h +9 -0
- package/extension/libherb/analyze/conditional_open_tags.c +640 -0
- package/extension/libherb/analyze/conditional_open_tags.h +9 -0
- package/extension/libherb/analyze/control_type.c +250 -0
- package/extension/libherb/analyze/control_type.h +14 -0
- package/extension/libherb/{analyze_helpers.c → analyze/helpers.c} +48 -23
- package/extension/libherb/{analyze_helpers.h → analyze/helpers.h} +4 -2
- package/extension/libherb/analyze/invalid_structures.c +193 -0
- package/extension/libherb/analyze/invalid_structures.h +11 -0
- package/extension/libherb/{analyze_missing_end.c → analyze/missing_end.c} +33 -22
- package/extension/libherb/analyze/parse_errors.c +84 -0
- package/extension/libherb/analyze/prism_annotate.c +397 -0
- package/extension/libherb/analyze/prism_annotate.h +16 -0
- package/extension/libherb/{analyze_transform.c → analyze/transform.c} +17 -3
- package/extension/libherb/ast_node.c +17 -7
- package/extension/libherb/ast_node.h +11 -5
- package/extension/libherb/ast_nodes.c +663 -388
- package/extension/libherb/ast_nodes.h +118 -39
- package/extension/libherb/ast_pretty_print.c +191 -7
- package/extension/libherb/ast_pretty_print.h +6 -1
- package/extension/libherb/element_source.h +3 -8
- package/extension/libherb/errors.c +1077 -521
- package/extension/libherb/errors.h +149 -56
- package/extension/libherb/extract.c +145 -49
- package/extension/libherb/extract.h +21 -5
- package/extension/libherb/herb.c +52 -34
- package/extension/libherb/herb.h +18 -6
- package/extension/libherb/herb_prism_node.h +13 -0
- package/extension/libherb/html_util.c +241 -12
- package/extension/libherb/html_util.h +7 -2
- package/extension/libherb/include/analyze/action_view/attribute_extraction_helpers.h +36 -0
- package/extension/libherb/include/analyze/action_view/tag_helper_handler.h +41 -0
- package/extension/libherb/include/analyze/action_view/tag_helper_node_builders.h +70 -0
- package/extension/libherb/include/analyze/action_view/tag_helpers.h +38 -0
- package/extension/libherb/{analyze.h → include/analyze/analyze.h} +14 -4
- package/extension/libherb/include/{analyzed_ruby.h → analyze/analyzed_ruby.h} +3 -3
- package/extension/libherb/include/analyze/builders.h +27 -0
- package/extension/libherb/include/analyze/conditional_elements.h +9 -0
- package/extension/libherb/include/analyze/conditional_open_tags.h +9 -0
- package/extension/libherb/include/analyze/control_type.h +14 -0
- package/extension/libherb/include/{analyze_helpers.h → analyze/helpers.h} +4 -2
- package/extension/libherb/include/analyze/invalid_structures.h +11 -0
- package/extension/libherb/include/analyze/prism_annotate.h +16 -0
- package/extension/libherb/include/ast_node.h +11 -5
- package/extension/libherb/include/ast_nodes.h +118 -39
- package/extension/libherb/include/ast_pretty_print.h +6 -1
- package/extension/libherb/include/element_source.h +3 -8
- package/extension/libherb/include/errors.h +149 -56
- package/extension/libherb/include/extract.h +21 -5
- package/extension/libherb/include/herb.h +18 -6
- package/extension/libherb/include/herb_prism_node.h +13 -0
- package/extension/libherb/include/html_util.h +7 -2
- package/extension/libherb/include/io.h +3 -1
- package/extension/libherb/include/lex_helpers.h +29 -0
- package/extension/libherb/include/lexer.h +1 -1
- package/extension/libherb/include/lexer_peek_helpers.h +87 -13
- package/extension/libherb/include/lexer_struct.h +2 -0
- package/extension/libherb/include/location.h +2 -1
- package/extension/libherb/include/parser.h +27 -2
- package/extension/libherb/include/parser_helpers.h +19 -3
- package/extension/libherb/include/pretty_print.h +10 -5
- package/extension/libherb/include/prism_context.h +45 -0
- package/extension/libherb/include/prism_helpers.h +10 -7
- package/extension/libherb/include/prism_serialized.h +12 -0
- package/extension/libherb/include/token.h +16 -4
- package/extension/libherb/include/token_struct.h +10 -3
- package/extension/libherb/include/utf8.h +2 -1
- package/extension/libherb/include/util/hb_allocator.h +78 -0
- package/extension/libherb/include/util/hb_arena.h +6 -1
- package/extension/libherb/include/util/hb_arena_debug.h +12 -1
- package/extension/libherb/include/util/hb_array.h +7 -3
- package/extension/libherb/include/util/hb_buffer.h +6 -4
- package/extension/libherb/include/util/hb_foreach.h +79 -0
- package/extension/libherb/include/util/hb_narray.h +8 -4
- package/extension/libherb/include/util/hb_string.h +56 -9
- package/extension/libherb/include/util.h +6 -3
- package/extension/libherb/include/version.h +1 -1
- package/extension/libherb/io.c +3 -2
- package/extension/libherb/io.h +3 -1
- package/extension/libherb/lex_helpers.h +29 -0
- package/extension/libherb/lexer.c +42 -30
- package/extension/libherb/lexer.h +1 -1
- package/extension/libherb/lexer_peek_helpers.c +12 -74
- package/extension/libherb/lexer_peek_helpers.h +87 -13
- package/extension/libherb/lexer_struct.h +2 -0
- package/extension/libherb/location.c +2 -2
- package/extension/libherb/location.h +2 -1
- package/extension/libherb/main.c +53 -28
- package/extension/libherb/parser.c +783 -247
- package/extension/libherb/parser.h +27 -2
- package/extension/libherb/parser_helpers.c +110 -23
- package/extension/libherb/parser_helpers.h +19 -3
- package/extension/libherb/parser_match_tags.c +110 -49
- package/extension/libherb/pretty_print.c +29 -24
- package/extension/libherb/pretty_print.h +10 -5
- package/extension/libherb/prism_context.h +45 -0
- package/extension/libherb/prism_helpers.c +30 -27
- package/extension/libherb/prism_helpers.h +10 -7
- package/extension/libherb/prism_serialized.h +12 -0
- package/extension/libherb/ruby_parser.c +2 -0
- package/extension/libherb/token.c +151 -66
- package/extension/libherb/token.h +16 -4
- package/extension/libherb/token_matchers.c +0 -1
- package/extension/libherb/token_struct.h +10 -3
- package/extension/libherb/utf8.c +7 -6
- package/extension/libherb/utf8.h +2 -1
- package/extension/libherb/util/hb_allocator.c +341 -0
- package/extension/libherb/util/hb_allocator.h +78 -0
- package/extension/libherb/util/hb_arena.c +81 -56
- package/extension/libherb/util/hb_arena.h +6 -1
- package/extension/libherb/util/hb_arena_debug.c +32 -17
- package/extension/libherb/util/hb_arena_debug.h +12 -1
- package/extension/libherb/util/hb_array.c +30 -15
- package/extension/libherb/util/hb_array.h +7 -3
- package/extension/libherb/util/hb_buffer.c +17 -21
- package/extension/libherb/util/hb_buffer.h +6 -4
- package/extension/libherb/util/hb_foreach.h +79 -0
- package/extension/libherb/util/hb_narray.c +22 -7
- package/extension/libherb/util/hb_narray.h +8 -4
- package/extension/libherb/util/hb_string.c +49 -35
- package/extension/libherb/util/hb_string.h +56 -9
- package/extension/libherb/util.c +21 -11
- package/extension/libherb/util.h +6 -3
- package/extension/libherb/version.h +1 -1
- package/extension/libherb/visitor.c +48 -1
- package/extension/nodes.cpp +451 -6
- package/extension/nodes.h +8 -1
- package/package.json +12 -8
- package/src/node-backend.ts +11 -1
- package/dist/types/index-cjs.d.cts +0 -1
- package/extension/libherb/analyze.c +0 -1608
- package/extension/libherb/element_source.c +0 -12
- package/extension/libherb/include/util/hb_system.h +0 -9
- package/extension/libherb/util/hb_system.c +0 -30
- package/extension/libherb/util/hb_system.h +0 -9
- package/src/index-cjs.cts +0 -22
- /package/dist/types/{index-esm.d.mts → index.d.ts} +0 -0
- /package/src/{index-esm.mts → index.ts} +0 -0
|
@@ -4,26 +4,73 @@
|
|
|
4
4
|
#include <stdbool.h>
|
|
5
5
|
#include <stddef.h>
|
|
6
6
|
#include <stdint.h>
|
|
7
|
+
#include <string.h>
|
|
8
|
+
#include <strings.h>
|
|
7
9
|
|
|
8
|
-
#include "
|
|
10
|
+
#include "hb_allocator.h"
|
|
11
|
+
#include "hb_foreach.h"
|
|
9
12
|
|
|
10
13
|
typedef struct HB_STRING_STRUCT {
|
|
11
14
|
char* data;
|
|
12
15
|
uint32_t length;
|
|
13
16
|
} hb_string_T;
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
#define HB_STRING_EMPTY ((hb_string_T) { .data = "", .length = 0 })
|
|
19
|
+
#define HB_STRING_NULL ((hb_string_T) { .data = NULL, .length = 0 })
|
|
20
|
+
|
|
21
|
+
#define HB_STRING_LITERAL(string) { .data = (char*) (string), .length = (uint32_t) (sizeof(string) - 1) }
|
|
22
|
+
|
|
23
|
+
#define HB_STRING_LIST(...) { HB_FOR_EACH(HB_STRING_LITERAL, __VA_ARGS__) }
|
|
24
|
+
|
|
25
|
+
#define hb_string(string) \
|
|
26
|
+
(__builtin_constant_p(string) \
|
|
27
|
+
? ((hb_string_T) { .data = (char*) (string), .length = (uint32_t) __builtin_strlen(string) }) \
|
|
28
|
+
: hb_string_from_c_string(string))
|
|
29
|
+
|
|
30
|
+
hb_string_T hb_string_from_c_string(const char* null_terminated_c_string);
|
|
31
|
+
|
|
32
|
+
static inline bool hb_string_is_null(hb_string_T string) {
|
|
33
|
+
return string.data == NULL;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static inline bool hb_string_is_empty(hb_string_T string) {
|
|
37
|
+
return string.data == NULL || string.length == 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static inline hb_string_T hb_string_slice(hb_string_T string, uint32_t offset) {
|
|
41
|
+
if (string.length < offset) { return HB_STRING_NULL; }
|
|
42
|
+
|
|
43
|
+
return (hb_string_T) { .data = string.data + offset, .length = string.length - offset };
|
|
44
|
+
}
|
|
22
45
|
|
|
46
|
+
static inline bool hb_string_equals(hb_string_T a, hb_string_T b) {
|
|
47
|
+
if (a.length != b.length) { return false; }
|
|
48
|
+
|
|
49
|
+
return strncmp(a.data, b.data, a.length) == 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static inline bool hb_string_equals_case_insensitive(hb_string_T a, hb_string_T b) {
|
|
53
|
+
if (a.length != b.length) { return false; }
|
|
54
|
+
|
|
55
|
+
return strncasecmp(a.data, b.data, a.length) == 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static inline bool hb_string_starts_with(hb_string_T string, hb_string_T expected_prefix) {
|
|
59
|
+
if (hb_string_is_empty(string) || hb_string_is_empty(expected_prefix)) { return false; }
|
|
60
|
+
if (string.length < expected_prefix.length) { return false; }
|
|
61
|
+
|
|
62
|
+
return strncmp(string.data, expected_prefix.data, expected_prefix.length) == 0;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
hb_string_T hb_string_truncate(hb_string_T string, uint32_t max_length);
|
|
23
66
|
hb_string_T hb_string_range(hb_string_T string, uint32_t from, uint32_t to);
|
|
67
|
+
hb_string_T hb_string_trim_start(hb_string_T string);
|
|
68
|
+
hb_string_T hb_string_trim_end(hb_string_T string);
|
|
69
|
+
hb_string_T hb_string_trim(hb_string_T string);
|
|
70
|
+
bool hb_string_is_blank(hb_string_T string);
|
|
71
|
+
hb_string_T hb_string_copy(hb_string_T string, hb_allocator_T* allocator);
|
|
24
72
|
|
|
25
73
|
char* hb_string_to_c_string_using_malloc(hb_string_T string);
|
|
26
|
-
|
|
27
74
|
char* hb_string_to_c_string(hb_arena_T* allocator, hb_string_T string);
|
|
28
75
|
|
|
29
76
|
#endif
|
package/extension/libherb/util.c
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#include "include/util.h"
|
|
2
|
+
#include "include/util/hb_allocator.h"
|
|
2
3
|
#include "include/util/hb_buffer.h"
|
|
3
4
|
#include "include/util/hb_string.h"
|
|
4
5
|
|
|
@@ -10,10 +11,14 @@ int is_newline(int character) {
|
|
|
10
11
|
return character == '\n' || character == '\r';
|
|
11
12
|
}
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
int is_whitespace(int character) {
|
|
15
|
+
return character == ' ' || character == '\t' || character == '\n' || character == '\r';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
hb_string_T escape_newlines(hb_allocator_T* allocator, hb_string_T input) {
|
|
14
19
|
hb_buffer_T buffer;
|
|
15
20
|
|
|
16
|
-
hb_buffer_init(&buffer, input.length);
|
|
21
|
+
hb_buffer_init(&buffer, input.length, allocator);
|
|
17
22
|
|
|
18
23
|
for (size_t i = 0; i < input.length; ++i) {
|
|
19
24
|
switch (input.data[i]) {
|
|
@@ -34,10 +39,10 @@ hb_string_T escape_newlines(hb_string_T input) {
|
|
|
34
39
|
return hb_string(buffer.value);
|
|
35
40
|
}
|
|
36
41
|
|
|
37
|
-
static hb_string_T wrap_string(hb_string_T input, char character) {
|
|
42
|
+
static hb_string_T wrap_string(hb_allocator_T* allocator, hb_string_T input, char character) {
|
|
38
43
|
hb_buffer_T buffer;
|
|
39
44
|
|
|
40
|
-
hb_buffer_init(&buffer, input.length + 2);
|
|
45
|
+
hb_buffer_init(&buffer, input.length + 2, allocator);
|
|
41
46
|
|
|
42
47
|
hb_buffer_append_char(&buffer, character);
|
|
43
48
|
hb_buffer_append_string(&buffer, input);
|
|
@@ -46,15 +51,20 @@ static hb_string_T wrap_string(hb_string_T input, char character) {
|
|
|
46
51
|
return hb_string(buffer.value);
|
|
47
52
|
}
|
|
48
53
|
|
|
49
|
-
hb_string_T quoted_string(hb_string_T input) {
|
|
50
|
-
return wrap_string(input, '"');
|
|
54
|
+
hb_string_T quoted_string(hb_allocator_T* allocator, hb_string_T input) {
|
|
55
|
+
return wrap_string(allocator, input, '"');
|
|
51
56
|
}
|
|
52
57
|
|
|
53
|
-
char*
|
|
54
|
-
|
|
55
|
-
char* copy = malloc(len);
|
|
58
|
+
char* convert_underscores_to_dashes(const char* input) {
|
|
59
|
+
if (!input) { return NULL; }
|
|
56
60
|
|
|
57
|
-
|
|
61
|
+
size_t len = strlen(input);
|
|
62
|
+
char* output = calloc(len + 1, sizeof(char));
|
|
63
|
+
if (!output) { return NULL; }
|
|
64
|
+
|
|
65
|
+
for (size_t i = 0; i < len; i++) {
|
|
66
|
+
output[i] = (input[i] == '_') ? '-' : input[i];
|
|
67
|
+
}
|
|
58
68
|
|
|
59
|
-
return
|
|
69
|
+
return output;
|
|
60
70
|
}
|
package/extension/libherb/util.h
CHANGED
|
@@ -5,10 +5,13 @@
|
|
|
5
5
|
#include <stdbool.h>
|
|
6
6
|
#include <stdlib.h>
|
|
7
7
|
|
|
8
|
+
struct hb_allocator;
|
|
9
|
+
|
|
8
10
|
int is_newline(int character);
|
|
11
|
+
int is_whitespace(int character);
|
|
12
|
+
hb_string_T escape_newlines(struct hb_allocator* allocator, hb_string_T input);
|
|
13
|
+
hb_string_T quoted_string(struct hb_allocator* allocator, hb_string_T input);
|
|
9
14
|
|
|
10
|
-
|
|
11
|
-
hb_string_T quoted_string(hb_string_T input);
|
|
12
|
-
char* herb_strdup(const char* s);
|
|
15
|
+
char* convert_underscores_to_dashes(const char* input);
|
|
13
16
|
|
|
14
17
|
#endif
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
2
|
-
// be modified manually. See /Users/marcoroth/Development/herb-release-0.
|
|
2
|
+
// be modified manually. See /Users/marcoroth/Development/herb-release-0.9.0/templates/src/visitor.c.erb
|
|
3
3
|
|
|
4
4
|
#include <stdio.h>
|
|
5
5
|
|
|
@@ -42,6 +42,15 @@ void herb_visit_child_nodes(const AST_NODE_T *node, bool (*visitor)(const AST_NO
|
|
|
42
42
|
|
|
43
43
|
} break;
|
|
44
44
|
|
|
45
|
+
case AST_HTML_CONDITIONAL_OPEN_TAG_NODE: {
|
|
46
|
+
const AST_HTML_CONDITIONAL_OPEN_TAG_NODE_T* html_conditional_open_tag_node = ((const AST_HTML_CONDITIONAL_OPEN_TAG_NODE_T *) node);
|
|
47
|
+
|
|
48
|
+
if (html_conditional_open_tag_node->conditional != NULL) {
|
|
49
|
+
herb_visit_node((AST_NODE_T *) html_conditional_open_tag_node->conditional, visitor, data);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
} break;
|
|
53
|
+
|
|
45
54
|
case AST_HTML_CLOSE_TAG_NODE: {
|
|
46
55
|
const AST_HTML_CLOSE_TAG_NODE_T* html_close_tag_node = ((const AST_HTML_CLOSE_TAG_NODE_T *) node);
|
|
47
56
|
|
|
@@ -72,6 +81,33 @@ void herb_visit_child_nodes(const AST_NODE_T *node, bool (*visitor)(const AST_NO
|
|
|
72
81
|
|
|
73
82
|
} break;
|
|
74
83
|
|
|
84
|
+
case AST_HTML_CONDITIONAL_ELEMENT_NODE: {
|
|
85
|
+
const AST_HTML_CONDITIONAL_ELEMENT_NODE_T* html_conditional_element_node = ((const AST_HTML_CONDITIONAL_ELEMENT_NODE_T *) node);
|
|
86
|
+
|
|
87
|
+
if (html_conditional_element_node->open_conditional != NULL) {
|
|
88
|
+
herb_visit_node((AST_NODE_T *) html_conditional_element_node->open_conditional, visitor, data);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (html_conditional_element_node->open_tag != NULL) {
|
|
92
|
+
herb_visit_node((AST_NODE_T *) html_conditional_element_node->open_tag, visitor, data);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
if (html_conditional_element_node->body != NULL) {
|
|
96
|
+
for (size_t index = 0; index < hb_array_size(html_conditional_element_node->body); index++) {
|
|
97
|
+
herb_visit_node(hb_array_get(html_conditional_element_node->body, index), visitor, data);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (html_conditional_element_node->close_tag != NULL) {
|
|
102
|
+
herb_visit_node((AST_NODE_T *) html_conditional_element_node->close_tag, visitor, data);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (html_conditional_element_node->close_conditional != NULL) {
|
|
106
|
+
herb_visit_node((AST_NODE_T *) html_conditional_element_node->close_conditional, visitor, data);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
} break;
|
|
110
|
+
|
|
75
111
|
case AST_HTML_ATTRIBUTE_VALUE_NODE: {
|
|
76
112
|
const AST_HTML_ATTRIBUTE_VALUE_NODE_T* html_attribute_value_node = ((const AST_HTML_ATTRIBUTE_VALUE_NODE_T *) node);
|
|
77
113
|
|
|
@@ -107,6 +143,17 @@ void herb_visit_child_nodes(const AST_NODE_T *node, bool (*visitor)(const AST_NO
|
|
|
107
143
|
|
|
108
144
|
} break;
|
|
109
145
|
|
|
146
|
+
case AST_ERB_OPEN_TAG_NODE: {
|
|
147
|
+
const AST_ERB_OPEN_TAG_NODE_T* erb_open_tag_node = ((const AST_ERB_OPEN_TAG_NODE_T *) node);
|
|
148
|
+
|
|
149
|
+
if (erb_open_tag_node->children != NULL) {
|
|
150
|
+
for (size_t index = 0; index < hb_array_size(erb_open_tag_node->children); index++) {
|
|
151
|
+
herb_visit_node(hb_array_get(erb_open_tag_node->children, index), visitor, data);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
} break;
|
|
156
|
+
|
|
110
157
|
case AST_HTML_COMMENT_NODE: {
|
|
111
158
|
const AST_HTML_COMMENT_NODE_T* html_comment_node = ((const AST_HTML_COMMENT_NODE_T *) node);
|
|
112
159
|
|