herb 0.8.10-arm-linux-gnu → 0.9.1-arm-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 (212) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +11 -3
  3. data/README.md +64 -34
  4. data/Rakefile +48 -40
  5. data/config.yml +473 -34
  6. data/ext/herb/error_helpers.c +535 -140
  7. data/ext/herb/error_helpers.h +1 -0
  8. data/ext/herb/extconf.rb +67 -28
  9. data/ext/herb/extension.c +321 -51
  10. data/ext/herb/extension.h +1 -0
  11. data/ext/herb/extension_helpers.c +24 -14
  12. data/ext/herb/extension_helpers.h +2 -2
  13. data/ext/herb/nodes.c +647 -270
  14. data/ext/herb/nodes.h +1 -0
  15. data/herb.gemspec +3 -2
  16. data/lib/herb/3.0/herb.so +0 -0
  17. data/lib/herb/3.1/herb.so +0 -0
  18. data/lib/herb/3.2/herb.so +0 -0
  19. data/lib/herb/3.3/herb.so +0 -0
  20. data/lib/herb/3.4/herb.so +0 -0
  21. data/lib/herb/4.0/herb.so +0 -0
  22. data/lib/herb/ast/helpers.rb +3 -3
  23. data/lib/herb/ast/node.rb +15 -2
  24. data/lib/herb/ast/nodes.rb +1530 -179
  25. data/lib/herb/bootstrap.rb +87 -0
  26. data/lib/herb/cli.rb +341 -31
  27. data/lib/herb/configuration.rb +248 -0
  28. data/lib/herb/defaults.yml +32 -0
  29. data/lib/herb/engine/compiler.rb +78 -11
  30. data/lib/herb/engine/debug_visitor.rb +13 -3
  31. data/lib/herb/engine/error_formatter.rb +13 -9
  32. data/lib/herb/engine/parser_error_overlay.rb +10 -6
  33. data/lib/herb/engine/validator.rb +8 -3
  34. data/lib/herb/engine/validators/nesting_validator.rb +2 -2
  35. data/lib/herb/engine.rb +119 -43
  36. data/lib/herb/errors.rb +808 -88
  37. data/lib/herb/lex_result.rb +1 -0
  38. data/lib/herb/location.rb +7 -3
  39. data/lib/herb/parse_result.rb +12 -2
  40. data/lib/herb/parser_options.rb +62 -0
  41. data/lib/herb/position.rb +1 -0
  42. data/lib/herb/prism_inspect.rb +120 -0
  43. data/lib/herb/project.rb +923 -331
  44. data/lib/herb/range.rb +1 -0
  45. data/lib/herb/token.rb +7 -1
  46. data/lib/herb/version.rb +1 -1
  47. data/lib/herb/visitor.rb +47 -2
  48. data/lib/herb/warnings.rb +6 -1
  49. data/lib/herb.rb +35 -3
  50. data/sig/herb/ast/helpers.rbs +2 -2
  51. data/sig/herb/ast/node.rbs +12 -2
  52. data/sig/herb/ast/nodes.rbs +773 -128
  53. data/sig/herb/bootstrap.rbs +31 -0
  54. data/sig/herb/configuration.rbs +89 -0
  55. data/sig/herb/engine/compiler.rbs +9 -1
  56. data/sig/herb/engine/debug_visitor.rbs +2 -0
  57. data/sig/herb/engine/validator.rbs +5 -1
  58. data/sig/herb/engine.rbs +21 -3
  59. data/sig/herb/errors.rbs +372 -63
  60. data/sig/herb/location.rbs +4 -0
  61. data/sig/herb/parse_result.rbs +4 -2
  62. data/sig/herb/parser_options.rbs +46 -0
  63. data/sig/herb/position.rbs +1 -0
  64. data/sig/herb/prism_inspect.rbs +28 -0
  65. data/sig/herb/range.rbs +1 -0
  66. data/sig/herb/token.rbs +6 -0
  67. data/sig/herb/visitor.rbs +31 -4
  68. data/sig/herb/warnings.rbs +6 -1
  69. data/sig/herb.rbs +14 -0
  70. data/sig/herb_c_extension.rbs +5 -2
  71. data/sig/rubyvm.rbs +5 -0
  72. data/sig/serialized_ast_errors.rbs +82 -6
  73. data/sig/serialized_ast_nodes.rbs +91 -6
  74. data/src/analyze/action_view/attribute_extraction_helpers.c +303 -0
  75. data/src/analyze/action_view/content_tag.c +78 -0
  76. data/src/analyze/action_view/link_to.c +167 -0
  77. data/src/analyze/action_view/registry.c +83 -0
  78. data/src/analyze/action_view/tag.c +70 -0
  79. data/src/analyze/action_view/tag_helper_node_builders.c +305 -0
  80. data/src/analyze/action_view/tag_helpers.c +815 -0
  81. data/src/analyze/action_view/turbo_frame_tag.c +88 -0
  82. data/src/analyze/analyze.c +885 -0
  83. data/src/{analyzed_ruby.c → analyze/analyzed_ruby.c} +13 -11
  84. data/src/analyze/builders.c +343 -0
  85. data/src/analyze/conditional_elements.c +594 -0
  86. data/src/analyze/conditional_open_tags.c +640 -0
  87. data/src/analyze/control_type.c +250 -0
  88. data/src/{analyze_helpers.c → analyze/helpers.c} +48 -23
  89. data/src/analyze/invalid_structures.c +193 -0
  90. data/src/{analyze_missing_end.c → analyze/missing_end.c} +33 -22
  91. data/src/analyze/parse_errors.c +84 -0
  92. data/src/analyze/prism_annotate.c +399 -0
  93. data/src/analyze/render_nodes.c +761 -0
  94. data/src/{analyze_transform.c → analyze/transform.c} +24 -3
  95. data/src/ast_node.c +17 -7
  96. data/src/ast_nodes.c +759 -387
  97. data/src/ast_pretty_print.c +264 -6
  98. data/src/errors.c +1454 -519
  99. data/src/extract.c +145 -49
  100. data/src/herb.c +52 -34
  101. data/src/html_util.c +241 -12
  102. data/src/include/analyze/action_view/attribute_extraction_helpers.h +36 -0
  103. data/src/include/analyze/action_view/tag_helper_handler.h +43 -0
  104. data/src/include/analyze/action_view/tag_helper_node_builders.h +70 -0
  105. data/src/include/analyze/action_view/tag_helpers.h +38 -0
  106. data/src/include/{analyze.h → analyze/analyze.h} +14 -4
  107. data/src/include/{analyzed_ruby.h → analyze/analyzed_ruby.h} +3 -3
  108. data/src/include/analyze/builders.h +27 -0
  109. data/src/include/analyze/conditional_elements.h +9 -0
  110. data/src/include/analyze/conditional_open_tags.h +9 -0
  111. data/src/include/analyze/control_type.h +14 -0
  112. data/src/include/{analyze_helpers.h → analyze/helpers.h} +4 -2
  113. data/src/include/analyze/invalid_structures.h +11 -0
  114. data/src/include/analyze/prism_annotate.h +16 -0
  115. data/src/include/analyze/render_nodes.h +11 -0
  116. data/src/include/ast_node.h +11 -5
  117. data/src/include/ast_nodes.h +154 -38
  118. data/src/include/ast_pretty_print.h +5 -0
  119. data/src/include/element_source.h +3 -8
  120. data/src/include/errors.h +206 -55
  121. data/src/include/extract.h +21 -5
  122. data/src/include/herb.h +18 -6
  123. data/src/include/herb_prism_node.h +13 -0
  124. data/src/include/html_util.h +7 -2
  125. data/src/include/io.h +3 -1
  126. data/src/include/lex_helpers.h +29 -0
  127. data/src/include/lexer.h +1 -1
  128. data/src/include/lexer_peek_helpers.h +87 -13
  129. data/src/include/lexer_struct.h +2 -0
  130. data/src/include/location.h +2 -1
  131. data/src/include/parser.h +28 -2
  132. data/src/include/parser_helpers.h +19 -3
  133. data/src/include/pretty_print.h +10 -5
  134. data/src/include/prism_context.h +45 -0
  135. data/src/include/prism_helpers.h +10 -7
  136. data/src/include/prism_serialized.h +12 -0
  137. data/src/include/token.h +16 -4
  138. data/src/include/token_struct.h +10 -3
  139. data/src/include/utf8.h +2 -1
  140. data/src/include/util/hb_allocator.h +78 -0
  141. data/src/include/util/hb_arena.h +6 -1
  142. data/src/include/util/hb_arena_debug.h +12 -1
  143. data/src/include/util/hb_array.h +7 -3
  144. data/src/include/util/hb_buffer.h +6 -4
  145. data/src/include/util/hb_foreach.h +79 -0
  146. data/src/include/util/hb_narray.h +8 -4
  147. data/src/include/util/hb_string.h +56 -9
  148. data/src/include/util.h +6 -3
  149. data/src/include/version.h +1 -1
  150. data/src/io.c +3 -2
  151. data/src/lexer.c +42 -30
  152. data/src/lexer_peek_helpers.c +12 -74
  153. data/src/location.c +2 -2
  154. data/src/main.c +53 -28
  155. data/src/parser.c +784 -247
  156. data/src/parser_helpers.c +110 -23
  157. data/src/parser_match_tags.c +129 -48
  158. data/src/pretty_print.c +29 -24
  159. data/src/prism_helpers.c +30 -27
  160. data/src/ruby_parser.c +2 -0
  161. data/src/token.c +151 -66
  162. data/src/token_matchers.c +0 -1
  163. data/src/utf8.c +7 -6
  164. data/src/util/hb_allocator.c +341 -0
  165. data/src/util/hb_arena.c +81 -56
  166. data/src/util/hb_arena_debug.c +32 -17
  167. data/src/util/hb_array.c +30 -15
  168. data/src/util/hb_buffer.c +17 -21
  169. data/src/util/hb_narray.c +22 -7
  170. data/src/util/hb_string.c +49 -35
  171. data/src/util.c +21 -11
  172. data/src/visitor.c +67 -0
  173. data/templates/ext/herb/error_helpers.c.erb +24 -11
  174. data/templates/ext/herb/error_helpers.h.erb +1 -0
  175. data/templates/ext/herb/nodes.c.erb +50 -16
  176. data/templates/ext/herb/nodes.h.erb +1 -0
  177. data/templates/java/error_helpers.c.erb +1 -1
  178. data/templates/java/nodes.c.erb +30 -8
  179. data/templates/java/org/herb/ast/Errors.java.erb +24 -1
  180. data/templates/java/org/herb/ast/Nodes.java.erb +80 -21
  181. data/templates/javascript/packages/core/src/errors.ts.erb +16 -3
  182. data/templates/javascript/packages/core/src/node-type-guards.ts.erb +3 -1
  183. data/templates/javascript/packages/core/src/nodes.ts.erb +109 -32
  184. data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +13 -4
  185. data/templates/javascript/packages/node/extension/nodes.cpp.erb +43 -4
  186. data/templates/lib/herb/ast/nodes.rb.erb +95 -32
  187. data/templates/lib/herb/errors.rb.erb +15 -3
  188. data/templates/lib/herb/visitor.rb.erb +2 -2
  189. data/templates/rust/src/ast/nodes.rs.erb +97 -44
  190. data/templates/rust/src/errors.rs.erb +2 -1
  191. data/templates/rust/src/nodes.rs.erb +168 -16
  192. data/templates/rust/src/union_types.rs.erb +60 -0
  193. data/templates/rust/src/visitor.rs.erb +81 -0
  194. data/templates/src/{analyze_missing_end.c.erb → analyze/missing_end.c.erb} +9 -6
  195. data/templates/src/{analyze_transform.c.erb → analyze/transform.c.erb} +2 -2
  196. data/templates/src/ast_nodes.c.erb +34 -26
  197. data/templates/src/ast_pretty_print.c.erb +24 -5
  198. data/templates/src/errors.c.erb +60 -54
  199. data/templates/src/include/ast_nodes.h.erb +6 -2
  200. data/templates/src/include/ast_pretty_print.h.erb +5 -0
  201. data/templates/src/include/errors.h.erb +15 -11
  202. data/templates/src/include/util/hb_foreach.h.erb +20 -0
  203. data/templates/src/parser_match_tags.c.erb +10 -4
  204. data/templates/src/visitor.c.erb +2 -2
  205. data/templates/template.rb +204 -29
  206. data/templates/wasm/error_helpers.cpp.erb +9 -5
  207. data/templates/wasm/nodes.cpp.erb +41 -4
  208. metadata +60 -16
  209. data/src/analyze.c +0 -1608
  210. data/src/element_source.c +0 -12
  211. data/src/include/util/hb_system.h +0 -9
  212. data/src/util/hb_system.c +0 -30
