herb 0.8.9 → 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.
Files changed (215) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +33 -11
  3. data/README.md +64 -34
  4. data/Rakefile +48 -40
  5. data/config.yml +323 -33
  6. data/ext/herb/error_helpers.c +384 -132
  7. data/ext/herb/error_helpers.h +1 -0
  8. data/ext/herb/extconf.rb +67 -28
  9. data/ext/herb/extension.c +317 -51
  10. data/ext/herb/extension.h +1 -0
  11. data/ext/herb/extension_helpers.c +23 -14
  12. data/ext/herb/extension_helpers.h +2 -2
  13. data/ext/herb/nodes.c +537 -270
  14. data/ext/herb/nodes.h +1 -0
  15. data/herb.gemspec +3 -2
  16. data/lib/herb/ast/helpers.rb +3 -3
  17. data/lib/herb/ast/node.rb +15 -2
  18. data/lib/herb/ast/nodes.rb +1132 -157
  19. data/lib/herb/bootstrap.rb +87 -0
  20. data/lib/herb/cli.rb +341 -31
  21. data/lib/herb/configuration.rb +248 -0
  22. data/lib/herb/defaults.yml +32 -0
  23. data/lib/herb/engine/compiler.rb +83 -14
  24. data/lib/herb/engine/debug_visitor.rb +51 -6
  25. data/lib/herb/engine/error_formatter.rb +13 -9
  26. data/lib/herb/engine/parser_error_overlay.rb +10 -6
  27. data/lib/herb/engine/validator.rb +8 -3
  28. data/lib/herb/engine/validators/nesting_validator.rb +2 -2
  29. data/lib/herb/engine.rb +92 -33
  30. data/lib/herb/errors.rb +582 -87
  31. data/lib/herb/lex_result.rb +1 -0
  32. data/lib/herb/location.rb +7 -3
  33. data/lib/herb/parse_result.rb +12 -2
  34. data/lib/herb/parser_options.rb +57 -0
  35. data/lib/herb/position.rb +1 -0
  36. data/lib/herb/prism_inspect.rb +116 -0
  37. data/lib/herb/project.rb +923 -331
  38. data/lib/herb/range.rb +1 -0
  39. data/lib/herb/token.rb +7 -1
  40. data/lib/herb/version.rb +1 -1
  41. data/lib/herb/visitor.rb +37 -2
  42. data/lib/herb/warnings.rb +6 -1
  43. data/lib/herb.rb +35 -3
  44. data/sig/herb/ast/helpers.rbs +2 -2
  45. data/sig/herb/ast/node.rbs +12 -2
  46. data/sig/herb/ast/nodes.rbs +641 -128
  47. data/sig/herb/bootstrap.rbs +31 -0
  48. data/sig/herb/configuration.rbs +89 -0
  49. data/sig/herb/engine/compiler.rbs +9 -1
  50. data/sig/herb/engine/debug_visitor.rbs +8 -0
  51. data/sig/herb/engine/validator.rbs +5 -1
  52. data/sig/herb/engine.rbs +18 -2
  53. data/sig/herb/errors.rbs +268 -63
  54. data/sig/herb/location.rbs +4 -0
  55. data/sig/herb/parse_result.rbs +4 -2
  56. data/sig/herb/parser_options.rbs +42 -0
  57. data/sig/herb/position.rbs +1 -0
  58. data/sig/herb/prism_inspect.rbs +28 -0
  59. data/sig/herb/range.rbs +1 -0
  60. data/sig/herb/token.rbs +6 -0
  61. data/sig/herb/visitor.rbs +25 -4
  62. data/sig/herb/warnings.rbs +6 -1
  63. data/sig/herb.rbs +14 -0
  64. data/sig/herb_c_extension.rbs +5 -2
  65. data/sig/serialized_ast_errors.rbs +57 -6
  66. data/sig/serialized_ast_nodes.rbs +60 -6
  67. data/src/analyze/action_view/attribute_extraction_helpers.c +290 -0
  68. data/src/analyze/action_view/content_tag.c +70 -0
  69. data/src/analyze/action_view/link_to.c +143 -0
  70. data/src/analyze/action_view/registry.c +60 -0
  71. data/src/analyze/action_view/tag.c +64 -0
  72. data/src/analyze/action_view/tag_helper_node_builders.c +305 -0
  73. data/src/analyze/action_view/tag_helpers.c +748 -0
  74. data/src/analyze/action_view/turbo_frame_tag.c +88 -0
  75. data/src/analyze/analyze.c +882 -0
  76. data/src/{analyzed_ruby.c → analyze/analyzed_ruby.c} +13 -11
  77. data/src/analyze/builders.c +343 -0
  78. data/src/analyze/conditional_elements.c +594 -0
  79. data/src/analyze/conditional_open_tags.c +640 -0
  80. data/src/analyze/control_type.c +250 -0
  81. data/src/{analyze_helpers.c → analyze/helpers.c} +79 -31
  82. data/src/analyze/invalid_structures.c +193 -0
  83. data/src/{analyze_missing_end.c → analyze/missing_end.c} +33 -22
  84. data/src/analyze/parse_errors.c +84 -0
  85. data/src/analyze/prism_annotate.c +397 -0
  86. data/src/{analyze_transform.c → analyze/transform.c} +17 -3
  87. data/src/ast_node.c +17 -7
  88. data/src/ast_nodes.c +662 -387
  89. data/src/ast_pretty_print.c +190 -6
  90. data/src/errors.c +1099 -506
  91. data/src/extract.c +148 -49
  92. data/src/herb.c +52 -34
  93. data/src/html_util.c +241 -12
  94. data/src/include/analyze/action_view/attribute_extraction_helpers.h +36 -0
  95. data/src/include/analyze/action_view/tag_helper_handler.h +41 -0
  96. data/src/include/analyze/action_view/tag_helper_node_builders.h +70 -0
  97. data/src/include/analyze/action_view/tag_helpers.h +38 -0
  98. data/src/include/{analyze.h → analyze/analyze.h} +14 -4
  99. data/src/include/{analyzed_ruby.h → analyze/analyzed_ruby.h} +3 -3
  100. data/src/include/analyze/builders.h +27 -0
  101. data/src/include/analyze/conditional_elements.h +9 -0
  102. data/src/include/analyze/conditional_open_tags.h +9 -0
  103. data/src/include/analyze/control_type.h +14 -0
  104. data/src/include/{analyze_helpers.h → analyze/helpers.h} +22 -17
  105. data/src/include/analyze/invalid_structures.h +11 -0
  106. data/src/include/analyze/prism_annotate.h +16 -0
  107. data/src/include/ast_node.h +11 -5
  108. data/src/include/ast_nodes.h +117 -38
  109. data/src/include/ast_pretty_print.h +5 -0
  110. data/src/include/element_source.h +3 -8
  111. data/src/include/errors.h +154 -53
  112. data/src/include/extract.h +21 -5
  113. data/src/include/herb.h +18 -6
  114. data/src/include/herb_prism_node.h +13 -0
  115. data/src/include/html_util.h +7 -2
  116. data/src/include/io.h +3 -1
  117. data/src/include/lex_helpers.h +29 -0
  118. data/src/include/lexer.h +1 -1
  119. data/src/include/lexer_peek_helpers.h +87 -13
  120. data/src/include/lexer_struct.h +2 -0
  121. data/src/include/location.h +2 -1
  122. data/src/include/parser.h +27 -2
  123. data/src/include/parser_helpers.h +19 -3
  124. data/src/include/pretty_print.h +10 -5
  125. data/src/include/prism_context.h +45 -0
  126. data/src/include/prism_helpers.h +10 -7
  127. data/src/include/prism_serialized.h +12 -0
  128. data/src/include/token.h +16 -4
  129. data/src/include/token_struct.h +10 -3
  130. data/src/include/utf8.h +2 -1
  131. data/src/include/util/hb_allocator.h +78 -0
  132. data/src/include/util/hb_arena.h +6 -1
  133. data/src/include/util/hb_arena_debug.h +12 -1
  134. data/src/include/util/hb_array.h +7 -3
  135. data/src/include/util/hb_buffer.h +6 -4
  136. data/src/include/util/hb_foreach.h +79 -0
  137. data/src/include/util/hb_narray.h +8 -4
  138. data/src/include/util/hb_string.h +56 -9
  139. data/src/include/util/string.h +11 -0
  140. data/src/include/util.h +6 -3
  141. data/src/include/version.h +1 -1
  142. data/src/io.c +3 -2
  143. data/src/lexer.c +42 -30
  144. data/src/lexer_peek_helpers.c +12 -74
  145. data/src/location.c +2 -2
  146. data/src/main.c +79 -66
  147. data/src/parser.c +784 -247
  148. data/src/parser_helpers.c +110 -23
  149. data/src/parser_match_tags.c +109 -48
  150. data/src/pretty_print.c +29 -24
  151. data/src/prism_helpers.c +30 -27
  152. data/src/ruby_parser.c +2 -0
  153. data/src/token.c +151 -66
  154. data/src/token_matchers.c +0 -1
  155. data/src/utf8.c +7 -6
  156. data/src/util/hb_allocator.c +341 -0
  157. data/src/util/hb_arena.c +81 -56
  158. data/src/util/hb_arena_debug.c +32 -17
  159. data/src/util/hb_array.c +30 -15
  160. data/src/util/hb_buffer.c +17 -21
  161. data/src/util/hb_narray.c +22 -7
  162. data/src/util/hb_string.c +49 -35
  163. data/src/util.c +21 -11
  164. data/src/visitor.c +47 -0
  165. data/templates/ext/herb/error_helpers.c.erb +24 -11
  166. data/templates/ext/herb/error_helpers.h.erb +1 -0
  167. data/templates/ext/herb/nodes.c.erb +50 -16
  168. data/templates/ext/herb/nodes.h.erb +1 -0
  169. data/templates/java/error_helpers.c.erb +1 -1
  170. data/templates/java/nodes.c.erb +30 -8
  171. data/templates/java/org/herb/ast/Errors.java.erb +24 -1
  172. data/templates/java/org/herb/ast/Nodes.java.erb +80 -21
  173. data/templates/javascript/packages/core/src/errors.ts.erb +16 -3
  174. data/templates/javascript/packages/core/src/node-type-guards.ts.erb +3 -1
  175. data/templates/javascript/packages/core/src/nodes.ts.erb +109 -32
  176. data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +13 -4
  177. data/templates/javascript/packages/node/extension/nodes.cpp.erb +43 -4
  178. data/templates/lib/herb/ast/nodes.rb.erb +88 -31
  179. data/templates/lib/herb/errors.rb.erb +15 -3
  180. data/templates/lib/herb/visitor.rb.erb +2 -2
  181. data/templates/rust/src/ast/nodes.rs.erb +97 -44
  182. data/templates/rust/src/errors.rs.erb +2 -1
  183. data/templates/rust/src/nodes.rs.erb +167 -15
  184. data/templates/rust/src/union_types.rs.erb +60 -0
  185. data/templates/rust/src/visitor.rs.erb +81 -0
  186. data/templates/src/{analyze_missing_end.c.erb → analyze/missing_end.c.erb} +9 -6
  187. data/templates/src/{analyze_transform.c.erb → analyze/transform.c.erb} +2 -2
  188. data/templates/src/ast_nodes.c.erb +34 -26
  189. data/templates/src/ast_pretty_print.c.erb +24 -5
  190. data/templates/src/errors.c.erb +60 -54
  191. data/templates/src/include/ast_nodes.h.erb +6 -2
  192. data/templates/src/include/ast_pretty_print.h.erb +5 -0
  193. data/templates/src/include/errors.h.erb +15 -11
  194. data/templates/src/include/util/hb_foreach.h.erb +20 -0
  195. data/templates/src/parser_match_tags.c.erb +10 -4
  196. data/templates/src/visitor.c.erb +2 -2
  197. data/templates/template.rb +204 -29
  198. data/templates/wasm/error_helpers.cpp.erb +9 -5
  199. data/templates/wasm/nodes.cpp.erb +41 -4
  200. data/vendor/prism/config.yml +4 -4
  201. data/vendor/prism/include/prism/ast.h +4 -4
  202. data/vendor/prism/include/prism/version.h +2 -2
  203. data/vendor/prism/src/prism.c +1 -1
  204. data/vendor/prism/templates/java/org/prism/Loader.java.erb +1 -1
  205. data/vendor/prism/templates/javascript/src/deserialize.js.erb +1 -1
  206. data/vendor/prism/templates/lib/prism/node.rb.erb +23 -15
  207. data/vendor/prism/templates/lib/prism/serialize.rb.erb +1 -1
  208. data/vendor/prism/templates/rbi/prism/node.rbi.erb +3 -0
  209. data/vendor/prism/templates/sig/prism/node.rbs.erb +3 -0
  210. data/vendor/prism/templates/sig/prism.rbs.erb +9 -10
  211. metadata +58 -16
  212. data/src/analyze.c +0 -1594
  213. data/src/element_source.c +0 -12
  214. data/src/include/util/hb_system.h +0 -9
  215. data/src/util/hb_system.c +0 -30
