herb 0.10.4 → 0.11.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 (784) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +16 -6
  3. data/README.md +36 -119
  4. data/Rakefile +2 -11
  5. data/config/action_view_helpers/actioncable/action_cable_helper/action_cable_meta_tag.yml +12 -8
  6. data/config/action_view_helpers/actionpack/content_security_policy/content_security_policy?.yml +9 -6
  7. data/config/action_view_helpers/actionpack/content_security_policy/content_security_policy_nonce.yml +9 -6
  8. data/config/action_view_helpers/actionpack/polymorphic_routes/polymorphic_path.yml +20 -12
  9. data/config/action_view_helpers/actionpack/polymorphic_routes/polymorphic_url.yml +30 -18
  10. data/config/action_view_helpers/actionpack/request_forgery_protection/form_authenticity_token.yml +15 -9
  11. data/config/action_view_helpers/actionpack/request_forgery_protection/protect_against_forgery?.yml +9 -6
  12. data/config/action_view_helpers/actiontext/content_helper/render_action_text_content.yml +15 -9
  13. data/config/action_view_helpers/actiontext/content_helper/sanitize_action_text_content.yml +15 -9
  14. data/config/action_view_helpers/actiontext/tag_helper/rich_textarea_tag.yml +34 -22
  15. data/config/action_view_helpers/actionview/active_model_helper/error_message.yml +9 -6
  16. data/config/action_view_helpers/actionview/active_model_helper/error_wrapping.yml +9 -6
  17. data/config/action_view_helpers/actionview/active_model_helper/object.yml +9 -6
  18. data/config/action_view_helpers/actionview/asset_tag_helper/apply_stylesheet_media_default.yml +9 -6
  19. data/config/action_view_helpers/actionview/asset_tag_helper/audio_tag.yml +40 -27
  20. data/config/action_view_helpers/actionview/asset_tag_helper/auto_discovery_link_tag.yml +37 -23
  21. data/config/action_view_helpers/actionview/asset_tag_helper/auto_include_nonce.yml +9 -6
  22. data/config/action_view_helpers/actionview/asset_tag_helper/auto_include_nonce_for_scripts.yml +9 -6
  23. data/config/action_view_helpers/actionview/asset_tag_helper/auto_include_nonce_for_styles.yml +9 -6
  24. data/config/action_view_helpers/actionview/asset_tag_helper/favicon_link_tag.yml +32 -22
  25. data/config/action_view_helpers/actionview/asset_tag_helper/image_decoding.yml +9 -6
  26. data/config/action_view_helpers/actionview/asset_tag_helper/image_loading.yml +9 -6
  27. data/config/action_view_helpers/actionview/asset_tag_helper/image_tag.yml +67 -46
  28. data/config/action_view_helpers/actionview/asset_tag_helper/javascript_include_tag.yml +58 -39
  29. data/config/action_view_helpers/actionview/asset_tag_helper/picture_tag.yml +22 -14
  30. data/config/action_view_helpers/actionview/asset_tag_helper/preload_link_tag.yml +45 -30
  31. data/config/action_view_helpers/actionview/asset_tag_helper/preload_links_header.yml +9 -6
  32. data/config/action_view_helpers/actionview/asset_tag_helper/stylesheet_link_tag.yml +49 -30
  33. data/config/action_view_helpers/actionview/asset_tag_helper/video_tag.yml +53 -35
  34. data/config/action_view_helpers/actionview/asset_url_helper/asset_path.yml +16 -10
  35. data/config/action_view_helpers/actionview/asset_url_helper/asset_url.yml +16 -10
  36. data/config/action_view_helpers/actionview/asset_url_helper/audio_path.yml +16 -10
  37. data/config/action_view_helpers/actionview/asset_url_helper/audio_url.yml +16 -10
  38. data/config/action_view_helpers/actionview/asset_url_helper/compute_asset_extname.yml +9 -6
  39. data/config/action_view_helpers/actionview/asset_url_helper/compute_asset_host.yml +9 -6
  40. data/config/action_view_helpers/actionview/asset_url_helper/compute_asset_path.yml +9 -6
  41. data/config/action_view_helpers/actionview/asset_url_helper/font_path.yml +16 -10
  42. data/config/action_view_helpers/actionview/asset_url_helper/font_url.yml +16 -10
  43. data/config/action_view_helpers/actionview/asset_url_helper/image_path.yml +16 -10
  44. data/config/action_view_helpers/actionview/asset_url_helper/image_url.yml +16 -10
  45. data/config/action_view_helpers/actionview/asset_url_helper/javascript_path.yml +16 -10
  46. data/config/action_view_helpers/actionview/asset_url_helper/javascript_url.yml +16 -10
  47. data/config/action_view_helpers/actionview/asset_url_helper/public_compute_asset_path.yml +9 -6
  48. data/config/action_view_helpers/actionview/asset_url_helper/stylesheet_path.yml +16 -10
  49. data/config/action_view_helpers/actionview/asset_url_helper/stylesheet_url.yml +16 -10
  50. data/config/action_view_helpers/actionview/asset_url_helper/video_path.yml +16 -10
  51. data/config/action_view_helpers/actionview/asset_url_helper/video_url.yml +16 -10
  52. data/config/action_view_helpers/actionview/atom_feed_helper/atom_feed.yml +52 -27
  53. data/config/action_view_helpers/actionview/cache_helper/cache.yml +25 -15
  54. data/config/action_view_helpers/actionview/cache_helper/cache_fragment_name.yml +9 -6
  55. data/config/action_view_helpers/actionview/cache_helper/cache_if.yml +20 -12
  56. data/config/action_view_helpers/actionview/cache_helper/cache_unless.yml +20 -12
  57. data/config/action_view_helpers/actionview/cache_helper/caching_predicate.yml +9 -6
  58. data/config/action_view_helpers/actionview/cache_helper/digest_path_from_template.yml +9 -6
  59. data/config/action_view_helpers/actionview/cache_helper/fragment_for.yml +9 -6
  60. data/config/action_view_helpers/actionview/cache_helper/fragment_name_with_digest.yml +9 -6
  61. data/config/action_view_helpers/actionview/cache_helper/read_fragment_for.yml +9 -6
  62. data/config/action_view_helpers/actionview/cache_helper/uncacheable.yml +9 -6
  63. data/config/action_view_helpers/actionview/cache_helper/write_fragment_for.yml +9 -6
  64. data/config/action_view_helpers/actionview/capture_helper/capture.yml +9 -6
  65. data/config/action_view_helpers/actionview/capture_helper/content_for.yml +20 -12
  66. data/config/action_view_helpers/actionview/capture_helper/content_for_predicate.yml +15 -9
  67. data/config/action_view_helpers/actionview/capture_helper/provide.yml +15 -9
  68. data/config/action_view_helpers/actionview/capture_helper/with_output_buffer.yml +9 -6
  69. data/config/action_view_helpers/actionview/content_exfiltration_prevention_helper/prepend_content_exfiltration_prevention.yml +9 -6
  70. data/config/action_view_helpers/actionview/content_exfiltration_prevention_helper/prevent_content_exfiltration.yml +9 -6
  71. data/config/action_view_helpers/actionview/controller_helper/action_name.yml +9 -6
  72. data/config/action_view_helpers/actionview/controller_helper/assign_controller.yml +9 -6
  73. data/config/action_view_helpers/actionview/controller_helper/controller.yml +9 -6
  74. data/config/action_view_helpers/actionview/controller_helper/controller_name.yml +9 -6
  75. data/config/action_view_helpers/actionview/controller_helper/controller_path.yml +9 -6
  76. data/config/action_view_helpers/actionview/controller_helper/cookies.yml +9 -6
  77. data/config/action_view_helpers/actionview/controller_helper/flash.yml +9 -6
  78. data/config/action_view_helpers/actionview/controller_helper/headers.yml +9 -6
  79. data/config/action_view_helpers/actionview/controller_helper/logger.yml +9 -6
  80. data/config/action_view_helpers/actionview/controller_helper/params.yml +9 -6
  81. data/config/action_view_helpers/actionview/controller_helper/request.yml +9 -6
  82. data/config/action_view_helpers/actionview/controller_helper/request_forgery_protection_token.yml +9 -6
  83. data/config/action_view_helpers/actionview/controller_helper/response.yml +9 -6
  84. data/config/action_view_helpers/actionview/controller_helper/session.yml +9 -6
  85. data/config/action_view_helpers/actionview/csp_helper/csp_meta_tag.yml +18 -11
  86. data/config/action_view_helpers/actionview/csrf_helper/csrf_meta_tags.yml +16 -10
  87. data/config/action_view_helpers/actionview/date_helper/date_select.yml +85 -51
  88. data/config/action_view_helpers/actionview/date_helper/datetime_select.yml +65 -39
  89. data/config/action_view_helpers/actionview/date_helper/distance_of_time_in_words.yml +30 -18
  90. data/config/action_view_helpers/actionview/date_helper/relative_time_in_words.yml +35 -21
  91. data/config/action_view_helpers/actionview/date_helper/select_date.yml +50 -30
  92. data/config/action_view_helpers/actionview/date_helper/select_datetime.yml +65 -39
  93. data/config/action_view_helpers/actionview/date_helper/select_day.yml +40 -24
  94. data/config/action_view_helpers/actionview/date_helper/select_hour.yml +50 -30
  95. data/config/action_view_helpers/actionview/date_helper/select_minute.yml +40 -24
  96. data/config/action_view_helpers/actionview/date_helper/select_month.yml +60 -36
  97. data/config/action_view_helpers/actionview/date_helper/select_second.yml +35 -21
  98. data/config/action_view_helpers/actionview/date_helper/select_time.yml +55 -33
  99. data/config/action_view_helpers/actionview/date_helper/select_year.yml +45 -27
  100. data/config/action_view_helpers/actionview/date_helper/time_ago_in_words.yml +21 -13
  101. data/config/action_view_helpers/actionview/date_helper/time_select.yml +60 -36
  102. data/config/action_view_helpers/actionview/date_helper/time_tag.yml +32 -20
  103. data/config/action_view_helpers/actionview/debug_helper/debug.yml +15 -9
  104. data/config/action_view_helpers/actionview/form_builder/button.yml +60 -0
  105. data/config/action_view_helpers/actionview/form_builder/submit.yml +48 -0
  106. data/config/action_view_helpers/actionview/form_helper/apply_form_for_options.yml +9 -6
  107. data/config/action_view_helpers/actionview/form_helper/checkbox.yml +41 -25
  108. data/config/action_view_helpers/actionview/form_helper/color_field.yml +25 -15
  109. data/config/action_view_helpers/actionview/form_helper/date_field.yml +35 -21
  110. data/config/action_view_helpers/actionview/form_helper/datetime_field.yml +41 -25
  111. data/config/action_view_helpers/actionview/form_helper/email_field.yml +25 -15
  112. data/config/action_view_helpers/actionview/form_helper/emitted_hidden_id.yml +9 -6
  113. data/config/action_view_helpers/actionview/form_helper/fields.yml +37 -18
  114. data/config/action_view_helpers/actionview/form_helper/fields_for.yml +33 -15
  115. data/config/action_view_helpers/actionview/form_helper/file_field.yml +45 -27
  116. data/config/action_view_helpers/actionview/form_helper/form_for.yml +45 -24
  117. data/config/action_view_helpers/actionview/form_helper/form_with.yml +56 -30
  118. data/config/action_view_helpers/actionview/form_helper/form_with_generates_ids.yml +9 -6
  119. data/config/action_view_helpers/actionview/form_helper/form_with_generates_remote_forms.yml +9 -6
  120. data/config/action_view_helpers/actionview/form_helper/hidden_field.yml +25 -15
  121. data/config/action_view_helpers/actionview/form_helper/label.yml +52 -27
  122. data/config/action_view_helpers/actionview/form_helper/month_field.yml +25 -15
  123. data/config/action_view_helpers/actionview/form_helper/multipart.yml +9 -6
  124. data/config/action_view_helpers/actionview/form_helper/multiple_file_field_include_hidden.yml +9 -6
  125. data/config/action_view_helpers/actionview/form_helper/number_field.yml +45 -27
  126. data/config/action_view_helpers/actionview/form_helper/password_field.yml +25 -15
  127. data/config/action_view_helpers/actionview/form_helper/radio_button.yml +30 -18
  128. data/config/action_view_helpers/actionview/form_helper/range_field.yml +45 -27
  129. data/config/action_view_helpers/actionview/form_helper/search_field.yml +25 -15
  130. data/config/action_view_helpers/actionview/form_helper/telephone_field.yml +26 -16
  131. data/config/action_view_helpers/actionview/form_helper/text_field.yml +25 -15
  132. data/config/action_view_helpers/actionview/form_helper/textarea.yml +31 -19
  133. data/config/action_view_helpers/actionview/form_helper/time_field.yml +40 -24
  134. data/config/action_view_helpers/actionview/form_helper/url_field.yml +25 -15
  135. data/config/action_view_helpers/actionview/form_helper/week_field.yml +25 -15
  136. data/config/action_view_helpers/actionview/form_options_helper/collection_checkboxes.yml +58 -31
  137. data/config/action_view_helpers/actionview/form_options_helper/collection_radio_buttons.yml +57 -30
  138. data/config/action_view_helpers/actionview/form_options_helper/collection_select.yml +65 -39
  139. data/config/action_view_helpers/actionview/form_options_helper/grouped_collection_select.yml +65 -39
  140. data/config/action_view_helpers/actionview/form_options_helper/grouped_options_for_select.yml +35 -21
  141. data/config/action_view_helpers/actionview/form_options_helper/option_groups_from_collection_for_select.yml +40 -24
  142. data/config/action_view_helpers/actionview/form_options_helper/options_for_select.yml +20 -12
  143. data/config/action_view_helpers/actionview/form_options_helper/options_from_collection_for_select.yml +30 -18
  144. data/config/action_view_helpers/actionview/form_options_helper/select.yml +60 -36
  145. data/config/action_view_helpers/actionview/form_options_helper/time_zone_options_for_select.yml +25 -15
  146. data/config/action_view_helpers/actionview/form_options_helper/time_zone_select.yml +50 -30
  147. data/config/action_view_helpers/actionview/form_options_helper/weekday_options_for_select.yml +30 -18
  148. data/config/action_view_helpers/actionview/form_options_helper/weekday_select.yml +30 -18
  149. data/config/action_view_helpers/actionview/form_tag_helper/button_tag.yml +39 -21
  150. data/config/action_view_helpers/actionview/form_tag_helper/checkbox_tag.yml +33 -21
  151. data/config/action_view_helpers/actionview/form_tag_helper/color_field_tag.yml +26 -17
  152. data/config/action_view_helpers/actionview/form_tag_helper/date_field_tag.yml +27 -17
  153. data/config/action_view_helpers/actionview/form_tag_helper/datetime_field_tag.yml +28 -18
  154. data/config/action_view_helpers/actionview/form_tag_helper/default_enforce_utf8.yml +9 -6
  155. data/config/action_view_helpers/actionview/form_tag_helper/email_field_tag.yml +27 -17
  156. data/config/action_view_helpers/actionview/form_tag_helper/embed_authenticity_token_in_remote_forms.yml +9 -6
  157. data/config/action_view_helpers/actionview/form_tag_helper/field_id.yml +30 -18
  158. data/config/action_view_helpers/actionview/form_tag_helper/field_name.yml +30 -18
  159. data/config/action_view_helpers/actionview/form_tag_helper/field_set_tag.yml +23 -15
  160. data/config/action_view_helpers/actionview/form_tag_helper/file_field_tag.yml +35 -22
  161. data/config/action_view_helpers/actionview/form_tag_helper/form_tag.yml +38 -24
  162. data/config/action_view_helpers/actionview/form_tag_helper/hidden_field_tag.yml +27 -17
  163. data/config/action_view_helpers/actionview/form_tag_helper/image_submit_tag.yml +31 -21
  164. data/config/action_view_helpers/actionview/form_tag_helper/label_tag.yml +33 -17
  165. data/config/action_view_helpers/actionview/form_tag_helper/month_field_tag.yml +27 -17
  166. data/config/action_view_helpers/actionview/form_tag_helper/number_field_tag.yml +47 -29
  167. data/config/action_view_helpers/actionview/form_tag_helper/password_field_tag.yml +27 -17
  168. data/config/action_view_helpers/actionview/form_tag_helper/radio_button_tag.yml +32 -20
  169. data/config/action_view_helpers/actionview/form_tag_helper/range_field_tag.yml +47 -29
  170. data/config/action_view_helpers/actionview/form_tag_helper/search_field_tag.yml +27 -17
  171. data/config/action_view_helpers/actionview/form_tag_helper/select_tag.yml +47 -29
  172. data/config/action_view_helpers/actionview/form_tag_helper/submit_tag.yml +33 -21
  173. data/config/action_view_helpers/actionview/form_tag_helper/telephone_field_tag.yml +28 -18
  174. data/config/action_view_helpers/actionview/form_tag_helper/text_field_tag.yml +27 -17
  175. data/config/action_view_helpers/actionview/form_tag_helper/textarea_tag.yml +31 -20
  176. data/config/action_view_helpers/actionview/form_tag_helper/time_field_tag.yml +27 -17
  177. data/config/action_view_helpers/actionview/form_tag_helper/url_field_tag.yml +27 -17
  178. data/config/action_view_helpers/actionview/form_tag_helper/utf8_enforcer_tag.yml +9 -6
  179. data/config/action_view_helpers/actionview/form_tag_helper/week_field_tag.yml +28 -18
  180. data/config/action_view_helpers/actionview/javascript_helper/escape_javascript.yml +16 -10
  181. data/config/action_view_helpers/actionview/javascript_helper/javascript_cdata_section.yml +9 -6
  182. data/config/action_view_helpers/actionview/javascript_helper/javascript_tag.yml +41 -27
  183. data/config/action_view_helpers/actionview/number_helper/number_to_currency.yml +29 -18
  184. data/config/action_view_helpers/actionview/number_helper/number_to_human.yml +25 -15
  185. data/config/action_view_helpers/actionview/number_helper/number_to_human_size.yml +20 -12
  186. data/config/action_view_helpers/actionview/number_helper/number_to_percentage.yml +20 -12
  187. data/config/action_view_helpers/actionview/number_helper/number_to_phone.yml +33 -20
  188. data/config/action_view_helpers/actionview/number_helper/number_with_delimiter.yml +21 -13
  189. data/config/action_view_helpers/actionview/number_helper/number_with_precision.yml +25 -15
  190. data/config/action_view_helpers/actionview/output_safety_helper/raw.yml +15 -9
  191. data/config/action_view_helpers/actionview/output_safety_helper/safe_join.yml +20 -12
  192. data/config/action_view_helpers/actionview/output_safety_helper/to_sentence.yml +24 -15
  193. data/config/action_view_helpers/actionview/record_identifier/dom_class.yml +20 -12
  194. data/config/action_view_helpers/actionview/record_identifier/dom_id.yml +20 -12
  195. data/config/action_view_helpers/actionview/record_identifier/dom_target.yml +15 -9
  196. data/config/action_view_helpers/actionview/record_identifier/model_name_from_record_or_class.yml +9 -6
  197. data/config/action_view_helpers/actionview/rendering_helper/render.yml +108 -22
  198. data/config/action_view_helpers/actionview/sanitize_helper/sanitize.yml +25 -15
  199. data/config/action_view_helpers/actionview/sanitize_helper/sanitize_css.yml +15 -9
  200. data/config/action_view_helpers/actionview/sanitize_helper/sanitizer_vendor.yml +9 -6
  201. data/config/action_view_helpers/actionview/sanitize_helper/strip_links.yml +15 -9
  202. data/config/action_view_helpers/actionview/sanitize_helper/strip_tags.yml +15 -9
  203. data/config/action_view_helpers/actionview/tag_helper/cdata_section.yml +15 -9
  204. data/config/action_view_helpers/actionview/tag_helper/content_tag.yml +59 -38
  205. data/config/action_view_helpers/actionview/tag_helper/escape_once.yml +15 -9
  206. data/config/action_view_helpers/actionview/tag_helper/tag.yml +54 -31
  207. data/config/action_view_helpers/actionview/tag_helper/token_list.yml +16 -10
  208. data/config/action_view_helpers/actionview/text_helper/concat.yml +15 -9
  209. data/config/action_view_helpers/actionview/text_helper/current_cycle.yml +15 -9
  210. data/config/action_view_helpers/actionview/text_helper/cycle.yml +23 -14
  211. data/config/action_view_helpers/actionview/text_helper/excerpt.yml +33 -20
  212. data/config/action_view_helpers/actionview/text_helper/highlight.yml +37 -18
  213. data/config/action_view_helpers/actionview/text_helper/pluralize.yml +30 -18
  214. data/config/action_view_helpers/actionview/text_helper/reset_cycle.yml +15 -9
  215. data/config/action_view_helpers/actionview/text_helper/safe_concat.yml +9 -6
  216. data/config/action_view_helpers/actionview/text_helper/simple_format.yml +33 -20
  217. data/config/action_view_helpers/actionview/text_helper/truncate.yml +38 -23
  218. data/config/action_view_helpers/actionview/text_helper/word_wrap.yml +25 -15
  219. data/config/action_view_helpers/actionview/translation_helper/debug_missing_translation.yml +9 -6
  220. data/config/action_view_helpers/actionview/translation_helper/localize.yml +26 -16
  221. data/config/action_view_helpers/actionview/translation_helper/translate.yml +31 -19
  222. data/config/action_view_helpers/actionview/url_helper/button_to.yml +57 -33
  223. data/config/action_view_helpers/actionview/url_helper/button_to_generates_button_tag.yml +9 -6
  224. data/config/action_view_helpers/actionview/url_helper/current_page?.yml +25 -15
  225. data/config/action_view_helpers/actionview/url_helper/link_to.yml +76 -53
  226. data/config/action_view_helpers/actionview/url_helper/link_to_if.yml +54 -20
  227. data/config/action_view_helpers/actionview/url_helper/link_to_unless.yml +54 -20
  228. data/config/action_view_helpers/actionview/url_helper/link_to_unless_current.yml +49 -17
  229. data/config/action_view_helpers/actionview/url_helper/mail_to.yml +60 -34
  230. data/config/action_view_helpers/actionview/url_helper/phone_to.yml +40 -22
  231. data/config/action_view_helpers/actionview/url_helper/sms_to.yml +45 -25
  232. data/config/action_view_helpers/actionview/url_helper/url_for.yml +15 -9
  233. data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_import_module_tag.yml +32 -0
  234. data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_importmap_module_preload_tags.yml +39 -0
  235. data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_importmap_tags.yml +35 -0
  236. data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_inline_importmap_tag.yml +32 -0
  237. data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_module_preload_tag.yml +35 -0
  238. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_cache.yml +9 -6
  239. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_cache_tag.yml +12 -8
  240. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_preview.yml +9 -6
  241. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_preview_tag.yml +12 -8
  242. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_page_requires_reload.yml +9 -6
  243. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_page_requires_reload_tag.yml +12 -8
  244. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_refresh_method_tag.yml +17 -11
  245. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_refresh_scroll_tag.yml +17 -11
  246. data/config/action_view_helpers/turbo-rails/drive_helper/turbo_refreshes_with.yml +20 -12
  247. data/config/action_view_helpers/turbo-rails/frames_helper/turbo_frame_tag.yml +54 -33
  248. data/config/action_view_helpers/turbo-rails/includes_helper/turbo_include_tags.yml +9 -6
  249. data/config/action_view_helpers/turbo-rails/streams_action_helper/turbo_stream_action_tag.yml +32 -20
  250. data/config/action_view_helpers/turbo-rails/streams_action_helper/turbo_stream_refresh_tag.yml +18 -11
  251. data/config/action_view_helpers/turbo-rails/streams_helper/turbo_stream.yml +9 -6
  252. data/config/action_view_helpers/turbo-rails/streams_helper/turbo_stream_from.yml +28 -18
  253. data/config/html_elements.yml +597 -0
  254. data/config/options.yml +1 -0
  255. data/config/slots/components.yml +52 -0
  256. data/config/state/kind.yml +61 -0
  257. data/config/state/operators.yml +27 -0
  258. data/config/state/predicates.yml +39 -0
  259. data/config/state/transforms.yml +18 -0
  260. data/config/view_context_methods/actionview/base/annotate_rendered_view_with_filenames.yml +4 -4
  261. data/config/view_context_methods/actionview/base/assign.yml +4 -4
  262. data/config/view_context_methods/actionview/base/assigns.yml +4 -4
  263. data/config/view_context_methods/actionview/base/automatically_disable_submit_tag.yml +4 -4
  264. data/config/view_context_methods/actionview/base/compiled_method_container.yml +4 -4
  265. data/config/view_context_methods/actionview/base/config.yml +4 -4
  266. data/config/view_context_methods/actionview/base/default_form_builder.yml +4 -4
  267. data/config/view_context_methods/actionview/base/default_formats.yml +4 -4
  268. data/config/view_context_methods/actionview/base/field_error_proc.yml +4 -4
  269. data/config/view_context_methods/actionview/base/formats.yml +4 -4
  270. data/config/view_context_methods/actionview/base/in_rendering_context.yml +4 -4
  271. data/config/view_context_methods/actionview/base/locale.yml +4 -4
  272. data/config/view_context_methods/actionview/base/lookup_context.yml +4 -4
  273. data/config/view_context_methods/actionview/base/output_buffer.yml +4 -4
  274. data/config/view_context_methods/actionview/base/prefix_partial_path_with_controller_namespace.yml +4 -4
  275. data/config/view_context_methods/actionview/base/remove_hidden_field_autocomplete.yml +4 -4
  276. data/config/view_context_methods/actionview/base/streaming_completion_on_exception.yml +4 -4
  277. data/config/view_context_methods/actionview/base/view_flow.yml +4 -4
  278. data/config/view_context_methods/actionview/base/view_paths.yml +4 -4
  279. data/config/view_context_methods/actionview/base/view_renderer.yml +4 -4
  280. data/config/view_context_methods/actionview/template/local_assigns.yml +4 -4
  281. data/config/view_context_methods/activemodel/conversion/convert_to_model.yml +4 -4
  282. data/config/view_context_methods/activesupport/benchmarkable/benchmark.yml +4 -4
  283. data/config.yml +1240 -790
  284. data/exe/herb +2 -0
  285. data/ext/herb/error_helpers.c +355 -17
  286. data/ext/herb/error_helpers.h +1 -1
  287. data/ext/herb/extconf.rb +4 -2
  288. data/ext/herb/extension.c +137 -89
  289. data/ext/herb/extension_helpers.c +81 -42
  290. data/ext/herb/extension_helpers.h +4 -1
  291. data/ext/herb/nodes.c +826 -358
  292. data/ext/herb/nodes.h +3 -2
  293. data/ext/herb/parser_options_helpers.c +151 -0
  294. data/ext/herb/parser_options_helpers.h +14 -0
  295. data/herb.gemspec +2 -2
  296. data/lib/herb/action_view/helper_registry.rb +1358 -62
  297. data/lib/herb/analysis/partial_declaration.rb +140 -0
  298. data/lib/herb/analysis/partial_index.rb +189 -0
  299. data/lib/herb/analysis/partial_resolution.rb +161 -0
  300. data/lib/herb/analysis/partial_resolver.rb +144 -0
  301. data/lib/herb/analysis/project_index.rb +152 -0
  302. data/lib/herb/{action_view → analysis}/render_analyzer.rb +287 -77
  303. data/lib/herb/analysis/render_graph/ancestor_chain.rb +27 -0
  304. data/lib/herb/analysis/render_graph/builder.rb +376 -0
  305. data/lib/herb/analysis/render_graph/call_frame.rb +9 -0
  306. data/lib/herb/analysis/render_graph/call_site_location.rb +23 -0
  307. data/lib/herb/analysis/render_graph/inferred_signature.rb +21 -0
  308. data/lib/herb/analysis/render_graph/partial_call_site.rb +40 -0
  309. data/lib/herb/analysis/render_graph/partial_context.rb +46 -0
  310. data/lib/herb/analysis/render_graph/template_roots.rb +31 -0
  311. data/lib/herb/analysis/render_graph.rb +285 -0
  312. data/lib/herb/analysis/ruby_locals_index/local.rb +25 -0
  313. data/lib/herb/analysis/ruby_locals_index/named_reference.rb +22 -0
  314. data/lib/herb/analysis/ruby_locals_index/offset_table.rb +44 -0
  315. data/lib/herb/analysis/ruby_locals_index/reference_collector.rb +80 -0
  316. data/lib/herb/analysis/ruby_locals_index/state_locals.rb +49 -0
  317. data/lib/herb/analysis/ruby_locals_index.rb +165 -0
  318. data/lib/herb/analysis/ruby_reference.rb +67 -0
  319. data/lib/herb/analysis/template_dependencies/dependency_collector.rb +179 -0
  320. data/lib/herb/analysis/template_dependencies/node_dependency_collector.rb +309 -0
  321. data/lib/herb/analysis/template_dependencies.rb +562 -0
  322. data/lib/herb/ast/erb_render_node.rb +26 -94
  323. data/lib/herb/ast/helpers.rb +90 -10
  324. data/lib/herb/ast/herb_directive_node.rb +18 -0
  325. data/lib/herb/ast/node.rb +32 -2
  326. data/lib/herb/ast/nodes.rb +1342 -105
  327. data/lib/herb/backend.rb +73 -0
  328. data/lib/herb/bootstrap.rb +3 -7
  329. data/lib/herb/cli.rb +550 -32
  330. data/lib/herb/colors.rb +14 -0
  331. data/lib/herb/configuration.rb +71 -35
  332. data/lib/herb/defaults.yml +2 -1
  333. data/lib/herb/dev/assets.rb +57 -0
  334. data/lib/herb/dev/classifier.rb +84 -0
  335. data/lib/herb/dev/embedded.rb +27 -0
  336. data/lib/herb/dev/pipeline.rb +305 -0
  337. data/lib/herb/dev/protocol.rb +221 -0
  338. data/lib/herb/dev/runner.rb +175 -175
  339. data/lib/herb/dev/server.rb +89 -26
  340. data/lib/herb/dev/server_entry.rb +41 -6
  341. data/lib/herb/dev/watcher.rb +181 -0
  342. data/lib/herb/dev.rb +163 -0
  343. data/lib/herb/diagnostic/formatter.rb +88 -0
  344. data/lib/herb/diagnostic.rb +172 -0
  345. data/lib/herb/diff/operation.rb +36 -0
  346. data/lib/herb/diff/result.rb +62 -0
  347. data/lib/herb/diff.rb +10 -0
  348. data/lib/herb/engine/collector.rb +62 -0
  349. data/lib/herb/engine/compiler.rb +346 -108
  350. data/lib/herb/engine/component_tags/constant_resolver.rb +28 -0
  351. data/lib/herb/engine/component_tags/partial_resolver.rb +54 -0
  352. data/lib/herb/engine/component_tags/resolver.rb +32 -0
  353. data/lib/herb/engine/component_tags/visitor.rb +231 -0
  354. data/lib/herb/engine/css_inliner/inliner.rb +101 -0
  355. data/lib/herb/engine/css_inliner/visitor.rb +174 -0
  356. data/lib/herb/engine/errors.rb +122 -0
  357. data/lib/herb/engine/helpers.rb +82 -0
  358. data/lib/herb/engine/inline_render/inliner.rb +122 -0
  359. data/lib/herb/engine/inline_render/visitor.rb +267 -0
  360. data/lib/herb/engine/runtime/entry.rb +62 -0
  361. data/lib/herb/engine/runtime/error_page.rb +362 -0
  362. data/lib/herb/engine/runtime/html_safe_assertions.rb +217 -0
  363. data/lib/herb/engine/runtime/journal/summary.rb +227 -0
  364. data/lib/herb/engine/runtime/journal.rb +379 -0
  365. data/lib/herb/engine/runtime/middleware.rb +212 -0
  366. data/lib/herb/engine/runtime/observations.rb +73 -0
  367. data/lib/herb/engine/runtime/report.rb +204 -0
  368. data/lib/herb/engine/runtime/session.rb +437 -0
  369. data/lib/herb/engine/runtime.rb +21 -0
  370. data/lib/herb/engine/scoped_style/channel.rb +66 -0
  371. data/lib/herb/engine/scoped_style/collector.rb +74 -0
  372. data/lib/herb/engine/scoped_style/visitor.rb +533 -0
  373. data/lib/herb/engine/slots/annotation.rb +98 -0
  374. data/lib/herb/engine/slots/bindings.rb +61 -0
  375. data/lib/herb/engine/slots/callee.rb +118 -0
  376. data/lib/herb/engine/slots/component_definitions.rb +67 -0
  377. data/lib/herb/engine/slots/components/async.rb +24 -0
  378. data/lib/herb/engine/slots/components/base.rb +132 -0
  379. data/lib/herb/engine/slots/components/deferred.rb +81 -0
  380. data/lib/herb/engine/slots/components/fallback.rb +27 -0
  381. data/lib/herb/engine/slots/components/fragment.rb +99 -0
  382. data/lib/herb/engine/slots/components/lazy.rb +24 -0
  383. data/lib/herb/engine/slots/components.rb +52 -0
  384. data/lib/herb/engine/slots/dependencies/channel.rb +72 -0
  385. data/lib/herb/engine/slots/dependencies.rb +269 -0
  386. data/lib/herb/engine/slots/dynamics_compiler.rb +854 -0
  387. data/lib/herb/engine/slots/identifier.rb +35 -0
  388. data/lib/herb/engine/slots/manifest/channel.rb +74 -0
  389. data/lib/herb/engine/slots/manifest/collector.rb +75 -0
  390. data/lib/herb/engine/slots/markers.rb +128 -0
  391. data/lib/herb/engine/slots/render_bindings.rb +141 -0
  392. data/lib/herb/engine/slots/schema_compiler.rb +94 -0
  393. data/lib/herb/engine/slots/state_anchor.rb +94 -0
  394. data/lib/herb/engine/slots/state_compiler.rb +1326 -0
  395. data/lib/herb/engine/slots/state_directives.rb +854 -0
  396. data/lib/herb/engine/slots/state_kinds.rb +54 -0
  397. data/lib/herb/engine/slots/state_operators.rb +36 -0
  398. data/lib/herb/engine/slots/state_overrides.rb +79 -0
  399. data/lib/herb/engine/slots/state_predicates.rb +65 -0
  400. data/lib/herb/engine/slots/state_transforms.rb +42 -0
  401. data/lib/herb/engine/slots/statics.rb +185 -0
  402. data/lib/herb/engine/slots/subtree.rb +82 -0
  403. data/lib/herb/engine/slots/subtree_compiler.rb +255 -0
  404. data/lib/herb/engine/slots/types.rb +42 -0
  405. data/lib/herb/engine/slots/visitor.rb +2256 -0
  406. data/lib/herb/engine/validators/accessibility_validator.rb +3 -3
  407. data/lib/herb/engine/validators/base.rb +36 -0
  408. data/lib/herb/engine/validators/generator_template_validator.rb +39 -0
  409. data/lib/herb/engine/validators/nesting_validator.rb +3 -3
  410. data/lib/herb/engine/validators/render_validator.rb +13 -33
  411. data/lib/herb/engine/validators/security_validator.rb +3 -17
  412. data/lib/herb/engine/validators.rb +43 -0
  413. data/lib/herb/engine/visitors/auto_close_omitted_tags_visitor.rb +48 -0
  414. data/lib/herb/engine/visitors/content_for_visitor.rb +127 -0
  415. data/lib/herb/engine/{debug_visitor.rb → visitors/debug_visitor.rb} +121 -93
  416. data/lib/herb/engine/visitors/html_safe_assertions_visitor.rb +281 -0
  417. data/lib/herb/engine/visitors/instrumentation_visitor.rb +290 -0
  418. data/lib/herb/engine/visitors/optimize_visitor.rb +728 -0
  419. data/lib/herb/engine/visitors/remove_comments_visitor.rb +106 -0
  420. data/lib/herb/engine/visitors/source_attribution_visitor.rb +177 -0
  421. data/lib/herb/engine.rb +218 -257
  422. data/lib/herb/ensure_installed.rb +43 -0
  423. data/lib/herb/errors.rb +646 -157
  424. data/lib/herb/fingerprint.rb +82 -0
  425. data/lib/herb/html/elements.rb +18 -0
  426. data/lib/herb/html/util.rb +21 -2
  427. data/lib/herb/lex_result.rb +0 -10
  428. data/lib/herb/locate.rb +163 -0
  429. data/lib/herb/location.rb +20 -0
  430. data/lib/herb/parse_result.rb +17 -11
  431. data/lib/herb/parser_options.rb +65 -46
  432. data/lib/herb/position.rb +19 -0
  433. data/lib/herb/prism_inspect.rb +1 -4
  434. data/lib/herb/project.rb +28 -15
  435. data/lib/herb/range.rb +5 -0
  436. data/lib/herb/result.rb +2 -2
  437. data/lib/herb/ruby_program.rb +110 -0
  438. data/lib/herb/source_path.rb +232 -0
  439. data/lib/herb/token.rb +14 -3
  440. data/lib/herb/version.rb +1 -1
  441. data/lib/herb/visitor/context/origin.rb +52 -0
  442. data/lib/herb/visitor/context/replacements.rb +59 -0
  443. data/lib/herb/visitor/context.rb +169 -0
  444. data/lib/herb/visitor/context_aware.rb +45 -0
  445. data/lib/herb/visitor/diagnostics.rb +148 -0
  446. data/lib/herb/visitor/experimental.rb +33 -0
  447. data/lib/herb/visitor/parser_option_requirements.rb +151 -0
  448. data/lib/herb/visitor/stack.rb +192 -0
  449. data/lib/herb/visitor.rb +47 -1
  450. data/lib/herb/warnings.rb +25 -0
  451. data/lib/herb.rb +74 -63
  452. data/sig/herb/action_view/helper_registry.rbs +82 -10
  453. data/sig/herb/analysis/partial_declaration.rbs +80 -0
  454. data/sig/herb/analysis/partial_index.rbs +66 -0
  455. data/sig/herb/analysis/partial_resolution.rbs +57 -0
  456. data/sig/herb/analysis/partial_resolver.rbs +76 -0
  457. data/sig/herb/analysis/project_index.rbs +57 -0
  458. data/sig/herb/{action_view → analysis}/render_analyzer.rbs +25 -4
  459. data/sig/herb/analysis/render_graph/ancestor_chain.rbs +22 -0
  460. data/sig/herb/analysis/render_graph/builder.rbs +180 -0
  461. data/sig/herb/analysis/render_graph/call_frame.rbs +26 -0
  462. data/sig/herb/analysis/render_graph/call_site_location.rbs +28 -0
  463. data/sig/herb/analysis/render_graph/inferred_signature.rbs +27 -0
  464. data/sig/herb/analysis/render_graph/partial_call_site.rbs +36 -0
  465. data/sig/herb/analysis/render_graph/partial_context.rbs +31 -0
  466. data/sig/herb/analysis/render_graph/template_roots.rbs +32 -0
  467. data/sig/herb/analysis/render_graph.rbs +83 -0
  468. data/sig/herb/analysis/ruby_locals_index/local.rbs +21 -0
  469. data/sig/herb/analysis/ruby_locals_index/named_reference.rbs +20 -0
  470. data/sig/herb/analysis/ruby_locals_index/offset_table.rbs +26 -0
  471. data/sig/herb/analysis/ruby_locals_index/reference_collector.rbs +40 -0
  472. data/sig/herb/analysis/ruby_locals_index/state_locals.rbs +19 -0
  473. data/sig/herb/analysis/ruby_locals_index.rbs +62 -0
  474. data/sig/herb/analysis/ruby_reference.rbs +28 -0
  475. data/sig/herb/analysis/template_dependencies/dependency_collector.rbs +52 -0
  476. data/sig/herb/analysis/template_dependencies/node_dependency_collector.rbs +81 -0
  477. data/sig/herb/analysis/template_dependencies.rbs +125 -0
  478. data/sig/herb/ast/erb_render_node.rbs +10 -2
  479. data/sig/herb/ast/helpers.rbs +31 -1
  480. data/sig/herb/ast/herb_directive_node.rbs +13 -0
  481. data/sig/herb/ast/node.rbs +9 -0
  482. data/sig/herb/ast/nodes.rbs +662 -89
  483. data/sig/herb/backend.rbs +52 -0
  484. data/sig/herb/colors.rbs +3 -0
  485. data/sig/herb/configuration.rbs +27 -3
  486. data/sig/herb/dev/assets.rbs +27 -0
  487. data/sig/herb/dev/classifier.rbs +57 -0
  488. data/sig/herb/dev/embedded.rbs +21 -0
  489. data/sig/herb/dev/pipeline.rbs +118 -0
  490. data/sig/herb/dev/protocol.rbs +78 -0
  491. data/sig/herb/dev/runner.rbs +61 -23
  492. data/sig/herb/dev/server.rbs +49 -22
  493. data/sig/herb/dev/server_entry.rbs +46 -21
  494. data/sig/herb/dev/watcher.rbs +84 -0
  495. data/sig/herb/dev.rbs +58 -0
  496. data/sig/herb/diagnostic/formatter.rbs +28 -0
  497. data/sig/herb/diagnostic.rbs +88 -0
  498. data/sig/herb/diff/operation.rbs +36 -0
  499. data/sig/herb/diff/result.rbs +36 -0
  500. data/sig/herb/diff.rbs +6 -0
  501. data/sig/herb/engine/collector.rbs +48 -0
  502. data/sig/herb/engine/compiler.rbs +62 -23
  503. data/sig/herb/engine/component_tags/constant_resolver.rbs +19 -0
  504. data/sig/herb/engine/component_tags/partial_resolver.rbs +30 -0
  505. data/sig/herb/engine/component_tags/resolver.rbs +25 -0
  506. data/sig/herb/engine/component_tags/visitor.rbs +69 -0
  507. data/sig/herb/engine/css_inliner/inliner.rbs +65 -0
  508. data/sig/herb/engine/css_inliner/visitor.rbs +87 -0
  509. data/sig/herb/engine/errors.rbs +68 -0
  510. data/sig/herb/engine/helpers.rbs +28 -0
  511. data/sig/herb/engine/inline_render/inliner.rbs +39 -0
  512. data/sig/herb/engine/inline_render/visitor.rbs +104 -0
  513. data/sig/herb/engine/runtime/entry.rbs +43 -0
  514. data/sig/herb/engine/runtime/error_page.rbs +115 -0
  515. data/sig/herb/engine/runtime/html_safe_assertions.rbs +99 -0
  516. data/sig/herb/engine/runtime/journal/summary.rbs +172 -0
  517. data/sig/herb/engine/runtime/journal.rbs +126 -0
  518. data/sig/herb/engine/runtime/middleware.rbs +96 -0
  519. data/sig/herb/engine/runtime/observations.rbs +38 -0
  520. data/sig/herb/engine/runtime/report.rbs +97 -0
  521. data/sig/herb/engine/runtime/session.rbs +233 -0
  522. data/sig/herb/engine/runtime.rbs +14 -0
  523. data/sig/herb/engine/scoped_style/channel.rbs +45 -0
  524. data/sig/herb/engine/scoped_style/collector.rbs +45 -0
  525. data/sig/herb/engine/scoped_style/visitor.rbs +220 -0
  526. data/sig/herb/engine/slots/annotation.rbs +72 -0
  527. data/sig/herb/engine/slots/bindings.rbs +34 -0
  528. data/sig/herb/engine/slots/callee.rbs +62 -0
  529. data/sig/herb/engine/slots/component_definitions.rbs +19 -0
  530. data/sig/herb/engine/slots/components/async.rbs +20 -0
  531. data/sig/herb/engine/slots/components/base.rbs +60 -0
  532. data/sig/herb/engine/slots/components/deferred.rbs +29 -0
  533. data/sig/herb/engine/slots/components/fallback.rbs +21 -0
  534. data/sig/herb/engine/slots/components/fragment.rbs +34 -0
  535. data/sig/herb/engine/slots/components/lazy.rbs +20 -0
  536. data/sig/herb/engine/slots/components.rbs +30 -0
  537. data/sig/herb/engine/slots/dependencies/channel.rbs +51 -0
  538. data/sig/herb/engine/slots/dependencies.rbs +94 -0
  539. data/sig/herb/engine/slots/dynamics_compiler.rbs +349 -0
  540. data/sig/herb/engine/slots/identifier.rbs +19 -0
  541. data/sig/herb/engine/slots/manifest/channel.rbs +49 -0
  542. data/sig/herb/engine/slots/manifest/collector.rbs +45 -0
  543. data/sig/herb/engine/slots/markers.rbs +85 -0
  544. data/sig/herb/engine/slots/render_bindings.rbs +69 -0
  545. data/sig/herb/engine/slots/schema_compiler.rbs +62 -0
  546. data/sig/herb/engine/slots/state_anchor.rbs +41 -0
  547. data/sig/herb/engine/slots/state_compiler.rbs +258 -0
  548. data/sig/herb/engine/slots/state_directives.rbs +278 -0
  549. data/sig/herb/engine/slots/state_kinds.rbs +24 -0
  550. data/sig/herb/engine/slots/state_operators.rbs +19 -0
  551. data/sig/herb/engine/slots/state_overrides.rbs +33 -0
  552. data/sig/herb/engine/slots/state_predicates.rbs +16 -0
  553. data/sig/herb/engine/slots/state_transforms.rbs +15 -0
  554. data/sig/herb/engine/slots/statics.rbs +67 -0
  555. data/sig/herb/engine/slots/subtree.rbs +49 -0
  556. data/sig/herb/engine/slots/subtree_compiler.rbs +130 -0
  557. data/sig/herb/engine/slots/types.rbs +46 -0
  558. data/sig/herb/engine/slots/visitor.rbs +599 -0
  559. data/sig/herb/engine/validators/accessibility_validator.rbs +1 -1
  560. data/sig/herb/engine/validators/base.rbs +28 -0
  561. data/sig/herb/engine/validators/generator_template_validator.rbs +19 -0
  562. data/sig/herb/engine/validators/nesting_validator.rbs +1 -1
  563. data/sig/herb/engine/validators/render_validator.rbs +2 -6
  564. data/sig/herb/engine/validators/security_validator.rbs +1 -3
  565. data/sig/herb/engine/validators.rbs +21 -0
  566. data/sig/herb/engine/visitors/auto_close_omitted_tags_visitor.rbs +26 -0
  567. data/sig/herb/engine/visitors/content_for_visitor.rbs +52 -0
  568. data/sig/herb/engine/{debug_visitor.rbs → visitors/debug_visitor.rbs} +26 -15
  569. data/sig/herb/engine/visitors/html_safe_assertions_visitor.rbs +100 -0
  570. data/sig/herb/engine/visitors/instrumentation_visitor.rbs +111 -0
  571. data/sig/herb/engine/visitors/optimize_visitor.rbs +246 -0
  572. data/sig/herb/engine/visitors/remove_comments_visitor.rbs +66 -0
  573. data/sig/herb/engine/visitors/source_attribution_visitor.rbs +90 -0
  574. data/sig/herb/engine.rbs +47 -41
  575. data/sig/herb/ensure_installed.rbs +9 -0
  576. data/sig/herb/errors.rbs +293 -0
  577. data/sig/herb/fingerprint.rbs +37 -0
  578. data/sig/herb/html/elements.rbs +19 -0
  579. data/sig/herb/html/util.rbs +15 -1
  580. data/sig/herb/lex_result.rbs +0 -6
  581. data/sig/herb/locate.rbs +89 -0
  582. data/sig/herb/location.rbs +12 -0
  583. data/sig/herb/parse_result.rbs +10 -8
  584. data/sig/herb/parser_options.rbs +47 -21
  585. data/sig/herb/position.rbs +11 -0
  586. data/sig/herb/range.rbs +3 -0
  587. data/sig/herb/ruby_program.rbs +51 -0
  588. data/sig/herb/source_path.rbs +132 -0
  589. data/sig/herb/token.rbs +5 -2
  590. data/sig/herb/visitor/context/origin.rbs +51 -0
  591. data/sig/herb/visitor/context/replacements.rbs +39 -0
  592. data/sig/herb/visitor/context.rbs +83 -0
  593. data/sig/herb/visitor/context_aware.rbs +32 -0
  594. data/sig/herb/visitor/diagnostics.rbs +82 -0
  595. data/sig/herb/visitor/experimental.rbs +23 -0
  596. data/sig/herb/visitor/parser_option_requirements.rbs +76 -0
  597. data/sig/herb/visitor/stack.rbs +91 -0
  598. data/sig/herb/visitor.rbs +22 -0
  599. data/sig/herb/warnings.rbs +10 -0
  600. data/sig/herb.rbs +27 -10
  601. data/sig/serialized_ast_errors.rbs +58 -1
  602. data/sig/serialized_ast_nodes.rbs +58 -2
  603. data/src/analyze/action_view/attribute_extraction_helpers.c +73 -36
  604. data/src/analyze/action_view/generated_handlers.c +37 -1
  605. data/src/analyze/action_view/generated_handlers.h +2 -1
  606. data/src/analyze/action_view/helper_registry.c +1353 -58
  607. data/src/analyze/action_view/registry.c +10 -17
  608. data/src/analyze/action_view/stylesheet_link_tag.c +40 -0
  609. data/src/analyze/action_view/tag_helper_node_builders.c +57 -0
  610. data/src/analyze/action_view/tag_helpers.c +423 -93
  611. data/src/analyze/analyze.c +301 -64
  612. data/src/analyze/analyze_helpers.c +420 -23
  613. data/src/analyze/builders.c +79 -51
  614. data/src/analyze/conditional_elements.c +13 -8
  615. data/src/analyze/conditional_open_tags.c +11 -5
  616. data/src/analyze/control_type.c +16 -1
  617. data/src/analyze/herb_directives.c +701 -0
  618. data/src/analyze/invalid_structures.c +11 -7
  619. data/src/analyze/iteration_nodes.c +306 -0
  620. data/src/analyze/missing_end.c +116 -32
  621. data/src/analyze/parse_errors.c +8 -3
  622. data/src/analyze/postfix_conditionals.c +98 -63
  623. data/src/analyze/prism_annotate.c +13 -4
  624. data/src/analyze/render_nodes.c +345 -123
  625. data/src/analyze/strict_locals.c +30 -26
  626. data/src/analyze/ternary_conditionals.c +95 -70
  627. data/src/analyze/transform.c +43 -1
  628. data/src/ast/ast_node.c +3 -13
  629. data/src/ast/ast_nodes.c +911 -112
  630. data/src/ast/ast_pretty_print.c +161 -2
  631. data/src/diff/herb_diff.c +8 -0
  632. data/src/diff/herb_diff_attributes.c +1 -0
  633. data/src/diff/herb_diff_children.c +4 -3
  634. data/src/diff/herb_diff_helpers.c +7 -1
  635. data/src/diff/herb_diff_nodes.c +186 -71
  636. data/src/diff/herb_hash_tree.c +99 -1
  637. data/src/errors.c +1096 -128
  638. data/src/extract.c +30 -8
  639. data/src/herb.c +30 -11
  640. data/src/include/analyze/action_view/attribute_extraction_helpers.h +1 -1
  641. data/src/include/analyze/action_view/helper_registry.h +28 -4
  642. data/src/include/analyze/action_view/tag_helper_handler.h +1 -1
  643. data/src/include/analyze/action_view/tag_helper_node_builders.h +7 -0
  644. data/src/include/analyze/analyze.h +11 -0
  645. data/src/include/analyze/builders.h +16 -0
  646. data/src/include/analyze/helpers.h +23 -2
  647. data/src/include/analyze/herb_directive_kinds.h +41 -0
  648. data/src/include/analyze/herb_directives.h +14 -0
  649. data/src/include/analyze/iteration_nodes.h +11 -0
  650. data/src/include/analyze/prism_annotate.h +3 -3
  651. data/src/include/analyze/ternary_conditionals.h +2 -0
  652. data/src/include/ast/ast_node.h +1 -5
  653. data/src/include/ast/ast_nodes.h +76 -2
  654. data/src/include/ast/ast_pretty_print.h +1 -1
  655. data/src/include/diff/herb_diff.h +11 -0
  656. data/src/include/errors.h +156 -39
  657. data/src/include/extract.h +11 -0
  658. data/src/include/herb.h +6 -0
  659. data/src/include/lexer/erb_openers.h +29 -0
  660. data/src/include/lexer/lexer_peek_helpers.h +8 -1
  661. data/src/include/lexer/lexer_struct.h +4 -0
  662. data/src/include/lexer/token.h +3 -0
  663. data/src/include/lexer/token_struct.h +8 -6
  664. data/src/include/lib/hb_allocator.h +2 -1
  665. data/src/include/lib/hb_array.h +2 -0
  666. data/src/include/lib/hb_foreach.h +1 -1
  667. data/src/include/lib/hb_string.h +7 -0
  668. data/src/include/parser/dot_notation.h +1 -1
  669. data/src/include/parser/foreign_content_elements.h +32 -0
  670. data/src/include/parser/parser.h +16 -30
  671. data/src/include/parser/parser_helpers.h +13 -11
  672. data/src/include/parser/parser_options.h +41 -0
  673. data/src/include/prism/ruby_parser.h +6 -0
  674. data/src/include/util/html_elements.h +85 -0
  675. data/src/include/util/html_util.h +1 -0
  676. data/src/include/version.h +1 -1
  677. data/src/lexer/lexer_peek_helpers.c +15 -1
  678. data/src/lexer/token.c +83 -1
  679. data/src/lexer.c +196 -12
  680. data/src/lib/hb_allocator.c +2 -0
  681. data/src/lib/hb_array.c +26 -0
  682. data/src/lib/hb_string.c +26 -0
  683. data/src/main.c +1 -1
  684. data/src/parser/dot_notation.c +4 -3
  685. data/src/parser/match_tags.c +66 -1
  686. data/src/parser/parser_helpers.c +69 -37
  687. data/src/parser.c +606 -383
  688. data/src/parser_options_defaults.c +30 -0
  689. data/src/prism/prism_helpers.c +3 -0
  690. data/src/prism/ruby_parser.c +49 -0
  691. data/src/util/html_util.c +11 -58
  692. data/src/visitor.c +77 -1
  693. data/templates/ext/herb/error_helpers.c.erb +1 -1
  694. data/templates/ext/herb/nodes.c.erb +18 -13
  695. data/templates/ext/herb/nodes.h.erb +2 -1
  696. data/templates/ext/herb/parser_options_helpers.c.erb +69 -0
  697. data/templates/ext/herb/parser_options_helpers.h.erb +11 -0
  698. data/templates/java/nodes.c.erb +20 -16
  699. data/templates/java/nodes.h.erb +3 -2
  700. data/templates/java/org/herb/ParserOptions.java.erb +24 -0
  701. data/templates/java/org/herb/ast/HelperRegistry.java.erb +67 -31
  702. data/templates/java/org/herb/ast/HelperType.java.erb +29 -0
  703. data/templates/java/org/herb/ast/Nodes.java.erb +11 -7
  704. data/templates/java/parser_options_helpers.c.erb +45 -0
  705. data/templates/java/parser_options_helpers.h.erb +10 -0
  706. data/templates/javascript/packages/client/src/state-kinds.ts.erb +49 -0
  707. data/templates/javascript/packages/client/src/state-operators.ts.erb +15 -0
  708. data/templates/javascript/packages/client/src/state-predicates.ts.erb +27 -0
  709. data/templates/javascript/packages/client/src/state-transforms.ts.erb +19 -0
  710. data/templates/javascript/packages/core/src/action-view-helpers.ts.erb +47 -0
  711. data/templates/javascript/packages/core/src/built-in-components.ts.erb +67 -0
  712. data/templates/javascript/packages/core/src/errors.ts.erb +9 -3
  713. data/templates/javascript/packages/core/src/foreign-content-elements.ts.erb +18 -0
  714. data/templates/javascript/packages/core/src/html-constants.ts.erb +32 -0
  715. data/templates/javascript/packages/core/src/html-elements.ts.erb +41 -0
  716. data/templates/javascript/packages/core/src/node-type-guards.ts.erb +11 -7
  717. data/templates/javascript/packages/core/src/nodes.ts.erb +82 -19
  718. data/templates/javascript/packages/core/src/parser-options.ts.erb +41 -0
  719. data/templates/javascript/packages/core/src/visitor.ts.erb +1 -1
  720. data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +3 -3
  721. data/templates/javascript/packages/node/extension/nodes.cpp.erb +17 -12
  722. data/templates/javascript/packages/node/extension/nodes.h.erb +3 -3
  723. data/templates/javascript/packages/node/extension/parser_options_helpers.cpp.erb +41 -0
  724. data/templates/javascript/packages/node/extension/parser_options_helpers.h.erb +12 -0
  725. data/templates/lib/herb/action_view/helper_registry.rb.erb +77 -3
  726. data/templates/lib/herb/ast/nodes.rb.erb +16 -6
  727. data/templates/lib/herb/engine/slots/component_definitions.rb.erb +38 -0
  728. data/templates/lib/herb/engine/slots/state_kinds.rb.erb +37 -0
  729. data/templates/lib/herb/engine/slots/state_operators.rb.erb +26 -0
  730. data/templates/lib/herb/engine/slots/state_predicates.rb.erb +39 -0
  731. data/templates/lib/herb/engine/slots/state_transforms.rb.erb +27 -0
  732. data/templates/lib/herb/errors.rb.erb +34 -6
  733. data/templates/lib/herb/html/elements.rb.erb +12 -0
  734. data/templates/lib/herb/parser_options.rb.erb +32 -0
  735. data/templates/lib/herb/visitor.rb.erb +7 -1
  736. data/templates/rust/herb-printer/src/printer_visitor.rs.erb +14 -0
  737. data/templates/rust/src/action_view_helpers.rs.erb +38 -0
  738. data/templates/rust/src/ast/nodes.rs.erb +24 -31
  739. data/templates/rust/src/errors.rs.erb +1 -1
  740. data/templates/rust/src/nodes.rs.erb +58 -26
  741. data/templates/rust/src/parser_options.rs.erb +16 -0
  742. data/templates/rust/src/prism/generated_deserialize.rs.erb +109 -0
  743. data/templates/rust/src/prism/generated_prettyprint.rs.erb +153 -0
  744. data/templates/rust/src/union_types.rs.erb +7 -1
  745. data/templates/rust/src/visitor.rs.erb +1 -1
  746. data/templates/src/analyze/action_view/helper_registry.c.erb +22 -0
  747. data/templates/src/analyze/missing_end.c.erb +13 -5
  748. data/templates/src/ast/ast_nodes.c.erb +41 -2
  749. data/templates/src/diff/herb_diff_nodes.c.erb +44 -8
  750. data/templates/src/errors.c.erb +8 -3
  751. data/templates/src/include/analyze/action_view/helper_registry.h.erb +19 -0
  752. data/templates/src/include/analyze/herb_directive_kinds.h.erb +25 -0
  753. data/templates/src/include/errors.h.erb +3 -1
  754. data/templates/src/include/parser/foreign_content_elements.h.erb +23 -0
  755. data/templates/src/include/parser/parser_options.h.erb +21 -0
  756. data/templates/src/include/util/html_elements.h.erb +28 -0
  757. data/templates/src/parser_options_defaults.c.erb +9 -0
  758. data/templates/template.rb +564 -9
  759. data/templates/wasm/error_helpers.cpp.erb +4 -4
  760. data/templates/wasm/nodes.cpp.erb +12 -12
  761. data/templates/wasm/nodes.h.erb +3 -3
  762. data/templates/wasm/parser_options_helpers.cpp.erb +25 -0
  763. data/templates/wasm/parser_options_helpers.h.erb +12 -0
  764. metadata +306 -27
  765. data/config/action_view_helpers/actionview/form_helper/button.yml +0 -38
  766. data/config/action_view_helpers/actionview/form_helper/submit.yml +0 -35
  767. data/lib/herb/ast.rb +0 -7
  768. data/lib/herb/diff_operation.rb +0 -34
  769. data/lib/herb/diff_result.rb +0 -59
  770. data/lib/herb/engine/error_formatter.rb +0 -432
  771. data/lib/herb/engine/parser_error_overlay.rb +0 -773
  772. data/lib/herb/engine/validation_error_overlay.rb +0 -182
  773. data/lib/herb/engine/validation_errors.rb +0 -65
  774. data/lib/herb/engine/validator.rb +0 -80
  775. data/sig/herb/ast.rbs +0 -6
  776. data/sig/herb/diff_operation.rbs +0 -34
  777. data/sig/herb/diff_result.rbs +0 -34
  778. data/sig/herb/engine/debug.rbs +0 -38
  779. data/sig/herb/engine/error_formatter.rbs +0 -47
  780. data/sig/herb/engine/parser_error_overlay.rbs +0 -41
  781. data/sig/herb/engine/validation_error_overlay.rbs +0 -35
  782. data/sig/herb/engine/validation_errors.rbs +0 -45
  783. data/sig/herb/engine/validator.rbs +0 -41
  784. data/sig/herb_c_extension.rbs +0 -10
