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.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8 -5
  3. data/config.yml +40 -20
  4. data/ext/herb/error_helpers.c +57 -3
  5. data/ext/herb/error_helpers.h +1 -1
  6. data/ext/herb/extconf.rb +1 -0
  7. data/ext/herb/extension.c +10 -24
  8. data/ext/herb/extension_helpers.c +12 -18
  9. data/ext/herb/extension_helpers.h +4 -4
  10. data/ext/herb/nodes.c +72 -37
  11. data/herb.gemspec +0 -2
  12. data/lib/herb/3.0/herb.so +0 -0
  13. data/lib/herb/3.1/herb.so +0 -0
  14. data/lib/herb/3.2/herb.so +0 -0
  15. data/lib/herb/3.3/herb.so +0 -0
  16. data/lib/herb/3.4/herb.so +0 -0
  17. data/lib/herb/ast/helpers.rb +11 -0
  18. data/lib/herb/ast/node.rb +15 -6
  19. data/lib/herb/ast/nodes.rb +609 -392
  20. data/lib/herb/cli.rb +31 -0
  21. data/lib/herb/colors.rb +82 -0
  22. data/lib/herb/engine/compiler.rb +140 -14
  23. data/lib/herb/engine/debug_visitor.rb +1 -5
  24. data/lib/herb/engine/parser_error_overlay.rb +1 -1
  25. data/lib/herb/engine.rb +18 -20
  26. data/lib/herb/errors.rb +166 -56
  27. data/lib/herb/location.rb +2 -2
  28. data/lib/herb/project.rb +86 -21
  29. data/lib/herb/token.rb +14 -2
  30. data/lib/herb/version.rb +1 -1
  31. data/lib/herb.rb +1 -0
  32. data/sig/herb/ast/helpers.rbs +3 -0
  33. data/sig/herb/ast/node.rbs +12 -5
  34. data/sig/herb/ast/nodes.rbs +124 -62
  35. data/sig/herb/colors.rbs +35 -0
  36. data/sig/herb/engine/compiler.rbs +23 -1
  37. data/sig/herb/errors.rbs +74 -20
  38. data/sig/herb/token.rbs +8 -0
  39. data/sig/herb_c_extension.rbs +1 -1
  40. data/sig/serialized_ast_errors.rbs +8 -0
  41. data/src/analyze.c +461 -249
  42. data/src/analyze_helpers.c +5 -0
  43. data/src/analyze_missing_end.c +147 -0
  44. data/src/analyze_transform.c +196 -0
  45. data/src/analyzed_ruby.c +23 -2
  46. data/src/ast_node.c +14 -17
  47. data/src/ast_nodes.c +179 -181
  48. data/src/ast_pretty_print.c +232 -232
  49. data/src/element_source.c +7 -6
  50. data/src/errors.c +272 -152
  51. data/src/extract.c +92 -34
  52. data/src/herb.c +37 -49
  53. data/src/html_util.c +34 -96
  54. data/src/include/analyze.h +10 -2
  55. data/src/include/analyze_helpers.h +3 -0
  56. data/src/include/analyzed_ruby.h +4 -2
  57. data/src/include/ast_node.h +4 -4
  58. data/src/include/ast_nodes.h +68 -67
  59. data/src/include/ast_pretty_print.h +2 -2
  60. data/src/include/element_source.h +3 -1
  61. data/src/include/errors.h +42 -26
  62. data/src/include/extract.h +4 -4
  63. data/src/include/herb.h +6 -7
  64. data/src/include/html_util.h +4 -5
  65. data/src/include/lexer.h +1 -3
  66. data/src/include/lexer_peek_helpers.h +21 -19
  67. data/src/include/lexer_struct.h +12 -10
  68. data/src/include/location.h +10 -13
  69. data/src/include/macros.h +4 -0
  70. data/src/include/parser.h +12 -6
  71. data/src/include/parser_helpers.h +26 -16
  72. data/src/include/position.h +3 -14
  73. data/src/include/pretty_print.h +38 -28
  74. data/src/include/prism_helpers.h +1 -1
  75. data/src/include/range.h +4 -13
  76. data/src/include/token.h +5 -11
  77. data/src/include/token_struct.h +2 -2
  78. data/src/include/utf8.h +3 -2
  79. data/src/include/util/hb_arena.h +31 -0
  80. data/src/include/util/hb_arena_debug.h +8 -0
  81. data/src/include/util/hb_array.h +33 -0
  82. data/src/include/util/hb_buffer.h +34 -0
  83. data/src/include/util/hb_string.h +29 -0
  84. data/src/include/util/hb_system.h +9 -0
  85. data/src/include/util.h +3 -14
  86. data/src/include/version.h +1 -1
  87. data/src/include/visitor.h +1 -1
  88. data/src/io.c +7 -4
  89. data/src/lexer.c +62 -88
  90. data/src/lexer_peek_helpers.c +42 -38
  91. data/src/location.c +9 -37
  92. data/src/main.c +19 -23
  93. data/src/parser.c +373 -313
  94. data/src/parser_helpers.c +60 -54
  95. data/src/parser_match_tags.c +316 -0
  96. data/src/pretty_print.c +88 -117
  97. data/src/prism_helpers.c +7 -7
  98. data/src/range.c +2 -35
  99. data/src/token.c +36 -87
  100. data/src/utf8.c +4 -4
  101. data/src/util/hb_arena.c +179 -0
  102. data/src/util/hb_arena_debug.c +237 -0
  103. data/src/{array.c → util/hb_array.c} +26 -27
  104. data/src/util/hb_buffer.c +203 -0
  105. data/src/util/hb_string.c +85 -0
  106. data/src/util/hb_system.c +30 -0
  107. data/src/util.c +29 -99
  108. data/src/visitor.c +54 -54
  109. data/templates/ext/herb/error_helpers.c.erb +3 -3
  110. data/templates/ext/herb/error_helpers.h.erb +1 -1
  111. data/templates/ext/herb/nodes.c.erb +11 -6
  112. data/templates/java/error_helpers.c.erb +75 -0
  113. data/templates/java/error_helpers.h.erb +20 -0
  114. data/templates/java/nodes.c.erb +97 -0
  115. data/templates/java/nodes.h.erb +23 -0
  116. data/templates/java/org/herb/ast/Errors.java.erb +121 -0
  117. data/templates/java/org/herb/ast/NodeVisitor.java.erb +14 -0
  118. data/templates/java/org/herb/ast/Nodes.java.erb +220 -0
  119. data/templates/java/org/herb/ast/Visitor.java.erb +56 -0
  120. data/templates/javascript/packages/core/src/visitor.ts.erb +29 -1
  121. data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +8 -8
  122. data/templates/javascript/packages/node/extension/error_helpers.h.erb +1 -1
  123. data/templates/javascript/packages/node/extension/nodes.cpp.erb +9 -9
  124. data/templates/javascript/packages/node/extension/nodes.h.erb +1 -1
  125. data/templates/lib/herb/ast/nodes.rb.erb +28 -16
  126. data/templates/lib/herb/errors.rb.erb +17 -12
  127. data/templates/rust/src/ast/nodes.rs.erb +220 -0
  128. data/templates/rust/src/errors.rs.erb +216 -0
  129. data/templates/rust/src/nodes.rs.erb +374 -0
  130. data/templates/src/analyze_missing_end.c.erb +36 -0
  131. data/templates/src/analyze_transform.c.erb +24 -0
  132. data/templates/src/ast_nodes.c.erb +14 -16
  133. data/templates/src/ast_pretty_print.c.erb +36 -36
  134. data/templates/src/errors.c.erb +36 -38
  135. data/templates/src/include/ast_nodes.h.erb +11 -10
  136. data/templates/src/include/ast_pretty_print.h.erb +2 -2
  137. data/templates/src/include/errors.h.erb +9 -9
  138. data/templates/src/parser_match_tags.c.erb +38 -0
  139. data/templates/src/visitor.c.erb +4 -4
  140. data/templates/template.rb +22 -3
  141. data/templates/wasm/error_helpers.cpp.erb +9 -9
  142. data/templates/wasm/error_helpers.h.erb +1 -1
  143. data/templates/wasm/nodes.cpp.erb +9 -9
  144. data/templates/wasm/nodes.h.erb +1 -1
  145. data/vendor/prism/Rakefile +4 -1
  146. data/vendor/prism/config.yml +2 -1
  147. data/vendor/prism/include/prism/ast.h +31 -1
  148. data/vendor/prism/include/prism/diagnostic.h +1 -0
  149. data/vendor/prism/include/prism/version.h +3 -3
  150. data/vendor/prism/src/diagnostic.c +3 -1
  151. data/vendor/prism/src/prism.c +130 -71
  152. data/vendor/prism/src/util/pm_string.c +6 -8
  153. data/vendor/prism/templates/include/prism/ast.h.erb +2 -0
  154. data/vendor/prism/templates/java/org/prism/Loader.java.erb +2 -2
  155. data/vendor/prism/templates/javascript/src/deserialize.js.erb +2 -2
  156. data/vendor/prism/templates/lib/prism/serialize.rb.erb +2 -2
  157. data/vendor/prism/templates/sig/prism.rbs.erb +4 -0
  158. data/vendor/prism/templates/src/diagnostic.c.erb +1 -0
  159. metadata +34 -21
  160. data/lib/herb/libherb/array.rb +0 -51
  161. data/lib/herb/libherb/ast_node.rb +0 -50
  162. data/lib/herb/libherb/buffer.rb +0 -56
  163. data/lib/herb/libherb/extract_result.rb +0 -20
  164. data/lib/herb/libherb/lex_result.rb +0 -32
  165. data/lib/herb/libherb/libherb.rb +0 -52
  166. data/lib/herb/libherb/parse_result.rb +0 -20
  167. data/lib/herb/libherb/token.rb +0 -46
  168. data/lib/herb/libherb.rb +0 -35
  169. data/src/buffer.c +0 -232
  170. data/src/include/array.h +0 -33
  171. data/src/include/buffer.h +0 -39
  172. data/src/include/json.h +0 -28
  173. data/src/include/memory.h +0 -12
  174. data/src/json.c +0 -205
  175. data/src/memory.c +0 -53
  176. 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.7.4
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: 2025-09-26 00:00:00.000000000 Z
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/position.c
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.2
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: []
@@ -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
@@ -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
@@ -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
@@ -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