fortitude 0.0.1
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 +7 -0
- data/.gitignore +20 -0
- data/.rspec-local +4 -0
- data/.travis.yml +26 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +22 -0
- data/README-erector.md +246 -0
- data/README.md +15 -0
- data/Rakefile +67 -0
- data/ext/FortitudeJrubyNativeExtService.java +11 -0
- data/ext/com/fortituderuby/ext/fortitude/FortitudeNativeLibrary.java +223 -0
- data/ext/fortitude_native_ext/extconf.rb +4 -0
- data/ext/fortitude_native_ext/fortitude_native_ext.c +333 -0
- data/fortitude.gemspec +37 -0
- data/lib/fortitude/assign_locals_from_template.rb.smpl +22 -0
- data/lib/fortitude/assigns_proxy.rb +75 -0
- data/lib/fortitude/class_inheritable_attributes.rb +96 -0
- data/lib/fortitude/doctypes/base.rb +38 -0
- data/lib/fortitude/doctypes/html4.rb +20 -0
- data/lib/fortitude/doctypes/html4_frameset.rb +18 -0
- data/lib/fortitude/doctypes/html4_strict.rb +17 -0
- data/lib/fortitude/doctypes/html4_tags_frameset.rb +52 -0
- data/lib/fortitude/doctypes/html4_tags_strict.rb +273 -0
- data/lib/fortitude/doctypes/html4_tags_transitional.rb +114 -0
- data/lib/fortitude/doctypes/html4_transitional.rb +18 -0
- data/lib/fortitude/doctypes/html5.rb +372 -0
- data/lib/fortitude/doctypes/unknown_doctype.rb +19 -0
- data/lib/fortitude/doctypes/xhtml10.rb +19 -0
- data/lib/fortitude/doctypes/xhtml10_frameset.rb +17 -0
- data/lib/fortitude/doctypes/xhtml10_strict.rb +17 -0
- data/lib/fortitude/doctypes/xhtml10_transitional.rb +17 -0
- data/lib/fortitude/doctypes/xhtml11.rb +29 -0
- data/lib/fortitude/doctypes.rb +46 -0
- data/lib/fortitude/errors.rb +153 -0
- data/lib/fortitude/fortitude_ruby_ext.rb +71 -0
- data/lib/fortitude/instance_variable_set.rb +74 -0
- data/lib/fortitude/need_assignment_template.rb.smpl +16 -0
- data/lib/fortitude/need_method_template.rb.smpl +4 -0
- data/lib/fortitude/non_rails_widget_methods.rb +15 -0
- data/lib/fortitude/partial_tag_placeholder.rb +17 -0
- data/lib/fortitude/rails/helpers.rb +153 -0
- data/lib/fortitude/rails/renderer.rb +43 -0
- data/lib/fortitude/rails/template_handler.rb +23 -0
- data/lib/fortitude/rails/widget_methods.rb +17 -0
- data/lib/fortitude/rails/yielded_object_outputter.rb +31 -0
- data/lib/fortitude/railtie.rb +254 -0
- data/lib/fortitude/rendering_context.rb +205 -0
- data/lib/fortitude/simple_template.rb +45 -0
- data/lib/fortitude/staticized_method.rb +85 -0
- data/lib/fortitude/tag.rb +162 -0
- data/lib/fortitude/tag_method_template.rb.smpl +68 -0
- data/lib/fortitude/tag_return_value.rb +11 -0
- data/lib/fortitude/tag_store.rb +48 -0
- data/lib/fortitude/tag_support.rb +48 -0
- data/lib/fortitude/tags_module.rb +14 -0
- data/lib/fortitude/text_method_template.rb.smpl +17 -0
- data/lib/fortitude/tilt/fortitude_template.rb +169 -0
- data/lib/fortitude/version.rb +3 -0
- data/lib/fortitude/widget.rb +904 -0
- data/lib/fortitude/widgets/html4_frameset.rb +9 -0
- data/lib/fortitude/widgets/html4_strict.rb +9 -0
- data/lib/fortitude/widgets/html4_transitional.rb +9 -0
- data/lib/fortitude/widgets/html5.rb +9 -0
- data/lib/fortitude/widgets/xhtml10_frameset.rb +9 -0
- data/lib/fortitude/widgets/xhtml10_strict.rb +9 -0
- data/lib/fortitude/widgets/xhtml10_transitional.rb +9 -0
- data/lib/fortitude/widgets/xhtml11.rb +9 -0
- data/lib/fortitude.rb +93 -0
- data/lib/fortitude_jruby_native_ext.jar +0 -0
- data/spec/helpers/global_helper.rb +8 -0
- data/spec/helpers/rails_helpers.rb +85 -0
- data/spec/helpers/rails_server.rb +386 -0
- data/spec/helpers/system_helpers.rb +117 -0
- data/spec/rails/basic_rails_system_spec.rb +7 -0
- data/spec/rails/capture_system_spec.rb +75 -0
- data/spec/rails/class_loading_system_spec.rb +63 -0
- data/spec/rails/complex_helpers_system_spec.rb +33 -0
- data/spec/rails/data_passing_system_spec.rb +96 -0
- data/spec/rails/default_layout_system_spec.rb +15 -0
- data/spec/rails/development_mode_system_spec.rb +67 -0
- data/spec/rails/erb_integration_system_spec.rb +23 -0
- data/spec/rails/helpers_include_all_off_system_spec.rb +7 -0
- data/spec/rails/helpers_system_spec.rb +79 -0
- data/spec/rails/helpers_unrefined_system_spec.rb +7 -0
- data/spec/rails/layouts_system_spec.rb +60 -0
- data/spec/rails/localization_system_spec.rb +38 -0
- data/spec/rails/production_mode_system_spec.rb +13 -0
- data/spec/rails/rendering_context_system_spec.rb +64 -0
- data/spec/rails/rendering_system_spec.rb +158 -0
- data/spec/rails/rules_system_spec.rb +23 -0
- data/spec/rails/static_method_system_spec.rb +12 -0
- data/spec/rails/templates/base/app/controllers/application_controller.rb +15 -0
- data/spec/rails/templates/base/app/controllers/working_controller.rb +5 -0
- data/spec/rails/templates/base/app/views/layouts/application.html.erb +11 -0
- data/spec/rails/templates/base/config/routes.rb +4 -0
- data/spec/rails/templates/base/config/secrets.yml +22 -0
- data/spec/rails/templates/basic_rails_system_spec/app/controllers/basic_rails_system_spec_controller.rb +8 -0
- data/spec/rails/templates/basic_rails_system_spec/app/views/basic_rails_system_spec/trivial_widget.rb +5 -0
- data/spec/rails/templates/capture_system_spec/app/controllers/capture_system_spec_controller.rb +37 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/_some_erb_partial.html.erb +1 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/another_widget.rb +7 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_erb_from_widget.rb +11 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_erb.html.erb +9 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_widget.rb +17 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/some_widget.rb +5 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_content_for.rb +19 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_layout_needing_content_yield_with_erb.html.erb +13 -0
- data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_provide.rb +13 -0
- data/spec/rails/templates/capture_system_spec/app/views/layouts/erb_layout_needing_content.html.erb +15 -0
- data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_content_for.rb +23 -0
- data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_yield.rb +23 -0
- data/spec/rails/templates/class_loading_system_spec/app/controllers/class_loading_system_spec_controller.rb +74 -0
- data/spec/rails/templates/class_loading_system_spec/app/models/views/app_models_helper.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/app/models/views/models_widget.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/autoload_namespace/autoload_widget.rb +11 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_loaded_underscore_widget.rb +11 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_view.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_widget.rb +11 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/app_models.rb +6 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/autoload_one_widget_from_another.rb +7 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/class_should_not_load.rb +9 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/lib_views.rb +8 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_lib_widget_from_view_widget.rb +9 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_models_widget_from_view_widget.rb +7 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/some_namespace/some_other_namespace/.git_keep +0 -0
- data/spec/rails/templates/class_loading_system_spec/app/views/sub_widget.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/lib/arbitrary_name/some_widget.rb +7 -0
- data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/lib_views_helper.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/widget_defined_outside_app_views.rb +5 -0
- data/spec/rails/templates/class_loading_system_spec/lib/views/lib_widget.rb +5 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/controllers/complex_helpers_system_spec_controller.rb +14 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/cache_test.rb +12 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/fields_for_test.rb +14 -0
- data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/form_for_test.rb +14 -0
- data/spec/rails/templates/complex_helpers_system_spec/config/environments/development.rb +31 -0
- data/spec/rails/templates/data_passing_system_spec/app/controllers/data_passing_system_spec_controller.rb +101 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_erb_to_parallel_widget_handoff_erb.html.erb +3 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_erb_to_widget_handoff_erb.html.erb +3 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_variable_write_erb.html.erb +1 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_widget_to_parallel_erb_handoff_erb.html.erb +1 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_copied_variables.html.erb +1 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff_widget.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/explicit_controller_variable_read.rb +6 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables.rb +23 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables_requested.rb +24 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff_widget.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance.rb +6 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_one.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_two.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_parent.rb +3 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inner.rb +8 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read_inner.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write_widget.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_child.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial_child.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_data_widget.rb +8 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_and_controller_variables_widget.rb +9 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_widget.rb +8 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/variables_to_layout.rb +7 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_copied_variables.rb +9 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff.html.erb +2 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff_widget.rb +5 -0
- data/spec/rails/templates/data_passing_system_spec/app/views/layouts/data_layout.rb +14 -0
- data/spec/rails/templates/default_layout_system_spec/app/controllers/default_layout_system_spec_controller.rb +9 -0
- data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/erb_with_widget_default_layout.html.erb +1 -0
- data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/widget_with_widget_default_layout.rb +5 -0
- data/spec/rails/templates/default_layout_system_spec/app/views/layouts/application.rb +12 -0
- data/spec/rails/templates/development_mode_system_spec/app/controllers/development_mode_system_spec_controller.rb +9 -0
- data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/reload_widget.rb +7 -0
- data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/sample_output.rb +9 -0
- data/spec/rails/templates/erb_integration_system_spec/app/controllers/erb_integration_system_spec_controller.rb +10 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_erb_partial_from_widget_partial.html.erb +1 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_fortitude_partial_with_underscore_partial.rb +5 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_prefers_erb_partial_partial.html.erb +1 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_partial_from_widget.rb +7 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial.html.erb +3 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial_widget.rb +5 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/fortitude_partial_with_underscore.html.erb +3 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial.html.erb +3 -0
- data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial_partial.rb +5 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/controllers/helpers_include_all_off_system_spec_controller.rb +13 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/application_helper.rb +5 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/some_helper.rb +5 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/app/views/helpers_include_all_off_system_spec/include_all_off.rb +23 -0
- data/spec/rails/templates/helpers_include_all_off_system_spec/config/application.rb +28 -0
- data/spec/rails/templates/helpers_system_spec/app/controllers/helpers_system_spec_controller.rb +86 -0
- data/spec/rails/templates/helpers_system_spec/app/helpers/some_helper.rb +21 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_disabled.rb +37 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance.rb +6 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_one.rb +34 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_two.rb +36 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_parent.rb +4 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/basic_helpers.rb +13 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/block_helpers.rb +7 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_helpers.rb +13 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_to_returning.rb +8 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_returning_to_outputting.rb +10 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_method.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_module.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helper_outputs.rb +6 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_basic.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_with_a_block.rb +6 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_outputting_to_returning.rb +7 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_returning_to_outputting.rb +10 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance.rb +10 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance_parent.rb +4 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helpers_that_output_when_refined.rb +9 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_erb.html.erb +1 -0
- data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_fortitude.rb +5 -0
- data/spec/rails/templates/helpers_system_spec/lib/some_stuff.rb +5 -0
- data/spec/rails/templates/helpers_unrefined_system_spec/app/controllers/helpers_unrefined_system_spec_controller.rb +7 -0
- data/spec/rails/templates/helpers_unrefined_system_spec/app/views/helpers_unrefined_system_spec/helpers_that_output_when_refined.rb +9 -0
- data/spec/rails/templates/helpers_unrefined_system_spec/config/environments/production.rb +31 -0
- data/spec/rails/templates/layouts_system_spec/app/controllers/layouts_system_spec_controller.rb +31 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/alternate.html.erb +11 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/application.html.erb +26 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/explicit_yield.rb +12 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts/widget_layout.rb +22 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/erb_inside_widget_layout.html.erb +8 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/the_render_widget.rb +5 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_erb_layout.rb +8 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_widget_layout.rb +8 -0
- data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/yield_from_widget_explicitly.rb +5 -0
- data/spec/rails/templates/localization_system_spec/app/controllers/localization_system_spec_controller.rb +31 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/content_method.rb +13 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/dot_notation.rb +5 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/explicit_html.rb +13 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/i18n_t.rb +5 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/native_support.rb +7 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/readjust_base.rb +7 -0
- data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/t.rb +5 -0
- data/spec/rails/templates/localization_system_spec/config/locales/en.yml +21 -0
- data/spec/rails/templates/localization_system_spec/config/locales/fr.yml +14 -0
- data/spec/rails/templates/localization_system_spec/config/locales/pt.yml +2 -0
- data/spec/rails/templates/production_mode_system_spec/app/controllers/production_mode_system_spec_controller.rb +5 -0
- data/spec/rails/templates/production_mode_system_spec/app/views/production_mode_system_spec/sample_output.rb +9 -0
- data/spec/rails/templates/rendering_context_system_spec/app/controllers/rendering_context_system_spec_controller.rb +72 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_start_end_widget_through_partials_partial.html.erb +1 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_uses_direct_context_for_all_widgets_partial.html.erb +1 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_uses_specified_context_through_nesting_partial.html.erb +2 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/render_widget.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic.rb +12 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic_inner.rb +7 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials.rb +16 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials_partial_widget.rb +7 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets.rb +7 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets_widget.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_in_view.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials.html.erb +3 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials_partial.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_view.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting.rb +6 -0
- data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting_inner_partial.rb +5 -0
- data/spec/rails/templates/rendering_context_system_spec/lib/simple_rc.rb +17 -0
- data/spec/rails/templates/rendering_system_spec/app/controllers/rendering_system_spec_controller.rb +111 -0
- data/spec/rails/templates/rendering_system_spec/app/views/layouts/application.html.erb +19 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_layout_for_partial.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_the_partial.html.erb +1 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/partial_with_layout.rb +5 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection_as.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_file_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_html_safe_strings.rb +16 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_inline_from_widget.rb +11 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_object.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_layout.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_widget_layout.html.erb +3 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_template_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_text_from_widget.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/stream_widget.rb +13 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/trivial_widget.rb +5 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_layout_for_partial.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_with_name.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/word.rb +7 -0
- data/spec/rails/templates/rendering_system_spec/app/views/widget_to_render.rb +7 -0
- data/spec/rails/templates/rules_system_spec/app/controllers/rules_system_spec_controller.rb +22 -0
- data/spec/rails/templates/rules_system_spec/app/views/layouts/fortitude_layout_with_p.rb +19 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/_intervening_partial_erb_partial.html.erb +1 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial_fortitude_partial.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial.html.erb +3 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial_partial.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_view.rb +9 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag.rb +11 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial.html.erb +3 -0
- data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial_partial.rb +11 -0
- data/spec/rails/templates/static_method_system_spec/app/controllers/static_method_system_spec_controller.rb +15 -0
- data/spec/rails/templates/static_method_system_spec/app/helpers/some_helper.rb +10 -0
- data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/allows_helper_access.rb +8 -0
- data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/localization.rb +7 -0
- data/spec/rails/templates/static_method_system_spec/config/locales/en.yml +4 -0
- data/spec/rails/templates/static_method_system_spec/config/locales/fr.yml +4 -0
- data/spec/system/around_content_system_spec.rb +399 -0
- data/spec/system/assigns_system_spec.rb +316 -0
- data/spec/system/attribute_rules_system_spec.rb +227 -0
- data/spec/system/basic_system_spec.rb +9 -0
- data/spec/system/content_inheritance_system_spec.rb +13 -0
- data/spec/system/convenience_methods_system_spec.rb +30 -0
- data/spec/system/doctypes_system_spec.rb +213 -0
- data/spec/system/erector_compatibility_system_spec.rb +84 -0
- data/spec/system/escaping_system_spec.rb +43 -0
- data/spec/system/formatting_system_spec.rb +63 -0
- data/spec/system/helpers_system_spec.rb +235 -0
- data/spec/system/id_uniqueness_system_spec.rb +205 -0
- data/spec/system/localization_system_spec.rb +94 -0
- data/spec/system/method_precedence_system_spec.rb +48 -0
- data/spec/system/needs_system_spec.rb +368 -0
- data/spec/system/other_outputters_system_spec.rb +117 -0
- data/spec/system/rails_not_available_spec.rb +11 -0
- data/spec/system/rebuild_notifications_system_spec.rb +208 -0
- data/spec/system/rendering_context_system_spec.rb +83 -0
- data/spec/system/setting_inheritance_system_spec.rb +585 -0
- data/spec/system/shared_variable_system_spec.rb +120 -0
- data/spec/system/start_end_comments_system_spec.rb +363 -0
- data/spec/system/static_method_system_spec.rb +348 -0
- data/spec/system/tag_rendering_system_spec.rb +253 -0
- data/spec/system/tag_return_value_system_spec.rb +41 -0
- data/spec/system/tag_rules_system_spec.rb +196 -0
- data/spec/system/tag_updating_system_spec.rb +171 -0
- data/spec/system/tilt_system_spec.rb +378 -0
- data/spec/system/unparsed_data_system_spec.rb +16 -0
- data/spec/system/void_tags_system_spec.rb +51 -0
- data/spec/system/widget_return_values_system_spec.rb +89 -0
- metadata +736 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
describe "Fortitude start/end comments support", :type => :system do
|
|
2
|
+
def eb(widget_class, expected_depth = 0)
|
|
3
|
+
"BEGIN #{widget_class.name} depth #{expected_depth}"
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def ee(widget_class, expected_depth = 0)
|
|
7
|
+
"END #{widget_class.name} depth #{expected_depth}"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should not add comments by default" do
|
|
11
|
+
wc = widget_class do
|
|
12
|
+
def content
|
|
13
|
+
p "hi!"
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
expect(render(wc)).to eq("<p>hi!</p>")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should add comments if asked to" do
|
|
21
|
+
wc = widget_class do
|
|
22
|
+
start_and_end_comments true
|
|
23
|
+
|
|
24
|
+
def content
|
|
25
|
+
p "hi!"
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
expect(render(wc)).to eq("<!-- #{eb(wc)} --><p>hi!</p><!-- #{ee(wc)} -->")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should add passed assigns, including defaults" do
|
|
33
|
+
wc = widget_class do
|
|
34
|
+
start_and_end_comments true
|
|
35
|
+
|
|
36
|
+
needs :foo, :bar => nil, :baz => 'def_baz', :quux => 'the_quux'
|
|
37
|
+
|
|
38
|
+
def content
|
|
39
|
+
p "hi"
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
result = render(wc.new(:foo => 'the_foo', :bar => /whatever/i, :quux => 'the_quux'))
|
|
44
|
+
expect(result).to match(%r{^<!-- #{eb(wc)}: })
|
|
45
|
+
expect(result).to match(%r{:foo => \"the_foo\"})
|
|
46
|
+
expect(result).to match(%r{:bar => /whatever/i})
|
|
47
|
+
expect(result).to match(%r{:baz => \(DEFAULT\) \"def_baz\"})
|
|
48
|
+
expect(result).to match(%r{:quux => \"the_quux\"})
|
|
49
|
+
expect(result).to match(%r{ --><p>hi</p><!-- #{ee(wc)} -->$})
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "should not display extra assigns if we're not using them" do
|
|
53
|
+
wc = widget_class do
|
|
54
|
+
needs :foo
|
|
55
|
+
start_and_end_comments true
|
|
56
|
+
|
|
57
|
+
def content
|
|
58
|
+
p "hi"
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
expect(render(wc.new(:foo => 'bar', :bar => 'baz'))).to eq("<!-- #{eb(wc)}: " +
|
|
63
|
+
":foo => \"bar\" --><p>hi</p><!-- #{ee(wc)} -->")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
it "should display extra assigns if we're using them" do
|
|
67
|
+
wc = widget_class do
|
|
68
|
+
needs :foo
|
|
69
|
+
start_and_end_comments true
|
|
70
|
+
extra_assigns :use
|
|
71
|
+
|
|
72
|
+
def content
|
|
73
|
+
p "hi"
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
result = render(wc.new(:foo => 'bar', :bar => 'baz'))
|
|
78
|
+
expect(result).to match(%r{^<!-- #{eb(wc)}: })
|
|
79
|
+
expect(result).to match(%r{:foo => \"bar\"})
|
|
80
|
+
expect(result).to match(%r{:bar => \"baz\"})
|
|
81
|
+
expect(result).to match(%r{--><p>hi</p><!-- #{ee(wc)} -->})
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "should not display all of the text of long assigns" do
|
|
85
|
+
wc = widget_class do
|
|
86
|
+
needs :foo
|
|
87
|
+
start_and_end_comments true
|
|
88
|
+
|
|
89
|
+
def content
|
|
90
|
+
p "hi"
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
assigns = { :foo => "a" * 1000 }
|
|
95
|
+
text = render(wc.new(assigns))
|
|
96
|
+
|
|
97
|
+
expect(text).to match(%r{^<!-- #{eb(wc)}: :foo => \"aaaaa})
|
|
98
|
+
expect(text).to match(%r{aaa... --><p>hi</p><!-- #{ee(wc)} -->$})
|
|
99
|
+
expect(text.length).to be < 500
|
|
100
|
+
expect(text).not_to match("a" * 500)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
it "should, by default, use #inspect, not #to_s, for assigns" do
|
|
104
|
+
obj = Object.new
|
|
105
|
+
class << obj
|
|
106
|
+
def to_s
|
|
107
|
+
"THIS IS TO_S"
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def inspect
|
|
111
|
+
"THIS IS INSPECT"
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
wc = widget_class do
|
|
116
|
+
needs :foo
|
|
117
|
+
start_and_end_comments true
|
|
118
|
+
|
|
119
|
+
def content
|
|
120
|
+
p "hi"
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
expect(render(wc.new(:foo => obj))).to eq("<!-- #{eb(wc)}: " +
|
|
125
|
+
":foo => THIS IS INSPECT --><p>hi</p><!-- #{ee(wc)} -->")
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "should allow overriding the text returned for assigns" do
|
|
129
|
+
obj = Object.new
|
|
130
|
+
class << obj
|
|
131
|
+
def to_s
|
|
132
|
+
"THIS IS TO_S"
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def inspect
|
|
136
|
+
"THIS IS INSPECT"
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def to_fortitude_comment_string
|
|
140
|
+
"THIS IS TO_FORTITUDE_COMMENT_STRING"
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
wc = widget_class do
|
|
145
|
+
needs :foo
|
|
146
|
+
start_and_end_comments true
|
|
147
|
+
|
|
148
|
+
def content
|
|
149
|
+
p "hi"
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
expect(render(wc.new(:foo => obj))).to eq("<!-- #{eb(wc)}: " +
|
|
154
|
+
":foo => THIS IS TO_FORTITUDE_COMMENT_STRING --><p>hi</p><!-- #{ee(wc)} -->")
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
it "should order the comment text in whatever order the needs are declared" do
|
|
158
|
+
needed = [ ]
|
|
159
|
+
5.times { needed << "need#{rand(1_000_000_000)}".to_sym }
|
|
160
|
+
needed = needed.shuffle
|
|
161
|
+
|
|
162
|
+
wc = widget_class do
|
|
163
|
+
start_and_end_comments true
|
|
164
|
+
|
|
165
|
+
def content
|
|
166
|
+
p "hi"
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
remaining_needed = needed.dup
|
|
171
|
+
while remaining_needed.length > 0
|
|
172
|
+
this_slice = remaining_needed.shift(rand(3))
|
|
173
|
+
wc.needs *this_slice
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
params = { }
|
|
177
|
+
needed.shuffle.each { |n| params[n] = "value-#{n}" }
|
|
178
|
+
|
|
179
|
+
text = render(wc.new(params))
|
|
180
|
+
|
|
181
|
+
expected_output = "<!-- #{eb(wc)}: "
|
|
182
|
+
expected_output << needed.map do |n|
|
|
183
|
+
":#{n} => \"value-#{n}\""
|
|
184
|
+
end.join(", ")
|
|
185
|
+
expected_output << " --><p>hi</p><!-- #{ee(wc)} -->"
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
it "should display the depth at which a widget is being rendered" do
|
|
189
|
+
inner = widget_class do
|
|
190
|
+
start_and_end_comments true
|
|
191
|
+
def content
|
|
192
|
+
text "hi!"
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
middle = widget_class do
|
|
197
|
+
start_and_end_comments true
|
|
198
|
+
cattr_accessor :klass
|
|
199
|
+
def content
|
|
200
|
+
widget klass.new
|
|
201
|
+
end
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
outer = widget_class do
|
|
205
|
+
start_and_end_comments true
|
|
206
|
+
cattr_accessor :klass
|
|
207
|
+
def content
|
|
208
|
+
widget klass.new
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
outer.klass = middle
|
|
213
|
+
middle.klass = inner
|
|
214
|
+
|
|
215
|
+
expect(render(outer)).to eq(
|
|
216
|
+
"<!-- #{eb(outer, 0)} -->" +
|
|
217
|
+
"<!-- #{eb(middle, 1)} -->" +
|
|
218
|
+
"<!-- #{eb(inner, 2)} -->" +
|
|
219
|
+
"hi!" +
|
|
220
|
+
"<!-- #{ee(inner, 2)} -->" +
|
|
221
|
+
"<!-- #{ee(middle, 1)} -->" +
|
|
222
|
+
"<!-- #{ee(outer, 0)} -->")
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
it "should display the depth at which a widget is being rendered, even if outer widgets aren't rendering comments" do
|
|
226
|
+
inner = widget_class do
|
|
227
|
+
start_and_end_comments true
|
|
228
|
+
def content
|
|
229
|
+
text "hi!"
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
middle = widget_class do
|
|
234
|
+
cattr_accessor :klass
|
|
235
|
+
def content
|
|
236
|
+
widget klass.new
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
outer = widget_class do
|
|
241
|
+
cattr_accessor :klass
|
|
242
|
+
def content
|
|
243
|
+
widget klass.new
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
outer.klass = middle
|
|
248
|
+
middle.klass = inner
|
|
249
|
+
|
|
250
|
+
expect(render(outer)).to eq(
|
|
251
|
+
"<!-- #{eb(inner, 2)} -->" +
|
|
252
|
+
"hi!" +
|
|
253
|
+
"<!-- #{ee(inner, 2)} -->")
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
it "should put comments on their own lines if we're formatting output" do
|
|
257
|
+
wc = widget_class do
|
|
258
|
+
start_and_end_comments true
|
|
259
|
+
format_output true
|
|
260
|
+
|
|
261
|
+
def content
|
|
262
|
+
text "hi"
|
|
263
|
+
end
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
expect(render(wc)).to eq(%{<!-- #{eb(wc)} -->
|
|
267
|
+
hi
|
|
268
|
+
<!-- #{ee(wc)} -->})
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
it "should put comments on their own lines, nested inside another widget, if we're formatting output" do
|
|
272
|
+
outer = widget_class do
|
|
273
|
+
format_output true
|
|
274
|
+
cattr_accessor :klass
|
|
275
|
+
|
|
276
|
+
def content
|
|
277
|
+
div do
|
|
278
|
+
div do
|
|
279
|
+
widget klass.new
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
inner = widget_class do
|
|
286
|
+
start_and_end_comments true
|
|
287
|
+
format_output true
|
|
288
|
+
|
|
289
|
+
def content
|
|
290
|
+
text "hi"
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
outer.klass = inner
|
|
295
|
+
expect(render(outer)).to eq(%{<div>
|
|
296
|
+
<div>
|
|
297
|
+
<!-- #{eb(inner, 1)} -->
|
|
298
|
+
hi
|
|
299
|
+
<!-- #{ee(inner, 1)} -->
|
|
300
|
+
</div>
|
|
301
|
+
</div>})
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
it "should put assignments on their own lines, with indentation, if they're long enough and we're formatting output" do
|
|
305
|
+
outer = widget_class do
|
|
306
|
+
format_output true
|
|
307
|
+
cattr_accessor :klass
|
|
308
|
+
|
|
309
|
+
def content
|
|
310
|
+
div do
|
|
311
|
+
div do
|
|
312
|
+
widget klass.new(:foo => "a" * 1000, :bar => "b" * 1000)
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
inner = widget_class do
|
|
319
|
+
needs :foo, :bar
|
|
320
|
+
start_and_end_comments true
|
|
321
|
+
format_output true
|
|
322
|
+
|
|
323
|
+
def content
|
|
324
|
+
text "hi"
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
outer.klass = inner
|
|
329
|
+
|
|
330
|
+
result = render(outer)
|
|
331
|
+
expect(result).to match(%r{^<div>\n <div>\n <!-- #{eb(inner, 1)}:\n :}m)
|
|
332
|
+
expect(result).to match(%r{^ :foo => \"a{97}...\n})
|
|
333
|
+
expect(result).to match(%r{^ :bar => \"b{97}...\n})
|
|
334
|
+
expect(result).to match(%r{^ -->$})
|
|
335
|
+
expect(result).to match(%r{^ hi})
|
|
336
|
+
expect(result).to match(%r{^ <!-- #{ee(inner, 1)} -->\n </div>\n</div>$}m)
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
BAD_VALUES = [ ">foo", "fo -- bar", "--", "->bar", "baz-" ]
|
|
340
|
+
|
|
341
|
+
BAD_VALUES.each do |bad_value|
|
|
342
|
+
it "should escape any potentially invalid-comment text in assign values, like #{bad_value.inspect}" do
|
|
343
|
+
wc = widget_class do
|
|
344
|
+
needs :foo
|
|
345
|
+
start_and_end_comments true
|
|
346
|
+
|
|
347
|
+
def content
|
|
348
|
+
p "hi"
|
|
349
|
+
end
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
instance = wc.new(:foo => bad_value)
|
|
353
|
+
text = render(instance)
|
|
354
|
+
# expect(text).to match(%r{^<!-- #{eb(wc)}: :foo => (.*) --><p>hi</p><!-- #{ee(wc)} -->$})
|
|
355
|
+
if text =~ %r{^<!-- #{eb(wc)}: :foo => (.*) --><p>hi</p><!-- #{ee(wc)} -->$}
|
|
356
|
+
data = $1
|
|
357
|
+
expect(data).not_to match(/\-\-/)
|
|
358
|
+
else
|
|
359
|
+
raise "Text does not match: #{text.inspect}"
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
end
|
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
describe "Fortitude staticization behavior", :type => :system do
|
|
2
|
+
it "should allow making a method static, and it should not change behavior ever" do
|
|
3
|
+
$global_value = 12345
|
|
4
|
+
wc = widget_class do
|
|
5
|
+
def content
|
|
6
|
+
p :class => 'foo' do
|
|
7
|
+
text "bar: #{$global_value}"
|
|
8
|
+
end
|
|
9
|
+
p "baz"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
static :content
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
expect(render(wc)).to eq('<p class="foo">bar: 12345</p><p>baz</p>')
|
|
16
|
+
|
|
17
|
+
$global_value = 23456
|
|
18
|
+
expect(render(wc)).to eq('<p class="foo">bar: 12345</p><p>baz</p>')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should allow making a method static twice, and it should not cause problems" do
|
|
22
|
+
$global_value = 12345
|
|
23
|
+
wc = widget_class do
|
|
24
|
+
def content
|
|
25
|
+
p :class => 'foo' do
|
|
26
|
+
text "bar: #{$global_value}"
|
|
27
|
+
end
|
|
28
|
+
p "baz"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
static :content
|
|
32
|
+
static :content
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
expect(render(wc)).to eq('<p class="foo">bar: 12345</p><p>baz</p>')
|
|
36
|
+
|
|
37
|
+
$global_value = 23456
|
|
38
|
+
expect(render(wc)).to eq('<p class="foo">bar: 12345</p><p>baz</p>')
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "should update the static definition of a method if static is called again" do
|
|
42
|
+
$global_value = 12345
|
|
43
|
+
wc = widget_class do
|
|
44
|
+
def content
|
|
45
|
+
p :class => 'foo' do
|
|
46
|
+
text "bar: #{$global_value}"
|
|
47
|
+
end
|
|
48
|
+
p "baz"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
static :content
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
expect(render(wc)).to eq('<p class="foo">bar: 12345</p><p>baz</p>')
|
|
55
|
+
|
|
56
|
+
$global_value = 23456
|
|
57
|
+
expect(render(wc)).to eq('<p class="foo">bar: 12345</p><p>baz</p>')
|
|
58
|
+
wc.class_eval { static :content }
|
|
59
|
+
expect(render(wc)).to eq('<p class="foo">bar: 23456</p><p>baz</p>')
|
|
60
|
+
$global_value = 34567
|
|
61
|
+
expect(render(wc)).to eq('<p class="foo">bar: 23456</p><p>baz</p>')
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "should allow you to yield from a method that's made static" do
|
|
65
|
+
$global_value = 12345
|
|
66
|
+
wc = widget_class do
|
|
67
|
+
def content
|
|
68
|
+
text "content before:#{$global_value}"
|
|
69
|
+
foo do
|
|
70
|
+
text "yield inside:#{$global_value}"
|
|
71
|
+
end
|
|
72
|
+
text "content after:#{$global_value}"
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def foo
|
|
76
|
+
text "foo before:#{$global_value}"
|
|
77
|
+
yield
|
|
78
|
+
text "foo after:#{$global_value}"
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
static :foo
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
expect(render(wc)).to eq('content before:12345foo before:12345yield inside:12345foo after:12345content after:12345')
|
|
85
|
+
|
|
86
|
+
$global_value = 23456
|
|
87
|
+
expect(render(wc)).to eq('content before:23456foo before:12345yield inside:23456foo after:12345content after:23456')
|
|
88
|
+
$global_value = 34567
|
|
89
|
+
expect(render(wc)).to eq('content before:34567foo before:12345yield inside:34567foo after:12345content after:34567')
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should not allow you to yield more than once from a method that's made static" do
|
|
93
|
+
wc = widget_class do
|
|
94
|
+
def content
|
|
95
|
+
foo do
|
|
96
|
+
text "yo"
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def foo
|
|
101
|
+
text "one"
|
|
102
|
+
yield
|
|
103
|
+
text "two"
|
|
104
|
+
yield
|
|
105
|
+
text "three"
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
expect { wc.class_eval { static :foo }; render(wc) }.to raise_error(/yields more than once/i)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should raise an error if you try to access a variable from within a method that's being made static" do
|
|
113
|
+
wc = widget_class do
|
|
114
|
+
needs :foo => 12345
|
|
115
|
+
|
|
116
|
+
def content
|
|
117
|
+
bar
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def bar
|
|
121
|
+
text "foo is: #{foo}"
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
e = capture_exception(Fortitude::Errors::DynamicAccessFromStaticMethod) { wc.class_eval { static :bar }; render(wc) }
|
|
126
|
+
expect(e.widget.class).to be(wc)
|
|
127
|
+
expect(e.static_method_name).to eq(:bar)
|
|
128
|
+
expect(e.method_called).to eq(:foo)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def check_dynamic_raises(base_class, method_called, &block)
|
|
132
|
+
subclass = Class.new(base_class)
|
|
133
|
+
subclass.send(:define_method, :bar, &block)
|
|
134
|
+
|
|
135
|
+
e = capture_exception(Fortitude::Errors::DynamicAccessFromStaticMethod) { subclass.static :bar; render(subclass) }
|
|
136
|
+
expect(e.widget.class).to be(subclass)
|
|
137
|
+
expect(e.static_method_name).to eq(:bar)
|
|
138
|
+
expect(e.method_called).to eq(method_called)
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
it "should raise an error if you try to access dynamic data in other ways from within a method that's being made static" do
|
|
142
|
+
base_class = widget_class do
|
|
143
|
+
needs :foo => 12345
|
|
144
|
+
|
|
145
|
+
def content
|
|
146
|
+
bar
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
check_dynamic_raises(base_class, :foo) { foo }
|
|
151
|
+
check_dynamic_raises(base_class, :assigns) { assigns }
|
|
152
|
+
check_dynamic_raises(base_class, :shared_variables) { shared_variables }
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "should allow static-izing a widget that has required needs" do
|
|
156
|
+
wc = widget_class do
|
|
157
|
+
needs :foo
|
|
158
|
+
|
|
159
|
+
def content
|
|
160
|
+
text "foo: #{foo}"
|
|
161
|
+
bar
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
def bar
|
|
165
|
+
text "bar!"
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
static :bar
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
expect(render(wc.new(:foo => 12345))).to eq("foo: 12345bar!")
|
|
172
|
+
expect(render(wc.new(:foo => 23456))).to eq("foo: 23456bar!")
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
it "should allow disabling locale support" do
|
|
176
|
+
$global_value = 12345
|
|
177
|
+
wc = widget_class do
|
|
178
|
+
def initialize(locale)
|
|
179
|
+
@locale = locale
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
def widget_locale
|
|
183
|
+
@locale
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def content
|
|
187
|
+
foo
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def foo
|
|
191
|
+
text "locale: #{widget_locale}, #{$global_value}"
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
static :foo, :locale_support => false
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
expect(render(wc.new(:en))).to eq("locale: en, 12345")
|
|
198
|
+
$global_value = 23456
|
|
199
|
+
expect(render(wc.new(:fr))).to eq("locale: en, 12345")
|
|
200
|
+
expect(render(wc.new(:en))).to eq("locale: en, 12345")
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
describe "helper support" do
|
|
204
|
+
before :each do
|
|
205
|
+
@helpers_class = Class.new do
|
|
206
|
+
def foo(x)
|
|
207
|
+
"foo #{x} foo!"
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
@helpers_object = @helpers_class.new
|
|
211
|
+
|
|
212
|
+
@wc = widget_class do
|
|
213
|
+
def content
|
|
214
|
+
text "it is: #{foo('bar')}"
|
|
215
|
+
end
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def do_render(widget_or_class, options = { })
|
|
220
|
+
render(widget_or_class, { :rendering_context => rc(:helpers_object => @helpers_object) }.merge(options))
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
it "should allow static methods to access helpers by default" do
|
|
224
|
+
expect(do_render(@wc)).to eq("it is: foo bar foo!")
|
|
225
|
+
@wc.static :content
|
|
226
|
+
expect(do_render(@wc)).to eq("it is: foo bar foo!")
|
|
227
|
+
expect(do_render(@wc)).to eq("it is: foo bar foo!")
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
describe "around_content support" do
|
|
232
|
+
before :each do
|
|
233
|
+
$global_value = 12345
|
|
234
|
+
@wc = widget_class do
|
|
235
|
+
around_content :ac
|
|
236
|
+
|
|
237
|
+
def ac
|
|
238
|
+
text "before #{$global_value}"
|
|
239
|
+
yield
|
|
240
|
+
text "after #{$global_value}"
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def content
|
|
244
|
+
text "this is content"
|
|
245
|
+
sub
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def sub
|
|
249
|
+
text "this is sub #{$global_value}"
|
|
250
|
+
end
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
it "should not run around_content filters around a static method, if that method is not #content" do
|
|
255
|
+
@wc.static :sub
|
|
256
|
+
expect(render(@wc)).to eq("before 12345this is contentthis is sub 12345after 12345")
|
|
257
|
+
$global_value = 23456
|
|
258
|
+
expect(render(@wc)).to eq("before 23456this is contentthis is sub 12345after 23456")
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
it "should run around_content filters around a static method, if that method is #content" do
|
|
262
|
+
@wc.static :content
|
|
263
|
+
expect(render(@wc)).to eq("before 12345this is contentthis is sub 12345after 12345")
|
|
264
|
+
$global_value = 23456
|
|
265
|
+
expect(render(@wc)).to eq("before 23456this is contentthis is sub 12345after 23456")
|
|
266
|
+
end
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
it "should still run the proper localized content methods even if #content, or one of them, is static" do
|
|
270
|
+
$global_value = 12345
|
|
271
|
+
wc = widget_class do
|
|
272
|
+
def initialize(locale)
|
|
273
|
+
self.widget_locale = locale
|
|
274
|
+
super({ })
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
def localized_content_en
|
|
278
|
+
text "hullo! #{$global_value}"
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
def localized_content_fr
|
|
282
|
+
text "bonjour! #{$global_value}"
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
def content
|
|
286
|
+
text "saluton! #{$global_value}"
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
attr_accessor :widget_locale
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
expect(render(wc.new(nil))).to eq("saluton! 12345")
|
|
293
|
+
expect(render(wc.new(:en))).to eq("hullo! 12345")
|
|
294
|
+
expect(render(wc.new(:fr))).to eq("bonjour! 12345")
|
|
295
|
+
|
|
296
|
+
wc.static :localized_content_fr
|
|
297
|
+
expect(render(wc.new(:fr))).to eq("bonjour! 12345")
|
|
298
|
+
$global_value = 23456
|
|
299
|
+
|
|
300
|
+
expect(render(wc.new(nil))).to eq("saluton! 23456")
|
|
301
|
+
expect(render(wc.new(:en))).to eq("hullo! 23456")
|
|
302
|
+
expect(render(wc.new(:fr))).to eq("bonjour! 12345")
|
|
303
|
+
|
|
304
|
+
wc.static :content
|
|
305
|
+
expect(render(wc.new(nil))).to eq("saluton! 23456")
|
|
306
|
+
$global_value = 34567
|
|
307
|
+
|
|
308
|
+
expect(render(wc.new(nil))).to eq("saluton! 23456")
|
|
309
|
+
expect(render(wc.new(:en))).to eq("hullo! 34567")
|
|
310
|
+
expect(render(wc.new(:fr))).to eq("bonjour! 12345")
|
|
311
|
+
end
|
|
312
|
+
|
|
313
|
+
describe "localization support" do
|
|
314
|
+
it "should allow staticized methods to have different output per-locale" do
|
|
315
|
+
$global_value = 12345
|
|
316
|
+
wc = widget_class do
|
|
317
|
+
def initialize(locale)
|
|
318
|
+
@locale = locale
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def widget_locale
|
|
322
|
+
@locale
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
def content
|
|
326
|
+
text "this is content in #{widget_locale} language #{$global_value}!"
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
expect(render(wc.new(nil))).to eq("this is content in language 12345!")
|
|
331
|
+
expect(render(wc.new("en"))).to eq("this is content in en language 12345!")
|
|
332
|
+
expect(render(wc.new("fr"))).to eq("this is content in fr language 12345!")
|
|
333
|
+
|
|
334
|
+
$global_value = 23456
|
|
335
|
+
wc.static :content
|
|
336
|
+
|
|
337
|
+
expect(render(wc.new(nil))).to eq("this is content in language 23456!")
|
|
338
|
+
expect(render(wc.new("en"))).to eq("this is content in en language 23456!")
|
|
339
|
+
expect(render(wc.new("fr"))).to eq("this is content in fr language 23456!")
|
|
340
|
+
|
|
341
|
+
$global_value = 34567
|
|
342
|
+
|
|
343
|
+
expect(render(wc.new(nil))).to eq("this is content in language 23456!")
|
|
344
|
+
expect(render(wc.new("en"))).to eq("this is content in en language 23456!")
|
|
345
|
+
expect(render(wc.new("fr"))).to eq("this is content in fr language 23456!")
|
|
346
|
+
end
|
|
347
|
+
end
|
|
348
|
+
end
|