data/exe/herb CHANGED
@@ -2,4 +2,6 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require_relative "../lib/herb"
5
+ require_relative "../lib/herb/cli"
6
+
5
7
  Herb::CLI.new(ARGV).call
@@ -1,5 +1,5 @@
1
1
  // NOTE: This file is generated by the templates/template.rb script and should not
2
- // be modified manually. See /home/runner/work/herb/herb/templates/ext/herb/error_helpers.c.erb
2
+ // be modified manually. See templates/ext/herb/error_helpers.c.erb
3
3
 
4
4
  #include <ruby.h>
5
5
 
@@ -28,15 +28,25 @@ static VALUE cERBControlFlowScopeError;
28
28
  static VALUE cMissingERBEndTagError;
29
29
  static VALUE cERBMultipleBlocksInTagError;
30
30
  static VALUE cERBCaseWithConditionsError;
31
+ static VALUE cERBCaseInlinePatternMatchError;
31
32
  static VALUE cConditionalElementMultipleTagsError;
32
33
  static VALUE cConditionalElementConditionMismatchError;
34
+ static VALUE cUnclosedCommentError;
35
+ static VALUE cNestedCommentError;
33
36
  static VALUE cInvalidCommentClosingTagError;
34
37
  static VALUE cOmittedClosingTagError;