@@ -12438,7 +12438,7 @@ expect1_opening(pm_parser_t *parser, pm_token_type_t type, pm_diagnostic_id_t di
12438
12438
 
12439
12439
  pm_parser_err(parser, opening->start, opening->end, diag_id);
12440
12440
 
12441
- parser->previous.start = opening->end;
12441
+ parser->previous.start = parser->previous.end;
12442
12442
  parser->previous.type = PM_TOKEN_MISSING;
12443
12443
  }
12444
12444
 
@@ -101,7 +101,7 @@ public class Loader {
101
101
  expect((byte) 'M', "incorrect prism header");
102
102
 
103
103
  expect((byte) 1, "prism major version does not match");
104
- expect((byte) 8, "prism minor version does not match");
104
+ expect((byte) 9, "prism minor version does not match");
105
105
  expect((byte) 0, "prism patch version does not match");
106
106
 
107
107
  expect((byte) 1, "Loader.java requires no location fields in the serialized output");
@@ -1,7 +1,7 @@
1
1
  import * as nodes from "./nodes.js";
2
2
 
3
3
  const MAJOR_VERSION = 1;
4
- const MINOR_VERSION = 8;
4
+ const MINOR_VERSION = 9;
5
5
  const PATCH_VERSION = 0;
6
6
 
7
7
  // The DataView getFloat64 function takes an optional second argument that
@@ -183,25 +183,13 @@ module Prism
183
183
  def tunnel(line, column)
184
184
  queue = [self] #: Array[Prism::node]
185
185
  result = [] #: Array[Prism::node]
186
+ offset = source.byte_offset(line, column)
186
187
 
187
188
  while (node = queue.shift)
188
189
  result << node
189
190
 
190
191
  node.each_child_node do |child_node|
191
- child_location = child_node.location
192
-
193
- start_line = child_location.start_line
194
- end_line = child_location.end_line
195
-
196
- if start_line == end_line
197
- if line == start_line && column >= child_location.start_column && column < child_location.end_column
198
- queue << child_node
199
- break
200
- end
201
- elsif (line == start_line && column >= child_location.start_column) || (line == end_line && column < child_location.end_column)
202
- queue << child_node
203
- break
204
- elsif line > start_line && line < end_line
192
+ if child_node.start_offset <= offset && offset < child_node.end_offset
205
193
  queue << child_node
206
194
  break
207
195
  end
@@ -212,7 +200,7 @@ module Prism
212
200
  end
213
201
 
214
202
  # Returns the first node that matches the given block when visited in a
215
- # depth-first search. This is useful for finding a node that matches a
203
+ # breadth-first search. This is useful for finding a node that matches a
216
204
  # particular condition.
217
205
  #
218
206
  # node.breadth_first_search { |node| node.node_id == node_id }
@@ -227,6 +215,26 @@ module Prism
227
215
 
228
216
  nil
229
217
  end
218
+ alias find breadth_first_search
219
+
220
+ # Returns all of the nodes that match the given block when visited in a
221
+ # breadth-first search. This is useful for finding all nodes that match a
222
+ # particular condition.
223
+ #
224
+ # node.breadth_first_search_all { |node| node.is_a?(Prism::CallNode) }
225
+ #
226
+ def breadth_first_search_all(&block)
227
+ queue = [self] #: Array[Prism::node]
228
+ results = [] #: Array[Prism::node]
229
+
230
+ while (node = queue.shift)
231
+ results << node if yield node
232
+ queue.concat(node.compact_child_nodes)
233
+ end
234
+
235
+ results
236
+ end
237
+ alias find_all breadth_first_search_all
230
238
 
231
239
  # Returns a list of the fields that exist for this node class. Fields
232
240
  # describe the structure of the node. This kind of reflection is useful for
@@ -10,7 +10,7 @@ module Prism
10
10
 
11
11
  # The minor version of prism that we are expecting to find in the serialized
12
12
  # strings.
13
- MINOR_VERSION = 8
13
+ MINOR_VERSION = 9
14
14
 
15
15
  # The patch version of prism that we are expecting to find in the serialized
16
16
  # strings.
@@ -49,6 +49,9 @@ class Prism::Node
49
49
  sig { params(block: T.proc.params(node: Prism::Node).returns(T::Boolean)).returns(T.nilable(Prism::Node)) }
50
50
  def breadth_first_search(&block); end
51
51
 
52
+ sig { params(block: T.proc.params(node: Prism::Node).returns(T::Boolean)).returns(T::Array[Prism::Node]) }
53
+ def breadth_first_search_all(&block); end
54
+
52
55
  sig { abstract.params(visitor: Prism::Visitor).returns(T.untyped) }
53
56
  def accept(visitor); end
54
57
 
@@ -25,6 +25,9 @@ module Prism
25
25
  def to_dot: () -> String
26
26
  def tunnel: (Integer line, Integer column) -> Array[Prism::node]
27
27
  def breadth_first_search: () { (Prism::node) -> bool } -> Prism::node?
28
+ alias find breadth_first_search
29
+ def breadth_first_search_all: () { (Prism::node) -> bool } -> Array[Prism::node]
30
+ alias find_all breadth_first_search_all
28
31
  def newline!: (Array[untyped]) -> void
29
32
 
30
33
  def save: (_Repository repository) -> void
@@ -23,15 +23,16 @@ module Prism
23
23
 
24
24
  def self.<%= method %>: (
25
25
  String source,
26
+ ?command_line: String,
26
27
  ?encoding: Encoding | false,
27
28
  ?filepath: String,
28
29
  ?freeze: bool,
29
30
  ?frozen_string_literal: bool,
30
31
  ?line: Integer,
31
32
  ?main_script: bool,
32
- ?offset: Integer,
33
+ ?partial_script: bool,
33
34
  ?scopes: Array[Array[Symbol]],
34
- ?verbose: bool
35
+ ?version: String
35
36
  ) -> <%= return_type %>
36
37
  <%- end -%>
37
38
 
@@ -41,10 +42,6 @@ module Prism
41
42
  ?bool freeze
42
43
  ) -> ParseResult