@@ -0,0 +1,31 @@
1
+ # Generated from lib/herb/bootstrap.rb with RBS::Inline
2
+
3
+ module Herb
4
+ module Bootstrap
5
+ ROOT_PATH: untyped
6
+
7
+ PRISM_VENDOR_DIR: untyped
8
+
9
+ PRISM_ENTRIES: untyped
10
+
11
+ def self.generate_templates: () -> untyped
12
+
13
+ def self.git_source?: () -> untyped
14
+
15
+ def self.templates_generated?: () -> untyped
16
+
17
+ def self.vendor_prism: (prism_gem_path: untyped) -> untyped
18
+
19
+ def self.prism_vendored?: () -> untyped
20
+
21
+ def self.prism_ast_header_exists?: () -> untyped
22
+
23
+ def self.find_prism_gem_path: () -> untyped
24
+
25
+ def self.generate_prism_templates: () -> untyped
26
+
27
+ def self.find_prism_as_bundler_sibling: () -> untyped
28
+
29
+ def self.find_prism_from_gem_spec: () -> untyped
30
+ end
31
+ end
@@ -0,0 +1,89 @@
1
+ # Generated from lib/herb/configuration.rb with RBS::Inline
2
+
3
+ module Herb
4
+ class Configuration
5
+ CONFIG_FILENAMES: untyped
6
+
7
+ PROJECT_INDICATORS: untyped
8
+
9
+ DEFAULTS_PATH: untyped
10
+
11
+ DEFAULTS: untyped
12
+
13
+ attr_reader config: untyped
14
+
15
+ attr_reader config_path: untyped
16
+
17
+ attr_reader project_root: untyped
18
+
19
+ def initialize: (?untyped project_path) -> untyped
20
+
21
+ def []: (untyped key) -> untyped
22
+
23
+ def dig: (*untyped keys) -> untyped
24
+
25
+ def version: () -> untyped
26
+
27
+ def files: () -> untyped
28
+
29
+ def file_include_patterns: () -> untyped
30
+
31
+ def file_exclude_patterns: () -> untyped
32
+
33
+ def linter: () -> untyped
34
+
35
+ def engine: () -> untyped
36
+
37
+ def enabled_validators: (?untyped overrides) -> untyped
38
+
39
+ def formatter: () -> untyped
40
+
41
+ def include_patterns_for: (untyped tool) -> untyped
42
+
43
+ def exclude_patterns_for: (untyped tool) -> untyped
44
+
45
+ def linter_include_patterns: () -> untyped
46
+
47
+ def linter_exclude_patterns: () -> untyped
48
+
49
+ def formatter_include_patterns: () -> untyped
50
+
51
+ def formatter_exclude_patterns: () -> untyped
52
+
53
+ def enabled_for_path?: (untyped path, untyped tool) -> untyped
54
+
55
+ def linter_enabled_for_path?: (untyped path) -> untyped
56
+
57
+ def formatter_enabled_for_path?: (untyped path) -> untyped
58
+
59
+ def path_excluded?: (untyped path, untyped patterns) -> untyped
60
+
61
+ def path_included?: (untyped path, untyped patterns) -> untyped
62
+
63
+ def find_files: (?untyped search_path) -> untyped
64
+
65
+ def find_files_for_tool: (untyped tool, ?untyped search_path) -> untyped
66
+
67
+ def find_files_for_linter: (?untyped search_path) -> untyped
68
+
69
+ def find_files_for_formatter: (?untyped search_path) -> untyped
70
+
71
+ def self.load: (?untyped project_path) -> untyped
72
+
73
+ def self.default: () -> untyped
74
+
75
+ def self.default_file_patterns: () -> untyped
76
+
77
+ def self.default_exclude_patterns: () -> untyped
78
+
79
+ private
80
+
81
+ def find_config_file: () -> untyped
82
+
83
+ def project_root?: (untyped path) -> untyped
84
+
85
+ def load_config: () -> untyped
86
+
87
+ def deep_merge: (untyped base, untyped override, ?additive_keys: untyped) -> untyped
88
+ end
89
+ end
@@ -13,6 +13,8 @@ module Herb
13
13
 