35
38
  static VALUE cUnclosedOpenTagError;
36
39
  static VALUE cUnclosedCloseTagError;
40
+ static VALUE cEndTagWithTrailingSolidusError;
37
41
  static VALUE cUnclosedQuoteError;
38
42
  static VALUE cMissingAttributeValueError;
43
+ static VALUE cMissingWhitespaceBetweenAttributesError;
44
+ static VALUE cUnexpectedCharacterInAttributeNameError;
45
+ static VALUE cUnexpectedCharacterInUnquotedAttributeValueError;
46
+ static VALUE cUnexpectedEqualsSignBeforeAttributeNameError;
47
+ static VALUE cUnexpectedSolidusInTagError;
39
48
  static VALUE cUnclosedERBTagError;
49
+ static VALUE cMalformedERBClosingTagError;
40
50
  static VALUE cStrayERBClosingTagError;
41
51
  static VALUE cNestedERBTagError;
42
52
  static VALUE cRenderAmbiguousLocalsError;
@@ -51,6 +61,10 @@ static VALUE cStrictLocalsBlockArgumentError;
51
61
  static VALUE cStrictLocalsSplatArgumentError;
52
62
  static VALUE cStrictLocalsMissingParenthesisError;
53
63
  static VALUE cStrictLocalsDuplicateDeclarationError;