43
44
 
44
- def self.lex_ripper: (
45
- String source
46
- ) -> Array[[[Integer, Integer], Symbol, String, untyped]]
47
-
48
45
  # Methods taking a path to a Ruby file:
49
46
  <%-
50
47
  {
@@ -61,14 +58,15 @@ module Prism
61
58
 
62
59
  def self.<%= method %>: (
63
60
  String filepath,
61
+ ?command_line: String,
64
62
  ?encoding: Encoding | false,
65
63
  ?freeze: bool,
66
64
  ?frozen_string_literal: bool,
67
65
  ?line: Integer,
68
66
  ?main_script: bool,
69
- ?offset: Integer,
67
+ ?partial_script: bool,
70
68
  ?scopes: Array[Array[Symbol]],
71
- ?verbose: bool
69
+ ?version: String
72
70
  ) -> <%= return_type %>
73
71
  <%- end -%>
74
72
 
@@ -78,15 +76,16 @@ module Prism
78
76
 
79
77
  def self.parse_stream: (
80
78
  _Stream stream,
79
+ ?command_line: String,
81
80
  ?encoding: Encoding | false,
82
81
  ?filepath: String,
83
82
  ?freeze: bool,
84
83
  ?frozen_string_literal: bool,
85
84
  ?line: Integer,
86
85
  ?main_script: bool,
87
- ?offset: Integer,
86
+ ?partial_script: bool,
88
87
  ?scopes: Array[Array[Symbol]],
89
- ?verbose: bool
88
+ ?version: String
90
89
  ) -> ParseResult
91
90
 
92
91
  def self.scope: (?locals: Array[Symbol], ?forwarding: Array[Symbol]) -> Scope
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: herb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marco Roth
@@ -9,7 +9,7 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
- description: Powerful and seamless HTML-aware ERB parsing and tooling.
12
+ description: A collection of powerful and seamless developer tools for HTML+ERB templates.
13
13
  email:
14
14
  - marco.roth@intergga.ch
15
15
  executables:
@@ -39,8 +39,11 @@ files:
39
39
  - lib/herb/ast/helpers.rb
40
40
  - lib/herb/ast/node.rb
41
41
  - lib/herb/ast/nodes.rb
42
+ - lib/herb/bootstrap.rb
42
43
  - lib/herb/cli.rb
43
44
  - lib/herb/colors.rb
45
+ - lib/herb/configuration.rb
46
+ - lib/herb/defaults.yml
44
47
  - lib/herb/engine.rb
45
48
  - lib/herb/engine/compiler.rb
46
49
  - lib/herb/engine/debug_visitor.rb
@@ -56,7 +59,9 @@ files:
56
59
  - lib/herb/lex_result.rb
57
60
  - lib/herb/location.rb
58
61
  - lib/herb/parse_result.rb
62
+ - lib/herb/parser_options.rb
59
63
  - lib/herb/position.rb
64
+ - lib/herb/prism_inspect.rb
60
65
  - lib/herb/project.rb
61
66
  - lib/herb/range.rb
62
67
  - lib/herb/result.rb
@@ -70,7 +75,9 @@ files:
70
75
  - sig/herb/ast/helpers.rbs
71
76
  - sig/herb/ast/node.rbs
72
77
  - sig/herb/ast/nodes.rbs
78
+ - sig/herb/bootstrap.rbs
73
79
  - sig/herb/colors.rbs
80
+ - sig/herb/configuration.rbs
74
81
  - sig/herb/engine.rbs
75
82
  - sig/herb/engine/compiler.rbs
76
83
  - sig/herb/engine/debug.rbs
@@ -87,7 +94,9 @@ files:
87
94
  - sig/herb/lex_result.rbs
88
95
  - sig/herb/location.rbs
89
96
  - sig/herb/parse_result.rbs
97
+ - sig/herb/parser_options.rbs
90
98
  - sig/herb/position.rbs
99
+ - sig/herb/prism_inspect.rbs
91
100
  - sig/herb/range.rbs
92
101
  - sig/herb/result.rbs
93
102
  - sig/herb/token.rbs
@@ -99,22 +108,46 @@ files:
99
108
  - sig/serialized.rbs
100
109
  - sig/serialized_ast_errors.rbs
101
110
  - sig/serialized_ast_nodes.rbs
102
- - src/analyze.c
103
- - src/analyze_helpers.c
104
- - src/analyze_missing_end.c
105
- - src/analyze_transform.c
106
- - src/analyzed_ruby.c
111
+ - src/analyze/action_view/attribute_extraction_helpers.c
112
+ - src/analyze/action_view/content_tag.c
113
+ - src/analyze/action_view/link_to.c
114
+ - src/analyze/action_view/registry.c
115
+ - src/analyze/action_view/tag.c
116
+ - src/analyze/action_view/tag_helper_node_builders.c
117
+ - src/analyze/action_view/tag_helpers.c
118
+ - src/analyze/action_view/turbo_frame_tag.c
119
+ - src/analyze/analyze.c
120
+ - src/analyze/analyzed_ruby.c
121
+ - src/analyze/builders.c
122
+ - src/analyze/conditional_elements.c
123
+ - src/analyze/conditional_open_tags.c
124
+ - src/analyze/control_type.c
125
+ - src/analyze/helpers.c
126
+ - src/analyze/invalid_structures.c
127
+ - src/analyze/missing_end.c
128
+ - src/analyze/parse_errors.c
129
+ - src/analyze/prism_annotate.c
130
+ - src/analyze/transform.c
107
131
  - src/ast_node.c
108
132
  - src/ast_nodes.c
109
133
  - src/ast_pretty_print.c
110
- - src/element_source.c
111
134
  - src/errors.c
112
135
  - src/extract.c
113
136
  - src/herb.c
114
137
  - src/html_util.c
115
- - src/include/analyze.h
116
- - src/include/analyze_helpers.h
117
- - src/include/analyzed_ruby.h
138
+ - src/include/analyze/action_view/attribute_extraction_helpers.h
139
+ - src/include/analyze/action_view/tag_helper_handler.h
140
+ - src/include/analyze/action_view/tag_helper_node_builders.h
141
+ - src/include/analyze/action_view/tag_helpers.h
142
+ - src/include/analyze/analyze.h
143
+ - src/include/analyze/analyzed_ruby.h
144
+ - src/include/analyze/builders.h
145
+ - src/include/analyze/conditional_elements.h
146
+ - src/include/analyze/conditional_open_tags.h
147
+ - src/include/analyze/control_type.h
148
+ - src/include/analyze/helpers.h
149
+ - src/include/analyze/invalid_structures.h
150
+ - src/include/analyze/prism_annotate.h
118
151
  - src/include/ast_node.h
119
152
  - src/include/ast_nodes.h
120
153
  - src/include/ast_pretty_print.h
@@ -122,8 +155,10 @@ files:
122
155
  - src/include/errors.h
123
156
  - src/include/extract.h
124
157
  - src/include/herb.h
158
+ - src/include/herb_prism_node.h
125
159
  - src/include/html_util.h
126
160
  - src/include/io.h
161
+ - src/include/lex_helpers.h
127
162
  - src/include/lexer.h
128
163
  - src/include/lexer_peek_helpers.h
129
164
  - src/include/lexer_struct.h
@@ -133,7 +168,9 @@ files:
133
168
  - src/include/parser_helpers.h
134
169
  - src/include/position.h
135
170
  - src/include/pretty_print.h
171
+ - src/include/prism_context.h
136
172
  - src/include/prism_helpers.h
173
+ - src/include/prism_serialized.h
137
174
  - src/include/range.h
138
175
  - src/include/ruby_parser.h
139
176
  - src/include/token.h
@@ -141,13 +178,15 @@ files:
141
178
  - src/include/token_struct.h
142
179
  - src/include/utf8.h
143
180
  - src/include/util.h
181
+ - src/include/util/hb_allocator.h
144
182
  - src/include/util/hb_arena.h
145
183
  - src/include/util/hb_arena_debug.h
146
184
  - src/include/util/hb_array.h
147
185
  - src/include/util/hb_buffer.h
186
+ - src/include/util/hb_foreach.h
148
187
  - src/include/util/hb_narray.h
149
188
  - src/include/util/hb_string.h
150
- - src/include/util/hb_system.h
189
+ - src/include/util/string.h
151
190
  - src/include/version.h
152
191
  - src/include/visitor.h
153
192
  - src/io.c
@@ -167,13 +206,13 @@ files:
167
206
  - src/token_matchers.c
168
207
  - src/utf8.c
169
208
  - src/util.c
209
+ - src/util/hb_allocator.c
170
210
  - src/util/hb_arena.c
171
211
  - src/util/hb_arena_debug.c
172
212
  - src/util/hb_array.c
173
213
  - src/util/hb_buffer.c
174
214
  - src/util/hb_narray.c
175
215
  - src/util/hb_string.c
176
- - src/util/hb_system.c
177
216
  - src/visitor.c
178
217
  - templates/ext/herb/error_helpers.c.erb
179
218
  - templates/ext/herb/error_helpers.h.erb
@@ -201,16 +240,19 @@ files:
201
240
  - templates/rust/src/ast/nodes.rs.erb
202
241
  - templates/rust/src/errors.rs.erb
203
242
  - templates/rust/src/nodes.rs.erb
243
+ - templates/rust/src/union_types.rs.erb
244
+ - templates/rust/src/visitor.rs.erb
204
245
  - templates/sig/serialized_ast_errors.rbs.erb
205
246
  - templates/sig/serialized_ast_nodes.rbs.erb
206
- - templates/src/analyze_missing_end.c.erb
207
- - templates/src/analyze_transform.c.erb
247
+ - templates/src/analyze/missing_end.c.erb
248
+ - templates/src/analyze/transform.c.erb
208
249
  - templates/src/ast_nodes.c.erb
209
250
  - templates/src/ast_pretty_print.c.erb
210
251
  - templates/src/errors.c.erb
211
252
  - templates/src/include/ast_nodes.h.erb
212
253
  - templates/src/include/ast_pretty_print.h.erb
213
254
  - templates/src/include/errors.h.erb
255
+ - templates/src/include/util/hb_foreach.h.erb
214
256
  - templates/src/parser_match_tags.c.erb
215
257
  - templates/src/visitor.c.erb
216
258
  - templates/template.rb
@@ -325,5 +367,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
325
367
  requirements: []
326
368
  rubygems_version: 4.0.3
327
369
  specification_version: 4
328
- summary: Powerful and seamless HTML-aware ERB parsing and tooling.
370
+ summary: The modern HTML+ERB Toolchain
329
371
  test_files: []