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.
- checksums.yaml +4 -4
- data/Makefile +16 -6
- data/README.md +36 -119
- data/Rakefile +2 -11
- data/config/action_view_helpers/actioncable/action_cable_helper/action_cable_meta_tag.yml +12 -8
- data/config/action_view_helpers/actionpack/content_security_policy/content_security_policy?.yml +9 -6
- data/config/action_view_helpers/actionpack/content_security_policy/content_security_policy_nonce.yml +9 -6
- data/config/action_view_helpers/actionpack/polymorphic_routes/polymorphic_path.yml +20 -12
- data/config/action_view_helpers/actionpack/polymorphic_routes/polymorphic_url.yml +30 -18
- data/config/action_view_helpers/actionpack/request_forgery_protection/form_authenticity_token.yml +15 -9
- data/config/action_view_helpers/actionpack/request_forgery_protection/protect_against_forgery?.yml +9 -6
- data/config/action_view_helpers/actiontext/content_helper/render_action_text_content.yml +15 -9
- data/config/action_view_helpers/actiontext/content_helper/sanitize_action_text_content.yml +15 -9
- data/config/action_view_helpers/actiontext/tag_helper/rich_textarea_tag.yml +34 -22
- data/config/action_view_helpers/actionview/active_model_helper/error_message.yml +9 -6
- data/config/action_view_helpers/actionview/active_model_helper/error_wrapping.yml +9 -6
- data/config/action_view_helpers/actionview/active_model_helper/object.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/apply_stylesheet_media_default.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/audio_tag.yml +40 -27
- data/config/action_view_helpers/actionview/asset_tag_helper/auto_discovery_link_tag.yml +37 -23
- data/config/action_view_helpers/actionview/asset_tag_helper/auto_include_nonce.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/auto_include_nonce_for_scripts.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/auto_include_nonce_for_styles.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/favicon_link_tag.yml +32 -22
- data/config/action_view_helpers/actionview/asset_tag_helper/image_decoding.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/image_loading.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/image_tag.yml +67 -46
- data/config/action_view_helpers/actionview/asset_tag_helper/javascript_include_tag.yml +58 -39
- data/config/action_view_helpers/actionview/asset_tag_helper/picture_tag.yml +22 -14
- data/config/action_view_helpers/actionview/asset_tag_helper/preload_link_tag.yml +45 -30
- data/config/action_view_helpers/actionview/asset_tag_helper/preload_links_header.yml +9 -6
- data/config/action_view_helpers/actionview/asset_tag_helper/stylesheet_link_tag.yml +49 -30
- data/config/action_view_helpers/actionview/asset_tag_helper/video_tag.yml +53 -35
- data/config/action_view_helpers/actionview/asset_url_helper/asset_path.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/asset_url.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/audio_path.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/audio_url.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/compute_asset_extname.yml +9 -6
- data/config/action_view_helpers/actionview/asset_url_helper/compute_asset_host.yml +9 -6
- data/config/action_view_helpers/actionview/asset_url_helper/compute_asset_path.yml +9 -6
- data/config/action_view_helpers/actionview/asset_url_helper/font_path.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/font_url.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/image_path.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/image_url.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/javascript_path.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/javascript_url.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/public_compute_asset_path.yml +9 -6
- data/config/action_view_helpers/actionview/asset_url_helper/stylesheet_path.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/stylesheet_url.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/video_path.yml +16 -10
- data/config/action_view_helpers/actionview/asset_url_helper/video_url.yml +16 -10
- data/config/action_view_helpers/actionview/atom_feed_helper/atom_feed.yml +52 -27
- data/config/action_view_helpers/actionview/cache_helper/cache.yml +25 -15
- data/config/action_view_helpers/actionview/cache_helper/cache_fragment_name.yml +9 -6
- data/config/action_view_helpers/actionview/cache_helper/cache_if.yml +20 -12
- data/config/action_view_helpers/actionview/cache_helper/cache_unless.yml +20 -12
- data/config/action_view_helpers/actionview/cache_helper/caching_predicate.yml +9 -6
- data/config/action_view_helpers/actionview/cache_helper/digest_path_from_template.yml +9 -6
- data/config/action_view_helpers/actionview/cache_helper/fragment_for.yml +9 -6
- data/config/action_view_helpers/actionview/cache_helper/fragment_name_with_digest.yml +9 -6
- data/config/action_view_helpers/actionview/cache_helper/read_fragment_for.yml +9 -6
- data/config/action_view_helpers/actionview/cache_helper/uncacheable.yml +9 -6
- data/config/action_view_helpers/actionview/cache_helper/write_fragment_for.yml +9 -6
- data/config/action_view_helpers/actionview/capture_helper/capture.yml +9 -6
- data/config/action_view_helpers/actionview/capture_helper/content_for.yml +20 -12
- data/config/action_view_helpers/actionview/capture_helper/content_for_predicate.yml +15 -9
- data/config/action_view_helpers/actionview/capture_helper/provide.yml +15 -9
- data/config/action_view_helpers/actionview/capture_helper/with_output_buffer.yml +9 -6
- data/config/action_view_helpers/actionview/content_exfiltration_prevention_helper/prepend_content_exfiltration_prevention.yml +9 -6
- data/config/action_view_helpers/actionview/content_exfiltration_prevention_helper/prevent_content_exfiltration.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/action_name.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/assign_controller.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/controller.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/controller_name.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/controller_path.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/cookies.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/flash.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/headers.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/logger.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/params.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/request.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/request_forgery_protection_token.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/response.yml +9 -6
- data/config/action_view_helpers/actionview/controller_helper/session.yml +9 -6
- data/config/action_view_helpers/actionview/csp_helper/csp_meta_tag.yml +18 -11
- data/config/action_view_helpers/actionview/csrf_helper/csrf_meta_tags.yml +16 -10
- data/config/action_view_helpers/actionview/date_helper/date_select.yml +85 -51
- data/config/action_view_helpers/actionview/date_helper/datetime_select.yml +65 -39
- data/config/action_view_helpers/actionview/date_helper/distance_of_time_in_words.yml +30 -18
- data/config/action_view_helpers/actionview/date_helper/relative_time_in_words.yml +35 -21
- data/config/action_view_helpers/actionview/date_helper/select_date.yml +50 -30
- data/config/action_view_helpers/actionview/date_helper/select_datetime.yml +65 -39
- data/config/action_view_helpers/actionview/date_helper/select_day.yml +40 -24
- data/config/action_view_helpers/actionview/date_helper/select_hour.yml +50 -30
- data/config/action_view_helpers/actionview/date_helper/select_minute.yml +40 -24
- data/config/action_view_helpers/actionview/date_helper/select_month.yml +60 -36
- data/config/action_view_helpers/actionview/date_helper/select_second.yml +35 -21
- data/config/action_view_helpers/actionview/date_helper/select_time.yml +55 -33
- data/config/action_view_helpers/actionview/date_helper/select_year.yml +45 -27
- data/config/action_view_helpers/actionview/date_helper/time_ago_in_words.yml +21 -13
- data/config/action_view_helpers/actionview/date_helper/time_select.yml +60 -36
- data/config/action_view_helpers/actionview/date_helper/time_tag.yml +32 -20
- data/config/action_view_helpers/actionview/debug_helper/debug.yml +15 -9
- data/config/action_view_helpers/actionview/form_builder/button.yml +60 -0
- data/config/action_view_helpers/actionview/form_builder/submit.yml +48 -0
- data/config/action_view_helpers/actionview/form_helper/apply_form_for_options.yml +9 -6
- data/config/action_view_helpers/actionview/form_helper/checkbox.yml +41 -25
- data/config/action_view_helpers/actionview/form_helper/color_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/date_field.yml +35 -21
- data/config/action_view_helpers/actionview/form_helper/datetime_field.yml +41 -25
- data/config/action_view_helpers/actionview/form_helper/email_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/emitted_hidden_id.yml +9 -6
- data/config/action_view_helpers/actionview/form_helper/fields.yml +37 -18
- data/config/action_view_helpers/actionview/form_helper/fields_for.yml +33 -15
- data/config/action_view_helpers/actionview/form_helper/file_field.yml +45 -27
- data/config/action_view_helpers/actionview/form_helper/form_for.yml +45 -24
- data/config/action_view_helpers/actionview/form_helper/form_with.yml +56 -30
- data/config/action_view_helpers/actionview/form_helper/form_with_generates_ids.yml +9 -6
- data/config/action_view_helpers/actionview/form_helper/form_with_generates_remote_forms.yml +9 -6
- data/config/action_view_helpers/actionview/form_helper/hidden_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/label.yml +52 -27
- data/config/action_view_helpers/actionview/form_helper/month_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/multipart.yml +9 -6
- data/config/action_view_helpers/actionview/form_helper/multiple_file_field_include_hidden.yml +9 -6
- data/config/action_view_helpers/actionview/form_helper/number_field.yml +45 -27
- data/config/action_view_helpers/actionview/form_helper/password_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/radio_button.yml +30 -18
- data/config/action_view_helpers/actionview/form_helper/range_field.yml +45 -27
- data/config/action_view_helpers/actionview/form_helper/search_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/telephone_field.yml +26 -16
- data/config/action_view_helpers/actionview/form_helper/text_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/textarea.yml +31 -19
- data/config/action_view_helpers/actionview/form_helper/time_field.yml +40 -24
- data/config/action_view_helpers/actionview/form_helper/url_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_helper/week_field.yml +25 -15
- data/config/action_view_helpers/actionview/form_options_helper/collection_checkboxes.yml +58 -31
- data/config/action_view_helpers/actionview/form_options_helper/collection_radio_buttons.yml +57 -30
- data/config/action_view_helpers/actionview/form_options_helper/collection_select.yml +65 -39
- data/config/action_view_helpers/actionview/form_options_helper/grouped_collection_select.yml +65 -39
- data/config/action_view_helpers/actionview/form_options_helper/grouped_options_for_select.yml +35 -21
- data/config/action_view_helpers/actionview/form_options_helper/option_groups_from_collection_for_select.yml +40 -24
- data/config/action_view_helpers/actionview/form_options_helper/options_for_select.yml +20 -12
- data/config/action_view_helpers/actionview/form_options_helper/options_from_collection_for_select.yml +30 -18
- data/config/action_view_helpers/actionview/form_options_helper/select.yml +60 -36
- data/config/action_view_helpers/actionview/form_options_helper/time_zone_options_for_select.yml +25 -15
- data/config/action_view_helpers/actionview/form_options_helper/time_zone_select.yml +50 -30
- data/config/action_view_helpers/actionview/form_options_helper/weekday_options_for_select.yml +30 -18
- data/config/action_view_helpers/actionview/form_options_helper/weekday_select.yml +30 -18
- data/config/action_view_helpers/actionview/form_tag_helper/button_tag.yml +39 -21
- data/config/action_view_helpers/actionview/form_tag_helper/checkbox_tag.yml +33 -21
- data/config/action_view_helpers/actionview/form_tag_helper/color_field_tag.yml +26 -17
- data/config/action_view_helpers/actionview/form_tag_helper/date_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/datetime_field_tag.yml +28 -18
- data/config/action_view_helpers/actionview/form_tag_helper/default_enforce_utf8.yml +9 -6
- data/config/action_view_helpers/actionview/form_tag_helper/email_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/embed_authenticity_token_in_remote_forms.yml +9 -6
- data/config/action_view_helpers/actionview/form_tag_helper/field_id.yml +30 -18
- data/config/action_view_helpers/actionview/form_tag_helper/field_name.yml +30 -18
- data/config/action_view_helpers/actionview/form_tag_helper/field_set_tag.yml +23 -15
- data/config/action_view_helpers/actionview/form_tag_helper/file_field_tag.yml +35 -22
- data/config/action_view_helpers/actionview/form_tag_helper/form_tag.yml +38 -24
- data/config/action_view_helpers/actionview/form_tag_helper/hidden_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/image_submit_tag.yml +31 -21
- data/config/action_view_helpers/actionview/form_tag_helper/label_tag.yml +33 -17
- data/config/action_view_helpers/actionview/form_tag_helper/month_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/number_field_tag.yml +47 -29
- data/config/action_view_helpers/actionview/form_tag_helper/password_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/radio_button_tag.yml +32 -20
- data/config/action_view_helpers/actionview/form_tag_helper/range_field_tag.yml +47 -29
- data/config/action_view_helpers/actionview/form_tag_helper/search_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/select_tag.yml +47 -29
- data/config/action_view_helpers/actionview/form_tag_helper/submit_tag.yml +33 -21
- data/config/action_view_helpers/actionview/form_tag_helper/telephone_field_tag.yml +28 -18
- data/config/action_view_helpers/actionview/form_tag_helper/text_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/textarea_tag.yml +31 -20
- data/config/action_view_helpers/actionview/form_tag_helper/time_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/url_field_tag.yml +27 -17
- data/config/action_view_helpers/actionview/form_tag_helper/utf8_enforcer_tag.yml +9 -6
- data/config/action_view_helpers/actionview/form_tag_helper/week_field_tag.yml +28 -18
- data/config/action_view_helpers/actionview/javascript_helper/escape_javascript.yml +16 -10
- data/config/action_view_helpers/actionview/javascript_helper/javascript_cdata_section.yml +9 -6
- data/config/action_view_helpers/actionview/javascript_helper/javascript_tag.yml +41 -27
- data/config/action_view_helpers/actionview/number_helper/number_to_currency.yml +29 -18
- data/config/action_view_helpers/actionview/number_helper/number_to_human.yml +25 -15
- data/config/action_view_helpers/actionview/number_helper/number_to_human_size.yml +20 -12
- data/config/action_view_helpers/actionview/number_helper/number_to_percentage.yml +20 -12
- data/config/action_view_helpers/actionview/number_helper/number_to_phone.yml +33 -20
- data/config/action_view_helpers/actionview/number_helper/number_with_delimiter.yml +21 -13
- data/config/action_view_helpers/actionview/number_helper/number_with_precision.yml +25 -15
- data/config/action_view_helpers/actionview/output_safety_helper/raw.yml +15 -9
- data/config/action_view_helpers/actionview/output_safety_helper/safe_join.yml +20 -12
- data/config/action_view_helpers/actionview/output_safety_helper/to_sentence.yml +24 -15
- data/config/action_view_helpers/actionview/record_identifier/dom_class.yml +20 -12
- data/config/action_view_helpers/actionview/record_identifier/dom_id.yml +20 -12
- data/config/action_view_helpers/actionview/record_identifier/dom_target.yml +15 -9
- data/config/action_view_helpers/actionview/record_identifier/model_name_from_record_or_class.yml +9 -6
- data/config/action_view_helpers/actionview/rendering_helper/render.yml +108 -22
- data/config/action_view_helpers/actionview/sanitize_helper/sanitize.yml +25 -15
- data/config/action_view_helpers/actionview/sanitize_helper/sanitize_css.yml +15 -9
- data/config/action_view_helpers/actionview/sanitize_helper/sanitizer_vendor.yml +9 -6
- data/config/action_view_helpers/actionview/sanitize_helper/strip_links.yml +15 -9
- data/config/action_view_helpers/actionview/sanitize_helper/strip_tags.yml +15 -9
- data/config/action_view_helpers/actionview/tag_helper/cdata_section.yml +15 -9
- data/config/action_view_helpers/actionview/tag_helper/content_tag.yml +59 -38
- data/config/action_view_helpers/actionview/tag_helper/escape_once.yml +15 -9
- data/config/action_view_helpers/actionview/tag_helper/tag.yml +54 -31
- data/config/action_view_helpers/actionview/tag_helper/token_list.yml +16 -10
- data/config/action_view_helpers/actionview/text_helper/concat.yml +15 -9
- data/config/action_view_helpers/actionview/text_helper/current_cycle.yml +15 -9
- data/config/action_view_helpers/actionview/text_helper/cycle.yml +23 -14
- data/config/action_view_helpers/actionview/text_helper/excerpt.yml +33 -20
- data/config/action_view_helpers/actionview/text_helper/highlight.yml +37 -18
- data/config/action_view_helpers/actionview/text_helper/pluralize.yml +30 -18
- data/config/action_view_helpers/actionview/text_helper/reset_cycle.yml +15 -9
- data/config/action_view_helpers/actionview/text_helper/safe_concat.yml +9 -6
- data/config/action_view_helpers/actionview/text_helper/simple_format.yml +33 -20
- data/config/action_view_helpers/actionview/text_helper/truncate.yml +38 -23
- data/config/action_view_helpers/actionview/text_helper/word_wrap.yml +25 -15
- data/config/action_view_helpers/actionview/translation_helper/debug_missing_translation.yml +9 -6
- data/config/action_view_helpers/actionview/translation_helper/localize.yml +26 -16
- data/config/action_view_helpers/actionview/translation_helper/translate.yml +31 -19
- data/config/action_view_helpers/actionview/url_helper/button_to.yml +57 -33
- data/config/action_view_helpers/actionview/url_helper/button_to_generates_button_tag.yml +9 -6
- data/config/action_view_helpers/actionview/url_helper/current_page?.yml +25 -15
- data/config/action_view_helpers/actionview/url_helper/link_to.yml +76 -53
- data/config/action_view_helpers/actionview/url_helper/link_to_if.yml +54 -20
- data/config/action_view_helpers/actionview/url_helper/link_to_unless.yml +54 -20
- data/config/action_view_helpers/actionview/url_helper/link_to_unless_current.yml +49 -17
- data/config/action_view_helpers/actionview/url_helper/mail_to.yml +60 -34
- data/config/action_view_helpers/actionview/url_helper/phone_to.yml +40 -22
- data/config/action_view_helpers/actionview/url_helper/sms_to.yml +45 -25
- data/config/action_view_helpers/actionview/url_helper/url_for.yml +15 -9
- data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_import_module_tag.yml +32 -0
- data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_importmap_module_preload_tags.yml +39 -0
- data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_importmap_tags.yml +35 -0
- data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_inline_importmap_tag.yml +32 -0
- data/config/action_view_helpers/importmap-rails/importmap_tags_helper/javascript_module_preload_tag.yml +35 -0
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_cache.yml +9 -6
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_cache_tag.yml +12 -8
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_preview.yml +9 -6
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_exempts_page_from_preview_tag.yml +12 -8
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_page_requires_reload.yml +9 -6
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_page_requires_reload_tag.yml +12 -8
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_refresh_method_tag.yml +17 -11
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_refresh_scroll_tag.yml +17 -11
- data/config/action_view_helpers/turbo-rails/drive_helper/turbo_refreshes_with.yml +20 -12
- data/config/action_view_helpers/turbo-rails/frames_helper/turbo_frame_tag.yml +54 -33
- data/config/action_view_helpers/turbo-rails/includes_helper/turbo_include_tags.yml +9 -6
- data/config/action_view_helpers/turbo-rails/streams_action_helper/turbo_stream_action_tag.yml +32 -20
- data/config/action_view_helpers/turbo-rails/streams_action_helper/turbo_stream_refresh_tag.yml +18 -11
- data/config/action_view_helpers/turbo-rails/streams_helper/turbo_stream.yml +9 -6
- data/config/action_view_helpers/turbo-rails/streams_helper/turbo_stream_from.yml +28 -18
- data/config/html_elements.yml +597 -0
- data/config/options.yml +1 -0
- data/config/slots/components.yml +52 -0
- data/config/state/kind.yml +61 -0
- data/config/state/operators.yml +27 -0
- data/config/state/predicates.yml +39 -0
- data/config/state/transforms.yml +18 -0
- data/config/view_context_methods/actionview/base/annotate_rendered_view_with_filenames.yml +4 -4
- data/config/view_context_methods/actionview/base/assign.yml +4 -4
- data/config/view_context_methods/actionview/base/assigns.yml +4 -4
- data/config/view_context_methods/actionview/base/automatically_disable_submit_tag.yml +4 -4
- data/config/view_context_methods/actionview/base/compiled_method_container.yml +4 -4
- data/config/view_context_methods/actionview/base/config.yml +4 -4
- data/config/view_context_methods/actionview/base/default_form_builder.yml +4 -4
- data/config/view_context_methods/actionview/base/default_formats.yml +4 -4
- data/config/view_context_methods/actionview/base/field_error_proc.yml +4 -4
- data/config/view_context_methods/actionview/base/formats.yml +4 -4
- data/config/view_context_methods/actionview/base/in_rendering_context.yml +4 -4
- data/config/view_context_methods/actionview/base/locale.yml +4 -4
- data/config/view_context_methods/actionview/base/lookup_context.yml +4 -4
- data/config/view_context_methods/actionview/base/output_buffer.yml +4 -4
- data/config/view_context_methods/actionview/base/prefix_partial_path_with_controller_namespace.yml +4 -4
- data/config/view_context_methods/actionview/base/remove_hidden_field_autocomplete.yml +4 -4
- data/config/view_context_methods/actionview/base/streaming_completion_on_exception.yml +4 -4
- data/config/view_context_methods/actionview/base/view_flow.yml +4 -4
- data/config/view_context_methods/actionview/base/view_paths.yml +4 -4
- data/config/view_context_methods/actionview/base/view_renderer.yml +4 -4
- data/config/view_context_methods/actionview/template/local_assigns.yml +4 -4
- data/config/view_context_methods/activemodel/conversion/convert_to_model.yml +4 -4
- data/config/view_context_methods/activesupport/benchmarkable/benchmark.yml +4 -4
- data/config.yml +1240 -790
- data/exe/herb +2 -0
- data/ext/herb/error_helpers.c +355 -17
- data/ext/herb/error_helpers.h +1 -1
- data/ext/herb/extconf.rb +4 -2
- data/ext/herb/extension.c +137 -89
- data/ext/herb/extension_helpers.c +81 -42
- data/ext/herb/extension_helpers.h +4 -1
- data/ext/herb/nodes.c +826 -358
- data/ext/herb/nodes.h +3 -2
- data/ext/herb/parser_options_helpers.c +151 -0
- data/ext/herb/parser_options_helpers.h +14 -0
- data/herb.gemspec +2 -2
- data/lib/herb/action_view/helper_registry.rb +1358 -62
- data/lib/herb/analysis/partial_declaration.rb +140 -0
- data/lib/herb/analysis/partial_index.rb +189 -0
- data/lib/herb/analysis/partial_resolution.rb +161 -0
- data/lib/herb/analysis/partial_resolver.rb +144 -0
- data/lib/herb/analysis/project_index.rb +152 -0
- data/lib/herb/{action_view → analysis}/render_analyzer.rb +287 -77
- data/lib/herb/analysis/render_graph/ancestor_chain.rb +27 -0
- data/lib/herb/analysis/render_graph/builder.rb +376 -0
- data/lib/herb/analysis/render_graph/call_frame.rb +9 -0
- data/lib/herb/analysis/render_graph/call_site_location.rb +23 -0
- data/lib/herb/analysis/render_graph/inferred_signature.rb +21 -0
- data/lib/herb/analysis/render_graph/partial_call_site.rb +40 -0
- data/lib/herb/analysis/render_graph/partial_context.rb +46 -0
- data/lib/herb/analysis/render_graph/template_roots.rb +31 -0
- data/lib/herb/analysis/render_graph.rb +285 -0
- data/lib/herb/analysis/ruby_locals_index/local.rb +25 -0
- data/lib/herb/analysis/ruby_locals_index/named_reference.rb +22 -0
- data/lib/herb/analysis/ruby_locals_index/offset_table.rb +44 -0
- data/lib/herb/analysis/ruby_locals_index/reference_collector.rb +80 -0
- data/lib/herb/analysis/ruby_locals_index/state_locals.rb +49 -0
- data/lib/herb/analysis/ruby_locals_index.rb +165 -0
- data/lib/herb/analysis/ruby_reference.rb +67 -0
- data/lib/herb/analysis/template_dependencies/dependency_collector.rb +179 -0
- data/lib/herb/analysis/template_dependencies/node_dependency_collector.rb +309 -0
- data/lib/herb/analysis/template_dependencies.rb +562 -0
- data/lib/herb/ast/erb_render_node.rb +26 -94
- data/lib/herb/ast/helpers.rb +90 -10
- data/lib/herb/ast/herb_directive_node.rb +18 -0
- data/lib/herb/ast/node.rb +32 -2
- data/lib/herb/ast/nodes.rb +1342 -105
- data/lib/herb/backend.rb +73 -0
- data/lib/herb/bootstrap.rb +3 -7
- data/lib/herb/cli.rb +550 -32
- data/lib/herb/colors.rb +14 -0
- data/lib/herb/configuration.rb +71 -35
- data/lib/herb/defaults.yml +2 -1
- data/lib/herb/dev/assets.rb +57 -0
- data/lib/herb/dev/classifier.rb +84 -0
- data/lib/herb/dev/embedded.rb +27 -0
- data/lib/herb/dev/pipeline.rb +305 -0
- data/lib/herb/dev/protocol.rb +221 -0
- data/lib/herb/dev/runner.rb +175 -175
- data/lib/herb/dev/server.rb +89 -26
- data/lib/herb/dev/server_entry.rb +41 -6
- data/lib/herb/dev/watcher.rb +181 -0
- data/lib/herb/dev.rb +163 -0
- data/lib/herb/diagnostic/formatter.rb +88 -0
- data/lib/herb/diagnostic.rb +172 -0
- data/lib/herb/diff/operation.rb +36 -0
- data/lib/herb/diff/result.rb +62 -0
- data/lib/herb/diff.rb +10 -0
- data/lib/herb/engine/collector.rb +62 -0
- data/lib/herb/engine/compiler.rb +346 -108
- data/lib/herb/engine/component_tags/constant_resolver.rb +28 -0
- data/lib/herb/engine/component_tags/partial_resolver.rb +54 -0
- data/lib/herb/engine/component_tags/resolver.rb +32 -0
- data/lib/herb/engine/component_tags/visitor.rb +231 -0
- data/lib/herb/engine/css_inliner/inliner.rb +101 -0
- data/lib/herb/engine/css_inliner/visitor.rb +174 -0
- data/lib/herb/engine/errors.rb +122 -0
- data/lib/herb/engine/helpers.rb +82 -0
- data/lib/herb/engine/inline_render/inliner.rb +122 -0
- data/lib/herb/engine/inline_render/visitor.rb +267 -0
- data/lib/herb/engine/runtime/entry.rb +62 -0
- data/lib/herb/engine/runtime/error_page.rb +362 -0
- data/lib/herb/engine/runtime/html_safe_assertions.rb +217 -0
- data/lib/herb/engine/runtime/journal/summary.rb +227 -0
- data/lib/herb/engine/runtime/journal.rb +379 -0
- data/lib/herb/engine/runtime/middleware.rb +212 -0
- data/lib/herb/engine/runtime/observations.rb +73 -0
- data/lib/herb/engine/runtime/report.rb +204 -0
- data/lib/herb/engine/runtime/session.rb +437 -0
- data/lib/herb/engine/runtime.rb +21 -0
- data/lib/herb/engine/scoped_style/channel.rb +66 -0
- data/lib/herb/engine/scoped_style/collector.rb +74 -0
- data/lib/herb/engine/scoped_style/visitor.rb +533 -0
- data/lib/herb/engine/slots/annotation.rb +98 -0
- data/lib/herb/engine/slots/bindings.rb +61 -0
- data/lib/herb/engine/slots/callee.rb +118 -0
- data/lib/herb/engine/slots/component_definitions.rb +67 -0
- data/lib/herb/engine/slots/components/async.rb +24 -0
- data/lib/herb/engine/slots/components/base.rb +132 -0
- data/lib/herb/engine/slots/components/deferred.rb +81 -0
- data/lib/herb/engine/slots/components/fallback.rb +27 -0
- data/lib/herb/engine/slots/components/fragment.rb +99 -0
- data/lib/herb/engine/slots/components/lazy.rb +24 -0
- data/lib/herb/engine/slots/components.rb +52 -0
- data/lib/herb/engine/slots/dependencies/channel.rb +72 -0
- data/lib/herb/engine/slots/dependencies.rb +269 -0
- data/lib/herb/engine/slots/dynamics_compiler.rb +854 -0
- data/lib/herb/engine/slots/identifier.rb +35 -0
- data/lib/herb/engine/slots/manifest/channel.rb +74 -0
- data/lib/herb/engine/slots/manifest/collector.rb +75 -0
- data/lib/herb/engine/slots/markers.rb +128 -0
- data/lib/herb/engine/slots/render_bindings.rb +141 -0
- data/lib/herb/engine/slots/schema_compiler.rb +94 -0
- data/lib/herb/engine/slots/state_anchor.rb +94 -0
- data/lib/herb/engine/slots/state_compiler.rb +1326 -0
- data/lib/herb/engine/slots/state_directives.rb +854 -0
- data/lib/herb/engine/slots/state_kinds.rb +54 -0
- data/lib/herb/engine/slots/state_operators.rb +36 -0
- data/lib/herb/engine/slots/state_overrides.rb +79 -0
- data/lib/herb/engine/slots/state_predicates.rb +65 -0
- data/lib/herb/engine/slots/state_transforms.rb +42 -0
- data/lib/herb/engine/slots/statics.rb +185 -0
- data/lib/herb/engine/slots/subtree.rb +82 -0
- data/lib/herb/engine/slots/subtree_compiler.rb +255 -0
- data/lib/herb/engine/slots/types.rb +42 -0
- data/lib/herb/engine/slots/visitor.rb +2256 -0
- data/lib/herb/engine/validators/accessibility_validator.rb +3 -3
- data/lib/herb/engine/validators/base.rb +36 -0
- data/lib/herb/engine/validators/generator_template_validator.rb +39 -0
- data/lib/herb/engine/validators/nesting_validator.rb +3 -3
- data/lib/herb/engine/validators/render_validator.rb +13 -33
- data/lib/herb/engine/validators/security_validator.rb +3 -17
- data/lib/herb/engine/validators.rb +43 -0
- data/lib/herb/engine/visitors/auto_close_omitted_tags_visitor.rb +48 -0
- data/lib/herb/engine/visitors/content_for_visitor.rb +127 -0
- data/lib/herb/engine/{debug_visitor.rb → visitors/debug_visitor.rb} +121 -93
- data/lib/herb/engine/visitors/html_safe_assertions_visitor.rb +281 -0
- data/lib/herb/engine/visitors/instrumentation_visitor.rb +290 -0
- data/lib/herb/engine/visitors/optimize_visitor.rb +728 -0
- data/lib/herb/engine/visitors/remove_comments_visitor.rb +106 -0
- data/lib/herb/engine/visitors/source_attribution_visitor.rb +177 -0
- data/lib/herb/engine.rb +218 -257
- data/lib/herb/ensure_installed.rb +43 -0
- data/lib/herb/errors.rb +646 -157
- data/lib/herb/fingerprint.rb +82 -0
- data/lib/herb/html/elements.rb +18 -0
- data/lib/herb/html/util.rb +21 -2
- data/lib/herb/lex_result.rb +0 -10
- data/lib/herb/locate.rb +163 -0
- data/lib/herb/location.rb +20 -0
- data/lib/herb/parse_result.rb +17 -11
- data/lib/herb/parser_options.rb +65 -46
- data/lib/herb/position.rb +19 -0
- data/lib/herb/prism_inspect.rb +1 -4
- data/lib/herb/project.rb +28 -15
- data/lib/herb/range.rb +5 -0
- data/lib/herb/result.rb +2 -2
- data/lib/herb/ruby_program.rb +110 -0
- data/lib/herb/source_path.rb +232 -0
- data/lib/herb/token.rb +14 -3
- data/lib/herb/version.rb +1 -1
- data/lib/herb/visitor/context/origin.rb +52 -0
- data/lib/herb/visitor/context/replacements.rb +59 -0
- data/lib/herb/visitor/context.rb +169 -0
- data/lib/herb/visitor/context_aware.rb +45 -0
- data/lib/herb/visitor/diagnostics.rb +148 -0
- data/lib/herb/visitor/experimental.rb +33 -0
- data/lib/herb/visitor/parser_option_requirements.rb +151 -0
- data/lib/herb/visitor/stack.rb +192 -0
- data/lib/herb/visitor.rb +47 -1
- data/lib/herb/warnings.rb +25 -0
- data/lib/herb.rb +74 -63
- data/sig/herb/action_view/helper_registry.rbs +82 -10
- data/sig/herb/analysis/partial_declaration.rbs +80 -0
- data/sig/herb/analysis/partial_index.rbs +66 -0
- data/sig/herb/analysis/partial_resolution.rbs +57 -0
- data/sig/herb/analysis/partial_resolver.rbs +76 -0
- data/sig/herb/analysis/project_index.rbs +57 -0
- data/sig/herb/{action_view → analysis}/render_analyzer.rbs +25 -4
- data/sig/herb/analysis/render_graph/ancestor_chain.rbs +22 -0
- data/sig/herb/analysis/render_graph/builder.rbs +180 -0
- data/sig/herb/analysis/render_graph/call_frame.rbs +26 -0
- data/sig/herb/analysis/render_graph/call_site_location.rbs +28 -0
- data/sig/herb/analysis/render_graph/inferred_signature.rbs +27 -0
- data/sig/herb/analysis/render_graph/partial_call_site.rbs +36 -0
- data/sig/herb/analysis/render_graph/partial_context.rbs +31 -0
- data/sig/herb/analysis/render_graph/template_roots.rbs +32 -0
- data/sig/herb/analysis/render_graph.rbs +83 -0
- data/sig/herb/analysis/ruby_locals_index/local.rbs +21 -0
- data/sig/herb/analysis/ruby_locals_index/named_reference.rbs +20 -0
- data/sig/herb/analysis/ruby_locals_index/offset_table.rbs +26 -0
- data/sig/herb/analysis/ruby_locals_index/reference_collector.rbs +40 -0
- data/sig/herb/analysis/ruby_locals_index/state_locals.rbs +19 -0
- data/sig/herb/analysis/ruby_locals_index.rbs +62 -0
- data/sig/herb/analysis/ruby_reference.rbs +28 -0
- data/sig/herb/analysis/template_dependencies/dependency_collector.rbs +52 -0
- data/sig/herb/analysis/template_dependencies/node_dependency_collector.rbs +81 -0
- data/sig/herb/analysis/template_dependencies.rbs +125 -0
- data/sig/herb/ast/erb_render_node.rbs +10 -2
- data/sig/herb/ast/helpers.rbs +31 -1
- data/sig/herb/ast/herb_directive_node.rbs +13 -0
- data/sig/herb/ast/node.rbs +9 -0
- data/sig/herb/ast/nodes.rbs +662 -89
- data/sig/herb/backend.rbs +52 -0
- data/sig/herb/colors.rbs +3 -0
- data/sig/herb/configuration.rbs +27 -3
- data/sig/herb/dev/assets.rbs +27 -0
- data/sig/herb/dev/classifier.rbs +57 -0
- data/sig/herb/dev/embedded.rbs +21 -0
- data/sig/herb/dev/pipeline.rbs +118 -0
- data/sig/herb/dev/protocol.rbs +78 -0
- data/sig/herb/dev/runner.rbs +61 -23
- data/sig/herb/dev/server.rbs +49 -22
- data/sig/herb/dev/server_entry.rbs +46 -21
- data/sig/herb/dev/watcher.rbs +84 -0
- data/sig/herb/dev.rbs +58 -0
- data/sig/herb/diagnostic/formatter.rbs +28 -0
- data/sig/herb/diagnostic.rbs +88 -0
- data/sig/herb/diff/operation.rbs +36 -0
- data/sig/herb/diff/result.rbs +36 -0
- data/sig/herb/diff.rbs +6 -0
- data/sig/herb/engine/collector.rbs +48 -0
- data/sig/herb/engine/compiler.rbs +62 -23
- data/sig/herb/engine/component_tags/constant_resolver.rbs +19 -0
- data/sig/herb/engine/component_tags/partial_resolver.rbs +30 -0
- data/sig/herb/engine/component_tags/resolver.rbs +25 -0
- data/sig/herb/engine/component_tags/visitor.rbs +69 -0
- data/sig/herb/engine/css_inliner/inliner.rbs +65 -0
- data/sig/herb/engine/css_inliner/visitor.rbs +87 -0
- data/sig/herb/engine/errors.rbs +68 -0
- data/sig/herb/engine/helpers.rbs +28 -0
- data/sig/herb/engine/inline_render/inliner.rbs +39 -0
- data/sig/herb/engine/inline_render/visitor.rbs +104 -0
- data/sig/herb/engine/runtime/entry.rbs +43 -0
- data/sig/herb/engine/runtime/error_page.rbs +115 -0
- data/sig/herb/engine/runtime/html_safe_assertions.rbs +99 -0
- data/sig/herb/engine/runtime/journal/summary.rbs +172 -0
- data/sig/herb/engine/runtime/journal.rbs +126 -0
- data/sig/herb/engine/runtime/middleware.rbs +96 -0
- data/sig/herb/engine/runtime/observations.rbs +38 -0
- data/sig/herb/engine/runtime/report.rbs +97 -0
- data/sig/herb/engine/runtime/session.rbs +233 -0
- data/sig/herb/engine/runtime.rbs +14 -0
- data/sig/herb/engine/scoped_style/channel.rbs +45 -0
- data/sig/herb/engine/scoped_style/collector.rbs +45 -0
- data/sig/herb/engine/scoped_style/visitor.rbs +220 -0
- data/sig/herb/engine/slots/annotation.rbs +72 -0
- data/sig/herb/engine/slots/bindings.rbs +34 -0
- data/sig/herb/engine/slots/callee.rbs +62 -0
- data/sig/herb/engine/slots/component_definitions.rbs +19 -0
- data/sig/herb/engine/slots/components/async.rbs +20 -0
- data/sig/herb/engine/slots/components/base.rbs +60 -0
- data/sig/herb/engine/slots/components/deferred.rbs +29 -0
- data/sig/herb/engine/slots/components/fallback.rbs +21 -0
- data/sig/herb/engine/slots/components/fragment.rbs +34 -0
- data/sig/herb/engine/slots/components/lazy.rbs +20 -0
- data/sig/herb/engine/slots/components.rbs +30 -0
- data/sig/herb/engine/slots/dependencies/channel.rbs +51 -0
- data/sig/herb/engine/slots/dependencies.rbs +94 -0
- data/sig/herb/engine/slots/dynamics_compiler.rbs +349 -0
- data/sig/herb/engine/slots/identifier.rbs +19 -0
- data/sig/herb/engine/slots/manifest/channel.rbs +49 -0
- data/sig/herb/engine/slots/manifest/collector.rbs +45 -0
- data/sig/herb/engine/slots/markers.rbs +85 -0
- data/sig/herb/engine/slots/render_bindings.rbs +69 -0
- data/sig/herb/engine/slots/schema_compiler.rbs +62 -0
- data/sig/herb/engine/slots/state_anchor.rbs +41 -0
- data/sig/herb/engine/slots/state_compiler.rbs +258 -0
- data/sig/herb/engine/slots/state_directives.rbs +278 -0
- data/sig/herb/engine/slots/state_kinds.rbs +24 -0
- data/sig/herb/engine/slots/state_operators.rbs +19 -0
- data/sig/herb/engine/slots/state_overrides.rbs +33 -0
- data/sig/herb/engine/slots/state_predicates.rbs +16 -0
- data/sig/herb/engine/slots/state_transforms.rbs +15 -0
- data/sig/herb/engine/slots/statics.rbs +67 -0
- data/sig/herb/engine/slots/subtree.rbs +49 -0
- data/sig/herb/engine/slots/subtree_compiler.rbs +130 -0
- data/sig/herb/engine/slots/types.rbs +46 -0
- data/sig/herb/engine/slots/visitor.rbs +599 -0
- data/sig/herb/engine/validators/accessibility_validator.rbs +1 -1
- data/sig/herb/engine/validators/base.rbs +28 -0
- data/sig/herb/engine/validators/generator_template_validator.rbs +19 -0
- data/sig/herb/engine/validators/nesting_validator.rbs +1 -1
- data/sig/herb/engine/validators/render_validator.rbs +2 -6
- data/sig/herb/engine/validators/security_validator.rbs +1 -3
- data/sig/herb/engine/validators.rbs +21 -0
- data/sig/herb/engine/visitors/auto_close_omitted_tags_visitor.rbs +26 -0
- data/sig/herb/engine/visitors/content_for_visitor.rbs +52 -0
- data/sig/herb/engine/{debug_visitor.rbs → visitors/debug_visitor.rbs} +26 -15
- data/sig/herb/engine/visitors/html_safe_assertions_visitor.rbs +100 -0
- data/sig/herb/engine/visitors/instrumentation_visitor.rbs +111 -0
- data/sig/herb/engine/visitors/optimize_visitor.rbs +246 -0
- data/sig/herb/engine/visitors/remove_comments_visitor.rbs +66 -0
- data/sig/herb/engine/visitors/source_attribution_visitor.rbs +90 -0
- data/sig/herb/engine.rbs +47 -41
- data/sig/herb/ensure_installed.rbs +9 -0
- data/sig/herb/errors.rbs +293 -0
- data/sig/herb/fingerprint.rbs +37 -0
- data/sig/herb/html/elements.rbs +19 -0
- data/sig/herb/html/util.rbs +15 -1
- data/sig/herb/lex_result.rbs +0 -6
- data/sig/herb/locate.rbs +89 -0
- data/sig/herb/location.rbs +12 -0
- data/sig/herb/parse_result.rbs +10 -8
- data/sig/herb/parser_options.rbs +47 -21
- data/sig/herb/position.rbs +11 -0
- data/sig/herb/range.rbs +3 -0
- data/sig/herb/ruby_program.rbs +51 -0
- data/sig/herb/source_path.rbs +132 -0
- data/sig/herb/token.rbs +5 -2
- data/sig/herb/visitor/context/origin.rbs +51 -0
- data/sig/herb/visitor/context/replacements.rbs +39 -0
- data/sig/herb/visitor/context.rbs +83 -0
- data/sig/herb/visitor/context_aware.rbs +32 -0
- data/sig/herb/visitor/diagnostics.rbs +82 -0
- data/sig/herb/visitor/experimental.rbs +23 -0
- data/sig/herb/visitor/parser_option_requirements.rbs +76 -0
- data/sig/herb/visitor/stack.rbs +91 -0
- data/sig/herb/visitor.rbs +22 -0
- data/sig/herb/warnings.rbs +10 -0
- data/sig/herb.rbs +27 -10
- data/sig/serialized_ast_errors.rbs +58 -1
- data/sig/serialized_ast_nodes.rbs +58 -2
- data/src/analyze/action_view/attribute_extraction_helpers.c +73 -36
- data/src/analyze/action_view/generated_handlers.c +37 -1
- data/src/analyze/action_view/generated_handlers.h +2 -1
- data/src/analyze/action_view/helper_registry.c +1353 -58
- data/src/analyze/action_view/registry.c +10 -17
- data/src/analyze/action_view/stylesheet_link_tag.c +40 -0
- data/src/analyze/action_view/tag_helper_node_builders.c +57 -0
- data/src/analyze/action_view/tag_helpers.c +423 -93
- data/src/analyze/analyze.c +301 -64
- data/src/analyze/analyze_helpers.c +420 -23
- data/src/analyze/builders.c +79 -51
- data/src/analyze/conditional_elements.c +13 -8
- data/src/analyze/conditional_open_tags.c +11 -5
- data/src/analyze/control_type.c +16 -1
- data/src/analyze/herb_directives.c +701 -0
- data/src/analyze/invalid_structures.c +11 -7
- data/src/analyze/iteration_nodes.c +306 -0
- data/src/analyze/missing_end.c +116 -32
- data/src/analyze/parse_errors.c +8 -3
- data/src/analyze/postfix_conditionals.c +98 -63
- data/src/analyze/prism_annotate.c +13 -4
- data/src/analyze/render_nodes.c +345 -123
- data/src/analyze/strict_locals.c +30 -26
- data/src/analyze/ternary_conditionals.c +95 -70
- data/src/analyze/transform.c +43 -1
- data/src/ast/ast_node.c +3 -13
- data/src/ast/ast_nodes.c +911 -112
- data/src/ast/ast_pretty_print.c +161 -2
- data/src/diff/herb_diff.c +8 -0
- data/src/diff/herb_diff_attributes.c +1 -0
- data/src/diff/herb_diff_children.c +4 -3
- data/src/diff/herb_diff_helpers.c +7 -1
- data/src/diff/herb_diff_nodes.c +186 -71
- data/src/diff/herb_hash_tree.c +99 -1
- data/src/errors.c +1096 -128
- data/src/extract.c +30 -8
- data/src/herb.c +30 -11
- data/src/include/analyze/action_view/attribute_extraction_helpers.h +1 -1
- data/src/include/analyze/action_view/helper_registry.h +28 -4
- data/src/include/analyze/action_view/tag_helper_handler.h +1 -1
- data/src/include/analyze/action_view/tag_helper_node_builders.h +7 -0
- data/src/include/analyze/analyze.h +11 -0
- data/src/include/analyze/builders.h +16 -0
- data/src/include/analyze/helpers.h +23 -2
- data/src/include/analyze/herb_directive_kinds.h +41 -0
- data/src/include/analyze/herb_directives.h +14 -0
- data/src/include/analyze/iteration_nodes.h +11 -0
- data/src/include/analyze/prism_annotate.h +3 -3
- data/src/include/analyze/ternary_conditionals.h +2 -0
- data/src/include/ast/ast_node.h +1 -5
- data/src/include/ast/ast_nodes.h +76 -2
- data/src/include/ast/ast_pretty_print.h +1 -1
- data/src/include/diff/herb_diff.h +11 -0
- data/src/include/errors.h +156 -39
- data/src/include/extract.h +11 -0
- data/src/include/herb.h +6 -0
- data/src/include/lexer/erb_openers.h +29 -0
- data/src/include/lexer/lexer_peek_helpers.h +8 -1
- data/src/include/lexer/lexer_struct.h +4 -0
- data/src/include/lexer/token.h +3 -0
- data/src/include/lexer/token_struct.h +8 -6
- data/src/include/lib/hb_allocator.h +2 -1
- data/src/include/lib/hb_array.h +2 -0
- data/src/include/lib/hb_foreach.h +1 -1
- data/src/include/lib/hb_string.h +7 -0
- data/src/include/parser/dot_notation.h +1 -1
- data/src/include/parser/foreign_content_elements.h +32 -0
- data/src/include/parser/parser.h +16 -30
- data/src/include/parser/parser_helpers.h +13 -11
- data/src/include/parser/parser_options.h +41 -0
- data/src/include/prism/ruby_parser.h +6 -0
- data/src/include/util/html_elements.h +85 -0
- data/src/include/util/html_util.h +1 -0
- data/src/include/version.h +1 -1
- data/src/lexer/lexer_peek_helpers.c +15 -1
- data/src/lexer/token.c +83 -1
- data/src/lexer.c +196 -12
- data/src/lib/hb_allocator.c +2 -0
- data/src/lib/hb_array.c +26 -0
- data/src/lib/hb_string.c +26 -0
- data/src/main.c +1 -1
- data/src/parser/dot_notation.c +4 -3
- data/src/parser/match_tags.c +66 -1
- data/src/parser/parser_helpers.c +69 -37
- data/src/parser.c +606 -383
- data/src/parser_options_defaults.c +30 -0
- data/src/prism/prism_helpers.c +3 -0
- data/src/prism/ruby_parser.c +49 -0
- data/src/util/html_util.c +11 -58
- data/src/visitor.c +77 -1
- data/templates/ext/herb/error_helpers.c.erb +1 -1
- data/templates/ext/herb/nodes.c.erb +18 -13
- data/templates/ext/herb/nodes.h.erb +2 -1
- data/templates/ext/herb/parser_options_helpers.c.erb +69 -0
- data/templates/ext/herb/parser_options_helpers.h.erb +11 -0
- data/templates/java/nodes.c.erb +20 -16
- data/templates/java/nodes.h.erb +3 -2
- data/templates/java/org/herb/ParserOptions.java.erb +24 -0
- data/templates/java/org/herb/ast/HelperRegistry.java.erb +67 -31
- data/templates/java/org/herb/ast/HelperType.java.erb +29 -0
- data/templates/java/org/herb/ast/Nodes.java.erb +11 -7
- data/templates/java/parser_options_helpers.c.erb +45 -0
- data/templates/java/parser_options_helpers.h.erb +10 -0
- data/templates/javascript/packages/client/src/state-kinds.ts.erb +49 -0
- data/templates/javascript/packages/client/src/state-operators.ts.erb +15 -0
- data/templates/javascript/packages/client/src/state-predicates.ts.erb +27 -0
- data/templates/javascript/packages/client/src/state-transforms.ts.erb +19 -0
- data/templates/javascript/packages/core/src/action-view-helpers.ts.erb +47 -0
- data/templates/javascript/packages/core/src/built-in-components.ts.erb +67 -0
- data/templates/javascript/packages/core/src/errors.ts.erb +9 -3
- data/templates/javascript/packages/core/src/foreign-content-elements.ts.erb +18 -0
- data/templates/javascript/packages/core/src/html-constants.ts.erb +32 -0
- data/templates/javascript/packages/core/src/html-elements.ts.erb +41 -0
- data/templates/javascript/packages/core/src/node-type-guards.ts.erb +11 -7
- data/templates/javascript/packages/core/src/nodes.ts.erb +82 -19
- data/templates/javascript/packages/core/src/parser-options.ts.erb +41 -0
- data/templates/javascript/packages/core/src/visitor.ts.erb +1 -1
- data/templates/javascript/packages/node/extension/error_helpers.cpp.erb +3 -3
- data/templates/javascript/packages/node/extension/nodes.cpp.erb +17 -12
- data/templates/javascript/packages/node/extension/nodes.h.erb +3 -3
- data/templates/javascript/packages/node/extension/parser_options_helpers.cpp.erb +41 -0
- data/templates/javascript/packages/node/extension/parser_options_helpers.h.erb +12 -0
- data/templates/lib/herb/action_view/helper_registry.rb.erb +77 -3
- data/templates/lib/herb/ast/nodes.rb.erb +16 -6
- data/templates/lib/herb/engine/slots/component_definitions.rb.erb +38 -0
- data/templates/lib/herb/engine/slots/state_kinds.rb.erb +37 -0
- data/templates/lib/herb/engine/slots/state_operators.rb.erb +26 -0
- data/templates/lib/herb/engine/slots/state_predicates.rb.erb +39 -0
- data/templates/lib/herb/engine/slots/state_transforms.rb.erb +27 -0
- data/templates/lib/herb/errors.rb.erb +34 -6
- data/templates/lib/herb/html/elements.rb.erb +12 -0
- data/templates/lib/herb/parser_options.rb.erb +32 -0
- data/templates/lib/herb/visitor.rb.erb +7 -1
- data/templates/rust/herb-printer/src/printer_visitor.rs.erb +14 -0
- data/templates/rust/src/action_view_helpers.rs.erb +38 -0
- data/templates/rust/src/ast/nodes.rs.erb +24 -31
- data/templates/rust/src/errors.rs.erb +1 -1
- data/templates/rust/src/nodes.rs.erb +58 -26
- data/templates/rust/src/parser_options.rs.erb +16 -0
- data/templates/rust/src/prism/generated_deserialize.rs.erb +109 -0
- data/templates/rust/src/prism/generated_prettyprint.rs.erb +153 -0
- data/templates/rust/src/union_types.rs.erb +7 -1
- data/templates/rust/src/visitor.rs.erb +1 -1
- data/templates/src/analyze/action_view/helper_registry.c.erb +22 -0
- data/templates/src/analyze/missing_end.c.erb +13 -5
- data/templates/src/ast/ast_nodes.c.erb +41 -2
- data/templates/src/diff/herb_diff_nodes.c.erb +44 -8
- data/templates/src/errors.c.erb +8 -3
- data/templates/src/include/analyze/action_view/helper_registry.h.erb +19 -0
- data/templates/src/include/analyze/herb_directive_kinds.h.erb +25 -0
- data/templates/src/include/errors.h.erb +3 -1
- data/templates/src/include/parser/foreign_content_elements.h.erb +23 -0
- data/templates/src/include/parser/parser_options.h.erb +21 -0
- data/templates/src/include/util/html_elements.h.erb +28 -0
- data/templates/src/parser_options_defaults.c.erb +9 -0
- data/templates/template.rb +564 -9
- data/templates/wasm/error_helpers.cpp.erb +4 -4
- data/templates/wasm/nodes.cpp.erb +12 -12
- data/templates/wasm/nodes.h.erb +3 -3
- data/templates/wasm/parser_options_helpers.cpp.erb +25 -0
- data/templates/wasm/parser_options_helpers.h.erb +12 -0
- metadata +306 -27
- data/config/action_view_helpers/actionview/form_helper/button.yml +0 -38
- data/config/action_view_helpers/actionview/form_helper/submit.yml +0 -35
- data/lib/herb/ast.rb +0 -7
- data/lib/herb/diff_operation.rb +0 -34
- data/lib/herb/diff_result.rb +0 -59
- data/lib/herb/engine/error_formatter.rb +0 -432
- data/lib/herb/engine/parser_error_overlay.rb +0 -773
- data/lib/herb/engine/validation_error_overlay.rb +0 -182
- data/lib/herb/engine/validation_errors.rb +0 -65
- data/lib/herb/engine/validator.rb +0 -80
- data/sig/herb/ast.rbs +0 -6
- data/sig/herb/diff_operation.rbs +0 -34
- data/sig/herb/diff_result.rbs +0 -34
- data/sig/herb/engine/debug.rbs +0 -38
- data/sig/herb/engine/error_formatter.rbs +0 -47
- data/sig/herb/engine/parser_error_overlay.rbs +0 -41
- data/sig/herb/engine/validation_error_overlay.rbs +0 -35
- data/sig/herb/engine/validation_errors.rbs +0 -45
- data/sig/herb/engine/validator.rbs +0 -41
- data/sig/herb_c_extension.rbs +0 -10
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Generated from lib/herb/engine/visitors/remove_comments_visitor.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
class Engine
|
|
5
|
+
# Removes comments from the template, so that the compiled output never contains one.
|
|
6
|
+
#
|
|
7
|
+
# An HTML comment is served to the browser and is readable by anyone who looks at the page
|
|
8
|
+
# source, so a note the template author wrote for other developers ends up in production.
|
|
9
|
+
# This drops every `<!-- -->` comment, along with everything nested inside it, before the
|
|
10
|
+
# compiler sees the template. ERB inside a removed comment is dropped with it and never runs.
|
|
11
|
+
#
|
|
12
|
+
# ERB comments go too. The compiler already leaves `<%# comment %>` and `<% # comment %>` out
|
|
13
|
+
# of the output on its own, so removing them makes it something the template is guaranteed
|
|
14
|
+
# instead of something the compiler happens to do.
|
|
15
|
+
#
|
|
16
|
+
# What Herb writes to itself is not a comment. A directive, which is an ERB comment whose
|
|
17
|
+
# content starts with `herb:` or `locals:`, is an instruction to Herb or to Action View
|
|
18
|
+
# instead of a note for people, so `<%# herb:state %>`, `<%# herb:key %>`,
|
|
19
|
+
# `<%# herb:disable %>` and `<%# locals: (title:) %>` all stay where they are. The compiler
|
|
20
|
+
# leaves them out of the output the same way it leaves any ERB comment out.
|
|
21
|
+
#
|
|
22
|
+
# A marker, which `Slots::Markers` recognizes, is how a pass hands something to the browser,
|
|
23
|
+
# the way `Slots::Visitor` writes `<!--herb-slot:0-->` around a slot. Those stay too, in the
|
|
24
|
+
# output as well, so this visitor can run before or after the pass that writes them.
|
|
25
|
+
#
|
|
26
|
+
# Whitespace around a comment is left alone, so removing one never changes how the elements
|
|
27
|
+
# next to it are laid out. A comment on a line of its own leaves that line's whitespace
|
|
28
|
+
# behind, an ERB comment included, which the compiler on its own would have trimmed away with
|
|
29
|
+
# the line.
|
|
30
|
+
#
|
|
31
|
+
# Comment syntax inside a `<script>` or `<style>` element is part of that element's text
|
|
32
|
+
# instead of an HTML comment, so it stays. A conditional comment is an HTML comment, so it
|
|
33
|
+
# goes, and the markup it guards goes with it.
|
|
34
|
+
#
|
|
35
|
+
# This visitor is not loaded by default. Require it explicitly and pass it to the engine:
|
|
36
|
+
#
|
|
37
|
+
# require "herb/engine/visitors/remove_comments_visitor"
|
|
38
|
+
#
|
|
39
|
+
# Herb::Engine.new(source, visitors: [Herb::Engine::RemoveCommentsVisitor.new])
|
|
40
|
+
class RemoveCommentsVisitor < Herb::Visitor
|
|
41
|
+
CHILD_LISTS: Array[Symbol]
|
|
42
|
+
|
|
43
|
+
DIRECTIVE: Regexp
|
|
44
|
+
|
|
45
|
+
# : (Herb::AST::Node) -> void
|
|
46
|
+
def visit_node: (Herb::AST::Node) -> void
|
|
47
|
+
|
|
48
|
+
# : () -> String
|
|
49
|
+
def inspect: () -> String
|
|
50
|
+
|
|
51
|
+
private
|
|
52
|
+
|
|
53
|
+
# : (Herb::AST::Node?) -> bool
|
|
54
|
+
def comment?: (Herb::AST::Node?) -> bool
|
|
55
|
+
|
|
56
|
+
# : (Herb::AST::HTMLCommentNode) -> bool
|
|
57
|
+
def marker?: (Herb::AST::HTMLCommentNode) -> bool
|
|
58
|
+
|
|
59
|
+
# : (Herb::AST::HTMLCommentNode) -> String
|
|
60
|
+
def comment_text: (Herb::AST::HTMLCommentNode) -> String
|
|
61
|
+
|
|
62
|
+
# : (Herb::AST::ERBCommentNode | Herb::AST::ERBContentNode) -> bool
|
|
63
|
+
def directive?: (Herb::AST::ERBCommentNode | Herb::AST::ERBContentNode) -> bool
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Generated from lib/herb/engine/visitors/source_attribution_visitor.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
class Engine
|
|
5
|
+
# Stamps every element with the template and the position it was written at, so that something
|
|
6
|
+
# found on the rendered page can be pointed back at the line that produced it.
|
|
7
|
+
#
|
|
8
|
+
# Some things are only visible once a page is rendered. Two partials can each be valid on their
|
|
9
|
+
# own and still collide on an `id`, a heading order only exists once a layout and everything it
|
|
10
|
+
# renders are composed, and a `<form>` inside another `<form>` is usually two templates that
|
|
11
|
+
# never see each other. Linting the response is what answers those, and the positions it reports
|
|
12
|
+
# are offsets into the response, which is not a place anyone can go and fix anything. This is
|
|
13
|
+
# what turns them back into a file and a line.
|
|
14
|
+
#
|
|
15
|
+
# require "herb/engine/visitors/source_attribution_visitor"
|
|
16
|
+
#
|
|
17
|
+
# Herb::Engine.new(source, filename: path, visitors: [
|
|
18
|
+
# Herb::Engine::SourceAttributionVisitor.new
|
|
19
|
+
# ])
|
|
20
|
+
#
|
|
21
|
+
# #=> <div data-herb-source="app/views/posts/_card.html.erb:8:3">
|
|
22
|
+
#
|
|
23
|
+
# A tag helper is stamped too. The `action_view_helpers` parser option turns
|
|
24
|
+
# `<%= link_to "Home", "/" %>` into an `<a>` that the compiler writes out as markup, and that
|
|
25
|
+
# `<a>` is stamped at the position of the `<%=` that asked for it.
|
|
26
|
+
#
|
|
27
|
+
# #=> <a href="/" data-herb-source="app/views/posts/_card.html.erb:4:5">Home</a>
|
|
28
|
+
#
|
|
29
|
+
# That option is recommended here, so a stack that says nothing about it gets it. It is worth
|
|
30
|
+
# knowing that it decides more than attribution does. It is also what makes the compiler write
|
|
31
|
+
# a helper out as markup instead of calling it while the page renders, which is the same thing
|
|
32
|
+
# `OptimizeVisitor` and `Slots::Visitor` require it for. A host that wants its helpers called at
|
|
33
|
+
# render time sets `action_view_helpers: false` and takes the warning that comes with it, and
|
|
34
|
+
# everything written as literal markup is stamped either way.
|
|
35
|
+
#
|
|
36
|
+
# A helper the parser cannot resolve to a tag stays an ERB node with no element around it, so
|
|
37
|
+
# `form_with` and anything the host defined itself reach the response carrying nothing, and the
|
|
38
|
+
# nearest stamped ancestor is what places them.
|
|
39
|
+
#
|
|
40
|
+
# Nothing is wrapped to close that gap. A wrapper element inside `<ul>`, `<table>` or `<select>`
|
|
41
|
+
# is invalid markup, and it would be Herb's own markup tripping the structural rules this exists
|
|
42
|
+
# to run. An unstamped element is a worse answer that stays true. A wrong one would not.
|
|
43
|
+
#
|
|
44
|
+
# A partial that `InlineRender::Visitor` brought into this template is stamped with the file it
|
|
45
|
+
# was written in, not the file it was inlined into.
|
|
46
|
+
#
|
|
47
|
+
# The stamp is markup Herb added, so a consumer is expected to strip it before reporting
|
|
48
|
+
# positions back, and to leave the visitor out of anything but a development build.
|
|
49
|
+
class SourceAttributionVisitor < Herb::Visitor
|
|
50
|
+
include Herb::Visitor::ContextAware
|
|
51
|
+
|
|
52
|
+
ATTRIBUTE: String
|
|
53
|
+
|
|
54
|
+
# : (?attribute: String) -> void
|
|
55
|
+
def initialize: (?attribute: String) -> void
|
|
56
|
+
|
|
57
|
+
# : (Herb::AST::HTMLElementNode) -> void
|
|
58
|
+
def visit_html_element_node: (Herb::AST::HTMLElementNode) -> void
|
|
59
|
+
|
|
60
|
+
# : (Herb::AST::Node) -> void
|
|
61
|
+
def visit_child_nodes: (Herb::AST::Node) -> void
|
|
62
|
+
|
|
63
|
+
# : () -> String
|
|
64
|
+
def inspect: () -> String
|
|
65
|
+
|
|
66
|
+
private
|
|
67
|
+
|
|
68
|
+
# : () -> String
|
|
69
|
+
def current_file: () -> String
|
|
70
|
+
|
|
71
|
+
# : (Herb::AST::Node?) -> void
|
|
72
|
+
def stamp_open_tag: (Herb::AST::Node?) -> void
|
|
73
|
+
|
|
74
|
+
# : (Herb::AST::Node?) -> void
|
|
75
|
+
def stamp: (Herb::AST::Node?) -> void
|
|
76
|
+
|
|
77
|
+
# : ((Herb::AST::HTMLOpenTagNode | Herb::AST::ERBOpenTagNode)) -> Herb::serialized_position?
|
|
78
|
+
def position_of: (Herb::AST::HTMLOpenTagNode | Herb::AST::ERBOpenTagNode) -> Herb::serialized_position?
|
|
79
|
+
|
|
80
|
+
# : ((Herb::AST::HTMLOpenTagNode | Herb::AST::ERBOpenTagNode)) -> bool
|
|
81
|
+
def stamped?: (Herb::AST::HTMLOpenTagNode | Herb::AST::ERBOpenTagNode) -> bool
|
|
82
|
+
|
|
83
|
+
# : (Herb::AST::HTMLAttributeNode) -> String?
|
|
84
|
+
def attribute_name: (Herb::AST::HTMLAttributeNode) -> String?
|
|
85
|
+
|
|
86
|
+
# : (String, String) -> Herb::AST::HTMLAttributeNode
|
|
87
|
+
def attribute_node: (String, String) -> Herb::AST::HTMLAttributeNode
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
data/sig/herb/engine.rbs
CHANGED
|
@@ -2,50 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
module Herb
|
|
4
4
|
class Engine
|
|
5
|
-
attr_reader src:
|
|
5
|
+
attr_reader src: String
|
|
6
6
|
|
|
7
|
-
attr_reader
|
|
7
|
+
attr_reader context: Visitor::Context
|
|
8
8
|
|
|
9
|
-
attr_reader
|
|
9
|
+
attr_reader bufvar: String
|
|
10
10
|
|
|
11
|
-
attr_reader
|
|
11
|
+
attr_reader visitors: Visitor::Stack
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
# : () -> Pathname?
|
|
14
|
+
def filename: () -> Pathname?
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
# : () -> Pathname
|
|
17
|
+
def project_path: () -> Pathname
|
|
16
18
|
|
|
17
|
-
|
|
19
|
+
# : () -> String
|
|
20
|
+
def relative_file_path: () -> String
|
|
18
21
|
|
|
19
|
-
|
|
22
|
+
# : (String) -> String
|
|
23
|
+
def string_literal: (String) -> String
|
|
20
24
|
|
|
21
|
-
|
|
25
|
+
STRING_LITERAL_ESCAPES: Hash[String, String]
|
|
22
26
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def self.optimize_warning_issued: () -> bool
|
|
26
|
-
|
|
27
|
-
def self.optimize_warning_issued=: (bool) -> bool
|
|
28
|
-
|
|
29
|
-
attr_accessor optimize_warning_issued: bool
|
|
27
|
+
# : (String) -> String
|
|
28
|
+
def escaped_string_literal: (String) -> String
|
|
30
29
|
|
|
31
30
|
ESCAPE_TABLE: untyped
|
|
32
31
|
|
|
33
|
-
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
class GeneratorTemplateError < CompilationError
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
class InvalidRubyError < CompilationError
|
|
40
|
-
attr_reader compiled_source: untyped
|
|
41
|
-
|
|
42
|
-
def initialize: (untyped message, ?compiled_source: untyped) -> untyped
|
|
43
|
-
end
|
|
32
|
+
ATTRIBUTE_ESCAPE_TABLE: untyped
|
|
44
33
|
|
|
45
34
|
def initialize: (untyped input, ?untyped properties) -> untyped
|
|
46
35
|
|
|
47
36
|
def self.h: (untyped value) -> untyped
|
|
48
37
|
|
|
38
|
+
# : (untyped) -> String
|
|
39
|
+
def self.raw: (untyped) -> String
|
|
40
|
+
|
|
49
41
|
def self.attr: (untyped value) -> untyped
|
|
50
42
|
|
|
51
43
|
def self.js: (untyped value) -> untyped
|
|
@@ -54,13 +46,8 @@ module Herb
|
|
|
54
46
|
|
|
55
47
|
def self.nested_attribute_value: (untyped value) -> untyped
|
|
56
48
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def self.heredoc?: (untyped code) -> untyped
|
|
60
|
-
|
|
61
|
-
def source_may_contain_action_view_helpers?: (untyped source) -> untyped
|
|
62
|
-
|
|
63
|
-
def self.action_view_helper_pattern: () -> untyped
|
|
49
|
+
# : () -> untyped
|
|
50
|
+
def compiler_class: () -> untyped
|
|
64
51
|
|
|
65
52
|
def add_text: (untyped text) -> untyped
|
|
66
53
|
|
|
@@ -96,20 +83,39 @@ module Herb
|
|
|
96
83
|
|
|
97
84
|
private
|
|
98
85
|
|
|
99
|
-
|
|
86
|
+
# : (Hash[Symbol, untyped]) -> bool
|
|
87
|
+
def buffer_required?: (Hash[Symbol, untyped]) -> bool
|
|
88
|
+
|
|
89
|
+
# : (String) -> String
|
|
90
|
+
def wrap_postamble: (String) -> String
|
|
91
|
+
|
|
92
|
+
# : (untyped) -> String?
|
|
93
|
+
def compile_static_body: (untyped) -> String?
|
|
94
|
+
|
|
95
|
+
# : () -> Array[Herb::Diagnostic]
|
|
96
|
+
def collected_diagnostics: () -> Array[Herb::Diagnostic]
|
|
97
|
+
|
|
98
|
+
# : (Hash[Symbol, untyped], String) -> void
|
|
99
|
+
def write_buffer_prelude: (Hash[Symbol, untyped], String) -> void
|
|
100
|
+
|
|
101
|
+
# : () -> void
|
|
102
|
+
def insert_herb_alias!: () -> void
|
|
100
103
|
|
|
101
104
|
def handle_parser_errors: (untyped parser_errors, untyped input, untyped _ast) -> untyped
|
|
102
105
|
|
|
103
|
-
|
|
106
|
+
# : (String) -> void
|
|
107
|
+
def report: (String) -> void
|
|
104
108
|
|
|
105
|
-
|
|
109
|
+
# : (Array[Herb::Diagnostic]) -> void
|
|
110
|
+
def emit_compile_diagnostics: (Array[Herb::Diagnostic]) -> void
|
|
106
111
|
|
|
107
|
-
|
|
112
|
+
# : (Array[Herb::Diagnostic], String) -> void
|
|
113
|
+
def raise_for: (Array[Herb::Diagnostic], String) -> void
|
|
108
114
|
|
|
109
|
-
def
|
|
115
|
+
def context_options: (untyped properties) -> untyped
|
|
110
116
|
|
|
111
|
-
# : () ->
|
|
112
|
-
def
|
|
117
|
+
# : () -> Hash[Symbol, untyped]
|
|
118
|
+
def parse_options: () -> Hash[Symbol, untyped]
|
|
113
119
|
|
|
114
120
|
# : () -> Hash[Symbol, untyped]
|
|
115
121
|
def default_parser_options: () -> Hash[Symbol, untyped]
|
data/sig/herb/errors.rbs
CHANGED
|
@@ -17,6 +17,12 @@ module Herb
|
|
|
17
17
|
# : (String, Location?, String) -> void
|
|
18
18
|
def initialize: (String, Location?, String) -> void
|
|
19
19
|
|
|
20
|
+
# : () -> String?
|
|
21
|
+
def suggestion: () -> String?
|
|
22
|
+
|
|
23
|
+
# : (template: String, ?origin: String) -> Herb::Diagnostic
|
|
24
|
+
def to_diagnostic: (template: String, ?origin: String) -> Herb::Diagnostic
|
|
25
|
+
|
|
20
26
|
# : () -> serialized_error
|
|
21
27
|
def to_hash: () -> serialized_error
|
|
22
28
|
|
|
@@ -83,6 +89,9 @@ module Herb
|
|
|
83
89
|
# : (String, Location?, String, Herb::Token) -> void
|
|
84
90
|
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
85
91
|
|
|
92
|
+
# : () -> String?
|
|
93
|
+
def suggestion: () -> String?
|
|
94
|
+
|
|
86
95
|
# : () -> String
|
|
87
96
|
def inspect: () -> String
|
|
88
97
|
|
|
@@ -101,6 +110,9 @@ module Herb
|
|
|
101
110
|
# : (String, Location?, String, Herb::Token) -> void
|
|
102
111
|
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
103
112
|
|
|
113
|
+
# : () -> String?
|
|
114
|
+
def suggestion: () -> String?
|
|
115
|
+
|
|
104
116
|
# : () -> String
|
|
105
117
|
def inspect: () -> String
|
|
106
118
|
|
|
@@ -121,6 +133,9 @@ module Herb
|
|
|
121
133
|
# : (String, Location?, String, Herb::Token, Herb::Token) -> void
|
|
122
134
|
def initialize: (String, Location?, String, Herb::Token, Herb::Token) -> void
|
|
123
135
|
|
|
136
|
+
# : () -> String?
|
|
137
|
+
def suggestion: () -> String?
|
|
138
|
+
|
|
124
139
|
# : () -> String
|
|
125
140
|
def inspect: () -> String
|
|
126
141
|
|
|
@@ -143,6 +158,9 @@ module Herb
|
|
|
143
158
|
# : (String, Location?, String, Herb::Token, String, String) -> void
|
|
144
159
|
def initialize: (String, Location?, String, Herb::Token, String, String) -> void
|
|
145
160
|
|
|
161
|
+
# : () -> String?
|
|
162
|
+
def suggestion: () -> String?
|
|
163
|
+
|
|
146
164
|
# : () -> String
|
|
147
165
|
def inspect: () -> String
|
|
148
166
|
|
|
@@ -161,6 +179,9 @@ module Herb
|
|
|
161
179
|
# : (String, Location?, String, Herb::Token) -> void
|
|
162
180
|
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
163
181
|
|
|
182
|
+
# : () -> String?
|
|
183
|
+
def suggestion: () -> String?
|
|
184
|
+
|
|
164
185
|
# : () -> String
|
|
165
186
|
def inspect: () -> String
|
|
166
187
|
|
|
@@ -183,6 +204,9 @@ module Herb
|
|
|
183
204
|
# : (String, Location?, String, String, String, String) -> void
|
|
184
205
|
def initialize: (String, Location?, String, String, String, String) -> void
|
|
185
206
|
|
|
207
|
+
# : () -> String?
|
|
208
|
+
def suggestion: () -> String?
|
|
209
|
+
|
|
186
210
|
# : () -> String
|
|
187
211
|
def inspect: () -> String
|
|
188
212
|
|
|
@@ -249,6 +273,16 @@ module Herb
|
|
|
249
273
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
250
274
|
end
|
|
251
275
|
|
|
276
|
+
class ERBCaseInlinePatternMatchError < Error
|
|
277
|
+
include Colors
|
|
278
|
+
|
|
279
|
+
# : () -> String
|
|
280
|
+
def inspect: () -> String
|
|
281
|
+
|
|
282
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
283
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
284
|
+
end
|
|
285
|
+
|
|
252
286
|
class ConditionalElementMultipleTagsError < Error
|
|
253
287
|
include Colors
|
|
254
288
|
|
|
@@ -299,6 +333,50 @@ module Herb
|
|
|
299
333
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
300
334
|
end
|
|
301
335
|
|
|
336
|
+
class UnclosedCommentError < Error
|
|
337
|
+
include Colors
|
|
338
|
+
|
|
339
|
+
attr_reader comment_start: Herb::Token?
|
|
340
|
+
|
|
341
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
342
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
343
|
+
|
|
344
|
+
# : () -> String?
|
|
345
|
+
def suggestion: () -> String?
|
|
346
|
+
|
|
347
|
+
# : () -> String
|
|
348
|
+
def inspect: () -> String
|
|
349
|
+
|
|
350
|
+
# : () -> serialized_unclosed_comment_error
|
|
351
|
+
def to_hash: () -> serialized_unclosed_comment_error
|
|
352
|
+
|
|
353
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
354
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
class NestedCommentError < Error
|
|
358
|
+
include Colors
|
|
359
|
+
|
|
360
|
+
attr_reader comment_start: Herb::Token?
|
|
361
|
+
|
|
362
|
+
attr_reader nested_start: Herb::Token?
|
|
363
|
+
|
|
364
|
+
# : (String, Location?, String, Herb::Token, Herb::Token) -> void
|
|
365
|
+
def initialize: (String, Location?, String, Herb::Token, Herb::Token) -> void
|
|
366
|
+
|
|
367
|
+
# : () -> String?
|
|
368
|
+
def suggestion: () -> String?
|
|
369
|
+
|
|
370
|
+
# : () -> String
|
|
371
|
+
def inspect: () -> String
|
|
372
|
+
|
|
373
|
+
# : () -> serialized_nested_comment_error
|
|
374
|
+
def to_hash: () -> serialized_nested_comment_error
|
|
375
|
+
|
|
376
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
377
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
378
|
+
end
|
|
379
|
+
|
|
302
380
|
class InvalidCommentClosingTagError < Error
|
|
303
381
|
include Colors
|
|
304
382
|
|
|
@@ -373,6 +451,27 @@ module Herb
|
|
|
373
451
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
374
452
|
end
|
|
375
453
|
|
|
454
|
+
class EndTagWithTrailingSolidusError < Error
|
|
455
|
+
include Colors
|
|
456
|
+
|
|
457
|
+
attr_reader tag_name: Herb::Token?
|
|
458
|
+
|
|
459
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
460
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
461
|
+
|
|
462
|
+
# : () -> String?
|
|
463
|
+
def suggestion: () -> String?
|
|
464
|
+
|
|
465
|
+
# : () -> String
|
|
466
|
+
def inspect: () -> String
|
|
467
|
+
|
|
468
|
+
# : () -> serialized_end_tag_with_trailing_solidus_error
|
|
469
|
+
def to_hash: () -> serialized_end_tag_with_trailing_solidus_error
|
|
470
|
+
|
|
471
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
472
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
473
|
+
end
|
|
474
|
+
|
|
376
475
|
class UnclosedQuoteError < Error
|
|
377
476
|
include Colors
|
|
378
477
|
|
|
@@ -399,6 +498,9 @@ module Herb
|
|
|
399
498
|
# : (String, Location?, String, String) -> void
|
|
400
499
|
def initialize: (String, Location?, String, String) -> void
|
|
401
500
|
|
|
501
|
+
# : () -> String?
|
|
502
|
+
def suggestion: () -> String?
|
|
503
|
+
|
|
402
504
|
# : () -> String
|
|
403
505
|
def inspect: () -> String
|
|
404
506
|
|
|
@@ -409,6 +511,111 @@ module Herb
|
|
|
409
511
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
410
512
|
end
|
|
411
513
|
|
|
514
|
+
class MissingWhitespaceBetweenAttributesError < Error
|
|
515
|
+
include Colors
|
|
516
|
+
|
|
517
|
+
attr_reader found: Herb::Token?
|
|
518
|
+
|
|
519
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
520
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
521
|
+
|
|
522
|
+
# : () -> String?
|
|
523
|
+
def suggestion: () -> String?
|
|
524
|
+
|
|
525
|
+
# : () -> String
|
|
526
|
+
def inspect: () -> String
|
|
527
|
+
|
|
528
|
+
# : () -> serialized_missing_whitespace_between_attributes_error
|
|
529
|
+
def to_hash: () -> serialized_missing_whitespace_between_attributes_error
|
|
530
|
+
|
|
531
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
532
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
533
|
+
end
|
|
534
|
+
|
|
535
|
+
class UnexpectedCharacterInAttributeNameError < Error
|
|
536
|
+
include Colors
|
|
537
|
+
|
|
538
|
+
attr_reader character: Herb::Token?
|
|
539
|
+
|
|
540
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
541
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
542
|
+
|
|
543
|
+
# : () -> String?
|
|
544
|
+
def suggestion: () -> String?
|
|
545
|
+
|
|
546
|
+
# : () -> String
|
|
547
|
+
def inspect: () -> String
|
|
548
|
+
|
|
549
|
+
# : () -> serialized_unexpected_character_in_attribute_name_error
|
|
550
|
+
def to_hash: () -> serialized_unexpected_character_in_attribute_name_error
|
|
551
|
+
|
|
552
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
553
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
554
|
+
end
|
|
555
|
+
|
|
556
|
+
class UnexpectedCharacterInUnquotedAttributeValueError < Error
|
|
557
|
+
include Colors
|
|
558
|
+
|
|
559
|
+
attr_reader character: Herb::Token?
|
|
560
|
+
|
|
561
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
562
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
563
|
+
|
|
564
|
+
# : () -> String?
|
|
565
|
+
def suggestion: () -> String?
|
|
566
|
+
|
|
567
|
+
# : () -> String
|
|
568
|
+
def inspect: () -> String
|
|
569
|
+
|
|
570
|
+
# : () -> serialized_unexpected_character_in_unquoted_attribute_value_error
|
|
571
|
+
def to_hash: () -> serialized_unexpected_character_in_unquoted_attribute_value_error
|
|
572
|
+
|
|
573
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
574
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
575
|
+
end
|
|
576
|
+
|
|
577
|
+
class UnexpectedEqualsSignBeforeAttributeNameError < Error
|
|
578
|
+
include Colors
|
|
579
|
+
|
|
580
|
+
attr_reader equals: Herb::Token?
|
|
581
|
+
|
|
582
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
583
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
584
|
+
|
|
585
|
+
# : () -> String?
|
|
586
|
+
def suggestion: () -> String?
|
|
587
|
+
|
|
588
|
+
# : () -> String
|
|
589
|
+
def inspect: () -> String
|
|
590
|
+
|
|
591
|
+
# : () -> serialized_unexpected_equals_sign_before_attribute_name_error
|
|
592
|
+
def to_hash: () -> serialized_unexpected_equals_sign_before_attribute_name_error
|
|
593
|
+
|
|
594
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
595
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
596
|
+
end
|
|
597
|
+
|
|
598
|
+
class UnexpectedSolidusInTagError < Error
|
|
599
|
+
include Colors
|
|
600
|
+
|
|
601
|
+
attr_reader solidus: Herb::Token?
|
|
602
|
+
|
|
603
|
+
# : (String, Location?, String, Herb::Token) -> void
|
|
604
|
+
def initialize: (String, Location?, String, Herb::Token) -> void
|
|
605
|
+
|
|
606
|
+
# : () -> String?
|
|
607
|
+
def suggestion: () -> String?
|
|
608
|
+
|
|
609
|
+
# : () -> String
|
|
610
|
+
def inspect: () -> String
|
|
611
|
+
|
|
612
|
+
# : () -> serialized_unexpected_solidus_in_tag_error
|
|
613
|
+
def to_hash: () -> serialized_unexpected_solidus_in_tag_error
|
|
614
|
+
|
|
615
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
616
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
617
|
+
end
|
|
618
|
+
|
|
412
619
|
class UnclosedERBTagError < Error
|
|
413
620
|
include Colors
|
|
414
621
|
|
|
@@ -427,6 +634,26 @@ module Herb
|
|
|
427
634
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
428
635
|
end
|
|
429
636
|
|
|
637
|
+
class MalformedERBClosingTagError < Error
|
|
638
|
+
include Colors
|
|
639
|
+
|
|
640
|
+
attr_reader opening_tag: Herb::Token?
|
|
641
|
+
|
|
642
|
+
attr_reader closing_tag: Herb::Token?
|
|
643
|
+
|
|
644
|
+
# : (String, Location?, String, Herb::Token, Herb::Token) -> void
|
|
645
|
+
def initialize: (String, Location?, String, Herb::Token, Herb::Token) -> void
|
|
646
|
+
|
|
647
|
+
# : () -> String
|
|
648
|
+
def inspect: () -> String
|
|
649
|
+
|
|
650
|
+
# : () -> serialized_malformed_erb_closing_tag_error
|
|
651
|
+
def to_hash: () -> serialized_malformed_erb_closing_tag_error
|
|
652
|
+
|
|
653
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
654
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
655
|
+
end
|
|
656
|
+
|
|
430
657
|
class StrayERBClosingTagError < Error
|
|
431
658
|
include Colors
|
|
432
659
|
|
|
@@ -655,6 +882,72 @@ module Herb
|
|
|
655
882
|
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
656
883
|
end
|
|
657
884
|
|
|
885
|
+
class HerbStateMissingParenthesisError < Error
|
|
886
|
+
include Colors
|
|
887
|
+
|
|
888
|
+
attr_reader rest: String?
|
|
889
|
+
|
|
890
|
+
# : (String, Location?, String, String) -> void
|
|
891
|
+
def initialize: (String, Location?, String, String) -> void
|
|
892
|
+
|
|
893
|
+
# : () -> String
|
|
894
|
+
def inspect: () -> String
|
|
895
|
+
|
|
896
|
+
# : () -> serialized_herb_state_missing_parenthesis_error
|
|
897
|
+
def to_hash: () -> serialized_herb_state_missing_parenthesis_error
|
|
898
|
+
|
|
899
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
900
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
901
|
+
end
|
|
902
|
+
|
|
903
|
+
class HerbStateNonCanonicalDirectiveError < Error
|
|
904
|
+
include Colors
|
|
905
|
+
|
|
906
|
+
attr_reader found: String?
|
|
907
|
+
|
|
908
|
+
attr_reader expected: String?
|
|
909
|
+
|
|
910
|
+
# : (String, Location?, String, String, String) -> void
|
|
911
|
+
def initialize: (String, Location?, String, String, String) -> void
|
|
912
|
+
|
|
913
|
+
# : () -> String
|
|
914
|
+
def inspect: () -> String
|
|
915
|
+
|
|
916
|
+
# : () -> serialized_herb_state_non_canonical_directive_error
|
|
917
|
+
def to_hash: () -> serialized_herb_state_non_canonical_directive_error
|
|
918
|
+
|
|
919
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
920
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
921
|
+
end
|
|
922
|
+
|
|
923
|
+
class HerbStateInvalidParameterError < Error
|
|
924
|
+
include Colors
|
|
925
|
+
|
|
926
|
+
attr_reader parameter: String?
|
|
927
|
+
|
|
928
|
+
# : (String, Location?, String, String) -> void
|
|
929
|
+
def initialize: (String, Location?, String, String) -> void
|
|
930
|
+
|
|
931
|
+
# : () -> String
|
|
932
|
+
def inspect: () -> String
|
|
933
|
+
|
|
934
|
+
# : () -> serialized_herb_state_invalid_parameter_error
|
|
935
|
+
def to_hash: () -> serialized_herb_state_invalid_parameter_error
|
|
936
|
+
|
|
937
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
938
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
939
|
+
end
|
|
940
|
+
|
|
941
|
+
class HerbStateDuplicateDeclarationError < Error
|
|
942
|
+
include Colors
|
|
943
|
+
|
|
944
|
+
# : () -> String
|
|
945
|
+
def inspect: () -> String
|
|
946
|
+
|
|
947
|
+
# : (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
948
|
+
def tree_inspect: (?indent: Integer, ?depth: Integer, ?depth_limit: Integer) -> String
|
|
949
|
+
end
|
|
950
|
+
|
|
658
951
|
class VoidElementContentError < Error
|
|
659
952
|
include Colors
|
|
660
953
|
|