14
14
  def visit_html_element_node: (untyped node) -> untyped
15
15
 
16
+ def visit_html_conditional_element_node: (untyped node) -> untyped
17
+
16
18
  def visit_html_open_tag_node: (untyped node) -> untyped
17
19
 
18
20
  def visit_html_attribute_node: (untyped node) -> untyped
@@ -23,6 +25,8 @@ module Herb
23
25
 
24
26
  def visit_html_close_tag_node: (untyped node) -> untyped
25
27
 
28
+ def visit_html_omitted_close_tag_node: (untyped node) -> untyped
29
+
26
30
  def visit_html_text_node: (untyped node) -> untyped
27
31
 
28
32
  def visit_literal_node: (untyped node) -> untyped
@@ -73,6 +77,8 @@ module Herb
73
77
 
74
78
  def visit_erb_block_node: (untyped node) -> untyped
75
79
 
80
+ def visit_erb_block_end_node: (untyped node, ?escaped: untyped) -> untyped
81
+
76
82
  def visit_erb_control_with_parts: (untyped node, *untyped parts) -> untyped
77
83
 
78
84
  private
@@ -111,7 +117,7 @@ module Herb
111
117
 
112
118
  def find_token_before_code_sequence: (untyped tokens, untyped whitespace_index) -> untyped
