herb 0.8.1-x86-linux-musl → 0.8.2-x86-linux-musl
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/README.md +6 -1
- data/ext/herb/nodes.c +1 -1
- 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/version.rb +1 -1
- data/src/analyze.c +5 -5
- data/src/include/util/hb_buffer.h +3 -0
- data/src/include/version.h +1 -1
- data/src/parser.c +2 -2
- data/src/util/hb_buffer.c +18 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7286d6f5e1439091d9f50b4677f2ff26eaaaaf5aa039a3fa8a34662ae90d2e0d
|
|
4
|
+
data.tar.gz: 8eab43ccc1ae75be673015f55b4d5a7d7ec9cddb56f142994e32438fe07ae974
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a6186ef408c0faaf18730df25b87c09aad812c30bf2247ff14f473ab880891e3319051c886d387d8eea228d8e86ac9b7790b37530dfec9d7fc9de8380d050d50
|
|
7
|
+
data.tar.gz: d7520917bf59f99a1ac0420dffae564fd69647319074c2ed3406c363f65c6a03331d8e2d0dbdbdfbb00555866dc791a8d07399bb5253cecbaab3ca80452dfa5c
|
data/README.md
CHANGED
|
@@ -10,8 +10,13 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
<a href="https://rubygems.org/gems/herb"><img alt="Gem Version" src="https://img.shields.io/gem/v/herb"></a>
|
|
13
|
+
<a href="https://crates.io/crates/herb"><img alt="Crates.io Version" src="https://img.shields.io/crates/v/herb"></a>
|
|
14
|
+
<a href="https://www.npmjs.com/package/@herb-tools/core"><img alt="npm Version" src="https://img.shields.io/npm/v/@herb-tools/core"></a>
|
|
15
|
+
<a href="https://marketplace.visualstudio.com/items?itemName=marcoroth.herb-lsp"><img alt="VS Code Marketplace" src="https://img.shields.io/visual-studio-marketplace/v/marcoroth.herb-lsp"></a>
|
|
16
|
+
<a href="https://open-vsx.org/extension/marcoroth/herb-lsp"><img alt="Open VSX" src="https://img.shields.io/open-vsx/v/marcoroth/herb-lsp"></a>
|
|
13
17
|
<a href="https://herb-tools.dev"><img alt="Documentation" src="https://img.shields.io/badge/documentation-available-green"></a>
|
|
14
18
|
<a href="https://herb-tools.dev/playground"><img alt="playground" src="https://img.shields.io/badge/playground-Try_it_in_the_browser!-green"></a>
|
|
19
|
+
<a href="https://pkg.pr.new/~/marcoroth/herb"><img alt="pkg.pr.new" src="https://pkg.pr.new/badge/marcoroth/herb"></a>
|
|
15
20
|
<a href="https://github.com/marcoroth/herb/blob/main/LICENSE.txt"><img alt="License" src="https://img.shields.io/github/license/marcoroth/herb"></a>
|
|
16
21
|
<a href="https://github.com/marcoroth/herb/issues"><img alt="Issues" src="https://img.shields.io/github/issues/marcoroth/herb"></a>
|
|
17
22
|
</p>
|
|
@@ -99,7 +104,7 @@ Commands:
|
|
|
99
104
|
bundle exec herb version Prints the versions of the Herb gem and the libherb library.
|
|
100
105
|
```
|
|
101
106
|
|
|
102
|
-
For detailed information, like how you can use Herb
|
|
107
|
+
For detailed information, like how you can use Herb programmatically in Ruby and JavaScript, visit the [documentation site](https://herb-tools.dev/bindings/ruby/reference).
|
|
103
108
|
|
|
104
109
|
|
|
105
110
|
## Background and Talk
|
data/ext/herb/nodes.c
CHANGED
|
@@ -464,7 +464,7 @@ static VALUE rb_erb_content_node_from_c_struct(AST_ERB_CONTENT_NODE_T* erb_conte
|
|
|
464
464
|
VALUE erb_content_node_tag_opening = rb_token_from_c_struct(erb_content_node->tag_opening);
|
|
465
465
|
VALUE erb_content_node_content = rb_token_from_c_struct(erb_content_node->content);
|
|
466
466
|
VALUE erb_content_node_tag_closing = rb_token_from_c_struct(erb_content_node->tag_closing);
|
|
467
|
-
/* #<Herb::Template::AnalyzedRubyField:
|
|
467
|
+
/* #<Herb::Template::AnalyzedRubyField:0x00007f06675b0f08 @name="analyzed_ruby", @options={kind: nil}> */
|
|
468
468
|
VALUE erb_content_node_analyzed_ruby = Qnil;
|
|
469
469
|
VALUE erb_content_node_parsed = (erb_content_node->parsed) ? Qtrue : Qfalse;
|
|
470
470
|
VALUE erb_content_node_valid = (erb_content_node->valid) ? Qtrue : Qfalse;
|
data/lib/herb/3.0/herb.so
CHANGED
|
Binary file
|
data/lib/herb/3.1/herb.so
CHANGED
|
Binary file
|
data/lib/herb/3.2/herb.so
CHANGED
|
Binary file
|
data/lib/herb/3.3/herb.so
CHANGED
|
Binary file
|
data/lib/herb/3.4/herb.so
CHANGED
|
Binary file
|
data/lib/herb/version.rb
CHANGED
data/src/analyze.c
CHANGED
|
@@ -288,7 +288,7 @@ static AST_NODE_T* create_control_node(
|
|
|
288
288
|
if (end_node) {
|
|
289
289
|
end_position = end_node->base.location.end;
|
|
290
290
|
} else if (children && hb_array_size(children) > 0) {
|
|
291
|
-
AST_NODE_T* last_child =
|
|
291
|
+
AST_NODE_T* last_child = hb_array_last(children);
|
|
292
292
|
end_position = last_child->location.end;
|
|
293
293
|
} else if (subsequent) {
|
|
294
294
|
end_position = subsequent->location.end;
|
|
@@ -695,10 +695,10 @@ static size_t process_control_structure(
|
|
|
695
695
|
} else if (else_clause) {
|
|
696
696
|
end_position = else_clause->base.location.end;
|
|
697
697
|
} else if (hb_array_size(when_conditions) > 0) {
|
|
698
|
-
AST_NODE_T* last_when =
|
|
698
|
+
AST_NODE_T* last_when = hb_array_last(when_conditions);
|
|
699
699
|
end_position = last_when->location.end;
|
|
700
700
|
} else if (hb_array_size(in_conditions) > 0) {
|
|
701
|
-
AST_NODE_T* last_in =
|
|
701
|
+
AST_NODE_T* last_in = hb_array_last(in_conditions);
|
|
702
702
|
end_position = last_in->location.end;
|
|
703
703
|
}
|
|
704
704
|
|
|
@@ -955,7 +955,7 @@ static size_t process_control_structure(
|
|
|
955
955
|
if (end_node) {
|
|
956
956
|
end_position = end_node->base.location.end;
|
|
957
957
|
} else if (children && hb_array_size(children) > 0) {
|
|
958
|
-
AST_NODE_T* last_child =
|
|
958
|
+
AST_NODE_T* last_child = hb_array_last(children);
|
|
959
959
|
end_position = last_child->location.end;
|
|
960
960
|
}
|
|
961
961
|
|
|
@@ -1139,7 +1139,7 @@ static size_t process_block_children(
|
|
|
1139
1139
|
hb_array_T* temp_array = hb_array_init(1);
|
|
1140
1140
|
size_t new_index = process_control_structure(node, array, index, temp_array, context, child_type);
|
|
1141
1141
|
|
|
1142
|
-
if (hb_array_size(temp_array) > 0) { hb_array_append(children_array,
|
|
1142
|
+
if (hb_array_size(temp_array) > 0) { hb_array_append(children_array, hb_array_first(temp_array)); }
|
|
1143
1143
|
|
|
1144
1144
|
hb_array_free(&temp_array);
|
|
1145
1145
|
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
#ifndef HERB_BUFFER_H
|
|
2
2
|
#define HERB_BUFFER_H
|
|
3
3
|
|
|
4
|
+
#include "hb_arena.h"
|
|
4
5
|
#include "hb_string.h"
|
|
5
6
|
|
|
6
7
|
#include <stdbool.h>
|
|
7
8
|
#include <stdlib.h>
|
|
8
9
|
|
|
9
10
|
typedef struct HB_BUFFER_STRUCT {
|
|
11
|
+
hb_arena_T* allocator;
|
|
10
12
|
char* value;
|
|
11
13
|
size_t length;
|
|
12
14
|
size_t capacity;
|
|
13
15
|
} hb_buffer_T;
|
|
14
16
|
|
|
15
17
|
bool hb_buffer_init(hb_buffer_T* buffer, size_t capacity);
|
|
18
|
+
bool hb_buffer_init_arena(hb_buffer_T* buffer, hb_arena_T* allocator, size_t capacity);
|
|
16
19
|
|
|
17
20
|
void hb_buffer_append(hb_buffer_T* buffer, const char* text);
|
|
18
21
|
void hb_buffer_append_with_length(hb_buffer_T* buffer, const char* text, size_t length);
|
data/src/include/version.h
CHANGED
data/src/parser.c
CHANGED
|
@@ -315,8 +315,8 @@ static AST_HTML_ATTRIBUTE_NAME_NODE_T* parser_parse_html_attribute_name(parser_T
|
|
|
315
315
|
position_T node_end = { 0 };
|
|
316
316
|
|
|
317
317
|
if (children->size > 0) {
|
|
318
|
-
AST_NODE_T* first_child =
|
|
319
|
-
AST_NODE_T* last_child =
|
|
318
|
+
AST_NODE_T* first_child = hb_array_first(children);
|
|
319
|
+
AST_NODE_T* last_child = hb_array_last(children);
|
|
320
320
|
|
|
321
321
|
node_start = first_child->location.start;
|
|
322
322
|
node_end = last_child->location.end;
|
data/src/util/hb_buffer.c
CHANGED
|
@@ -22,8 +22,14 @@ static bool hb_buffer_resize(hb_buffer_T* buffer, const size_t new_capacity) {
|
|
|
22
22
|
fprintf(stderr, "Error: Buffer capacity would overflow system limits.\n");
|
|
23
23
|
exit(1);
|
|
24
24
|
}
|
|
25
|
+
char* new_value = NULL;
|
|
25
26
|
|
|
26
|
-
|
|
27
|
+
if (buffer->allocator == NULL) {
|
|
28
|
+
new_value = realloc(buffer->value, new_capacity + 1);
|
|
29
|
+
} else {
|
|
30
|
+
new_value = hb_arena_alloc(buffer->allocator, new_capacity + 1);
|
|
31
|
+
memcpy(new_value, buffer->value, buffer->capacity + 1);
|
|
32
|
+
}
|
|
27
33
|
|
|
28
34
|
if (unlikely(new_value == NULL)) {
|
|
29
35
|
fprintf(stderr, "Error: Failed to resize buffer to %zu.\n", new_capacity);
|
|
@@ -61,6 +67,7 @@ static bool hb_buffer_expand_if_needed(hb_buffer_T* buffer, const size_t require
|
|
|
61
67
|
}
|
|
62
68
|
|
|
63
69
|
bool hb_buffer_init(hb_buffer_T* buffer, const size_t capacity) {
|
|
70
|
+
buffer->allocator = NULL;
|
|
64
71
|
buffer->capacity = capacity;
|
|
65
72
|
buffer->length = 0;
|
|
66
73
|
buffer->value = malloc(sizeof(char) * (buffer->capacity + 1));
|
|
@@ -76,6 +83,16 @@ bool hb_buffer_init(hb_buffer_T* buffer, const size_t capacity) {
|
|
|
76
83
|
return true;
|
|
77
84
|
}
|
|
78
85
|
|
|
86
|
+
bool hb_buffer_init_arena(hb_buffer_T* buffer, hb_arena_T* allocator, size_t capacity) {
|
|
87
|
+
buffer->allocator = allocator;
|
|
88
|
+
buffer->capacity = capacity;
|
|
89
|
+
buffer->length = 0;
|
|
90
|
+
buffer->value = hb_arena_alloc(allocator, sizeof(char) * (buffer->capacity + 1));
|
|
91
|
+
buffer->value[0] = '\0';
|
|
92
|
+
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
|
|
79
96
|
char* hb_buffer_value(const hb_buffer_T* buffer) {
|
|
80
97
|
return buffer->value;
|
|
81
98
|
}
|