herb 0.10.4-x86_64-linux-gnu → 0.11.1-x86_64-linux-gnu
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +1243 -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 +859 -374
- 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/3.2/herb.so +0 -0
- data/lib/herb/3.3/herb.so +0 -0
- data/lib/herb/3.4/herb.so +0 -0
- data/lib/herb/4.0/herb.so +0 -0
- 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 +1368 -105
- data/lib/herb/backend.rb +73 -0
- data/lib/herb/bootstrap.rb +8 -8
- 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 +180 -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 +387 -113
- 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 +864 -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 +152 -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 +1325 -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 +2267 -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 -259
- 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 +668 -89
- data/sig/herb/backend.rbs +52 -0
- data/sig/herb/bootstrap.rbs +2 -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 +64 -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 +74 -24
- 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 +352 -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 +99 -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 +603 -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 +59 -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 +63 -3
- data/src/analyze/action_view/tag_helpers.c +497 -111
- data/src/analyze/analyze.c +306 -89
- data/src/analyze/analyze_helpers.c +502 -243
- data/src/analyze/analyzed_ruby.c +2 -0
- data/src/analyze/builders.c +80 -51
- data/src/analyze/conditional_elements.c +13 -8
- data/src/analyze/conditional_open_tags.c +11 -5
- data/src/analyze/control_type.c +30 -5
- 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 +45 -13
- 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 +914 -113
- data/src/ast/ast_pretty_print.c +166 -3
- 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 +227 -144
- 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 -22
- data/src/include/analyze/analyzed_ruby.h +25 -0
- data/src/include/analyze/builders.h +16 -0
- data/src/include/analyze/helpers.h +25 -24
- 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 +78 -3
- 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.h +1 -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/herb_prism_node.h +6 -1
- 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 +228 -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 +94 -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 +19 -14
- 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 +21 -17
- 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 +103 -20
- 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 +18 -13
- 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 +21 -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 +17 -27
- 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
|
@@ -3,49 +3,74 @@
|
|
|
3
3
|
module Herb
|
|
4
4
|
module Dev
|
|
5
5
|
class ServerEntry
|
|
6
|
-
SERVERS_DIR:
|
|
6
|
+
SERVERS_DIR: String
|
|
7
7
|
|
|
8
|
-
REQUIRED_KEYS:
|
|
8
|
+
REQUIRED_KEYS: Array[String]
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
KINDS: Array[String]
|
|
11
11
|
|
|
12
|
-
attr_reader
|
|
12
|
+
attr_reader pid: Integer
|
|
13
13
|
|
|
14
|
-
attr_reader
|
|
14
|
+
attr_reader port: Integer
|
|
15
15
|
|
|
16
|
-
attr_reader
|
|
16
|
+
attr_reader project: String?
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
attr_reader started_at: String
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
attr_reader kind: String
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
# : (pid: Integer, port: Integer, project: String?, ?started_at: String, ?kind: String) -> void
|
|
23
|
+
def initialize: (pid: Integer, port: Integer, project: String?, ?started_at: String, ?kind: String) -> void
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
# : () -> bool
|
|
26
|
+
def embedded?: () -> bool
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
# : () -> void
|
|
29
|
+
def save: () -> void
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
# : () -> void
|
|
32
|
+
def remove: () -> void
|
|
29
33
|
|
|
30
|
-
|
|
34
|
+
# : () -> bool
|
|
35
|
+
def alive?: () -> bool
|
|
31
36
|
|
|
32
|
-
|
|
37
|
+
# : () -> Hash[Symbol, untyped]
|
|
38
|
+
def to_hash: () -> Hash[Symbol, untyped]
|
|
33
39
|
|
|
34
|
-
|
|
40
|
+
# : (*untyped) -> String
|
|
41
|
+
def to_json: (*untyped) -> String
|
|
35
42
|
|
|
36
|
-
|
|
43
|
+
# : () -> String
|
|
44
|
+
def project_name: () -> String
|
|
37
45
|
|
|
38
|
-
|
|
46
|
+
# : () -> bool
|
|
47
|
+
def stop!: () -> bool
|
|
39
48
|
|
|
40
|
-
|
|
49
|
+
# : () -> Array[ServerEntry]
|
|
50
|
+
def self.all: () -> Array[ServerEntry]
|
|
41
51
|
|
|
42
|
-
|
|
52
|
+
# : (Integer) -> ServerEntry?
|
|
53
|
+
def self.find_by_port: (Integer) -> ServerEntry?
|
|
43
54
|
|
|
44
|
-
|
|
55
|
+
# : (String) -> ServerEntry?
|
|
56
|
+
def self.find_by_project: (String) -> ServerEntry?
|
|
57
|
+
|
|
58
|
+
# : (?String?) -> Integer?
|
|
59
|
+
def self.port_for: (?String?) -> Integer?
|
|
60
|
+
|
|
61
|
+
# : () -> void
|
|
62
|
+
def self.stop_all: () -> void
|
|
63
|
+
|
|
64
|
+
# : (Integer?) -> bool
|
|
65
|
+
def self.process_alive?: (Integer?) -> bool
|
|
66
|
+
|
|
67
|
+
# : (String) -> ServerEntry?
|
|
68
|
+
private def self.load_file: (String) -> ServerEntry?
|
|
45
69
|
|
|
46
70
|
private
|
|
47
71
|
|
|
48
|
-
|
|
72
|
+
# : () -> String
|
|
73
|
+
def file_path: () -> String
|
|
49
74
|
end
|
|
50
75
|
end
|
|
51
76
|
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Generated from lib/herb/dev/watcher.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
module Dev
|
|
5
|
+
# Watches a project's templates and says which one changed.
|
|
6
|
+
#
|
|
7
|
+
# Cruise reports raw filesystem events, and most of them are noise. This keeps the last
|
|
8
|
+
# content it saw for every template, filters events through the project's include and
|
|
9
|
+
# exclude patterns, and emits one normalized event per change that actually changed
|
|
10
|
+
# something, carrying both the previous and the current source so nothing downstream has
|
|
11
|
+
# to read the file again.
|
|
12
|
+
#
|
|
13
|
+
# watcher = Herb::Dev::Watcher.new(config: config, root: root) do |event|
|
|
14
|
+
# pipeline.handle_event(event)
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# watcher.run # blocks, for the CLI
|
|
18
|
+
# watcher.spawn # returns a Thread, for an embedded host
|
|
19
|
+
class Watcher
|
|
20
|
+
KINDS: Array[String]
|
|
21
|
+
|
|
22
|
+
class Event < Data
|
|
23
|
+
attr_reader kind(): Symbol
|
|
24
|
+
|
|
25
|
+
attr_reader path(): String
|
|
26
|
+
|
|
27
|
+
attr_reader relative_path(): String
|
|
28
|
+
|
|
29
|
+
attr_reader previous(): String?
|
|
30
|
+
|
|
31
|
+
attr_reader current(): String?
|
|
32
|
+
|
|
33
|
+
def self.new: (Symbol kind, String path, String relative_path, String? previous, String? current) -> instance
|
|
34
|
+
| (kind: Symbol, path: String, relative_path: String, previous: String?, current: String?) -> instance
|
|
35
|
+
|
|
36
|
+
def self.members: () -> [ :kind, :path, :relative_path, :previous, :current ]
|
|
37
|
+
|
|
38
|
+
def members: () -> [ :kind, :path, :relative_path, :previous, :current ]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
attr_reader file_states: Hash[String, String]
|
|
42
|
+
|
|
43
|
+
attr_reader watch_paths: Array[String]
|
|
44
|
+
|
|
45
|
+
# : (config: Herb::Configuration, root: String, ?watch_paths: Array[String]?) { (Event) -> void } -> void
|
|
46
|
+
def initialize: (config: Herb::Configuration, root: String, ?watch_paths: Array[String]?) { (Event) -> void } -> void
|
|
47
|
+
|
|
48
|
+
# : (?String) -> Integer
|
|
49
|
+
def index: (?String) -> Integer
|
|
50
|
+
|
|
51
|
+
# : () -> Hash[String, String]
|
|
52
|
+
def sources: () -> Hash[String, String]
|
|
53
|
+
|
|
54
|
+
# : () -> void
|
|
55
|
+
def run: () -> void
|
|
56
|
+
|
|
57
|
+
# : () -> Thread
|
|
58
|
+
def spawn: () -> Thread
|
|
59
|
+
|
|
60
|
+
# : () -> void
|
|
61
|
+
def stop: () -> void
|
|
62
|
+
|
|
63
|
+
private
|
|
64
|
+
|
|
65
|
+
# : (Array[String]?) -> Array[String]
|
|
66
|
+
def resolve_watch_paths: (Array[String]?) -> Array[String]
|
|
67
|
+
|
|
68
|
+
# : (Array[String]) -> Array[String]
|
|
69
|
+
def asset_watch_paths: (Array[String]) -> Array[String]
|
|
70
|
+
|
|
71
|
+
# : (String) -> String
|
|
72
|
+
def relative_for: (String) -> String
|
|
73
|
+
|
|
74
|
+
# : (Cruise::Event) -> void
|
|
75
|
+
def handle: (Cruise::Event) -> void
|
|
76
|
+
|
|
77
|
+
# : (String, String) -> void
|
|
78
|
+
def handle_asset: (String, String) -> void
|
|
79
|
+
|
|
80
|
+
# : (String, String, String) -> Event?
|
|
81
|
+
def normalize: (String, String, String) -> Event?
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
data/sig/herb/dev.rbs
ADDED
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Generated from lib/herb/dev.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
# The development server: a file watcher, a websocket, and the pipeline between them.
|
|
5
|
+
#
|
|
6
|
+
# The dev server never compiles a template itself, because slot identity depends on the
|
|
7
|
+
# visitor stack the application compiles with, and only the application knows that stack.
|
|
8
|
+
# A host that does know it registers a compiler here:
|
|
9
|
+
#
|
|
10
|
+
# Herb::Dev.compiler = ->(source, relative_path) { ... }
|
|
11
|
+
#
|
|
12
|
+
# The compiler returns nil for a file it cannot compile at all, and otherwise an object
|
|
13
|
+
# answering `mode`, `manifest`, `version`, `slot_entries`, `statics`, `static_markup` and
|
|
14
|
+
# `diagnostics`. Without one, the pipeline still classifies changes and tells browsers to
|
|
15
|
+
# fetch, so everything degrades instead of breaking.
|
|
16
|
+
module Dev
|
|
17
|
+
interface _Compiler
|
|
18
|
+
def call: (String source, String relative_path) -> _CompiledSchema?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
interface _CompiledSchema
|
|
22
|
+
def mode: () -> Symbol?
|
|
23
|
+
|
|
24
|
+
def manifest: () -> Hash[String, untyped]?
|
|
25
|
+
|
|
26
|
+
def version: () -> String?
|
|
27
|
+
|
|
28
|
+
def slot_entries: () -> Array[Hash[Symbol, untyped]]?
|
|
29
|
+
|
|
30
|
+
def statics: () -> Hash[String, String]?
|
|
31
|
+
|
|
32
|
+
def static_markup: () -> String?
|
|
33
|
+
|
|
34
|
+
def diagnostics: () -> Array[untyped]?
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
attr_accessor self.compiler: _Compiler?
|
|
38
|
+
|
|
39
|
+
# Starts the watcher and the websocket server inside the current process, for a host
|
|
40
|
+
# that already runs the application, like a Rails server in development. Everything a
|
|
41
|
+
# start would collide with makes it a no-op instead of an error, so a host can call it
|
|
42
|
+
# unconditionally:
|
|
43
|
+
#
|
|
44
|
+
# Rails.application.server { Herb::Dev.boot(Rails.root.to_s) }
|
|
45
|
+
#
|
|
46
|
+
# : (String, ?watch_paths: Array[String]?, ?environment: String?, ?logger: ^(String) -> void) -> Embedded?
|
|
47
|
+
def self.boot: (String, ?watch_paths: Array[String]?, ?environment: String?, ?logger: ^(String) -> void) -> Embedded?
|
|
48
|
+
|
|
49
|
+
# : (Watcher::Event, Classifier::Classification?) -> String?
|
|
50
|
+
def self.activity_line: (Watcher::Event, Classifier::Classification?) -> String?
|
|
51
|
+
|
|
52
|
+
# : () -> Embedded?
|
|
53
|
+
def self.booted: () -> Embedded?
|
|
54
|
+
|
|
55
|
+
# : () -> void
|
|
56
|
+
def self.shutdown: () -> void
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Generated from lib/herb/diagnostic/formatter.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
class Diagnostic
|
|
5
|
+
class Formatter
|
|
6
|
+
attr_reader source: String
|
|
7
|
+
|
|
8
|
+
attr_reader filename: String | Pathname
|
|
9
|
+
|
|
10
|
+
# : (String, Array[Herb::Diagnostic], **untyped) -> void
|
|
11
|
+
def initialize: (String, Array[Herb::Diagnostic], **untyped) -> void
|
|
12
|
+
|
|
13
|
+
# : () -> String
|
|
14
|
+
def summary: () -> String
|
|
15
|
+
|
|
16
|
+
# : (?highlight: bool) -> String
|
|
17
|
+
def format_all: (?highlight: bool) -> String
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def format_diagnostic: (untyped diagnostic) -> untyped
|
|
22
|
+
|
|
23
|
+
def format_source_context: (untyped diagnostic) -> untyped
|
|
24
|
+
|
|
25
|
+
def format_details: (untyped diagnostic) -> untyped
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Generated from lib/herb/diagnostic.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
class Diagnostic
|
|
5
|
+
UNKNOWN_ORIGIN: String
|
|
6
|
+
|
|
7
|
+
attr_reader template: String
|
|
8
|
+
|
|
9
|
+
attr_reader message: String
|
|
10
|
+
|
|
11
|
+
attr_reader node: String?
|
|
12
|
+
|
|
13
|
+
attr_reader code: String?
|
|
14
|
+
|
|
15
|
+
attr_reader severity: Symbol?
|
|
16
|
+
|
|
17
|
+
attr_reader kind: Symbol
|
|
18
|
+
|
|
19
|
+
attr_reader origin: String
|
|
20
|
+
|
|
21
|
+
attr_reader location: Herb::Location?
|
|
22
|
+
|
|
23
|
+
attr_reader suggestion: String?
|
|
24
|
+
|
|
25
|
+
attr_reader description: String?
|
|
26
|
+
|
|
27
|
+
attr_reader docs_url: String?
|
|
28
|
+
|
|
29
|
+
attr_reader value: String?
|
|
30
|
+
|
|
31
|
+
attr_reader overlay: Symbol?
|
|
32
|
+
|
|
33
|
+
attr_reader phase: Symbol
|
|
34
|
+
|
|
35
|
+
attr_reader data: Hash[Symbol, untyped]
|
|
36
|
+
|
|
37
|
+
attr_reader error_class: Class?
|
|
38
|
+
|
|
39
|
+
# : (template: String, message: String, ?severity: Symbol?, ?kind: Symbol, ?origin: String, ?node: String?, ?code: String?, ?location: Herb::Location?, ?suggestion: String?, ?description: String?, ?docs_url: String?, ?value: String?, ?overlay: Symbol?, ?phase: Symbol, ?data: Hash[Symbol, untyped], ?error_class: Class?) -> void
|
|
40
|
+
def initialize: (template: String, message: String, ?severity: Symbol?, ?kind: Symbol, ?origin: String, ?node: String?, ?code: String?, ?location: Herb::Location?, ?suggestion: String?, ?description: String?, ?docs_url: String?, ?value: String?, ?overlay: Symbol?, ?phase: Symbol, ?data: Hash[Symbol, untyped], ?error_class: Class?) -> void
|
|
41
|
+
|
|
42
|
+
# : (Array[Herb::Errors::Error], template: String, ?origin: String) -> Array[Diagnostic]
|
|
43
|
+
def self.from_errors: (Array[Herb::Errors::Error], template: String, ?origin: String) -> Array[Diagnostic]
|
|
44
|
+
|
|
45
|
+
# : (String, Hash[Symbol, untyped]) -> Diagnostic
|
|
46
|
+
def self.from_compiled: (String, Hash[Symbol, untyped]) -> Diagnostic
|
|
47
|
+
|
|
48
|
+
# : () -> bool
|
|
49
|
+
def error?: () -> bool
|
|
50
|
+
|
|
51
|
+
# : () -> bool
|
|
52
|
+
def warning?: () -> bool
|
|
53
|
+
|
|
54
|
+
# : () -> bool
|
|
55
|
+
def info?: () -> bool
|
|
56
|
+
|
|
57
|
+
# : () -> bool
|
|
58
|
+
def hint?: () -> bool
|
|
59
|
+
|
|
60
|
+
# : (String?) -> Diagnostic
|
|
61
|
+
def with_node: (String?) -> Diagnostic
|
|
62
|
+
|
|
63
|
+
# : () -> Array[untyped]
|
|
64
|
+
def key: () -> Array[untyped]
|
|
65
|
+
|
|
66
|
+
# : () -> Hash[Symbol, untyped]
|
|
67
|
+
def to_h: () -> Hash[Symbol, untyped]
|
|
68
|
+
|
|
69
|
+
alias to_hash to_h
|
|
70
|
+
|
|
71
|
+
# : (?String?) -> String
|
|
72
|
+
def to_ruby: (?String?) -> String
|
|
73
|
+
|
|
74
|
+
# : (?untyped) -> String
|
|
75
|
+
def to_json: (?untyped) -> String
|
|
76
|
+
|
|
77
|
+
# : () -> String
|
|
78
|
+
def to_s: () -> String
|
|
79
|
+
|
|
80
|
+
private
|
|
81
|
+
|
|
82
|
+
# : (Herb::Location) -> Hash[Symbol, untyped]
|
|
83
|
+
def serialized_location: (Herb::Location) -> Hash[Symbol, untyped]
|
|
84
|
+
|
|
85
|
+
# : (Herb::Position) -> Hash[Symbol, Integer]
|
|
86
|
+
def serialized_position: (Herb::Position) -> Hash[Symbol, Integer]
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Generated from lib/herb/diff/operation.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
module Diff
|
|
5
|
+
class Operation < Data
|
|
6
|
+
attr_reader type(): Symbol
|
|
7
|
+
|
|
8
|
+
attr_reader path(): Array[Integer]
|
|
9
|
+
|
|
10
|
+
attr_reader old_node(): Herb::AST::Node?
|
|
11
|
+
|
|
12
|
+
attr_reader new_node(): Herb::AST::Node?
|
|
13
|
+
|
|
14
|
+
attr_reader old_index(): Integer
|
|
15
|
+
|
|
16
|
+
attr_reader new_index(): Integer
|
|
17
|
+
|
|
18
|
+
def self.new: (Symbol type, Array[Integer] path, Herb::AST::Node? old_node, Herb::AST::Node? new_node, Integer old_index, Integer new_index) -> instance
|
|
19
|
+
| (type: Symbol, path: Array[Integer], old_node: Herb::AST::Node?, new_node: Herb::AST::Node?, old_index: Integer, new_index: Integer) -> instance
|
|
20
|
+
|
|
21
|
+
def self.members: () -> [ :type, :path, :old_node, :new_node, :old_index, :new_index ]
|
|
22
|
+
|
|
23
|
+
def members: () -> [ :type, :path, :old_node, :new_node, :old_index, :new_index ]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
class Operation
|
|
27
|
+
# : () -> Hash[Symbol, untyped]
|
|
28
|
+
def to_hash: () -> Hash[Symbol, untyped]
|
|
29
|
+
|
|
30
|
+
alias to_h to_hash
|
|
31
|
+
|
|
32
|
+
# : () -> String
|
|
33
|
+
def inspect: () -> String
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Generated from lib/herb/diff/result.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
module Diff
|
|
5
|
+
class Result
|
|
6
|
+
include Enumerable[Herb::Diff::Operation]
|
|
7
|
+
|
|
8
|
+
attr_reader operations: Array[Herb::Diff::Operation]
|
|
9
|
+
|
|
10
|
+
# : (bool, Array[Herb::Diff::Operation]) -> void
|
|
11
|
+
def initialize: (bool, Array[Herb::Diff::Operation]) -> void
|
|
12
|
+
|
|
13
|
+
# : () { (Herb::Diff::Operation) -> void } -> void
|
|
14
|
+
# : () -> Enumerator[Herb::Diff::Operation, void]
|
|
15
|
+
def each: () { (Herb::Diff::Operation) -> void } -> void
|
|
16
|
+
| () -> Enumerator[Herb::Diff::Operation, void]
|
|
17
|
+
|
|
18
|
+
# : () -> bool
|
|
19
|
+
def identical?: () -> bool
|
|
20
|
+
|
|
21
|
+
# : () -> Integer
|
|
22
|
+
def operation_count: () -> Integer
|
|
23
|
+
|
|
24
|
+
# : () -> bool
|
|
25
|
+
def changed?: () -> bool
|
|
26
|
+
|
|
27
|
+
# : () -> Hash[Symbol, untyped]
|
|
28
|
+
def to_hash: () -> Hash[Symbol, untyped]
|
|
29
|
+
|
|
30
|
+
alias to_h to_hash
|
|
31
|
+
|
|
32
|
+
# : () -> String
|
|
33
|
+
def inspect: () -> String
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
data/sig/herb/diff.rbs
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Generated from lib/herb/engine/collector.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
class Engine
|
|
5
|
+
# What a set of templates says about itself, gathered without rendering any of them.
|
|
6
|
+
#
|
|
7
|
+
# Compiling a template settles things a host wants to know before a request arrives. A
|
|
8
|
+
# collector compiles files for that and nothing else, and a subclass says what to keep from
|
|
9
|
+
# each one. Which files to give it, and where what it gathers goes, is the job of whatever
|
|
10
|
+
# integrates Herb with a framework.
|
|
11
|
+
#
|
|
12
|
+
# A file that will not compile is recorded in #failures and the run carries on, so one broken
|
|
13
|
+
# template does not cost a host the rest of them.
|
|
14
|
+
class Collector
|
|
15
|
+
class Failure < Data
|
|
16
|
+
attr_reader file(): untyped
|
|
17
|
+
|
|
18
|
+
attr_reader error(): untyped
|
|
19
|
+
|
|
20
|
+
def self.new: (untyped file, untyped error) -> instance
|
|
21
|
+
| (file: untyped, error: untyped) -> instance
|
|
22
|
+
|
|
23
|
+
def self.members: () -> [ :file, :error ]
|
|
24
|
+
|
|
25
|
+
def members: () -> [ :file, :error ]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
attr_reader failures: Array[Failure]
|
|
29
|
+
|
|
30
|
+
# : (?project_path: (String | Pathname)?, **untyped) -> void
|
|
31
|
+
def initialize: (?project_path: (String | Pathname)?, **untyped) -> void
|
|
32
|
+
|
|
33
|
+
# : ((String | Pathname), ?String?) -> untyped
|
|
34
|
+
def add: (String | Pathname, ?String?) -> untyped
|
|
35
|
+
|
|
36
|
+
# : ((String | Pathname), ?String) -> Array[untyped]
|
|
37
|
+
def add_all: (String | Pathname, ?String) -> Array[untyped]
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
# : [T] ((String | Pathname), String?, untyped) { (untyped) -> T? } -> T?
|
|
42
|
+
def compile: [T] (String | Pathname, String?, untyped) { (untyped) -> T? } -> T?
|
|
43
|
+
|
|
44
|
+
# : ((String | Pathname), untyped) -> Hash[Symbol, untyped]
|
|
45
|
+
def engine_options: (String | Pathname, untyped) -> Hash[Symbol, untyped]
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -3,22 +3,22 @@
|
|
|
3
3
|
module Herb
|
|
4
4
|
class Engine
|
|
5
5
|
class Compiler < ::Herb::Visitor
|
|
6
|
-
|
|
6
|
+
PADDING_NEWLINES: Array[String]
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
EXPRESSION_TOKEN_TYPES: Array[Symbol]
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
HORIZONTAL_SPACE: Array[String]
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
WHITESPACE_ONLY: ::Regexp
|
|
15
|
-
|
|
16
|
-
WHITESPACE_ONLY_CAPTURE: ::Regexp
|
|
12
|
+
RAW_TEXT_ELEMENTS: Array[String]
|
|
17
13
|
|
|
18
14
|
attr_reader tokens: untyped
|
|
19
15
|
|
|
20
16
|
def initialize: (untyped engine, ?untyped options) -> untyped
|
|
21
17
|
|
|
18
|
+
def optimized_tokens: () -> untyped
|
|
19
|
+
|
|
20
|
+
def static_template_text: () -> untyped
|
|
21
|
+
|
|
22
22
|
def generate_output: () -> untyped
|
|
23
23
|
|
|
24
24
|
def visit_document_node: (untyped node) -> untyped
|
|
@@ -57,10 +57,16 @@ module Herb
|
|
|
57
57
|
|
|
58
58
|
def visit_xml_declaration_node: (untyped node) -> untyped
|
|
59
59
|
|
|
60
|
+
def visit_xml_processing_instruction_node: (untyped node) -> untyped
|
|
61
|
+
|
|
60
62
|
def visit_cdata_node: (untyped node) -> untyped
|
|
61
63
|
|
|
62
64
|
def visit_erb_content_node: (untyped node) -> untyped
|
|
63
65
|
|
|
66
|
+
def visit_erb_comment_node: (untyped node) -> untyped
|
|
67
|
+
|
|
68
|
+
def visit_erb_strict_locals_node: (untyped node) -> untyped
|
|
69
|
+
|
|
64
70
|
def visit_erb_control_node: (untyped node) ?{ (?) -> untyped } -> untyped
|
|
65
71
|
|
|
66
72
|
def visit_erb_if_node: (untyped node) -> untyped
|
|
@@ -95,13 +101,21 @@ module Herb
|
|
|
95
101
|
|
|
96
102
|
def visit_erb_block_node: (untyped node) -> untyped
|
|
97
103
|
|
|
104
|
+
def visit_erb_iteration_block_node: (untyped node) -> untyped
|
|
105
|
+
|
|
106
|
+
def visit_erb_render_node: (untyped node) -> untyped
|
|
107
|
+
|
|
98
108
|
def visit_erb_block_end_node: (untyped node, ?escaped: untyped) -> untyped
|
|
99
109
|
|
|
100
|
-
def
|
|
110
|
+
def visit_erb_case_parts: (untyped node) -> untyped
|
|
111
|
+
|
|
112
|
+
def visit_erb_control_with_parts: (untyped node, *untyped parts) ?{ (?) -> untyped } -> untyped
|
|
101
113
|
|
|
102
114
|
private
|
|
103
115
|
|
|
104
|
-
def
|
|
116
|
+
def add_escaped_erb_tag: (untyped node) -> untyped
|
|
117
|
+
|
|
118
|
+
def add_escaped_erb_block: (untyped node) -> untyped
|
|
105
119
|
|
|
106
120
|
def current_context: () -> untyped
|
|
107
121
|
|
|
@@ -109,14 +123,17 @@ module Herb
|
|
|
109
123
|
|
|
110
124
|
def pop_context: () -> untyped
|
|
111
125
|
|
|
112
|
-
# : (untyped node) { () -> untyped } -> untyped
|
|
113
|
-
def with_element_context: (untyped node) { () -> untyped } -> untyped
|
|
126
|
+
# : (untyped node) { (String?) -> untyped } -> untyped
|
|
127
|
+
def with_element_context: (untyped node) { (String?) -> untyped } -> untyped
|
|
114
128
|
|
|
115
129
|
def process_erb_tag: (untyped node, ?skip_comment_check: untyped) -> untyped
|
|
116
130
|
|
|
117
|
-
|
|
131
|
+
# : (untyped, ?extra: Integer) -> void
|
|
132
|
+
def keep_span_line_count: (untyped, ?extra: Integer) -> void
|
|
133
|
+
|
|
134
|
+
def keep_line_count: (untyped node, ?extra: untyped, ?at: untyped, ?absorbed: untyped, ?raw: untyped) -> untyped
|
|
118
135
|
|
|
119
|
-
def
|
|
136
|
+
def add_text: (untyped text) -> untyped
|
|
120
137
|
|
|
121
138
|
def add_code: (untyped code) -> untyped
|
|
122
139
|
|
|
@@ -126,17 +143,9 @@ module Herb
|
|
|
126
143
|
|
|
127
144
|
def optimize_tokens: (untyped tokens) -> untyped
|
|
128
145
|
|
|
129
|
-
def
|
|
130
|
-
|
|
131
|
-
def adjacent_whitespace?: (untyped tokens, untyped index) -> untyped
|
|
132
|
-
|
|
133
|
-
def trailing_whitespace?: (untyped token) -> untyped
|
|
134
|
-
|
|
135
|
-
def leading_whitespace?: (untyped token) -> untyped
|
|
146
|
+
def padding_newlines: (untyped count) -> untyped
|
|
136
147
|
|
|
137
|
-
def
|
|
138
|
-
|
|
139
|
-
def find_token_before_code_sequence: (untyped tokens, untyped whitespace_index) -> untyped
|
|
148
|
+
def optimize_tokens_with_padding: (untyped tokens) -> untyped
|
|
140
149
|
|
|
141
150
|
def process_erb_output: (untyped node, untyped opening, untyped code) -> untyped
|
|
142
151
|
|
|
@@ -148,6 +157,21 @@ module Herb
|
|
|
148
157
|
|
|
149
158
|
def add_expression_with_escaping: (untyped code, untyped should_escape) -> untyped
|
|
150
159
|
|
|
160
|
+
# : (String) -> Integer
|
|
161
|
+
def trailing_space_length: (String) -> Integer
|
|
162
|
+
|
|
163
|
+
# : (String) -> String
|
|
164
|
+
def trailing_spaces: (String) -> String
|
|
165
|
+
|
|
166
|
+
# : (String) -> void
|
|
167
|
+
def remove_trailing_spaces!: (String) -> void
|
|
168
|
+
|
|
169
|
+
# : (String) -> bool
|
|
170
|
+
def whitespace_only?: (String) -> bool
|
|
171
|
+
|
|
172
|
+
# : (String) -> bool
|
|
173
|
+
def trailing_indentation?: (String) -> bool
|
|
174
|
+
|
|
151
175
|
def at_line_start?: () -> untyped
|
|
152
176
|
|
|
153
177
|
def preceding_token_ends_with_newline?: () -> untyped
|
|
@@ -156,16 +180,42 @@ module Herb
|
|
|
156
180
|
|
|
157
181
|
def right_trim?: (untyped node) -> untyped
|
|
158
182
|
|
|
183
|
+
def preceded_by_whitespace?: () -> untyped
|
|
184
|
+
|
|
185
|
+
def emits_nothing?: (untyped token) -> untyped
|
|
186
|
+
|
|
159
187
|
def last_text_token: () -> untyped
|
|
160
188
|
|
|
161
189
|
def extract_leading_space: () -> untyped
|
|
162
190
|
|
|
163
191
|
def leading_space_follows_newline?: () -> untyped
|
|
164
192
|
|
|
193
|
+
def preceding_token_value_ends_with_newline?: () -> untyped
|
|
194
|
+
|
|
165
195
|
def extract_and_remove_leading_space!: () -> untyped
|
|
166
196
|
|
|
167
197
|
def apply_trim: (untyped node, untyped code) -> untyped
|
|
168
198
|
|
|
199
|
+
def continues_into_next_node?: (untyped node) -> untyped
|
|
200
|
+
|
|
201
|
+
# : (untyped) -> bool
|
|
202
|
+
def without_source?: (untyped) -> bool
|
|
203
|
+
|
|
204
|
+
# : (bool) -> void
|
|
205
|
+
def settle_pending_span_extra!: (bool) -> void
|
|
206
|
+
|
|
207
|
+
# : (bool) -> void
|
|
208
|
+
def settle_pending_trim_newline!: (bool) -> void
|
|
209
|
+
|
|
210
|
+
# : (Array[untyped]) -> void
|
|
211
|
+
def skip_case_children: (Array[untyped]) -> void
|
|
212
|
+
|
|
213
|
+
# : (untyped) -> bool
|
|
214
|
+
def follows_trimmed_statement_tag?: (untyped) -> bool
|
|
215
|
+
|
|
216
|
+
# : () -> void
|
|
217
|
+
def drop_pending_trim_newline!: () -> void
|
|
218
|
+
|
|
169
219
|
def save_pending_leading_whitespace!: (untyped whitespace) -> untyped
|
|
170
220
|
|
|
171
221
|
def restore_pending_leading_whitespace!: () -> untyped
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Generated from lib/herb/engine/component_tags/constant_resolver.rb with RBS::Inline
|
|
2
|
+
|
|
3
|
+
module Herb
|
|
4
|
+
class Engine
|
|
5
|
+
module ComponentTags
|
|
6
|
+
# Resolves a tag name that is a Ruby constant, so `<Card />` becomes `render Card.new` and
|
|
7
|
+
# `<Users::Card />` becomes `render Users::Card.new`.
|
|
8
|
+
class ConstantResolver < Resolver
|
|
9
|
+
TAG_NAME: ::Regexp
|
|
10
|
+
|
|
11
|
+
# : (String) -> bool
|
|
12
|
+
def handles?: (String) -> bool
|
|
13
|
+
|
|
14
|
+
# : (String, Hash[String, String], block: bool) -> String
|
|
15
|
+
def render_code: (String, Hash[String, String], block: bool) -> String
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|