113
119
 
114
- def process_erb_output: (untyped opening, untyped code) -> untyped
120
+ def process_erb_output: (untyped node, untyped opening, untyped code) -> untyped
115
121
 
116
122
  def should_escape_output?: (untyped opening) -> untyped
117
123
 
@@ -119,6 +125,8 @@ module Herb
119
125
 
120
126
  def at_line_start?: () -> untyped
121
127
 
128
+ def preceding_token_ends_with_newline?: () -> untyped
129
+
122
130
  def extract_lspace: () -> untyped
123
131
 
124
132
  def extract_and_remove_lspace!: () -> untyped
@@ -76,6 +76,8 @@ module Herb
76
76
 
77
77
  # TODO: Rewrite using Prism Nodes once available
78
78
  def javascript_tag?: (untyped code) -> untyped
79
+
80
+ def include_debug_disable_comment?: (untyped code) -> untyped
79
81
  end
80
82
  end
81
83
  end
@@ -5,7 +5,11 @@ module Herb
5
5
  class Validator < Herb::Visitor
6
6
  attr_reader diagnostics: untyped
7
7
 
8
- def initialize: () -> untyped
8
+ attr_reader enabled: untyped
9
+
10
+ def initialize: (?enabled: untyped) -> untyped
11
+
12
+ def enabled?: () -> untyped
9
13
 
