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
|
@@ -4,44 +4,33 @@
|
|
|
4
4
|
#include "../ast/ast_nodes.h"
|
|
5
5
|
#include "../lib/hb_allocator.h"
|
|
6
6
|
#include "../lib/hb_array.h"
|
|
7
|
+
#include "../lib/hb_buffer.h"
|
|
7
8
|
#include "../parser/parser.h"
|
|
8
9
|
#include "analyzed_ruby.h"
|
|
9
10
|
|
|
11
|
+
typedef struct TAG_HELPER_SCOPE_STRUCT {
|
|
12
|
+
hb_buffer_T buffer;
|
|
13
|
+
pm_options_t options;
|
|
14
|
+
pm_parser_t parser;
|
|
15
|
+
pm_node_t* root;
|
|
16
|
+
} tag_helper_scope_T;
|
|
17
|
+
|
|
10
18
|
typedef struct ANALYZE_RUBY_CONTEXT_STRUCT {
|
|
11
19
|
AST_DOCUMENT_NODE_T* document;
|
|
12
20
|
AST_NODE_T* parent;
|
|
13
21
|
hb_array_T* ruby_context_stack;
|
|
22
|
+
tag_helper_scope_T* tag_helper_scope;
|
|
14
23
|
hb_allocator_T* allocator;
|
|
15
24
|
const char* source;
|
|
16
25
|
bool found_strict_locals;
|
|
26
|
+
const parser_options_T* options;
|
|
17
27
|
} analyze_ruby_context_T;
|
|
18
28
|
|
|
19
|
-
typedef enum {
|
|
20
|
-
CONTROL_TYPE_IF,
|
|
21
|
-
CONTROL_TYPE_ELSIF,
|
|
22
|
-
CONTROL_TYPE_ELSE,
|
|
23
|
-
CONTROL_TYPE_END,
|
|
24
|
-
CONTROL_TYPE_CASE,
|
|
25
|
-
CONTROL_TYPE_CASE_MATCH,
|
|
26
|
-
CONTROL_TYPE_WHEN,
|
|
27
|
-
CONTROL_TYPE_IN,
|
|
28
|
-
CONTROL_TYPE_BEGIN,
|
|
29
|
-
CONTROL_TYPE_RESCUE,
|
|
30
|
-
CONTROL_TYPE_ENSURE,
|
|
31
|
-
CONTROL_TYPE_UNLESS,
|
|
32
|
-
CONTROL_TYPE_WHILE,
|
|
33
|
-
CONTROL_TYPE_UNTIL,
|
|
34
|
-
CONTROL_TYPE_FOR,
|
|
35
|
-
CONTROL_TYPE_BLOCK,
|
|
36
|
-
CONTROL_TYPE_BLOCK_CLOSE,
|
|
37
|
-
CONTROL_TYPE_YIELD,
|
|
38
|
-
CONTROL_TYPE_UNKNOWN
|
|
39
|
-
} control_type_t;
|
|
40
|
-
|
|
41
29
|
typedef struct {
|
|
42
30
|
int loop_depth;
|
|
43
31
|
int rescue_depth;
|
|
44
32
|
hb_allocator_T* allocator;
|
|
33
|
+
const parser_options_T* options;
|
|
45
34
|
} invalid_erb_context_T;
|
|
46
35
|
|
|
47
36
|
void herb_analyze_parse_errors(
|
|
@@ -5,6 +5,29 @@
|
|
|
5
5
|
#include "../lib/hb_string.h"
|
|
6
6
|
|
|
7
7
|
#include <prism.h>
|
|
8
|
+
#include <stdbool.h>
|
|
9
|
+
|
|
10
|
+
typedef enum {
|
|
11
|
+
CONTROL_TYPE_IF,
|
|
12
|
+
CONTROL_TYPE_ELSIF,
|
|
13
|
+
CONTROL_TYPE_ELSE,
|
|
14
|
+
CONTROL_TYPE_END,
|
|
15
|
+
CONTROL_TYPE_CASE,
|
|
16
|
+
CONTROL_TYPE_CASE_MATCH,
|
|
17
|
+
CONTROL_TYPE_WHEN,
|
|
18
|
+
CONTROL_TYPE_IN,
|
|
19
|
+
CONTROL_TYPE_BEGIN,
|
|
20
|
+
CONTROL_TYPE_RESCUE,
|
|
21
|
+
CONTROL_TYPE_ENSURE,
|
|
22
|
+
CONTROL_TYPE_UNLESS,
|
|
23
|
+
CONTROL_TYPE_WHILE,
|
|
24
|
+
CONTROL_TYPE_UNTIL,
|
|
25
|
+
CONTROL_TYPE_FOR,
|
|
26
|
+
CONTROL_TYPE_BLOCK,
|
|
27
|
+
CONTROL_TYPE_BLOCK_CLOSE,
|
|
28
|
+
CONTROL_TYPE_YIELD,
|
|
29
|
+
CONTROL_TYPE_UNKNOWN
|
|
30
|
+
} control_type_t;
|
|
8
31
|
|
|
9
32
|
typedef struct ANALYZED_RUBY_STRUCT {
|
|
10
33
|
pm_parser_t parser;
|
|
@@ -31,6 +54,8 @@ typedef struct ANALYZED_RUBY_STRUCT {
|
|
|
31
54
|
int yield_node_count;
|
|
32
55
|
int then_keyword_count;
|
|
33
56
|
int unclosed_control_flow_count;
|
|
57
|
+
control_type_t control_type;
|
|
58
|
+
bool control_type_detected;
|
|
34
59
|
} analyzed_ruby_T;
|
|
35
60
|
|
|
36
61
|
analyzed_ruby_T* init_analyzed_ruby(hb_string_T source);
|
|
@@ -7,8 +7,24 @@
|
|
|
7
7
|
#include "../location/position.h"
|
|
8
8
|
#include "analyze.h"
|
|
9
9
|
|
|
10
|
+
position_T erb_tag_start_position(const token_T* tag_opening, const token_T* content, location_T location);
|
|
11
|
+
position_T erb_tag_end_position(
|
|
12
|
+
const token_T* tag_closing,
|
|
13
|
+
const token_T* content,
|
|
14
|
+
const token_T* tag_opening,
|
|
15
|
+
location_T location
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
position_T erb_content_start_position(const AST_ERB_CONTENT_NODE_T* erb_node);
|
|
10
19
|
position_T erb_content_end_position(const AST_ERB_CONTENT_NODE_T* erb_node);
|
|
11
20
|
|
|
21
|
+
location_T* compute_then_keyword_for_content(
|
|
22
|
+
token_T* content,
|
|
23
|
+
analyzed_ruby_T* analyzed_ruby,
|
|
24
|
+
control_type_t control_type,
|
|
25
|
+
hb_allocator_T* allocator
|
|
26
|
+
);
|
|
27
|
+
|
|
12
28
|
location_T* compute_then_keyword(
|
|
13
29
|
AST_ERB_CONTENT_NODE_T* erb_node,
|
|
14
30
|
control_type_t control_type,
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#include "../ast/ast_nodes.h"
|
|
9
9
|
#include "../lib/hb_allocator.h"
|
|
10
10
|
#include "../lib/hb_array.h"
|
|
11
|
+
#include "../parser/parser.h"
|
|
11
12
|
#include "analyzed_ruby.h"
|
|
12
13
|
|
|
13
14
|
bool has_if_node(analyzed_ruby_T* analyzed);
|
|
@@ -30,6 +31,9 @@ bool has_unless_node(analyzed_ruby_T* analyzed);
|
|
|
30
31
|
bool has_yield_node(analyzed_ruby_T* analyzed);
|
|
31
32
|
bool has_then_keyword(analyzed_ruby_T* analyzed);
|
|
32
33
|
bool has_inline_case_condition(analyzed_ruby_T* analyzed);
|
|
34
|
+
bool has_inline_pattern_match(analyzed_ruby_T* analyzed, hb_string_T content);
|
|
35
|
+
bool inline_condition_keyword_offset(const analyzed_ruby_T* analyzed, uint32_t* offset);
|
|
36
|
+
bool control_role_split_offset(const analyzed_ruby_T* analyzed, uint32_t* offset);
|
|
33
37
|
|
|
34
38
|
bool has_error_message(analyzed_ruby_T* anlayzed, const char* message);
|
|
35
39
|
|
|
@@ -38,31 +42,11 @@ bool is_brace_block(pm_location_t opening_location);
|
|
|
38
42
|
bool is_closing_brace(pm_location_t location);
|
|
39
43
|
bool has_valid_block_closing(pm_location_t opening_loc, pm_location_t closing_loc);
|
|
40
44
|
|
|
41
|
-
bool
|
|
42
|
-
bool search_block_nodes(const pm_node_t* node, void* data);
|
|
43
|
-
bool search_case_match_nodes(const pm_node_t* node, void* data);
|
|
44
|
-
bool search_case_nodes(const pm_node_t* node, void* data);
|
|
45
|
-
bool search_for_nodes(const pm_node_t* node, void* data);
|
|
46
|
-
bool search_if_nodes(const pm_node_t* node, void* data);
|
|
47
|
-
bool search_in_nodes(const pm_node_t* node, void* data);
|
|
48
|
-
bool search_then_keywords(const pm_node_t* node, void* data);
|
|
45
|
+
bool search_control_flow_nodes(const pm_node_t* node, void* data);
|
|
49
46
|
bool search_unclosed_control_flows(const pm_node_t* node, void* data);
|
|
50
|
-
|
|
51
|
-
bool search_until_nodes(const pm_node_t* node, void* data);
|
|
52
|
-
bool search_when_nodes(const pm_node_t* node, void* data);
|
|
53
|
-
bool search_while_nodes(const pm_node_t* node, void* data);
|
|
54
|
-
bool search_yield_nodes(const pm_node_t* node, void* data);
|
|
47
|
+
void search_unexpected_keyword_errors(analyzed_ruby_T* analyzed);
|
|
55
48
|
|
|
56
|
-
|
|
57
|
-
bool search_unexpected_else_nodes(analyzed_ruby_T* analyzed);
|
|
58
|
-
bool search_unexpected_elsif_nodes(analyzed_ruby_T* analyzed);
|
|
59
|
-
bool search_unexpected_end_nodes(analyzed_ruby_T* analyzed);
|
|
60
|
-
bool search_unexpected_ensure_nodes(analyzed_ruby_T* analyzed);
|
|
61
|
-
bool search_unexpected_in_nodes(analyzed_ruby_T* analyzed);
|
|
62
|
-
bool search_unexpected_rescue_nodes(analyzed_ruby_T* analyzed);
|
|
63
|
-
bool search_unexpected_when_nodes(analyzed_ruby_T* analyzed);
|
|
64
|
-
|
|
65
|
-
void check_erb_node_for_missing_end(const AST_NODE_T* node, hb_allocator_T* allocator);
|
|
49
|
+
void check_erb_node_for_missing_end(const AST_NODE_T* node, hb_allocator_T* allocator, const parser_options_T* options);
|
|
66
50
|
|
|
67
51
|
hb_array_T* extract_parameters_from_prism(
|
|
68
52
|
pm_parameters_node_t* parameters,
|
|
@@ -73,10 +57,27 @@ hb_array_T* extract_parameters_from_prism(
|
|
|
73
57
|
hb_allocator_T* allocator
|
|
74
58
|
);
|
|
75
59
|
|
|
60
|
+
bool is_erb_output_tag(const AST_ERB_CONTENT_NODE_T* erb_node);
|
|
61
|
+
|
|
62
|
+
typedef enum {
|
|
63
|
+
STATIC_OUTPUT_NODE_NONE,
|
|
64
|
+
STATIC_OUTPUT_NODE_HTML_TEXT,
|
|
65
|
+
STATIC_OUTPUT_NODE_LITERAL,
|
|
66
|
+
} static_output_node_type_T;
|
|
67
|
+
|
|
68
|
+
bool append_static_output_node(
|
|
69
|
+
hb_array_T* statements,
|
|
70
|
+
const pm_statements_node_t* body,
|
|
71
|
+
const analyzed_ruby_T* analyzed,
|
|
72
|
+
position_T content_start,
|
|
73
|
+
static_output_node_type_T node_type,
|
|
74
|
+
hb_allocator_T* allocator
|
|
75
|
+
);
|
|
76
|
+
|
|
76
77
|
hb_array_T* extract_block_arguments_from_erb_node(
|
|
77
78
|
const AST_ERB_CONTENT_NODE_T* erb_node,
|
|
78
79
|
const char* source,
|
|
79
|
-
hb_array_T
|
|
80
|
+
hb_array_T** errors,
|
|
80
81
|
hb_allocator_T* allocator
|
|
81
82
|
);
|
|
82
83
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
2
|
+
// be modified manually. See templates/src/include/analyze/herb_directive_kinds.h.erb
|
|
3
|
+
|
|
4
|
+
#ifndef HERB_DIRECTIVE_KINDS_H
|
|
5
|
+
#define HERB_DIRECTIVE_KINDS_H
|
|
6
|
+
|
|
7
|
+
#include <prism.h>
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* The kind a `herb:state` default gets from the Prism node it parsed into.
|
|
11
|
+
*
|
|
12
|
+
* Returns NULL for a node type that has no plain mapping. The caller decides what those become,
|
|
13
|
+
* since a call node is a bare read or a seed depending on its shape.
|
|
14
|
+
*/
|
|
15
|
+
static inline const char* herb_directive_kind_for_prism_type(pm_node_type_t type) {
|
|
16
|
+
switch (type) {
|
|
17
|
+
case PM_TRUE_NODE:
|
|
18
|
+
case PM_FALSE_NODE: return "boolean";
|
|
19
|
+
|
|
20
|
+
case PM_INTEGER_NODE: return "integer";
|
|
21
|
+
|
|
22
|
+
case PM_FLOAT_NODE: return "float";
|
|
23
|
+
|
|
24
|
+
case PM_STRING_NODE: return "string";
|
|
25
|
+
|
|
26
|
+
case PM_SYMBOL_NODE: return "symbol";
|
|
27
|
+
|
|
28
|
+
case PM_NIL_NODE: return "nil";
|
|
29
|
+
|
|
30
|
+
case PM_ARRAY_NODE: return "array";
|
|
31
|
+
|
|
32
|
+
case PM_HASH_NODE:
|
|
33
|
+
case PM_KEYWORD_HASH_NODE: return "hash";
|
|
34
|
+
|
|
35
|
+
case PM_LOCAL_VARIABLE_READ_NODE: return "bare";
|
|
36
|
+
|
|
37
|
+
default: return NULL;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
#endif
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#ifndef HERB_ANALYZE_HERB_DIRECTIVES_H
|
|
2
|
+
#define HERB_ANALYZE_HERB_DIRECTIVES_H
|
|
3
|
+
|
|
4
|
+
#include "../ast/ast_nodes.h"
|
|
5
|
+
#include "../lib/hb_string.h"
|
|
6
|
+
#include "analyze.h"
|
|
7
|
+
|
|
8
|
+
#include <prism.h>
|
|
9
|
+
#include <stdbool.h>
|
|
10
|
+
|
|
11
|
+
bool transform_herb_directive_nodes(const AST_NODE_T* node, void* data);
|
|
12
|
+
hb_string_T herb_directive_kind_for_prism_node(const pm_node_t* node);
|
|
13
|
+
|
|
14
|
+
#endif
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
#include "../ast/ast_nodes.h"
|
|
5
5
|
#include "../lib/hb_allocator.h"
|
|
6
6
|
|
|
7
|
+
struct PARSER_OPTIONS_STRUCT;
|
|
8
|
+
|
|
7
9
|
void herb_annotate_prism_nodes(
|
|
8
10
|
AST_DOCUMENT_NODE_T* document,
|
|
9
11
|
const char* source,
|
|
10
|
-
|
|
11
|
-
bool prism_nodes_deep,
|
|
12
|
-
bool prism_program,
|
|
12
|
+
const struct PARSER_OPTIONS_STRUCT* options,
|
|
13
13
|
hb_allocator_T* allocator
|
|
14
14
|
);
|
|
15
15
|
|
|
@@ -3,10 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
#include "../ast/ast_nodes.h"
|
|
5
5
|
#include "analyze.h"
|
|
6
|
+
#include "helpers.h"
|
|
6
7
|
|
|
7
8
|
AST_NODE_T* transform_ternary_expression(
|
|
8
9
|
AST_ERB_CONTENT_NODE_T* erb_node,
|
|
9
10
|
pm_if_node_t* if_node,
|
|
11
|
+
static_output_node_type_T static_node_type,
|
|
10
12
|
hb_allocator_T* allocator
|
|
11
13
|
);
|
|
12
14
|
|
data/src/include/ast/ast_node.h
CHANGED
|
@@ -16,21 +16,17 @@ void ast_node_init(
|
|
|
16
16
|
hb_allocator_T* allocator
|
|
17
17
|
);
|
|
18
18
|
void ast_node_free(AST_NODE_T* node, hb_allocator_T* allocator);
|
|
19
|
+
void ast_node_rebase_tokens(AST_NODE_T* node, const char* from, const char* to, size_t length);
|
|
19
20
|
|
|
20
21
|
AST_LITERAL_NODE_T* ast_literal_node_init_from_token(const token_T* token, hb_allocator_T* allocator);
|
|
21
22
|
|
|
22
23
|
size_t ast_node_sizeof(void);
|
|
23
|
-
size_t ast_node_child_count(AST_NODE_T* node);
|
|
24
24
|
|
|
25
25
|
ast_node_type_T ast_node_type(const AST_NODE_T* node);
|
|
26
26
|
|
|
27
27
|
void ast_node_set_start(AST_NODE_T* node, position_T position);
|
|
28
28
|
void ast_node_set_end(AST_NODE_T* node, position_T position);
|
|
29
29
|
|
|
30
|
-
size_t ast_node_errors_count(const AST_NODE_T* node);
|
|
31
|
-
hb_array_T* ast_node_errors(const AST_NODE_T* node);
|
|
32
|
-
void ast_node_append_error(const AST_NODE_T* node, ERROR_T* error);
|
|
33
|
-
|
|
34
30
|
void ast_node_set_start_from_token(AST_NODE_T* node, const token_T* token);
|
|
35
31
|
void ast_node_set_end_from_token(AST_NODE_T* node, const token_T* token);
|
|
36
32
|
|
data/src/include/ast/ast_nodes.h
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
2
|
-
// be modified manually. See
|
|
2
|
+
// be modified manually. See templates/src/include/ast/ast_nodes.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HERB_AST_NODES_H
|
|
5
5
|
#define HERB_AST_NODES_H
|
|
@@ -39,6 +39,7 @@ typedef enum {
|
|
|
39
39
|
AST_HTML_COMMENT_NODE,
|
|
40
40
|
AST_HTML_DOCTYPE_NODE,
|
|
41
41
|
AST_XML_DECLARATION_NODE,
|
|
42
|
+
AST_XML_PROCESSING_INSTRUCTION_NODE,
|
|
42
43
|
AST_CDATA_NODE,
|
|
43
44
|
AST_WHITESPACE_NODE,
|
|
44
45
|
AST_ERB_CONTENT_NODE,
|
|
@@ -46,6 +47,7 @@ typedef enum {
|
|
|
46
47
|
AST_ERB_ELSE_NODE,
|
|
47
48
|
AST_ERB_IF_NODE,
|
|
48
49
|
AST_ERB_BLOCK_NODE,
|
|
50
|
+
AST_ERB_ITERATION_BLOCK_NODE,
|
|
49
51
|
AST_ERB_WHEN_NODE,
|
|
50
52
|
AST_ERB_CASE_NODE,
|
|
51
53
|
AST_ERB_CASE_MATCH_NODE,
|
|
@@ -63,6 +65,10 @@ typedef enum {
|
|
|
63
65
|
AST_ERB_STRICT_LOCALS_NODE,
|
|
64
66
|
AST_ERB_YIELD_NODE,
|
|
65
67
|
AST_ERB_IN_NODE,
|
|
68
|
+
AST_HERB_DIRECTIVE_NODE,
|
|
69
|
+
AST_HERB_STATE_DECLARATION_NODE,
|
|
70
|
+
AST_HERB_STATE_DIRECTIVE_NODE,
|
|
71
|
+
AST_ERB_COMMENT_NODE,
|
|
66
72
|
} ast_node_type_T;
|
|
67
73
|
|
|
68
74
|
typedef struct AST_NODE_STRUCT {
|
|
@@ -207,6 +213,14 @@ typedef struct AST_XML_DECLARATION_NODE_STRUCT {
|
|
|
207
213
|
token_T* tag_closing;
|
|
208
214
|
} AST_XML_DECLARATION_NODE_T;
|
|
209
215
|
|
|
216
|
+
typedef struct AST_XML_PROCESSING_INSTRUCTION_NODE_STRUCT {
|
|
217
|
+
AST_NODE_T base;
|
|
218
|
+
token_T* tag_opening;
|
|
219
|
+
token_T* target;
|
|
220
|
+
hb_array_T* children;
|
|
221
|
+
token_T* tag_closing;
|
|
222
|
+
} AST_XML_PROCESSING_INSTRUCTION_NODE_T;
|
|
223
|
+
|
|
210
224
|
typedef struct AST_CDATA_NODE_STRUCT {
|
|
211
225
|
AST_NODE_T base;
|
|
212
226
|
token_T* tag_opening;
|
|
@@ -271,6 +285,25 @@ typedef struct AST_ERB_BLOCK_NODE_STRUCT {
|
|
|
271
285
|
struct AST_ERB_END_NODE_STRUCT* end_node;
|
|
272
286
|
} AST_ERB_BLOCK_NODE_T;
|
|
273
287
|
|
|
288
|
+
typedef struct AST_ERB_ITERATION_BLOCK_NODE_STRUCT {
|
|
289
|
+
AST_NODE_T base;
|
|
290
|
+
token_T* tag_opening;
|
|
291
|
+
token_T* content;
|
|
292
|
+
token_T* tag_closing;
|
|
293
|
+
herb_prism_node_T prism_node;
|
|
294
|
+
token_T* receiver;
|
|
295
|
+
token_T* call_operator;
|
|
296
|
+
token_T* message;
|
|
297
|
+
hb_array_T* arguments;
|
|
298
|
+
token_T* block_opening;
|
|
299
|
+
hb_array_T* body;
|
|
300
|
+
hb_array_T* block_arguments;
|
|
301
|
+
struct AST_ERB_RESCUE_NODE_STRUCT* rescue_clause;
|
|
302
|
+
struct AST_ERB_ELSE_NODE_STRUCT* else_clause;
|
|
303
|
+
struct AST_ERB_ENSURE_NODE_STRUCT* ensure_clause;
|
|
304
|
+
struct AST_ERB_END_NODE_STRUCT* end_node;
|
|
305
|
+
} AST_ERB_ITERATION_BLOCK_NODE_T;
|
|
306
|
+
|
|
274
307
|
typedef struct AST_ERB_WHEN_NODE_STRUCT {
|
|
275
308
|
AST_NODE_T base;
|
|
276
309
|
token_T* tag_opening;
|
|
@@ -402,6 +435,8 @@ typedef struct AST_RUBY_RENDER_KEYWORDS_NODE_STRUCT {
|
|
|
402
435
|
token_T* handlers;
|
|
403
436
|
token_T* content_type;
|
|
404
437
|
hb_array_T* locals;
|
|
438
|
+
hb_array_T* state;
|
|
439
|
+
location_T* state_location;
|
|
405
440
|
} AST_RUBY_RENDER_KEYWORDS_NODE_T;
|
|
406
441
|
|
|
407
442
|
typedef struct AST_ERB_RENDER_NODE_STRUCT {
|
|
@@ -443,6 +478,7 @@ typedef struct AST_ERB_YIELD_NODE_STRUCT {
|
|
|
443
478
|
token_T* tag_opening;
|
|
444
479
|
token_T* content;
|
|
445
480
|
token_T* tag_closing;
|
|
481
|
+
herb_prism_node_T prism_node;
|
|
446
482
|
} AST_ERB_YIELD_NODE_T;
|
|
447
483
|
|
|
448
484
|
typedef struct AST_ERB_IN_NODE_STRUCT {
|
|
@@ -454,6 +490,39 @@ typedef struct AST_ERB_IN_NODE_STRUCT {
|
|
|
454
490
|
hb_array_T* statements;
|
|
455
491
|
} AST_ERB_IN_NODE_T;
|
|
456
492
|
|
|
493
|
+
typedef struct AST_HERB_DIRECTIVE_NODE_STRUCT {
|
|
494
|
+
AST_NODE_T base;
|
|
495
|
+
token_T* tag_opening;
|
|
496
|
+
token_T* content;
|
|
497
|
+
token_T* tag_closing;
|
|
498
|
+
token_T* key;
|
|
499
|
+
token_T* arguments;
|
|
500
|
+
} AST_HERB_DIRECTIVE_NODE_T;
|
|
501
|
+
|
|
502
|
+
typedef struct AST_HERB_STATE_DECLARATION_NODE_STRUCT {
|
|
503
|
+
AST_NODE_T base;
|
|
504
|
+
token_T* name;
|
|
505
|
+
struct AST_RUBY_LITERAL_NODE_STRUCT* default_value;
|
|
506
|
+
hb_string_T kind;
|
|
507
|
+
} AST_HERB_STATE_DECLARATION_NODE_T;
|
|
508
|
+
|
|
509
|
+
typedef struct AST_HERB_STATE_DIRECTIVE_NODE_STRUCT {
|
|
510
|
+
AST_NODE_T base;
|
|
511
|
+
token_T* tag_opening;
|
|
512
|
+
token_T* content;
|
|
513
|
+
token_T* tag_closing;
|
|
514
|
+
token_T* key;
|
|
515
|
+
token_T* signature;
|
|
516
|
+
hb_array_T* states;
|
|
517
|
+
} AST_HERB_STATE_DIRECTIVE_NODE_T;
|
|
518
|
+
|
|
519
|
+
typedef struct AST_ERB_COMMENT_NODE_STRUCT {
|
|
520
|
+
AST_NODE_T base;
|
|
521
|
+
token_T* tag_opening;
|
|
522
|
+
token_T* content;
|
|
523
|
+
token_T* tag_closing;
|
|
524
|
+
} AST_ERB_COMMENT_NODE_T;
|
|
525
|
+
|
|
457
526
|
AST_DOCUMENT_NODE_T* ast_document_node_init(hb_array_T* children, herb_prism_context_T* prism_context, herb_prism_node_T prism_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
458
527
|
AST_LITERAL_NODE_T* ast_literal_node_init(hb_string_T content, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
459
528
|
AST_HTML_OPEN_TAG_NODE_T* ast_html_open_tag_node_init(token_T* tag_opening, token_T* tag_name, token_T* tag_closing, hb_array_T* children, bool is_void, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
@@ -473,6 +542,7 @@ AST_HTML_TEXT_NODE_T* ast_html_text_node_init(hb_string_T content, position_T st
|
|
|
473
542
|
AST_HTML_COMMENT_NODE_T* ast_html_comment_node_init(token_T* comment_start, hb_array_T* children, token_T* comment_end, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
474
543
|
AST_HTML_DOCTYPE_NODE_T* ast_html_doctype_node_init(token_T* tag_opening, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
475
544
|
AST_XML_DECLARATION_NODE_T* ast_xml_declaration_node_init(token_T* tag_opening, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
545
|
+
AST_XML_PROCESSING_INSTRUCTION_NODE_T* ast_xml_processing_instruction_node_init(token_T* tag_opening, token_T* target, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
476
546
|
AST_CDATA_NODE_T* ast_cdata_node_init(token_T* tag_opening, hb_array_T* children, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
477
547
|
AST_WHITESPACE_NODE_T* ast_whitespace_node_init(token_T* value, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
478
548
|
AST_ERB_CONTENT_NODE_T* ast_erb_content_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, analyzed_ruby_T* analyzed_ruby, bool parsed, bool valid, herb_prism_node_T prism_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
@@ -480,6 +550,7 @@ AST_ERB_END_NODE_T* ast_erb_end_node_init(token_T* tag_opening, token_T* content
|
|
|
480
550
|
AST_ERB_ELSE_NODE_T* ast_erb_else_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* statements, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
481
551
|
AST_ERB_IF_NODE_T* ast_erb_if_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, location_T* then_keyword, herb_prism_node_T prism_node, hb_array_T* statements, AST_NODE_T* subsequent, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
482
552
|
AST_ERB_BLOCK_NODE_T* ast_erb_block_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, herb_prism_node_T prism_node, hb_array_T* body, hb_array_T* block_arguments, struct AST_ERB_RESCUE_NODE_STRUCT* rescue_clause, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_ENSURE_NODE_STRUCT* ensure_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
553
|
+
AST_ERB_ITERATION_BLOCK_NODE_T* ast_erb_iteration_block_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, herb_prism_node_T prism_node, token_T* receiver, token_T* call_operator, token_T* message, hb_array_T* arguments, token_T* block_opening, hb_array_T* body, hb_array_T* block_arguments, struct AST_ERB_RESCUE_NODE_STRUCT* rescue_clause, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_ENSURE_NODE_STRUCT* ensure_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
483
554
|
AST_ERB_WHEN_NODE_T* ast_erb_when_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, location_T* then_keyword, hb_array_T* statements, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
484
555
|
AST_ERB_CASE_NODE_T* ast_erb_case_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* children, herb_prism_node_T prism_node, hb_array_T* conditions, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
485
556
|
AST_ERB_CASE_MATCH_NODE_T* ast_erb_case_match_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, hb_array_T* children, herb_prism_node_T prism_node, hb_array_T* conditions, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
@@ -491,12 +562,16 @@ AST_ERB_ENSURE_NODE_T* ast_erb_ensure_node_init(token_T* tag_opening, token_T* c
|
|
|
491
562
|
AST_ERB_BEGIN_NODE_T* ast_erb_begin_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, herb_prism_node_T prism_node, hb_array_T* statements, struct AST_ERB_RESCUE_NODE_STRUCT* rescue_clause, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_ENSURE_NODE_STRUCT* ensure_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
492
563
|
AST_ERB_UNLESS_NODE_T* ast_erb_unless_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, location_T* then_keyword, herb_prism_node_T prism_node, hb_array_T* statements, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
493
564
|
AST_RUBY_RENDER_LOCAL_NODE_T* ast_ruby_render_local_node_init(token_T* name, struct AST_RUBY_LITERAL_NODE_STRUCT* value, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
494
|
-
AST_RUBY_RENDER_KEYWORDS_NODE_T* ast_ruby_render_keywords_node_init(token_T* partial, token_T* template_path, token_T* layout, token_T* file, token_T* inline_template, token_T* body, token_T* plain, token_T* html, token_T* renderable, token_T* collection, token_T* object, token_T* as_name, token_T* spacer_template, token_T* formats, token_T* variants, token_T* handlers, token_T* content_type, hb_array_T* locals, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
565
|
+
AST_RUBY_RENDER_KEYWORDS_NODE_T* ast_ruby_render_keywords_node_init(token_T* partial, token_T* template_path, token_T* layout, token_T* file, token_T* inline_template, token_T* body, token_T* plain, token_T* html, token_T* renderable, token_T* collection, token_T* object, token_T* as_name, token_T* spacer_template, token_T* formats, token_T* variants, token_T* handlers, token_T* content_type, hb_array_T* locals, hb_array_T* state, location_T* state_location, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
495
566
|
AST_ERB_RENDER_NODE_T* ast_erb_render_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, analyzed_ruby_T* analyzed_ruby, herb_prism_node_T prism_node, struct AST_RUBY_RENDER_KEYWORDS_NODE_STRUCT* keywords, hb_array_T* body, hb_array_T* block_arguments, struct AST_ERB_RESCUE_NODE_STRUCT* rescue_clause, struct AST_ERB_ELSE_NODE_STRUCT* else_clause, struct AST_ERB_ENSURE_NODE_STRUCT* ensure_clause, struct AST_ERB_END_NODE_STRUCT* end_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
496
567
|
AST_RUBY_PARAMETER_NODE_T* ast_ruby_parameter_node_init(token_T* name, struct AST_RUBY_LITERAL_NODE_STRUCT* default_value, hb_string_T kind, bool required, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
497
568
|
AST_ERB_STRICT_LOCALS_NODE_T* ast_erb_strict_locals_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, analyzed_ruby_T* analyzed_ruby, herb_prism_node_T prism_node, hb_array_T* locals, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
498
|
-
AST_ERB_YIELD_NODE_T* ast_erb_yield_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
569
|
+
AST_ERB_YIELD_NODE_T* ast_erb_yield_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, herb_prism_node_T prism_node, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
499
570
|
AST_ERB_IN_NODE_T* ast_erb_in_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, location_T* then_keyword, hb_array_T* statements, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
571
|
+
AST_HERB_DIRECTIVE_NODE_T* ast_herb_directive_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, token_T* key, token_T* arguments, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
572
|
+
AST_HERB_STATE_DECLARATION_NODE_T* ast_herb_state_declaration_node_init(token_T* name, struct AST_RUBY_LITERAL_NODE_STRUCT* default_value, hb_string_T kind, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
573
|
+
AST_HERB_STATE_DIRECTIVE_NODE_T* ast_herb_state_directive_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, token_T* key, token_T* signature, hb_array_T* states, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
574
|
+
AST_ERB_COMMENT_NODE_T* ast_erb_comment_node_init(token_T* tag_opening, token_T* content, token_T* tag_closing, position_T start_position, position_T end_position, hb_array_T* errors, hb_allocator_T* allocator);
|
|
500
575
|
|
|
501
576
|
hb_string_T ast_node_type_to_string(AST_NODE_T* node);
|
|
502
577
|
hb_string_T ast_node_human_type(AST_NODE_T* node);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// NOTE: This file is generated by the templates/template.rb script and should not
|
|
2
|
-
// be modified manually. See
|
|
2
|
+
// be modified manually. See templates/src/include/ast/ast_pretty_print.h.erb
|
|
3
3
|
|
|
4
4
|
#ifndef HERB_AST_PRETTY_PRINT_H
|
|
5
5
|
#define HERB_AST_PRETTY_PRINT_H
|
|
@@ -20,6 +20,7 @@ typedef enum {
|
|
|
20
20
|
HERB_DIFF_NODE_MOVED,
|
|
21
21
|
|
|
22
22
|
HERB_DIFF_TEXT_CHANGED,
|
|
23
|
+
HERB_DIFF_WHITESPACE_CHANGED,
|
|
23
24
|
HERB_DIFF_ERB_CONTENT_CHANGED,
|
|
24
25
|
|
|
25
26
|
HERB_DIFF_ATTRIBUTE_ADDED,
|
|
@@ -46,10 +47,17 @@ typedef struct {
|
|
|
46
47
|
uint32_t new_index;
|
|
47
48
|
} herb_diff_operation_T;
|
|
48
49
|
|
|
50
|
+
typedef struct {
|
|
51
|
+
bool track_whitespace_changes;
|
|
52
|
+
} herb_diff_options_T;
|
|
53
|
+
|
|
54
|
+
extern const herb_diff_options_T HERB_DEFAULT_DIFF_OPTIONS;
|
|
55
|
+
|
|
49
56
|
typedef struct {
|
|
50
57
|
hb_array_T* operations;
|
|
51
58
|
hb_allocator_T* allocator;
|
|
52
59
|
bool trees_identical;
|
|
60
|
+
herb_diff_options_T options;
|
|
53
61
|
} herb_diff_result_T;
|
|
54
62
|
|
|
55
63
|
herb_diff_path_T herb_diff_path_empty(void);
|
|
@@ -58,6 +66,7 @@ herb_diff_path_T herb_diff_path_append(herb_diff_path_T path, uint32_t index);
|
|
|
58
66
|
herb_diff_result_T* herb_diff(
|
|
59
67
|
const AST_DOCUMENT_NODE_T* old_document,
|
|
60
68
|
const AST_DOCUMENT_NODE_T* new_document,
|
|
69
|
+
const herb_diff_options_T* options,
|
|
61
70
|
hb_allocator_T* allocator
|
|
62
71
|
);
|
|
63
72
|
|
|
@@ -72,6 +81,7 @@ void herb_diff_node(
|
|
|
72
81
|
herb_diff_path_T path,
|
|
73
82
|
const herb_hash_map_T* old_hashes,
|
|
74
83
|
const herb_hash_map_T* new_hashes,
|
|
84
|
+
bool preserve_whitespace,
|
|
75
85
|
herb_diff_result_T* result
|
|
76
86
|
);
|
|
77
87
|
|
|
@@ -81,6 +91,7 @@ void herb_diff_children(
|
|
|
81
91
|
herb_diff_path_T parent_path,
|
|
82
92
|
const herb_hash_map_T* old_hashes,
|
|
83
93
|
const herb_hash_map_T* new_hashes,
|
|
94
|
+
bool preserve_whitespace,
|
|
84
95
|
herb_diff_result_T* result
|
|
85
96
|
);
|
|
86
97
|
|