herb 0.7.4-aarch64-linux-gnu → 0.8.0-aarch64-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/Makefile +8 -5
- data/config.yml +40 -20
- data/ext/herb/error_helpers.c +57 -3
- data/ext/herb/error_helpers.h +1 -1
- data/ext/herb/extconf.rb +1 -0
- data/ext/herb/extension.c +10 -24
- data/ext/herb/extension_helpers.c +12 -18
- data/ext/herb/extension_helpers.h +4 -4
- data/ext/herb/nodes.c +72 -37
- data/herb.gemspec +0 -2
- 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/ast/helpers.rb +11 -0
- data/lib/herb/ast/node.rb +15 -6
- data/lib/herb/ast/nodes.rb +609 -392
- data/lib/herb/cli.rb +31 -0
- data/lib/herb/colors.rb +82 -0
- data/lib/herb/engine/compiler.rb +140 -14
- data/lib/herb/engine/debug_visitor.rb +1 -5
- data/lib/herb/engine/parser_error_overlay.rb +1 -1
- data/lib/herb/engine.rb +18 -20
- data/lib/herb/errors.rb +166 -56
- data/lib/herb/location.rb +2 -2
- data/lib/herb/project.rb +86 -21
- data/lib/herb/token.rb +14 -2
- data/lib/herb/version.rb +1 -1
- data/lib/herb.rb +1 -0
- data/sig/herb/ast/helpers.rbs +3 -0
- data/sig/herb/ast/node.rbs +12 -5
- data/sig/herb/ast/nodes.rbs +124 -62
- data/sig/herb/colors.rbs +35 -0
- data/sig/herb/engine/compiler.rbs +23 -1
- data/sig/herb/errors.rbs +74 -20
- data/sig/herb/token.rbs +8 -0
- data/sig/herb_c_extension.rbs +1 -1
- data/sig/serialized_ast_errors.rbs +8 -0
- data/src/analyze.c +461 -249
- data/src/analyze_helpers.c +5 -0
- data/src/analyze_missing_end.c +147 -0
- data/src/analyze_transform.c +196 -0
- data/src/analyzed_ruby.c +23 -2
- data/src/ast_node.c +14 -17
- data/src/ast_nodes.c +179 -181
- data/src/ast_pretty_print.c +232 -232
- data/src/element_source.c +7 -6
- data/src/errors.c +272 -152
- data/src/extract.c +92 -34
- data/src/herb.c +37 -49
- data/src/html_util.c +34 -96
- data/src/include/analyze.h +10 -2
- data/src/include/analyze_helpers.h +3 -0
- data/src/include/analyzed_ruby.h +4 -2
- data/src/include/ast_node.h +4 -4
- data/src/include/ast_nodes.h +68 -67
- data/src/include/ast_pretty_print.h +2 -2
- data/src/include/element_source.h +3 -1
- data/src/include/errors.h +42 -26
- data/src/include/extract.h +4 -4
- data/src/include/herb.h +6 -7
- data/src/include/html_util.h +4 -5
- data/src/include/lexer.h +1 -3
- data/src/include/lexer_peek_helpers.h +21 -19
- data/src/include/lexer_struct.h +12 -10
- data/src/include/location.h +10 -13
- data/src/include/macros.h +4 -0
- data/src/include/parser.h +12 -6
- data/src/include/parser_helpers.h +26 -16
- data/src/include/position.h +3 -14
- data/src/include/pretty_print.h +38 -28
- data/src/include/prism_helpers.h +1 -1
- data/src/include/range.h +4 -13
- data/src/include/token.h +5 -11
- data/src/include/token_struct.h +2 -2
- data/src/include/utf8.h +3 -2
- data/src/include/util/hb_arena.h +31 -0
- data/src/include/util/hb_arena_debug.h +8 -0
- data/src/include/util/hb_array.h +33 -0
- data/src/include/util/hb_buffer.h +34 -0
- data/src/include/util/hb_string.h +29 -0
- data/src/include/util/hb_system.h +9 -0
- data/src/include/util.h +3 -14
- data/src/include/version.h +1 -1
- data/src/include/visitor.h +1 -1
- data/src/io.c +7 -4
- data/src/lexer.c +62 -88
- data/src/lexer_peek_helpers.c +42 -38
- data/src/location.c +9 -37
- data/src/main.c +19 -23
- data/src/parser.c +373 -313
- data/src/parser_helpers.c +60 -54
- data/src/parser_match_tags.c +316 -0
- data/src/pretty_print.c +88 -117
- data/src/prism_helpers.c +7 -7
- data/src/range.c +2 -35
- data/src/token.c +36 -87
- data/src/utf8.c +4 -4
- data/src/util/hb_arena.c +179 -0
- data/src/util/hb_arena_debug.c +237 -0
- data/src/{array.c → util/hb_array.c} +26 -27
- data/src/util/hb_buffer.c +203 -0
- data/src/util/hb_string.c +85 -0
- data/src/util/hb_system.c +30 -0
- data/src/util.c +29 -99
- data/src/visitor.c +54 -54
- data/templates/ext/herb/error_helpers.c.erb +3 -3
- data/templates/ext/herb/error_helpers.h.erb +1 -1
- data/templates/ext/herb/nodes.c.erb +11 -6
- data/templates/java/error_helpers.c.erb +75 -0
- data/templates/java/error_helpers.h.erb +20 -0
- data/templates/java/nodes.c.erb +97 -0
- data/templates/java/nodes.h.erb +23 -0
- data/templates/java/org/herb/ast/Errors.java.erb +121 -0
- data/templates/java/org/herb/ast/NodeVisitor.java.erb +14 -0
- data/templates/java/org/herb/ast/Nodes.java.erb +220 -0
- data/templates/java/org/herb/ast/Visitor.java.erb +56 -0
- data/templates/javascript/packages/core/src/visitor.ts.erb +29 -1
- data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +8 -8
- data/templates/javascript/packages/node/extension/error_helpers.h.erb +1 -1
- data/templates/javascript/packages/node/extension/nodes.cpp.erb +9 -9
- data/templates/javascript/packages/node/extension/nodes.h.erb +1 -1
- data/templates/lib/herb/ast/nodes.rb.erb +28 -16
- data/templates/lib/herb/errors.rb.erb +17 -12
- data/templates/rust/src/ast/nodes.rs.erb +220 -0
- data/templates/rust/src/errors.rs.erb +216 -0
- data/templates/rust/src/nodes.rs.erb +374 -0
- data/templates/src/analyze_missing_end.c.erb +36 -0
- data/templates/src/analyze_transform.c.erb +24 -0
- data/templates/src/ast_nodes.c.erb +14 -16
- data/templates/src/ast_pretty_print.c.erb +36 -36
- data/templates/src/errors.c.erb +36 -38
- data/templates/src/include/ast_nodes.h.erb +11 -10
- data/templates/src/include/ast_pretty_print.h.erb +2 -2
- data/templates/src/include/errors.h.erb +9 -9
- data/templates/src/parser_match_tags.c.erb +38 -0
- data/templates/src/visitor.c.erb +4 -4
- data/templates/template.rb +22 -3
- data/templates/wasm/error_helpers.cpp.erb +9 -9
- data/templates/wasm/error_helpers.h.erb +1 -1
- data/templates/wasm/nodes.cpp.erb +9 -9
- data/templates/wasm/nodes.h.erb +1 -1
- data/vendor/prism/Rakefile +4 -1
- data/vendor/prism/config.yml +2 -1
- data/vendor/prism/include/prism/ast.h +31 -1
- data/vendor/prism/include/prism/diagnostic.h +1 -0
- data/vendor/prism/include/prism/version.h +3 -3
- data/vendor/prism/src/diagnostic.c +3 -1
- data/vendor/prism/src/prism.c +130 -71
- data/vendor/prism/src/util/pm_string.c +6 -8
- data/vendor/prism/templates/include/prism/ast.h.erb +2 -0
- data/vendor/prism/templates/java/org/prism/Loader.java.erb +2 -2
- data/vendor/prism/templates/javascript/src/deserialize.js.erb +2 -2
- data/vendor/prism/templates/lib/prism/serialize.rb.erb +2 -2
- data/vendor/prism/templates/sig/prism.rbs.erb +4 -0
- data/vendor/prism/templates/src/diagnostic.c.erb +1 -0
- metadata +34 -21
- data/lib/herb/libherb/array.rb +0 -51
- data/lib/herb/libherb/ast_node.rb +0 -50
- data/lib/herb/libherb/buffer.rb +0 -56
- data/lib/herb/libherb/extract_result.rb +0 -20
- data/lib/herb/libherb/lex_result.rb +0 -32
- data/lib/herb/libherb/libherb.rb +0 -52
- data/lib/herb/libherb/parse_result.rb +0 -20
- data/lib/herb/libherb/token.rb +0 -46
- data/lib/herb/libherb.rb +0 -35
- data/src/buffer.c +0 -232
- data/src/include/array.h +0 -33
- data/src/include/buffer.h +0 -39
- data/src/include/json.h +0 -28
- data/src/include/memory.h +0 -12
- data/src/json.c +0 -205
- data/src/memory.c +0 -53
- data/src/position.c +0 -33
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: herb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.8.0
|
|
5
5
|
platform: aarch64-linux-gnu
|
|
6
6
|
authors:
|
|
7
7
|
- Marco Roth
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
11
|
dependencies: []
|
|
12
12
|
description: Powerful and seamless HTML-aware ERB parsing and tooling.
|
|
13
13
|
email:
|
|
@@ -44,6 +44,7 @@ files:
|
|
|
44
44
|
- lib/herb/ast/node.rb
|
|
45
45
|
- lib/herb/ast/nodes.rb
|
|
46
46
|
- lib/herb/cli.rb
|
|
47
|
+
- lib/herb/colors.rb
|
|
47
48
|
- lib/herb/engine.rb
|
|
48
49
|
- lib/herb/engine/compiler.rb
|
|
49
50
|
- lib/herb/engine/debug_visitor.rb
|
|
@@ -57,15 +58,6 @@ files:
|
|
|
57
58
|
- lib/herb/engine/validators/security_validator.rb
|
|
58
59
|
- lib/herb/errors.rb
|
|
59
60
|
- lib/herb/lex_result.rb
|
|
60
|
-
- lib/herb/libherb.rb
|
|
61
|
-
- lib/herb/libherb/array.rb
|
|
62
|
-
- lib/herb/libherb/ast_node.rb
|
|
63
|
-
- lib/herb/libherb/buffer.rb
|
|
64
|
-
- lib/herb/libherb/extract_result.rb
|
|
65
|
-
- lib/herb/libherb/lex_result.rb
|
|
66
|
-
- lib/herb/libherb/libherb.rb
|
|
67
|
-
- lib/herb/libherb/parse_result.rb
|
|
68
|
-
- lib/herb/libherb/token.rb
|
|
69
61
|
- lib/herb/location.rb
|
|
70
62
|
- lib/herb/parse_result.rb
|
|
71
63
|
- lib/herb/position.rb
|
|
@@ -82,6 +74,7 @@ files:
|
|
|
82
74
|
- sig/herb/ast/helpers.rbs
|
|
83
75
|
- sig/herb/ast/node.rbs
|
|
84
76
|
- sig/herb/ast/nodes.rbs
|
|
77
|
+
- sig/herb/colors.rbs
|
|
85
78
|
- sig/herb/engine.rbs
|
|
86
79
|
- sig/herb/engine/compiler.rbs
|
|
87
80
|
- sig/herb/engine/debug.rbs
|
|
@@ -112,12 +105,12 @@ files:
|
|
|
112
105
|
- sig/serialized_ast_nodes.rbs
|
|
113
106
|
- src/analyze.c
|
|
114
107
|
- src/analyze_helpers.c
|
|
108
|
+
- src/analyze_missing_end.c
|
|
109
|
+
- src/analyze_transform.c
|
|
115
110
|
- src/analyzed_ruby.c
|
|
116
|
-
- src/array.c
|
|
117
111
|
- src/ast_node.c
|
|
118
112
|
- src/ast_nodes.c
|
|
119
113
|
- src/ast_pretty_print.c
|
|
120
|
-
- src/buffer.c
|
|
121
114
|
- src/element_source.c
|
|
122
115
|
- src/errors.c
|
|
123
116
|
- src/extract.c
|
|
@@ -126,24 +119,20 @@ files:
|
|
|
126
119
|
- src/include/analyze.h
|
|
127
120
|
- src/include/analyze_helpers.h
|
|
128
121
|
- src/include/analyzed_ruby.h
|
|
129
|
-
- src/include/array.h
|
|
130
122
|
- src/include/ast_node.h
|
|
131
123
|
- src/include/ast_nodes.h
|
|
132
124
|
- src/include/ast_pretty_print.h
|
|
133
|
-
- src/include/buffer.h
|
|
134
125
|
- src/include/element_source.h
|
|
135
126
|
- src/include/errors.h
|
|
136
127
|
- src/include/extract.h
|
|
137
128
|
- src/include/herb.h
|
|
138
129
|
- src/include/html_util.h
|
|
139
130
|
- src/include/io.h
|
|
140
|
-
- src/include/json.h
|
|
141
131
|
- src/include/lexer.h
|
|
142
132
|
- src/include/lexer_peek_helpers.h
|
|
143
133
|
- src/include/lexer_struct.h
|
|
144
134
|
- src/include/location.h
|
|
145
135
|
- src/include/macros.h
|
|
146
|
-
- src/include/memory.h
|
|
147
136
|
- src/include/parser.h
|
|
148
137
|
- src/include/parser_helpers.h
|
|
149
138
|
- src/include/position.h
|
|
@@ -156,18 +145,22 @@ files:
|
|
|
156
145
|
- src/include/token_struct.h
|
|
157
146
|
- src/include/utf8.h
|
|
158
147
|
- src/include/util.h
|
|
148
|
+
- src/include/util/hb_arena.h
|
|
149
|
+
- src/include/util/hb_arena_debug.h
|
|
150
|
+
- src/include/util/hb_array.h
|
|
151
|
+
- src/include/util/hb_buffer.h
|
|
152
|
+
- src/include/util/hb_string.h
|
|
153
|
+
- src/include/util/hb_system.h
|
|
159
154
|
- src/include/version.h
|
|
160
155
|
- src/include/visitor.h
|
|
161
156
|
- src/io.c
|
|
162
|
-
- src/json.c
|
|
163
157
|
- src/lexer.c
|
|
164
158
|
- src/lexer_peek_helpers.c
|
|
165
159
|
- src/location.c
|
|
166
160
|
- src/main.c
|
|
167
|
-
- src/memory.c
|
|
168
161
|
- src/parser.c
|
|
169
162
|
- src/parser_helpers.c
|
|
170
|
-
- src/
|
|
163
|
+
- src/parser_match_tags.c
|
|
171
164
|
- src/pretty_print.c
|
|
172
165
|
- src/prism_helpers.c
|
|
173
166
|
- src/range.c
|
|
@@ -176,11 +169,25 @@ files:
|
|
|
176
169
|
- src/token_matchers.c
|
|
177
170
|
- src/utf8.c
|
|
178
171
|
- src/util.c
|
|
172
|
+
- src/util/hb_arena.c
|
|
173
|
+
- src/util/hb_arena_debug.c
|
|
174
|
+
- src/util/hb_array.c
|
|
175
|
+
- src/util/hb_buffer.c
|
|
176
|
+
- src/util/hb_string.c
|
|
177
|
+
- src/util/hb_system.c
|
|
179
178
|
- src/visitor.c
|
|
180
179
|
- templates/ext/herb/error_helpers.c.erb
|
|
181
180
|
- templates/ext/herb/error_helpers.h.erb
|
|
182
181
|
- templates/ext/herb/nodes.c.erb
|
|
183
182
|
- templates/ext/herb/nodes.h.erb
|
|
183
|
+
- templates/java/error_helpers.c.erb
|
|
184
|
+
- templates/java/error_helpers.h.erb
|
|
185
|
+
- templates/java/nodes.c.erb
|
|
186
|
+
- templates/java/nodes.h.erb
|
|
187
|
+
- templates/java/org/herb/ast/Errors.java.erb
|
|
188
|
+
- templates/java/org/herb/ast/NodeVisitor.java.erb
|
|
189
|
+
- templates/java/org/herb/ast/Nodes.java.erb
|
|
190
|
+
- templates/java/org/herb/ast/Visitor.java.erb
|
|
184
191
|
- templates/javascript/packages/core/src/errors.ts.erb
|
|
185
192
|
- templates/javascript/packages/core/src/node-type-guards.ts.erb
|
|
186
193
|
- templates/javascript/packages/core/src/nodes.ts.erb
|
|
@@ -192,14 +199,20 @@ files:
|
|
|
192
199
|
- templates/lib/herb/ast/nodes.rb.erb
|
|
193
200
|
- templates/lib/herb/errors.rb.erb
|
|
194
201
|
- templates/lib/herb/visitor.rb.erb
|
|
202
|
+
- templates/rust/src/ast/nodes.rs.erb
|
|
203
|
+
- templates/rust/src/errors.rs.erb
|
|
204
|
+
- templates/rust/src/nodes.rs.erb
|
|
195
205
|
- templates/sig/serialized_ast_errors.rbs.erb
|
|
196
206
|
- templates/sig/serialized_ast_nodes.rbs.erb
|
|
207
|
+
- templates/src/analyze_missing_end.c.erb
|
|
208
|
+
- templates/src/analyze_transform.c.erb
|
|
197
209
|
- templates/src/ast_nodes.c.erb
|
|
198
210
|
- templates/src/ast_pretty_print.c.erb
|
|
199
211
|
- templates/src/errors.c.erb
|
|
200
212
|
- templates/src/include/ast_nodes.h.erb
|
|
201
213
|
- templates/src/include/ast_pretty_print.h.erb
|
|
202
214
|
- templates/src/include/errors.h.erb
|
|
215
|
+
- templates/src/parser_match_tags.c.erb
|
|
203
216
|
- templates/src/visitor.c.erb
|
|
204
217
|
- templates/template.rb
|
|
205
218
|
- templates/wasm/error_helpers.cpp.erb
|
|
@@ -314,7 +327,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
314
327
|
- !ruby/object:Gem::Version
|
|
315
328
|
version: 3.3.22
|
|
316
329
|
requirements: []
|
|
317
|
-
rubygems_version: 3.6.
|
|
330
|
+
rubygems_version: 3.6.9
|
|
318
331
|
specification_version: 4
|
|
319
332
|
summary: Powerful and seamless HTML-aware ERB parsing and tooling.
|
|
320
333
|
test_files: []
|
data/lib/herb/libherb/array.rb
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
require "forwardable"
|
|
7
|
-
|
|
8
|
-
module Herb
|
|
9
|
-
module LibHerb
|
|
10
|
-
attach_function :array_get, [:pointer, :int], :pointer
|
|
11
|
-
attach_function :array_capacity, [:pointer], :size_t
|
|
12
|
-
attach_function :array_size, [:pointer], :size_t
|
|
13
|
-
|
|
14
|
-
class Array
|
|
15
|
-
extend Forwardable
|
|
16
|
-
|
|
17
|
-
attr_reader :pointer, :item_class
|
|
18
|
-
|
|
19
|
-
def_delegators :items, :first, :last, :[]
|
|
20
|
-
|
|
21
|
-
def initialize(pointer, item_class)
|
|
22
|
-
@pointer = pointer
|
|
23
|
-
@item_class = item_class
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def capacity
|
|
27
|
-
LibHerb.array_capacity(pointer)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def size
|
|
31
|
-
LibHerb.array_size(pointer)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def item_pointers
|
|
35
|
-
size.times.map { |item|
|
|
36
|
-
LibHerb.array_get(pointer, item)
|
|
37
|
-
}
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def items
|
|
41
|
-
item_pointers.map { |item_pointer|
|
|
42
|
-
item_class.new(item_pointer)
|
|
43
|
-
}
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def inspect
|
|
47
|
-
%(#<#{self.class} size=#{size} capacity=#{capacity} item_class=#{item_class} pointer=#{pointer}>)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
end
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
module Herb
|
|
7
|
-
module LibHerb
|
|
8
|
-
attach_function :ast_node_type, [:pointer], :int
|
|
9
|
-
attach_function :ast_node_type_to_string, [:pointer], :string
|
|
10
|
-
attach_function :ast_node_children, [:pointer], :pointer
|
|
11
|
-
attach_function :ast_node_child_count, [:pointer], :size_t
|
|
12
|
-
attach_function :ast_pretty_print_node, [:pointer, :size_t, :size_t, :pointer], :void
|
|
13
|
-
attach_function :ast_node_free, [:pointer], :void
|
|
14
|
-
|
|
15
|
-
class ASTNode
|
|
16
|
-
attr_reader :pointer
|
|
17
|
-
|
|
18
|
-
def initialize(pointer)
|
|
19
|
-
@pointer = pointer
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def type_int
|
|
23
|
-
LibHerb.ast_node_type(pointer)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def type
|
|
27
|
-
LibHerb.ast_node_type_to_string(pointer)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
def child_count
|
|
31
|
-
LibHerb.ast_node_child_count(pointer)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def children
|
|
35
|
-
LibHerb::Array.new(
|
|
36
|
-
LibHerb.ast_node_children(pointer),
|
|
37
|
-
ASTNode
|
|
38
|
-
)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def inspect
|
|
42
|
-
LibHerb::Buffer.with do |output|
|
|
43
|
-
LibHerb.ast_pretty_print_node(pointer, 0, 0, output.pointer)
|
|
44
|
-
|
|
45
|
-
output.read.force_encoding("utf-8") # TODO: remove force_encoding
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
data/lib/herb/libherb/buffer.rb
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
module Herb
|
|
7
|
-
module LibHerb
|
|
8
|
-
attach_function :buffer_init, [:pointer], :bool
|
|
9
|
-
attach_function :buffer_free, [:pointer], :void
|
|
10
|
-
attach_function :buffer_value, [:pointer], :pointer
|
|
11
|
-
attach_function :buffer_length, [:pointer], :size_t
|
|
12
|
-
attach_function :buffer_capacity, [:pointer], :size_t
|
|
13
|
-
attach_function :buffer_sizeof, [], :size_t
|
|
14
|
-
attach_function :buffer_append, [:pointer, :pointer], :void
|
|
15
|
-
|
|
16
|
-
class Buffer
|
|
17
|
-
SIZEOF = LibHerb.buffer_sizeof
|
|
18
|
-
|
|
19
|
-
attr_reader :pointer
|
|
20
|
-
|
|
21
|
-
def initialize(pointer)
|
|
22
|
-
@pointer = pointer
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def append(string)
|
|
26
|
-
LibHerb.buffer_append(pointer, string)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def value
|
|
30
|
-
LibHerb.buffer_value(pointer)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def length
|
|
34
|
-
LibHerb.buffer_length(pointer)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def capacity
|
|
38
|
-
LibHerb.buffer_capacity(pointer)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def read
|
|
42
|
-
value.read_string(length)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def self.with
|
|
46
|
-
FFI::MemoryPointer.new(SIZEOF) do |pointer|
|
|
47
|
-
raise "couldn't allocate Buffer" unless LibHerb.buffer_init(pointer)
|
|
48
|
-
|
|
49
|
-
return yield new(pointer)
|
|
50
|
-
ensure
|
|
51
|
-
LibHerb.buffer_free(pointer)
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
require "forwardable"
|
|
7
|
-
|
|
8
|
-
module Herb
|
|
9
|
-
class ExtractResult
|
|
10
|
-
extend Forwardable
|
|
11
|
-
|
|
12
|
-
def_delegators :@buffer, :read
|
|
13
|
-
|
|
14
|
-
attr_accessor :buffer
|
|
15
|
-
|
|
16
|
-
def initialize(pointer)
|
|
17
|
-
@buffer = LibHerb::Buffer.new(pointer)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
require "forwardable"
|
|
7
|
-
|
|
8
|
-
module Herb
|
|
9
|
-
class LexResult
|
|
10
|
-
extend Forwardable
|
|
11
|
-
|
|
12
|
-
def_delegators :@array, :items, :size, :capacity
|
|
13
|
-
|
|
14
|
-
attr_accessor :array
|
|
15
|
-
|
|
16
|
-
def initialize(pointer)
|
|
17
|
-
@array = LibHerb::Array.new(pointer, LibHerb::Token)
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
def as_json
|
|
21
|
-
JSON.parse(to_json)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def to_json(*_args)
|
|
25
|
-
"[#{@array.items.map(&:to_json).join(", ")}]"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def inspect
|
|
29
|
-
@array.items.map(&:inspect).join("\n")
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
data/lib/herb/libherb/libherb.rb
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
require "herb/libherb/ast_node"
|
|
7
|
-
require "herb/libherb/buffer"
|
|
8
|
-
require "herb/libherb/array"
|
|
9
|
-
require "herb/libherb/token"
|
|
10
|
-
|
|
11
|
-
require "herb/libherb/lex_result"
|
|
12
|
-
require "herb/libherb/parse_result"
|
|
13
|
-
|
|
14
|
-
module Herb
|
|
15
|
-
VERSION = LibHerb.herb_version.read_string
|
|
16
|
-
|
|
17
|
-
def self.parse(source)
|
|
18
|
-
ParseResult.new(
|
|
19
|
-
LibHerb.herb_parse(source)
|
|
20
|
-
)
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def self.lex(source)
|
|
24
|
-
LexResult.new(
|
|
25
|
-
LibHerb.herb_lex(source)
|
|
26
|
-
)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def self.lex_to_json(source)
|
|
30
|
-
LibHerb::Buffer.with do |output|
|
|
31
|
-
LibHerb.herb_lex_json_to_buffer(source, output.pointer)
|
|
32
|
-
|
|
33
|
-
JSON.parse(output.read.force_encoding("utf-8"))
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def self.extract_ruby(source)
|
|
38
|
-
LibHerb::Buffer.with do |output|
|
|
39
|
-
LibHerb.herb_extract_ruby_to_buffer(source, output.pointer)
|
|
40
|
-
|
|
41
|
-
output.read
|
|
42
|
-
end
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def self.extract_html(source)
|
|
46
|
-
LibHerb::Buffer.with do |output|
|
|
47
|
-
LibHerb.herb_extract_html_to_buffer(source, output.pointer)
|
|
48
|
-
|
|
49
|
-
output.read
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
require "forwardable"
|
|
7
|
-
|
|
8
|
-
module Herb
|
|
9
|
-
class ParseResult
|
|
10
|
-
extend Forwardable
|
|
11
|
-
|
|
12
|
-
def_delegators :@root_node, :type, :child_count
|
|
13
|
-
|
|
14
|
-
attr_accessor :root_node
|
|
15
|
-
|
|
16
|
-
def initialize(pointer)
|
|
17
|
-
@root_node = LibHerb::ASTNode.new(pointer)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
data/lib/herb/libherb/token.rb
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
module Herb
|
|
7
|
-
module LibHerb
|
|
8
|
-
attach_function :token_to_string, [:pointer], :string
|
|
9
|
-
attach_function :token_to_json, [:pointer], :string
|
|
10
|
-
attach_function :token_type_to_string, [:int], :pointer
|
|
11
|
-
attach_function :token_value, [:pointer], :pointer
|
|
12
|
-
attach_function :token_type, [:pointer], :int
|
|
13
|
-
|
|
14
|
-
class Token
|
|
15
|
-
attr_reader :pointer
|
|
16
|
-
|
|
17
|
-
def initialize(pointer)
|
|
18
|
-
@pointer = pointer
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def value
|
|
22
|
-
@value ||= LibHerb.token_value(pointer).read_string
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def type
|
|
26
|
-
@type ||= LibHerb.token_type_to_string(type_int).read_string
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def type_int
|
|
30
|
-
@type_int ||= LibHerb.token_type(pointer)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def inspect
|
|
34
|
-
LibHerb.token_to_string(pointer).force_encoding("utf-8")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def as_json
|
|
38
|
-
JSON.parse(to_json)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def to_json(*_args)
|
|
42
|
-
LibHerb.token_to_json(pointer).force_encoding("utf-8")
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
data/lib/herb/libherb.rb
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# typed: ignore
|
|
3
|
-
|
|
4
|
-
# rbs_inline: disabled
|
|
5
|
-
|
|
6
|
-
require "ffi"
|
|
7
|
-
require "rbconfig"
|
|
8
|
-
|
|
9
|
-
module Herb
|
|
10
|
-
module LibHerb
|
|
11
|
-
extend FFI::Library
|
|
12
|
-
|
|
13
|
-
def self.library_extension
|
|
14
|
-
RbConfig::CONFIG["DLEXT"]
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def self.library_name
|
|
18
|
-
"libherb.#{library_extension}"
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def self.library_path
|
|
22
|
-
File.expand_path("../../#{library_name}", __dir__)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
ffi_lib(library_path)
|
|
26
|
-
|
|
27
|
-
attach_function :herb_lex_to_buffer, [:pointer, :pointer], :void
|
|
28
|
-
attach_function :herb_lex_json_to_buffer, [:pointer, :pointer], :void
|
|
29
|
-
attach_function :herb_lex, [:pointer], :pointer
|
|
30
|
-
attach_function :herb_parse, [:pointer], :pointer
|
|
31
|
-
attach_function :herb_extract_ruby_to_buffer, [:pointer, :pointer], :void
|
|
32
|
-
attach_function :herb_extract_html_to_buffer, [:pointer, :pointer], :void
|
|
33
|
-
attach_function :herb_version, [], :pointer
|
|
34
|
-
end
|
|
35
|
-
end
|