10
14
  def validate: (untyped node) -> untyped
11
15
 
data/sig/herb/engine.rbs CHANGED
@@ -20,11 +20,19 @@ module Herb
20
20
 
21
21
  attr_reader visitors: untyped
22
22
 
23
+ attr_reader enabled_validators: untyped
24
+
23
25
  ESCAPE_TABLE: untyped
24
26
 
25
27
  class CompilationError < StandardError
26
28
  end
27
29
 
30
+ class InvalidRubyError < CompilationError
31
+ attr_reader compiled_source: untyped
32
+
33
+ def initialize: (untyped message, ?compiled_source: untyped) -> untyped
34
+ end
35
+
28
36
  def initialize: (untyped input, ?untyped properties) -> untyped
29
37
 
30
38
  def self.h: (untyped value) -> untyped
@@ -35,10 +43,16 @@ module Herb
35
43
 
36
44
  def self.css: (untyped value) -> untyped
37
45
 
46
+ def self.comment?: (untyped code) -> untyped
47
+
48
+ def self.heredoc?: (untyped code) -> untyped
49
+
38
50
  def add_text: (untyped text) -> untyped
39
51
 
40
52
  def add_code: (untyped code) -> untyped
41
53
 
54
+ def expression_block?: () -> untyped
55
+
42
56
  def add_expression: (untyped indicator, untyped code) -> untyped
43
57
 
44
58
  def add_expression_result: (untyped code) -> untyped
@@ -51,7 +65,9 @@ module Herb
51
65
 
52
66
  def add_expression_block_result_escaped: (untyped code) -> untyped
53
67
 
54
- def comment_aware_newline: (untyped code) -> untyped
68
+ def add_expression_block_end: (untyped code, ?escaped: untyped) -> untyped
69
+
70
+ def trailing_newline: (untyped code) -> untyped
55
71
 
56
72
  def add_postamble: (untyped postamble) -> untyped
57
73
 
@@ -65,9 +81,9 @@ module Herb
65
81
 
66
82
  def handle_parser_errors: (untyped parser_errors, untyped input, untyped _ast) -> untyped
67
83
 
68
- def handle_validation_errors: (untyped errors, untyped input) -> untyped
84
+ def handle_validation_errors: (untyped validators, untyped input) -> untyped
69
85
 
70
- def add_validation_overlay: (untyped errors, ?untyped input) -> untyped
86
+ def add_validation_overlay: (untyped validators, ?untyped input) -> untyped
71
87
 
72
88
  def escape_attr: (untyped text) -> untyped
73
89
 
@@ -75,5 +91,7 @@ module Herb
75
91
 
76
92
  # : () -> Array[Herb::Visitor]
77
93
  def default_visitors: () -> Array[Herb::Visitor]
94
+
95
+ def ensure_valid_ruby!: (untyped source) -> untyped
78
96
  end
79
97
  end