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
|
@@ -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,14 @@ 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
|
+
|
|
64
68
|
def visit_erb_control_node: (untyped node) ?{ (?) -> untyped } -> untyped
|
|
65
69
|
|
|
66
70
|
def visit_erb_if_node: (untyped node) -> untyped
|
|
@@ -95,13 +99,21 @@ module Herb
|
|
|
95
99
|
|
|
96
100
|
def visit_erb_block_node: (untyped node) -> untyped
|
|
97
101
|
|
|
102
|
+
def visit_erb_iteration_block_node: (untyped node) -> untyped
|
|
103
|
+
|
|
104
|
+
def visit_erb_render_node: (untyped node) -> untyped
|
|
105
|
+
|
|
98
106
|
def visit_erb_block_end_node: (untyped node, ?escaped: untyped) -> untyped
|
|
99
107
|
|
|
108
|
+
def case_parts: (untyped node) -> untyped
|
|
109
|
+
|
|
100
110
|
def visit_erb_control_with_parts: (untyped node, *untyped parts) -> untyped
|
|
101
111
|
|
|
102
112
|
private
|
|
103
113
|
|
|
104
|
-
def
|
|
114
|
+
def add_escaped_erb_tag: (untyped node) -> untyped
|
|
115
|
+
|
|
116
|
+
def add_escaped_erb_block: (untyped node) -> untyped
|
|
105
117
|
|
|
106
118
|
def current_context: () -> untyped
|
|
107
119
|
|
|
@@ -109,14 +121,17 @@ module Herb
|
|
|
109
121
|
|
|
110
122
|
def pop_context: () -> untyped
|
|
111
123
|
|
|
112
|
-
# : (untyped node) { () -> untyped } -> untyped
|
|
113
|
-
def with_element_context: (untyped node) { () -> untyped } -> untyped
|
|
124
|
+
# : (untyped node) { (String?) -> untyped } -> untyped
|
|
125
|
+
def with_element_context: (untyped node) { (String?) -> untyped } -> untyped
|
|
114
126
|
|
|
115
127
|
def process_erb_tag: (untyped node, ?skip_comment_check: untyped) -> untyped
|
|
116
128
|
|
|
117
|
-
|
|
129
|
+
# : (untyped, ?extra: Integer) -> void
|
|
130
|
+
def keep_span_line_count: (untyped, ?extra: Integer) -> void
|
|
118
131
|
|
|
119
|
-
def
|
|
132
|
+
def keep_line_count: (untyped node, ?extra: untyped, ?at: untyped, ?absorbed: untyped, ?raw: untyped) -> untyped
|
|
133
|
+
|
|
134
|
+
def add_text: (untyped text) -> untyped
|
|
120
135
|
|
|
121
136
|
def add_code: (untyped code) -> untyped
|
|
122
137
|
|
|
@@ -126,17 +141,9 @@ module Herb
|
|
|
126
141
|
|
|
127
142
|
def optimize_tokens: (untyped tokens) -> untyped
|
|
128
143
|
|
|
129
|
-
def
|
|
130
|
-
|
|
131
|
-
def adjacent_whitespace?: (untyped tokens, untyped index) -> untyped
|
|
132
|
-
|
|
133
|
-
def trailing_whitespace?: (untyped token) -> untyped
|
|
144
|
+
def padding_newlines: (untyped count) -> untyped
|
|
134
145
|
|
|
135
|
-
def
|
|
136
|
-
|
|
137
|
-
def whitespace_before_code_sequence?: (untyped tokens, untyped current_index) -> untyped
|
|
138
|
-
|
|
139
|
-
def find_token_before_code_sequence: (untyped tokens, untyped whitespace_index) -> untyped
|
|
146
|
+
def optimize_tokens_with_padding: (untyped tokens) -> untyped
|
|
140
147
|
|
|
141
148
|
def process_erb_output: (untyped node, untyped opening, untyped code) -> untyped
|
|
142
149
|
|
|
@@ -148,6 +155,21 @@ module Herb
|
|
|
148
155
|
|
|
149
156
|
def add_expression_with_escaping: (untyped code, untyped should_escape) -> untyped
|
|
150
157
|
|
|
158
|
+
# : (String) -> Integer
|
|
159
|
+
def trailing_space_length: (String) -> Integer
|
|
160
|
+
|
|
161
|
+
# : (String) -> String
|
|
162
|
+
def trailing_spaces: (String) -> String
|
|
163
|
+
|
|
164
|
+
# : (String) -> void
|
|
165
|
+
def remove_trailing_spaces!: (String) -> void
|
|
166
|
+
|
|
167
|
+
# : (String) -> bool
|
|
168
|
+
def whitespace_only?: (String) -> bool
|
|
169
|
+
|
|
170
|
+
# : (String) -> bool
|
|
171
|
+
def trailing_indentation?: (String) -> bool
|
|
172
|
+
|
|
151
173
|
def at_line_start?: () -> untyped
|
|
152
174
|
|
|
153
175
|
def preceding_token_ends_with_newline?: () -> untyped
|
|
@@ -156,16 +178,33 @@ module Herb
|
|
|
156
178
|
|
|
157
179
|
def right_trim?: (untyped node) -> untyped
|
|
158
180
|
|
|
181
|
+
def preceded_by_whitespace?: () -> untyped
|
|
182
|
+
|
|
183
|
+
def emits_nothing?: (untyped token) -> untyped
|
|
184
|
+
|
|
159
185
|
def last_text_token: () -> untyped
|
|
160
186
|
|
|
161
187
|
def extract_leading_space: () -> untyped
|
|
162
188
|
|
|
163
189
|
def leading_space_follows_newline?: () -> untyped
|
|
164
190
|
|
|
191
|
+
def preceding_text_ends_with_newline?: () -> untyped
|
|
192
|
+
|
|
165
193
|
def extract_and_remove_leading_space!: () -> untyped
|
|
166
194
|
|
|
167
195
|
def apply_trim: (untyped node, untyped code) -> untyped
|
|
168
196
|
|
|
197
|
+
def continues_into_next_node?: (untyped node) -> untyped
|
|
198
|
+
|
|
199
|
+
# : (untyped) -> bool
|
|
200
|
+
def without_source?: (untyped) -> bool
|
|
201
|
+
|
|
202
|
+
# : (bool) -> void
|
|
203
|
+
def settle_pending_span_extra!: (bool) -> void
|
|
204
|
+
|
|
205
|
+
# : (bool) -> void
|
|
206
|
+
def settle_pending_trim_newline!: (bool) -> void
|
|
207
|
+
|
|
169
208
|
def save_pending_leading_whitespace!: (untyped whitespace) -> untyped
|
|
170
209
|
|
|
171
210
|
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
|