64
+ static VALUE cHerbStateMissingParenthesisError;
65
+ static VALUE cHerbStateNonCanonicalDirectiveError;
66
+ static VALUE cHerbStateInvalidParameterError;
67
+ static VALUE cHerbStateDuplicateDeclarationError;
54
68
  static VALUE cVoidElementContentError;
55
69
  static VALUE cDotNotationCasingError;
56
70
  static VALUE cTimeoutError;
@@ -70,15 +84,25 @@ void rb_init_error_classes(void) {
70
84
  cMissingERBEndTagError = rb_define_class_under(mErrors, "MissingERBEndTagError", cError);
71
85
  cERBMultipleBlocksInTagError = rb_define_class_under(mErrors, "ERBMultipleBlocksInTagError", cError);
72
86
  cERBCaseWithConditionsError = rb_define_class_under(mErrors, "ERBCaseWithConditionsError", cError);
87
+ cERBCaseInlinePatternMatchError = rb_define_class_under(mErrors, "ERBCaseInlinePatternMatchError", cError);
73
88
  cConditionalElementMultipleTagsError = rb_define_class_under(mErrors, "ConditionalElementMultipleTagsError", cError);
74
89
  cConditionalElementConditionMismatchError = rb_define_class_under(mErrors, "ConditionalElementConditionMismatchError", cError);
90
+ cUnclosedCommentError = rb_define_class_under(mErrors, "UnclosedCommentError", cError);
91
+ cNestedCommentError = rb_define_class_under(mErrors, "NestedCommentError", cError);
75
92
  cInvalidCommentClosingTagError = rb_define_class_under(mErrors, "InvalidCommentClosingTagError", cError);
76
93
  cOmittedClosingTagError = rb_define_class_under(mErrors, "OmittedClosingTagError", cError);
77
94
  cUnclosedOpenTagError = rb_define_class_under(mErrors, "UnclosedOpenTagError", cError);
78
95
  cUnclosedCloseTagError = rb_define_class_under(mErrors, "UnclosedCloseTagError", cError);
96
+ cEndTagWithTrailingSolidusError = rb_define_class_under(mErrors, "EndTagWithTrailingSolidusError", cError);
79
97
  cUnclosedQuoteError = rb_define_class_under(mErrors, "UnclosedQuoteError", cError);
80
98
  cMissingAttributeValueError = rb_define_class_under(mErrors, "MissingAttributeValueError", cError);
99
+ cMissingWhitespaceBetweenAttributesError = rb_define_class_under(mErrors, "MissingWhitespaceBetweenAttributesError", cError);
100
+ cUnexpectedCharacterInAttributeNameError = rb_define_class_under(mErrors, "UnexpectedCharacterInAttributeNameError", cError);
101
+ cUnexpectedCharacterInUnquotedAttributeValueError = rb_define_class_under(mErrors, "UnexpectedCharacterInUnquotedAttributeValueError", cError);
102
+ cUnexpectedEqualsSignBeforeAttributeNameError = rb_define_class_under(mErrors, "UnexpectedEqualsSignBeforeAttributeNameError", cError);
103
+ cUnexpectedSolidusInTagError = rb_define_class_under(mErrors, "UnexpectedSolidusInTagError", cError);
81
104
  cUnclosedERBTagError = rb_define_class_under(mErrors, "UnclosedERBTagError", cError);
105
+ cMalformedERBClosingTagError = rb_define_class_under(mErrors, "MalformedERBClosingTagError", cError);
82
106
  cStrayERBClosingTagError = rb_define_class_under(mErrors, "StrayERBClosingTagError", cError);
83
107
  cNestedERBTagError = rb_define_class_under(mErrors, "NestedERBTagError", cError);
84
108
  cRenderAmbiguousLocalsError = rb_define_class_under(mErrors, "RenderAmbiguousLocalsError", cError);
@@ -93,6 +117,10 @@ void rb_init_error_classes(void) {
93
117
  cStrictLocalsSplatArgumentError = rb_define_class_under(mErrors, "StrictLocalsSplatArgumentError", cError);
94
118
  cStrictLocalsMissingParenthesisError = rb_define_class_under(mErrors, "StrictLocalsMissingParenthesisError", cError);
95
119
  cStrictLocalsDuplicateDeclarationError = rb_define_class_under(mErrors, "StrictLocalsDuplicateDeclarationError", cError);
120
+ cHerbStateMissingParenthesisError = rb_define_class_under(mErrors, "HerbStateMissingParenthesisError", cError);
121
+ cHerbStateNonCanonicalDirectiveError = rb_define_class_under(mErrors, "HerbStateNonCanonicalDirectiveError", cError);
122
+ cHerbStateInvalidParameterError = rb_define_class_under(mErrors, "HerbStateInvalidParameterError", cError);
123
+ cHerbStateDuplicateDeclarationError = rb_define_class_under(mErrors, "HerbStateDuplicateDeclarationError", cError);
96
124
  cVoidElementContentError = rb_define_class_under(mErrors, "VoidElementContentError", cError);
97
125
  cDotNotationCasingError = rb_define_class_under(mErrors, "DotNotationCasingError", cError);
98
126
  cTimeoutError = rb_define_class_under(mErrors, "TimeoutError", cError);
@@ -134,7 +162,7 @@ static VALUE rb_unexpected_token_error_from_c_struct(UNEXPECTED_TOKEN_ERROR_T* u
134
162
 
135
163
  hb_string_T _expected_type_string = token_type_to_string(unexpected_token_error->expected_type);
136
164
  VALUE unexpected_token_error_expected_type = rb_utf8_str_new(_expected_type_string.data, _expected_type_string.length);
137
- VALUE unexpected_token_error_found = rb_token_from_c_struct(unexpected_token_error->found);
165
+ VALUE unexpected_token_error_found = rb_token_from_c_struct(unexpected_token_error->found, &HERB_DEFAULT_PARSER_OPTIONS);
138
166
 
139
167
  VALUE args[5] = {
140
168
  type,
@@ -156,7 +184,7 @@ static VALUE rb_missing_opening_tag_error_from_c_struct(MISSING_OPENING_TAG_ERRO
156
184
  VALUE location = rb_location_from_c_struct(error->location);
157
185
  VALUE message = rb_string_from_hb_string(error->message);
158
186
 
159
- VALUE missing_opening_tag_error_closing_tag = rb_token_from_c_struct(missing_opening_tag_error->closing_tag);
187
+ VALUE missing_opening_tag_error_closing_tag = rb_token_from_c_struct(missing_opening_tag_error->closing_tag, &HERB_DEFAULT_PARSER_OPTIONS);
160
188
 
161
189
  VALUE args[4] = {
162
190
  type,
@@ -177,7 +205,7 @@ static VALUE rb_missing_closing_tag_error_from_c_struct(MISSING_CLOSING_TAG_ERRO
177
205
  VALUE location = rb_location_from_c_struct(error->location);
178
206
  VALUE message = rb_string_from_hb_string(error->message);
179
207
 
180
- VALUE missing_closing_tag_error_opening_tag = rb_token_from_c_struct(missing_closing_tag_error->opening_tag);
208
+ VALUE missing_closing_tag_error_opening_tag = rb_token_from_c_struct(missing_closing_tag_error->opening_tag, &HERB_DEFAULT_PARSER_OPTIONS);
181
209
 
182
210
  VALUE args[4] = {
183
211
  type,
@@ -198,8 +226,8 @@ static VALUE rb_tag_names_mismatch_error_from_c_struct(TAG_NAMES_MISMATCH_ERROR_
198
226
  VALUE location = rb_location_from_c_struct(error->location);
199
227
  VALUE message = rb_string_from_hb_string(error->message);
200
228
 
201
- VALUE tag_names_mismatch_error_opening_tag = rb_token_from_c_struct(tag_names_mismatch_error->opening_tag);
202
- VALUE tag_names_mismatch_error_closing_tag = rb_token_from_c_struct(tag_names_mismatch_error->closing_tag);
229
+ VALUE tag_names_mismatch_error_opening_tag = rb_token_from_c_struct(tag_names_mismatch_error->opening_tag, &HERB_DEFAULT_PARSER_OPTIONS);
230
+ VALUE tag_names_mismatch_error_closing_tag = rb_token_from_c_struct(tag_names_mismatch_error->closing_tag, &HERB_DEFAULT_PARSER_OPTIONS);
203
231
 
204
232
  VALUE args[5] = {
205
233
  type,
@@ -221,7 +249,7 @@ static VALUE rb_void_element_closing_tag_error_from_c_struct(VOID_ELEMENT_CLOSIN
221
249
  VALUE location = rb_location_from_c_struct(error->location);
222
250
  VALUE message = rb_string_from_hb_string(error->message);
223
251
 
224
- VALUE void_element_closing_tag_error_tag_name = rb_token_from_c_struct(void_element_closing_tag_error->tag_name);
252
+ VALUE void_element_closing_tag_error_tag_name = rb_token_from_c_struct(void_element_closing_tag_error->tag_name, &HERB_DEFAULT_PARSER_OPTIONS);
225
253
  VALUE void_element_closing_tag_error_expected = rb_utf8_str_new(void_element_closing_tag_error->expected.data, void_element_closing_tag_error->expected.length);
226
254
  VALUE void_element_closing_tag_error_found = rb_utf8_str_new(void_element_closing_tag_error->found.data, void_element_closing_tag_error->found.length);
227
255
 
@@ -246,7 +274,7 @@ static VALUE rb_unclosed_element_error_from_c_struct(UNCLOSED_ELEMENT_ERROR_T* u
246
274
  VALUE location = rb_location_from_c_struct(error->location);
247
275
  VALUE message = rb_string_from_hb_string(error->message);
248
276
 
249
- VALUE unclosed_element_error_opening_tag = rb_token_from_c_struct(unclosed_element_error->opening_tag);
277
+ VALUE unclosed_element_error_opening_tag = rb_token_from_c_struct(unclosed_element_error->opening_tag, &HERB_DEFAULT_PARSER_OPTIONS);
250
278
 
251
279
  VALUE args[4] = {
252
280
  type,
@@ -363,6 +391,25 @@ static VALUE rb_erb_case_with_conditions_error_from_c_struct(ERB_CASE_WITH_CONDI
363
391
  return rb_class_new_instance(3, args, cERBCaseWithConditionsError);
364
392
  };
365
393
 
394
+ static VALUE rb_erb_case_inline_pattern_match_error_from_c_struct(ERB_CASE_INLINE_PATTERN_MATCH_ERROR_T* erb_case_inline_pattern_match_error) {
395
+ if (erb_case_inline_pattern_match_error == NULL) { return Qnil; }
396
+
397
+ ERROR_T* error = &erb_case_inline_pattern_match_error->base;
398
+
399
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
400
+ VALUE location = rb_location_from_c_struct(error->location);
401
+ VALUE message = rb_string_from_hb_string(error->message);
402
+
403
+
404
+ VALUE args[3] = {
405
+ type,
406
+ location,
407
+ message
408
+ };
409
+
410
+ return rb_class_new_instance(3, args, cERBCaseInlinePatternMatchError);
411
+ };
412
+
366
413
  static VALUE rb_conditional_element_multiple_tags_error_from_c_struct(CONDITIONAL_ELEMENT_MULTIPLE_TAGS_ERROR_T* conditional_element_multiple_tags_error) {
367
414
  if (conditional_element_multiple_tags_error == NULL) { return Qnil; }
368
415
 
@@ -419,6 +466,50 @@ static VALUE rb_conditional_element_condition_mismatch_error_from_c_struct(CONDI
419
466
  return rb_class_new_instance(10, args, cConditionalElementConditionMismatchError);
420
467
  };
421
468
 
469
+ static VALUE rb_unclosed_comment_error_from_c_struct(UNCLOSED_COMMENT_ERROR_T* unclosed_comment_error) {
470
+ if (unclosed_comment_error == NULL) { return Qnil; }
471
+
472
+ ERROR_T* error = &unclosed_comment_error->base;
473
+
474
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
475
+ VALUE location = rb_location_from_c_struct(error->location);
476
+ VALUE message = rb_string_from_hb_string(error->message);
477
+
478
+ VALUE unclosed_comment_error_comment_start = rb_token_from_c_struct(unclosed_comment_error->comment_start, &HERB_DEFAULT_PARSER_OPTIONS);
479
+
480
+ VALUE args[4] = {
481
+ type,
482
+ location,
483
+ message,
484
+ unclosed_comment_error_comment_start
485
+ };
486
+
487
+ return rb_class_new_instance(4, args, cUnclosedCommentError);
488
+ };
489
+
490
+ static VALUE rb_nested_comment_error_from_c_struct(NESTED_COMMENT_ERROR_T* nested_comment_error) {
491
+ if (nested_comment_error == NULL) { return Qnil; }
492
+
493
+ ERROR_T* error = &nested_comment_error->base;
494
+
495
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
496
+ VALUE location = rb_location_from_c_struct(error->location);
497
+ VALUE message = rb_string_from_hb_string(error->message);
498
+
499
+ VALUE nested_comment_error_comment_start = rb_token_from_c_struct(nested_comment_error->comment_start, &HERB_DEFAULT_PARSER_OPTIONS);
500
+ VALUE nested_comment_error_nested_start = rb_token_from_c_struct(nested_comment_error->nested_start, &HERB_DEFAULT_PARSER_OPTIONS);
501
+
502
+ VALUE args[5] = {
503
+ type,
504
+ location,
505
+ message,
506
+ nested_comment_error_comment_start,
507
+ nested_comment_error_nested_start
508
+ };
509
+
510
+ return rb_class_new_instance(5, args, cNestedCommentError);
511
+ };
512
+
422
513
  static VALUE rb_invalid_comment_closing_tag_error_from_c_struct(INVALID_COMMENT_CLOSING_TAG_ERROR_T* invalid_comment_closing_tag_error) {
423
514
  if (invalid_comment_closing_tag_error == NULL) { return Qnil; }
424
515
 
@@ -428,7 +519,7 @@ static VALUE rb_invalid_comment_closing_tag_error_from_c_struct(INVALID_COMMENT_
428
519
  VALUE location = rb_location_from_c_struct(error->location);
429
520
  VALUE message = rb_string_from_hb_string(error->message);
430
521
 
431
- VALUE invalid_comment_closing_tag_error_closing_tag = rb_token_from_c_struct(invalid_comment_closing_tag_error->closing_tag);
522
+ VALUE invalid_comment_closing_tag_error_closing_tag = rb_token_from_c_struct(invalid_comment_closing_tag_error->closing_tag, &HERB_DEFAULT_PARSER_OPTIONS);
432
523
 
433
524
  VALUE args[4] = {
434
525
  type,
@@ -449,7 +540,7 @@ static VALUE rb_omitted_closing_tag_error_from_c_struct(OMITTED_CLOSING_TAG_ERRO
449
540
  VALUE location = rb_location_from_c_struct(error->location);
450
541
  VALUE message = rb_string_from_hb_string(error->message);
451
542
 
452
- VALUE omitted_closing_tag_error_opening_tag = rb_token_from_c_struct(omitted_closing_tag_error->opening_tag);
543
+ VALUE omitted_closing_tag_error_opening_tag = rb_token_from_c_struct(omitted_closing_tag_error->opening_tag, &HERB_DEFAULT_PARSER_OPTIONS);
453
544
  VALUE omitted_closing_tag_error_insertion_point = rb_position_from_c_struct(omitted_closing_tag_error->insertion_point);
454
545
 
455
546
  VALUE args[5] = {
@@ -472,7 +563,7 @@ static VALUE rb_unclosed_open_tag_error_from_c_struct(UNCLOSED_OPEN_TAG_ERROR_T*
472
563
  VALUE location = rb_location_from_c_struct(error->location);
473
564
  VALUE message = rb_string_from_hb_string(error->message);
474
565
 
475
- VALUE unclosed_open_tag_error_tag_name = rb_token_from_c_struct(unclosed_open_tag_error->tag_name);
566
+ VALUE unclosed_open_tag_error_tag_name = rb_token_from_c_struct(unclosed_open_tag_error->tag_name, &HERB_DEFAULT_PARSER_OPTIONS);
476
567
 
477
568
  VALUE args[4] = {
478
569
  type,
@@ -493,7 +584,7 @@ static VALUE rb_unclosed_close_tag_error_from_c_struct(UNCLOSED_CLOSE_TAG_ERROR_
493
584
  VALUE location = rb_location_from_c_struct(error->location);
494
585
  VALUE message = rb_string_from_hb_string(error->message);
495
586
 
496
- VALUE unclosed_close_tag_error_tag_name = rb_token_from_c_struct(unclosed_close_tag_error->tag_name);
587
+ VALUE unclosed_close_tag_error_tag_name = rb_token_from_c_struct(unclosed_close_tag_error->tag_name, &HERB_DEFAULT_PARSER_OPTIONS);
497
588
 
498
589
  VALUE args[4] = {
499
590
  type,
@@ -505,6 +596,27 @@ static VALUE rb_unclosed_close_tag_error_from_c_struct(UNCLOSED_CLOSE_TAG_ERROR_
505
596
  return rb_class_new_instance(4, args, cUnclosedCloseTagError);
506
597
  };
507
598
 
599
+ static VALUE rb_end_tag_with_trailing_solidus_error_from_c_struct(END_TAG_WITH_TRAILING_SOLIDUS_ERROR_T* end_tag_with_trailing_solidus_error) {
600
+ if (end_tag_with_trailing_solidus_error == NULL) { return Qnil; }
601
+
602
+ ERROR_T* error = &end_tag_with_trailing_solidus_error->base;
603
+
604
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
605
+ VALUE location = rb_location_from_c_struct(error->location);
606
+ VALUE message = rb_string_from_hb_string(error->message);
607
+
608
+ VALUE end_tag_with_trailing_solidus_error_tag_name = rb_token_from_c_struct(end_tag_with_trailing_solidus_error->tag_name, &HERB_DEFAULT_PARSER_OPTIONS);
609
+
610
+ VALUE args[4] = {
611
+ type,
612
+ location,
613
+ message,
614
+ end_tag_with_trailing_solidus_error_tag_name
615
+ };
616
+
617
+ return rb_class_new_instance(4, args, cEndTagWithTrailingSolidusError);
618
+ };
619
+
508
620
  static VALUE rb_unclosed_quote_error_from_c_struct(UNCLOSED_QUOTE_ERROR_T* unclosed_quote_error) {
509
621
  if (unclosed_quote_error == NULL) { return Qnil; }
510
622
 
@@ -514,7 +626,7 @@ static VALUE rb_unclosed_quote_error_from_c_struct(UNCLOSED_QUOTE_ERROR_T* unclo
514
626
  VALUE location = rb_location_from_c_struct(error->location);
515
627
  VALUE message = rb_string_from_hb_string(error->message);
516
628
 
517
- VALUE unclosed_quote_error_opening_quote = rb_token_from_c_struct(unclosed_quote_error->opening_quote);
629
+ VALUE unclosed_quote_error_opening_quote = rb_token_from_c_struct(unclosed_quote_error->opening_quote, &HERB_DEFAULT_PARSER_OPTIONS);
518
630
 
519
631
  VALUE args[4] = {
520
632
  type,
@@ -547,6 +659,111 @@ static VALUE rb_missing_attribute_value_error_from_c_struct(MISSING_ATTRIBUTE_VA
547
659
  return rb_class_new_instance(4, args, cMissingAttributeValueError);
548
660
  };
549
661
 
662
+ static VALUE rb_missing_whitespace_between_attributes_error_from_c_struct(MISSING_WHITESPACE_BETWEEN_ATTRIBUTES_ERROR_T* missing_whitespace_between_attributes_error) {
663
+ if (missing_whitespace_between_attributes_error == NULL) { return Qnil; }
664
+
665
+ ERROR_T* error = &missing_whitespace_between_attributes_error->base;
666
+
667
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
668
+ VALUE location = rb_location_from_c_struct(error->location);
669
+ VALUE message = rb_string_from_hb_string(error->message);
670
+
671
+ VALUE missing_whitespace_between_attributes_error_found = rb_token_from_c_struct(missing_whitespace_between_attributes_error->found, &HERB_DEFAULT_PARSER_OPTIONS);
672
+
673
+ VALUE args[4] = {
674
+ type,
675
+ location,
676
+ message,
677
+ missing_whitespace_between_attributes_error_found
678
+ };
679
+
680
+ return rb_class_new_instance(4, args, cMissingWhitespaceBetweenAttributesError);
681
+ };
682
+
683
+ static VALUE rb_unexpected_character_in_attribute_name_error_from_c_struct(UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME_ERROR_T* unexpected_character_in_attribute_name_error) {
684
+ if (unexpected_character_in_attribute_name_error == NULL) { return Qnil; }
685
+
686
+ ERROR_T* error = &unexpected_character_in_attribute_name_error->base;
687
+
688
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
689
+ VALUE location = rb_location_from_c_struct(error->location);
690
+ VALUE message = rb_string_from_hb_string(error->message);
691
+
692
+ VALUE unexpected_character_in_attribute_name_error_character = rb_token_from_c_struct(unexpected_character_in_attribute_name_error->character, &HERB_DEFAULT_PARSER_OPTIONS);
693
+
694
+ VALUE args[4] = {
695
+ type,
696
+ location,
697
+ message,
698
+ unexpected_character_in_attribute_name_error_character
699
+ };
700
+
701
+ return rb_class_new_instance(4, args, cUnexpectedCharacterInAttributeNameError);
702
+ };
703
+
704
+ static VALUE rb_unexpected_character_in_unquoted_attribute_value_error_from_c_struct(UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE_ERROR_T* unexpected_character_in_unquoted_attribute_value_error) {
705
+ if (unexpected_character_in_unquoted_attribute_value_error == NULL) { return Qnil; }
706
+
707
+ ERROR_T* error = &unexpected_character_in_unquoted_attribute_value_error->base;
708
+
709
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
710
+ VALUE location = rb_location_from_c_struct(error->location);
711
+ VALUE message = rb_string_from_hb_string(error->message);
712
+
713
+ VALUE unexpected_character_in_unquoted_attribute_value_error_character = rb_token_from_c_struct(unexpected_character_in_unquoted_attribute_value_error->character, &HERB_DEFAULT_PARSER_OPTIONS);
714
+
715
+ VALUE args[4] = {
716
+ type,
717
+ location,
718
+ message,
719
+ unexpected_character_in_unquoted_attribute_value_error_character
720
+ };
721
+
722
+ return rb_class_new_instance(4, args, cUnexpectedCharacterInUnquotedAttributeValueError);
723
+ };
724
+
725
+ static VALUE rb_unexpected_equals_sign_before_attribute_name_error_from_c_struct(UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME_ERROR_T* unexpected_equals_sign_before_attribute_name_error) {
726
+ if (unexpected_equals_sign_before_attribute_name_error == NULL) { return Qnil; }
727
+
728
+ ERROR_T* error = &unexpected_equals_sign_before_attribute_name_error->base;
729
+
730
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
731
+ VALUE location = rb_location_from_c_struct(error->location);
732
+ VALUE message = rb_string_from_hb_string(error->message);
733
+
734
+ VALUE unexpected_equals_sign_before_attribute_name_error_equals = rb_token_from_c_struct(unexpected_equals_sign_before_attribute_name_error->equals, &HERB_DEFAULT_PARSER_OPTIONS);
735
+
736
+ VALUE args[4] = {
737
+ type,
738
+ location,
739
+ message,
740
+ unexpected_equals_sign_before_attribute_name_error_equals
741
+ };
742
+
743
+ return rb_class_new_instance(4, args, cUnexpectedEqualsSignBeforeAttributeNameError);
744
+ };
745
+
746
+ static VALUE rb_unexpected_solidus_in_tag_error_from_c_struct(UNEXPECTED_SOLIDUS_IN_TAG_ERROR_T* unexpected_solidus_in_tag_error) {
747
+ if (unexpected_solidus_in_tag_error == NULL) { return Qnil; }
748
+
749
+ ERROR_T* error = &unexpected_solidus_in_tag_error->base;
750
+
751
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
752
+ VALUE location = rb_location_from_c_struct(error->location);
753
+ VALUE message = rb_string_from_hb_string(error->message);
754
+
755
+ VALUE unexpected_solidus_in_tag_error_solidus = rb_token_from_c_struct(unexpected_solidus_in_tag_error->solidus, &HERB_DEFAULT_PARSER_OPTIONS);
756
+
757
+ VALUE args[4] = {
758
+ type,
759
+ location,
760
+ message,
761
+ unexpected_solidus_in_tag_error_solidus
762
+ };
763
+
764
+ return rb_class_new_instance(4, args, cUnexpectedSolidusInTagError);
765
+ };
766
+
550
767
  static VALUE rb_unclosed_erb_tag_error_from_c_struct(UNCLOSED_ERB_TAG_ERROR_T* unclosed_erb_tag_error) {
551
768
  if (unclosed_erb_tag_error == NULL) { return Qnil; }
552
769
 
@@ -556,7 +773,7 @@ static VALUE rb_unclosed_erb_tag_error_from_c_struct(UNCLOSED_ERB_TAG_ERROR_T* u
556
773
  VALUE location = rb_location_from_c_struct(error->location);
557
774
  VALUE message = rb_string_from_hb_string(error->message);
558
775
 
559
- VALUE unclosed_erb_tag_error_opening_tag = rb_token_from_c_struct(unclosed_erb_tag_error->opening_tag);
776
+ VALUE unclosed_erb_tag_error_opening_tag = rb_token_from_c_struct(unclosed_erb_tag_error->opening_tag, &HERB_DEFAULT_PARSER_OPTIONS);
560
777
 
561
778
  VALUE args[4] = {
562
779
  type,
@@ -568,6 +785,29 @@ static VALUE rb_unclosed_erb_tag_error_from_c_struct(UNCLOSED_ERB_TAG_ERROR_T* u
568
785
  return rb_class_new_instance(4, args, cUnclosedERBTagError);
569
786
  };
570
787
 
788
+ static VALUE rb_malformed_erb_closing_tag_error_from_c_struct(MALFORMED_ERB_CLOSING_TAG_ERROR_T* malformed_erb_closing_tag_error) {
789
+ if (malformed_erb_closing_tag_error == NULL) { return Qnil; }
790
+
791
+ ERROR_T* error = &malformed_erb_closing_tag_error->base;
792
+
793
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
794
+ VALUE location = rb_location_from_c_struct(error->location);
795
+ VALUE message = rb_string_from_hb_string(error->message);
796
+
797
+ VALUE malformed_erb_closing_tag_error_opening_tag = rb_token_from_c_struct(malformed_erb_closing_tag_error->opening_tag, &HERB_DEFAULT_PARSER_OPTIONS);
798
+ VALUE malformed_erb_closing_tag_error_closing_tag = rb_token_from_c_struct(malformed_erb_closing_tag_error->closing_tag, &HERB_DEFAULT_PARSER_OPTIONS);
799
+
800
+ VALUE args[5] = {
801
+ type,
802
+ location,
803
+ message,
804
+ malformed_erb_closing_tag_error_opening_tag,
805
+ malformed_erb_closing_tag_error_closing_tag
806
+ };
807
+
808
+ return rb_class_new_instance(5, args, cMalformedERBClosingTagError);
809
+ };
810
+
571
811
  static VALUE rb_stray_erb_closing_tag_error_from_c_struct(STRAY_ERB_CLOSING_TAG_ERROR_T* stray_erb_closing_tag_error) {
572
812
  if (stray_erb_closing_tag_error == NULL) { return Qnil; }
573
813
 
@@ -596,7 +836,7 @@ static VALUE rb_nested_erb_tag_error_from_c_struct(NESTED_ERB_TAG_ERROR_T* neste
596
836
  VALUE location = rb_location_from_c_struct(error->location);
597
837
  VALUE message = rb_string_from_hb_string(error->message);
598
838
 
599
- VALUE nested_erb_tag_error_opening_tag = rb_token_from_c_struct(nested_erb_tag_error->opening_tag);
839
+ VALUE nested_erb_tag_error_opening_tag = rb_token_from_c_struct(nested_erb_tag_error->opening_tag, &HERB_DEFAULT_PARSER_OPTIONS);
600
840
  VALUE nested_erb_tag_error_nested_tag_line = ULONG2NUM(nested_erb_tag_error->nested_tag_line);
601
841
  VALUE nested_erb_tag_error_nested_tag_column = ULONG2NUM(nested_erb_tag_error->nested_tag_column);
602
842
 
@@ -862,6 +1102,90 @@ static VALUE rb_strict_locals_duplicate_declaration_error_from_c_struct(STRICT_L
862
1102
  return rb_class_new_instance(3, args, cStrictLocalsDuplicateDeclarationError);
863
1103
  };
864
1104
 
1105
+ static VALUE rb_herb_state_missing_parenthesis_error_from_c_struct(HERB_STATE_MISSING_PARENTHESIS_ERROR_T* herb_state_missing_parenthesis_error) {
1106
+ if (herb_state_missing_parenthesis_error == NULL) { return Qnil; }
1107
+
1108
+ ERROR_T* error = &herb_state_missing_parenthesis_error->base;
1109
+
1110
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
1111
+ VALUE location = rb_location_from_c_struct(error->location);
1112
+ VALUE message = rb_string_from_hb_string(error->message);
1113
+
1114
+ VALUE herb_state_missing_parenthesis_error_rest = rb_utf8_str_new(herb_state_missing_parenthesis_error->rest.data, herb_state_missing_parenthesis_error->rest.length);
1115
+
1116
+ VALUE args[4] = {
1117
+ type,
1118
+ location,
1119
+ message,
1120
+ herb_state_missing_parenthesis_error_rest
1121
+ };
1122
+
1123
+ return rb_class_new_instance(4, args, cHerbStateMissingParenthesisError);
1124
+ };
1125
+
1126
+ static VALUE rb_herb_state_non_canonical_directive_error_from_c_struct(HERB_STATE_NON_CANONICAL_DIRECTIVE_ERROR_T* herb_state_non_canonical_directive_error) {
1127
+ if (herb_state_non_canonical_directive_error == NULL) { return Qnil; }
1128
+
1129
+ ERROR_T* error = &herb_state_non_canonical_directive_error->base;
1130
+
1131
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
1132
+ VALUE location = rb_location_from_c_struct(error->location);
1133
+ VALUE message = rb_string_from_hb_string(error->message);
1134
+
1135
+ VALUE herb_state_non_canonical_directive_error_found = rb_utf8_str_new(herb_state_non_canonical_directive_error->found.data, herb_state_non_canonical_directive_error->found.length);
1136
+ VALUE herb_state_non_canonical_directive_error_expected = rb_utf8_str_new(herb_state_non_canonical_directive_error->expected.data, herb_state_non_canonical_directive_error->expected.length);
1137
+
1138
+ VALUE args[5] = {
1139
+ type,
1140
+ location,
1141
+ message,
1142
+ herb_state_non_canonical_directive_error_found,
1143
+ herb_state_non_canonical_directive_error_expected
1144
+ };
1145
+
1146
+ return rb_class_new_instance(5, args, cHerbStateNonCanonicalDirectiveError);
1147
+ };
1148
+
1149
+ static VALUE rb_herb_state_invalid_parameter_error_from_c_struct(HERB_STATE_INVALID_PARAMETER_ERROR_T* herb_state_invalid_parameter_error) {
1150
+ if (herb_state_invalid_parameter_error == NULL) { return Qnil; }
1151
+
1152
+ ERROR_T* error = &herb_state_invalid_parameter_error->base;
1153
+
1154
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
1155
+ VALUE location = rb_location_from_c_struct(error->location);
1156
+ VALUE message = rb_string_from_hb_string(error->message);
1157
+
1158
+ VALUE herb_state_invalid_parameter_error_parameter = rb_utf8_str_new(herb_state_invalid_parameter_error->parameter.data, herb_state_invalid_parameter_error->parameter.length);
1159
+
1160
+ VALUE args[4] = {
1161
+ type,
1162
+ location,
1163
+ message,
1164
+ herb_state_invalid_parameter_error_parameter
1165
+ };
1166
+
1167
+ return rb_class_new_instance(4, args, cHerbStateInvalidParameterError);
1168
+ };
1169
+
1170
+ static VALUE rb_herb_state_duplicate_declaration_error_from_c_struct(HERB_STATE_DUPLICATE_DECLARATION_ERROR_T* herb_state_duplicate_declaration_error) {
1171
+ if (herb_state_duplicate_declaration_error == NULL) { return Qnil; }
1172
+
1173
+ ERROR_T* error = &herb_state_duplicate_declaration_error->base;
1174
+
1175
+ VALUE type = rb_string_from_hb_string(error_type_to_string(error));
1176
+ VALUE location = rb_location_from_c_struct(error->location);
1177
+ VALUE message = rb_string_from_hb_string(error->message);
1178
+
1179
+
1180
+ VALUE args[3] = {
1181
+ type,
1182
+ location,
1183
+ message
1184
+ };
1185
+
1186
+ return rb_class_new_instance(3, args, cHerbStateDuplicateDeclarationError);
1187
+ };
1188
+
865
1189
  static VALUE rb_void_element_content_error_from_c_struct(VOID_ELEMENT_CONTENT_ERROR_T* void_element_content_error) {
866
1190
  if (void_element_content_error == NULL) { return Qnil; }
867
1191
 
@@ -871,7 +1195,7 @@ static VALUE rb_void_element_content_error_from_c_struct(VOID_ELEMENT_CONTENT_ER
871
1195
  VALUE location = rb_location_from_c_struct(error->location);
872
1196
  VALUE message = rb_string_from_hb_string(error->message);
873
1197
 
874
- VALUE void_element_content_error_tag_name = rb_token_from_c_struct(void_element_content_error->tag_name);
1198
+ VALUE void_element_content_error_tag_name = rb_token_from_c_struct(void_element_content_error->tag_name, &HERB_DEFAULT_PARSER_OPTIONS);
875
1199
  VALUE void_element_content_error_helper_name = rb_utf8_str_new(void_element_content_error->helper_name.data, void_element_content_error->helper_name.length);
876
1200
  VALUE void_element_content_error_content_type = rb_utf8_str_new(void_element_content_error->content_type.data, void_element_content_error->content_type.length);
877
1201
 
@@ -896,7 +1220,7 @@ static VALUE rb_dot_notation_casing_error_from_c_struct(DOT_NOTATION_CASING_ERRO
896
1220
  VALUE location = rb_location_from_c_struct(error->location);
897
1221
  VALUE message = rb_string_from_hb_string(error->message);
898
1222
 
899
- VALUE dot_notation_casing_error_segment = rb_token_from_c_struct(dot_notation_casing_error->segment);
1223
+ VALUE dot_notation_casing_error_segment = rb_token_from_c_struct(dot_notation_casing_error->segment, &HERB_DEFAULT_PARSER_OPTIONS);
900
1224
 
901
1225
  VALUE args[4] = {
902
1226
  type,
@@ -946,15 +1270,25 @@ VALUE rb_error_from_c_struct(ERROR_T* error) {
946
1270
  case MISSING_ERB_END_TAG_ERROR: return rb_missing_erb_end_tag_error_from_c_struct((MISSING_ERB_END_TAG_ERROR_T*) error); break;
947
1271
  case ERB_MULTIPLE_BLOCKS_IN_TAG_ERROR: return rb_erb_multiple_blocks_in_tag_error_from_c_struct((ERB_MULTIPLE_BLOCKS_IN_TAG_ERROR_T*) error); break;
948
1272
  case ERB_CASE_WITH_CONDITIONS_ERROR: return rb_erb_case_with_conditions_error_from_c_struct((ERB_CASE_WITH_CONDITIONS_ERROR_T*) error); break;
1273
+ case ERB_CASE_INLINE_PATTERN_MATCH_ERROR: return rb_erb_case_inline_pattern_match_error_from_c_struct((ERB_CASE_INLINE_PATTERN_MATCH_ERROR_T*) error); break;
949
1274
  case CONDITIONAL_ELEMENT_MULTIPLE_TAGS_ERROR: return rb_conditional_element_multiple_tags_error_from_c_struct((CONDITIONAL_ELEMENT_MULTIPLE_TAGS_ERROR_T*) error); break;
950
1275
  case CONDITIONAL_ELEMENT_CONDITION_MISMATCH_ERROR: return rb_conditional_element_condition_mismatch_error_from_c_struct((CONDITIONAL_ELEMENT_CONDITION_MISMATCH_ERROR_T*) error); break;
1276
+ case UNCLOSED_COMMENT_ERROR: return rb_unclosed_comment_error_from_c_struct((UNCLOSED_COMMENT_ERROR_T*) error); break;
1277
+ case NESTED_COMMENT_ERROR: return rb_nested_comment_error_from_c_struct((NESTED_COMMENT_ERROR_T*) error); break;
951
1278
  case INVALID_COMMENT_CLOSING_TAG_ERROR: return rb_invalid_comment_closing_tag_error_from_c_struct((INVALID_COMMENT_CLOSING_TAG_ERROR_T*) error); break;
952
1279
  case OMITTED_CLOSING_TAG_ERROR: return rb_omitted_closing_tag_error_from_c_struct((OMITTED_CLOSING_TAG_ERROR_T*) error); break;
953
1280
  case UNCLOSED_OPEN_TAG_ERROR: return rb_unclosed_open_tag_error_from_c_struct((UNCLOSED_OPEN_TAG_ERROR_T*) error); break;
954
1281
  case UNCLOSED_CLOSE_TAG_ERROR: return rb_unclosed_close_tag_error_from_c_struct((UNCLOSED_CLOSE_TAG_ERROR_T*) error); break;
1282
+ case END_TAG_WITH_TRAILING_SOLIDUS_ERROR: return rb_end_tag_with_trailing_solidus_error_from_c_struct((END_TAG_WITH_TRAILING_SOLIDUS_ERROR_T*) error); break;
955
1283
  case UNCLOSED_QUOTE_ERROR: return rb_unclosed_quote_error_from_c_struct((UNCLOSED_QUOTE_ERROR_T*) error); break;
956
1284
  case MISSING_ATTRIBUTE_VALUE_ERROR: return rb_missing_attribute_value_error_from_c_struct((MISSING_ATTRIBUTE_VALUE_ERROR_T*) error); break;
1285
+ case MISSING_WHITESPACE_BETWEEN_ATTRIBUTES_ERROR: return rb_missing_whitespace_between_attributes_error_from_c_struct((MISSING_WHITESPACE_BETWEEN_ATTRIBUTES_ERROR_T*) error); break;
1286
+ case UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME_ERROR: return rb_unexpected_character_in_attribute_name_error_from_c_struct((UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME_ERROR_T*) error); break;
1287
+ case UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE_ERROR: return rb_unexpected_character_in_unquoted_attribute_value_error_from_c_struct((UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE_ERROR_T*) error); break;
1288
+ case UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME_ERROR: return rb_unexpected_equals_sign_before_attribute_name_error_from_c_struct((UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME_ERROR_T*) error); break;
1289
+ case UNEXPECTED_SOLIDUS_IN_TAG_ERROR: return rb_unexpected_solidus_in_tag_error_from_c_struct((UNEXPECTED_SOLIDUS_IN_TAG_ERROR_T*) error); break;
957
1290
  case UNCLOSED_ERB_TAG_ERROR: return rb_unclosed_erb_tag_error_from_c_struct((UNCLOSED_ERB_TAG_ERROR_T*) error); break;
1291
+ case MALFORMED_ERB_CLOSING_TAG_ERROR: return rb_malformed_erb_closing_tag_error_from_c_struct((MALFORMED_ERB_CLOSING_TAG_ERROR_T*) error); break;
958
1292
  case STRAY_ERB_CLOSING_TAG_ERROR: return rb_stray_erb_closing_tag_error_from_c_struct((STRAY_ERB_CLOSING_TAG_ERROR_T*) error); break;
959
1293
  case NESTED_ERB_TAG_ERROR: return rb_nested_erb_tag_error_from_c_struct((NESTED_ERB_TAG_ERROR_T*) error); break;
960
1294
  case RENDER_AMBIGUOUS_LOCALS_ERROR: return rb_render_ambiguous_locals_error_from_c_struct((RENDER_AMBIGUOUS_LOCALS_ERROR_T*) error); break;
@@ -969,6 +1303,10 @@ VALUE rb_error_from_c_struct(ERROR_T* error) {
969
1303
  case STRICT_LOCALS_SPLAT_ARGUMENT_ERROR: return rb_strict_locals_splat_argument_error_from_c_struct((STRICT_LOCALS_SPLAT_ARGUMENT_ERROR_T*) error); break;
970
1304
  case STRICT_LOCALS_MISSING_PARENTHESIS_ERROR: return rb_strict_locals_missing_parenthesis_error_from_c_struct((STRICT_LOCALS_MISSING_PARENTHESIS_ERROR_T*) error); break;
971
1305
  case STRICT_LOCALS_DUPLICATE_DECLARATION_ERROR: return rb_strict_locals_duplicate_declaration_error_from_c_struct((STRICT_LOCALS_DUPLICATE_DECLARATION_ERROR_T*) error); break;
1306
+ case HERB_STATE_MISSING_PARENTHESIS_ERROR: return rb_herb_state_missing_parenthesis_error_from_c_struct((HERB_STATE_MISSING_PARENTHESIS_ERROR_T*) error); break;
1307
+ case HERB_STATE_NON_CANONICAL_DIRECTIVE_ERROR: return rb_herb_state_non_canonical_directive_error_from_c_struct((HERB_STATE_NON_CANONICAL_DIRECTIVE_ERROR_T*) error); break;
1308
+ case HERB_STATE_INVALID_PARAMETER_ERROR: return rb_herb_state_invalid_parameter_error_from_c_struct((HERB_STATE_INVALID_PARAMETER_ERROR_T*) error); break;
1309
+ case HERB_STATE_DUPLICATE_DECLARATION_ERROR: return rb_herb_state_duplicate_declaration_error_from_c_struct((HERB_STATE_DUPLICATE_DECLARATION_ERROR_T*) error); break;
972
1310
  case VOID_ELEMENT_CONTENT_ERROR: return rb_void_element_content_error_from_c_struct((VOID_ELEMENT_CONTENT_ERROR_T*) error); break;
973
1311
  case DOT_NOTATION_CASING_ERROR: return rb_dot_notation_casing_error_from_c_struct((DOT_NOTATION_CASING_ERROR_T*) error); break;
974
1312
  case TIMEOUT_ERROR: return rb_timeout_error_from_c_struct((TIMEOUT_ERROR_T*) error); break;
@@ -1,5 +1,5 @@
1
1
  // NOTE: This file is generated by the templates/template.rb script and should not
2
- // be modified manually. See /home/runner/work/herb/herb/templates/ext/herb/error_helpers.h.erb
2
+ // be modified manually. See templates/ext/herb/error_helpers.h.erb
3
3
 
4
4
  #ifndef HERB_EXTENSION_ERROR_HELPERS_H
5
5
  #define HERB_EXTENSION_ERROR_HELPERS_H
data/ext/herb/extconf.rb CHANGED
@@ -7,7 +7,6 @@ extension_name = "herb"
7
7
 
8
8
  if Herb::Bootstrap.git_source? && !Herb::Bootstrap.templates_generated?
9
9
  puts "Building from source — running bootstrap..."
10
- Herb::Bootstrap.generate_templates
11
10
 
12
11
  unless Herb::Bootstrap.prism_vendored?
13
12
  prism_path = Herb::Bootstrap.find_prism_gem_path
@@ -30,6 +29,8 @@ if Herb::Bootstrap.git_source? && !Herb::Bootstrap.templates_generated?
30
29
  Herb::Bootstrap.vendor_prism(prism_gem_path: prism_path)
31
30
  end
32
31
 
32
+ Herb::Bootstrap.generate_templates
33
+
33
34
  root_path = Herb::Bootstrap::ROOT_PATH
34
35
  sha = `git -C #{root_path} rev-parse --short HEAD 2>/dev/null`.strip
35
36
 
@@ -101,7 +102,8 @@ core_src_files = [
101
102
  "extension.c",
102
103
  "nodes.c",
103
104
  "error_helpers.c",
104
- "extension_helpers.c"
105
+ "extension_helpers.c",
106
+ "parser_options_helpers.c"
105
107
  ]
106
108
 
107
109
  $srcs = core_src_files + herb_src_files + prism_main_files + prism_util_files