fortitude 0.0.4-java

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.
Files changed (355) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rspec-local +4 -0
  4. data/.travis.yml +50 -0
  5. data/CHANGES.md +62 -0
  6. data/CONTRIBUTORS.md +6 -0
  7. data/Gemfile +5 -0
  8. data/LICENSE.txt +22 -0
  9. data/README-erector.md +246 -0
  10. data/README.md +15 -0
  11. data/Rakefile +67 -0
  12. data/ext/FortitudeJrubyNativeExtService.java +11 -0
  13. data/ext/com/fortituderuby/ext/fortitude/FortitudeNativeLibrary.java +223 -0
  14. data/ext/fortitude_native_ext/extconf.rb +4 -0
  15. data/ext/fortitude_native_ext/fortitude_native_ext.c +333 -0
  16. data/fortitude.gemspec +42 -0
  17. data/lib/fortitude.rb +7 -0
  18. data/lib/fortitude/doctypes.rb +48 -0
  19. data/lib/fortitude/doctypes/base.rb +42 -0
  20. data/lib/fortitude/doctypes/html4.rb +21 -0
  21. data/lib/fortitude/doctypes/html4_frameset.rb +20 -0
  22. data/lib/fortitude/doctypes/html4_strict.rb +18 -0
  23. data/lib/fortitude/doctypes/html4_tags_frameset.rb +53 -0
  24. data/lib/fortitude/doctypes/html4_tags_strict.rb +274 -0
  25. data/lib/fortitude/doctypes/html4_tags_transitional.rb +115 -0
  26. data/lib/fortitude/doctypes/html4_transitional.rb +19 -0
  27. data/lib/fortitude/doctypes/html5.rb +373 -0
  28. data/lib/fortitude/doctypes/unknown_doctype.rb +20 -0
  29. data/lib/fortitude/doctypes/xhtml10.rb +20 -0
  30. data/lib/fortitude/doctypes/xhtml10_frameset.rb +18 -0
  31. data/lib/fortitude/doctypes/xhtml10_strict.rb +18 -0
  32. data/lib/fortitude/doctypes/xhtml10_transitional.rb +18 -0
  33. data/lib/fortitude/doctypes/xhtml11.rb +30 -0
  34. data/lib/fortitude/errors.rb +153 -0
  35. data/lib/fortitude/extensions/fortitude_ruby_ext.rb +76 -0
  36. data/lib/fortitude/extensions/native_extensions.rb +33 -0
  37. data/lib/fortitude/method_templates/assign_locals_from_template.rb.smpl +22 -0
  38. data/lib/fortitude/method_templates/need_assignment_template.rb.smpl +16 -0
  39. data/lib/fortitude/method_templates/need_method_template.rb.smpl +4 -0
  40. data/lib/fortitude/method_templates/simple_template.rb +50 -0
  41. data/lib/fortitude/method_templates/tag_method_template.rb.smpl +68 -0
  42. data/lib/fortitude/method_templates/text_method_template.rb.smpl +17 -0
  43. data/lib/fortitude/rails.rb +26 -0
  44. data/lib/fortitude/rails/helpers.rb +153 -0
  45. data/lib/fortitude/rails/railtie.rb +256 -0
  46. data/lib/fortitude/rails/renderer.rb +43 -0
  47. data/lib/fortitude/rails/template_handler.rb +23 -0
  48. data/lib/fortitude/rails/widget_methods.rb +13 -0
  49. data/lib/fortitude/rails/yielded_object_outputter.rb +31 -0
  50. data/lib/fortitude/rendering_context.rb +205 -0
  51. data/lib/fortitude/support/assigns_proxy.rb +77 -0
  52. data/lib/fortitude/support/class_inheritable_attributes.rb +98 -0
  53. data/lib/fortitude/support/instance_variable_set.rb +76 -0
  54. data/lib/fortitude/support/staticized_method.rb +87 -0
  55. data/lib/fortitude/tags/partial_tag_placeholder.rb +19 -0
  56. data/lib/fortitude/tags/tag.rb +189 -0
  57. data/lib/fortitude/tags/tag_return_value.rb +13 -0
  58. data/lib/fortitude/tags/tag_store.rb +53 -0
  59. data/lib/fortitude/tags/tag_support.rb +51 -0
  60. data/lib/fortitude/tags/tags_module.rb +16 -0
  61. data/lib/fortitude/tilt.rb +17 -0
  62. data/lib/fortitude/tilt/fortitude_template.rb +169 -0
  63. data/lib/fortitude/version.rb +3 -0
  64. data/lib/fortitude/widget.rb +54 -0
  65. data/lib/fortitude/widget/around_content.rb +53 -0
  66. data/lib/fortitude/widget/capturing.rb +37 -0
  67. data/lib/fortitude/widget/content.rb +61 -0
  68. data/lib/fortitude/widget/doctypes.rb +53 -0
  69. data/lib/fortitude/widget/helpers.rb +62 -0
  70. data/lib/fortitude/widget/integration.rb +76 -0
  71. data/lib/fortitude/widget/localization.rb +63 -0
  72. data/lib/fortitude/widget/modules_and_subclasses.rb +58 -0
  73. data/lib/fortitude/widget/needs.rb +164 -0
  74. data/lib/fortitude/widget/non_rails_widget_methods.rb +13 -0
  75. data/lib/fortitude/widget/rendering.rb +98 -0
  76. data/lib/fortitude/widget/start_and_end_comments.rb +69 -0
  77. data/lib/fortitude/widget/staticization.rb +50 -0
  78. data/lib/fortitude/widget/tag_like_methods.rb +102 -0
  79. data/lib/fortitude/widget/tags.rb +55 -0
  80. data/lib/fortitude/widget/temporary_overrides.rb +28 -0
  81. data/lib/fortitude/widget/widget_class_inheritable_attributes.rb +35 -0
  82. data/lib/fortitude/widgets.rb +12 -0
  83. data/lib/fortitude/widgets/html4_frameset.rb +9 -0
  84. data/lib/fortitude/widgets/html4_strict.rb +9 -0
  85. data/lib/fortitude/widgets/html4_transitional.rb +9 -0
  86. data/lib/fortitude/widgets/html5.rb +9 -0
  87. data/lib/fortitude/widgets/xhtml10_frameset.rb +9 -0
  88. data/lib/fortitude/widgets/xhtml10_strict.rb +9 -0
  89. data/lib/fortitude/widgets/xhtml10_transitional.rb +9 -0
  90. data/lib/fortitude/widgets/xhtml11.rb +9 -0
  91. data/lib/fortitude_jruby_native_ext.jar +0 -0
  92. data/spec/helpers/global_helper.rb +8 -0
  93. data/spec/helpers/rails_helpers.rb +85 -0
  94. data/spec/helpers/rails_server.rb +386 -0
  95. data/spec/helpers/system_helpers.rb +117 -0
  96. data/spec/rails/basic_rails_system_spec.rb +7 -0
  97. data/spec/rails/capture_system_spec.rb +75 -0
  98. data/spec/rails/class_loading_system_spec.rb +63 -0
  99. data/spec/rails/complex_helpers_system_spec.rb +33 -0
  100. data/spec/rails/data_passing_system_spec.rb +96 -0
  101. data/spec/rails/default_layout_system_spec.rb +15 -0
  102. data/spec/rails/development_mode_system_spec.rb +67 -0
  103. data/spec/rails/erb_integration_system_spec.rb +23 -0
  104. data/spec/rails/helpers_include_all_off_system_spec.rb +7 -0
  105. data/spec/rails/helpers_system_spec.rb +79 -0
  106. data/spec/rails/helpers_unrefined_system_spec.rb +7 -0
  107. data/spec/rails/layouts_system_spec.rb +60 -0
  108. data/spec/rails/localization_system_spec.rb +38 -0
  109. data/spec/rails/production_mode_system_spec.rb +13 -0
  110. data/spec/rails/rendering_context_system_spec.rb +64 -0
  111. data/spec/rails/rendering_system_spec.rb +158 -0
  112. data/spec/rails/rules_system_spec.rb +23 -0
  113. data/spec/rails/static_method_system_spec.rb +12 -0
  114. data/spec/rails/templates/base/app/controllers/application_controller.rb +15 -0
  115. data/spec/rails/templates/base/app/controllers/working_controller.rb +5 -0
  116. data/spec/rails/templates/base/app/views/layouts/application.html.erb +11 -0
  117. data/spec/rails/templates/base/config/routes.rb +4 -0
  118. data/spec/rails/templates/base/config/secrets.yml +22 -0
  119. data/spec/rails/templates/basic_rails_system_spec/app/controllers/basic_rails_system_spec_controller.rb +8 -0
  120. data/spec/rails/templates/basic_rails_system_spec/app/views/basic_rails_system_spec/trivial_widget.rb +5 -0
  121. data/spec/rails/templates/capture_system_spec/app/controllers/capture_system_spec_controller.rb +37 -0
  122. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/_some_erb_partial.html.erb +1 -0
  123. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/another_widget.rb +7 -0
  124. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_erb_from_widget.rb +11 -0
  125. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_erb.html.erb +9 -0
  126. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/capture_widget_from_widget.rb +17 -0
  127. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/some_widget.rb +5 -0
  128. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_content_for.rb +19 -0
  129. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_layout_needing_content_yield_with_erb.html.erb +13 -0
  130. data/spec/rails/templates/capture_system_spec/app/views/capture_system_spec/widget_provide.rb +13 -0
  131. data/spec/rails/templates/capture_system_spec/app/views/layouts/erb_layout_needing_content.html.erb +15 -0
  132. data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_content_for.rb +23 -0
  133. data/spec/rails/templates/capture_system_spec/app/views/layouts/widget_layout_needing_content_yield.rb +23 -0
  134. data/spec/rails/templates/class_loading_system_spec/app/controllers/class_loading_system_spec_controller.rb +74 -0
  135. data/spec/rails/templates/class_loading_system_spec/app/models/views/app_models_helper.rb +5 -0
  136. data/spec/rails/templates/class_loading_system_spec/app/models/views/models_widget.rb +5 -0
  137. data/spec/rails/templates/class_loading_system_spec/app/views/autoload_namespace/autoload_widget.rb +11 -0
  138. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_loaded_underscore_widget.rb +11 -0
  139. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_view.rb +5 -0
  140. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/_underscore_widget.rb +11 -0
  141. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/app_models.rb +6 -0
  142. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/autoload_one_widget_from_another.rb +7 -0
  143. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/class_should_not_load.rb +9 -0
  144. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/lib_views.rb +8 -0
  145. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_lib_widget_from_view_widget.rb +9 -0
  146. data/spec/rails/templates/class_loading_system_spec/app/views/class_loading_system_spec/use_models_widget_from_view_widget.rb +7 -0
  147. data/spec/rails/templates/class_loading_system_spec/app/views/some_namespace/some_other_namespace/.git_keep +0 -0
  148. data/spec/rails/templates/class_loading_system_spec/app/views/sub_widget.rb +5 -0
  149. data/spec/rails/templates/class_loading_system_spec/lib/arbitrary_name/some_widget.rb +7 -0
  150. data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/lib_views_helper.rb +5 -0
  151. data/spec/rails/templates/class_loading_system_spec/lib/views/class_loading_system_spec/widget_defined_outside_app_views.rb +5 -0
  152. data/spec/rails/templates/class_loading_system_spec/lib/views/lib_widget.rb +5 -0
  153. data/spec/rails/templates/complex_helpers_system_spec/app/controllers/complex_helpers_system_spec_controller.rb +14 -0
  154. data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/cache_test.rb +12 -0
  155. data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/fields_for_test.rb +14 -0
  156. data/spec/rails/templates/complex_helpers_system_spec/app/views/complex_helpers_system_spec/form_for_test.rb +14 -0
  157. data/spec/rails/templates/complex_helpers_system_spec/config/environments/development.rb +31 -0
  158. data/spec/rails/templates/data_passing_system_spec/app/controllers/data_passing_system_spec_controller.rb +101 -0
  159. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_erb_to_parallel_widget_handoff_erb.html.erb +3 -0
  160. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_erb_to_widget_handoff_erb.html.erb +3 -0
  161. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_implicit_variable_write_erb.html.erb +1 -0
  162. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/_widget_to_parallel_erb_handoff_erb.html.erb +1 -0
  163. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_copied_variables.html.erb +1 -0
  164. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff.html.erb +2 -0
  165. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/erb_to_parallel_widget_handoff_widget.rb +5 -0
  166. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/explicit_controller_variable_read.rb +6 -0
  167. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables.rb +23 -0
  168. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/extra_variables_requested.rb +24 -0
  169. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff.html.erb +2 -0
  170. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_erb_to_widget_handoff_widget.rb +7 -0
  171. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access.rb +5 -0
  172. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance.rb +6 -0
  173. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_one.rb +7 -0
  174. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_child_two.rb +5 -0
  175. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inheritance_parent.rb +3 -0
  176. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_shared_variable_access_inner.rb +8 -0
  177. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read.rb +5 -0
  178. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_read_inner.rb +7 -0
  179. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write.html.erb +2 -0
  180. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/implicit_variable_write_widget.rb +7 -0
  181. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing.rb +7 -0
  182. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_child.rb +7 -0
  183. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial.rb +7 -0
  184. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/parent_to_child_passing_partial_child.rb +7 -0
  185. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_data_widget.rb +8 -0
  186. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_and_controller_variables_widget.rb +9 -0
  187. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/passing_locals_widget.rb +8 -0
  188. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/variables_to_layout.rb +7 -0
  189. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_copied_variables.rb +9 -0
  190. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff.html.erb +2 -0
  191. data/spec/rails/templates/data_passing_system_spec/app/views/data_passing_system_spec/widget_to_parallel_erb_handoff_widget.rb +5 -0
  192. data/spec/rails/templates/data_passing_system_spec/app/views/layouts/data_layout.rb +14 -0
  193. data/spec/rails/templates/default_layout_system_spec/app/controllers/default_layout_system_spec_controller.rb +9 -0
  194. data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/erb_with_widget_default_layout.html.erb +1 -0
  195. data/spec/rails/templates/default_layout_system_spec/app/views/default_layout_system_spec/widget_with_widget_default_layout.rb +5 -0
  196. data/spec/rails/templates/default_layout_system_spec/app/views/layouts/application.rb +12 -0
  197. data/spec/rails/templates/development_mode_system_spec/app/controllers/development_mode_system_spec_controller.rb +9 -0
  198. data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/reload_widget.rb +7 -0
  199. data/spec/rails/templates/development_mode_system_spec/app/views/development_mode_system_spec/sample_output.rb +9 -0
  200. data/spec/rails/templates/erb_integration_system_spec/app/controllers/erb_integration_system_spec_controller.rb +10 -0
  201. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_erb_partial_from_widget_partial.html.erb +1 -0
  202. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_fortitude_partial_with_underscore_partial.rb +5 -0
  203. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/_prefers_erb_partial_partial.html.erb +1 -0
  204. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_partial_from_widget.rb +7 -0
  205. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial.html.erb +3 -0
  206. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/erb_to_widget_with_render_partial_widget.rb +5 -0
  207. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/fortitude_partial_with_underscore.html.erb +3 -0
  208. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial.html.erb +3 -0
  209. data/spec/rails/templates/erb_integration_system_spec/app/views/erb_integration_system_spec/prefers_erb_partial_partial.rb +5 -0
  210. data/spec/rails/templates/helpers_include_all_off_system_spec/app/controllers/helpers_include_all_off_system_spec_controller.rb +13 -0
  211. data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/application_helper.rb +5 -0
  212. data/spec/rails/templates/helpers_include_all_off_system_spec/app/helpers/some_helper.rb +5 -0
  213. data/spec/rails/templates/helpers_include_all_off_system_spec/app/views/helpers_include_all_off_system_spec/include_all_off.rb +23 -0
  214. data/spec/rails/templates/helpers_include_all_off_system_spec/config/application.rb +28 -0
  215. data/spec/rails/templates/helpers_system_spec/app/controllers/helpers_system_spec_controller.rb +86 -0
  216. data/spec/rails/templates/helpers_system_spec/app/helpers/some_helper.rb +21 -0
  217. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_disabled.rb +37 -0
  218. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance.rb +6 -0
  219. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_one.rb +34 -0
  220. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_child_two.rb +36 -0
  221. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/automatic_helpers_inheritance_parent.rb +4 -0
  222. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/basic_helpers.rb +13 -0
  223. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/block_helpers.rb +7 -0
  224. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_helpers.rb +13 -0
  225. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_outputting_to_returning.rb +8 -0
  226. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/built_in_returning_to_outputting.rb +10 -0
  227. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_method.rb +5 -0
  228. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/controller_helper_module.rb +5 -0
  229. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helper_outputs.rb +6 -0
  230. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_basic.rb +5 -0
  231. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_helpers_with_a_block.rb +6 -0
  232. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_outputting_to_returning.rb +7 -0
  233. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/custom_returning_to_outputting.rb +10 -0
  234. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance.rb +10 -0
  235. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helper_settings_inheritance_parent.rb +4 -0
  236. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/helpers_that_output_when_refined.rb +9 -0
  237. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_erb.html.erb +1 -0
  238. data/spec/rails/templates/helpers_system_spec/app/views/helpers_system_spec/private_helper_fortitude.rb +5 -0
  239. data/spec/rails/templates/helpers_system_spec/lib/some_stuff.rb +5 -0
  240. data/spec/rails/templates/helpers_unrefined_system_spec/app/controllers/helpers_unrefined_system_spec_controller.rb +7 -0
  241. data/spec/rails/templates/helpers_unrefined_system_spec/app/views/helpers_unrefined_system_spec/helpers_that_output_when_refined.rb +9 -0
  242. data/spec/rails/templates/helpers_unrefined_system_spec/config/environments/production.rb +31 -0
  243. data/spec/rails/templates/layouts_system_spec/app/controllers/layouts_system_spec_controller.rb +31 -0
  244. data/spec/rails/templates/layouts_system_spec/app/views/layouts/alternate.html.erb +11 -0
  245. data/spec/rails/templates/layouts_system_spec/app/views/layouts/application.html.erb +26 -0
  246. data/spec/rails/templates/layouts_system_spec/app/views/layouts/explicit_yield.rb +12 -0
  247. data/spec/rails/templates/layouts_system_spec/app/views/layouts/widget_layout.rb +22 -0
  248. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/erb_inside_widget_layout.html.erb +8 -0
  249. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/the_render_widget.rb +5 -0
  250. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_erb_layout.rb +8 -0
  251. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/widget_inside_widget_layout.rb +8 -0
  252. data/spec/rails/templates/layouts_system_spec/app/views/layouts_system_spec/yield_from_widget_explicitly.rb +5 -0
  253. data/spec/rails/templates/localization_system_spec/app/controllers/localization_system_spec_controller.rb +31 -0
  254. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/content_method.rb +13 -0
  255. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/dot_notation.rb +5 -0
  256. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/explicit_html.rb +13 -0
  257. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/i18n_t.rb +5 -0
  258. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/native_support.rb +7 -0
  259. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/readjust_base.rb +7 -0
  260. data/spec/rails/templates/localization_system_spec/app/views/localization_system_spec/t.rb +5 -0
  261. data/spec/rails/templates/localization_system_spec/config/locales/en.yml +21 -0
  262. data/spec/rails/templates/localization_system_spec/config/locales/fr.yml +14 -0
  263. data/spec/rails/templates/localization_system_spec/config/locales/pt.yml +2 -0
  264. data/spec/rails/templates/production_mode_system_spec/app/controllers/production_mode_system_spec_controller.rb +5 -0
  265. data/spec/rails/templates/production_mode_system_spec/app/views/production_mode_system_spec/sample_output.rb +9 -0
  266. data/spec/rails/templates/rendering_context_system_spec/app/controllers/rendering_context_system_spec_controller.rb +72 -0
  267. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_start_end_widget_through_partials_partial.html.erb +1 -0
  268. 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
  269. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/_uses_specified_context_through_nesting_partial.html.erb +2 -0
  270. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/render_widget.rb +5 -0
  271. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic.rb +12 -0
  272. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_basic_inner.rb +7 -0
  273. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials.rb +16 -0
  274. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/start_end_widget_through_partials_partial_widget.rb +7 -0
  275. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets.rb +7 -0
  276. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_for_all_widgets_widget.rb +5 -0
  277. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_direct_context_in_view.rb +5 -0
  278. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials.html.erb +3 -0
  279. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_partials_partial.rb +5 -0
  280. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_in_view.rb +5 -0
  281. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting.rb +6 -0
  282. data/spec/rails/templates/rendering_context_system_spec/app/views/rendering_context_system_spec/uses_specified_context_through_nesting_inner_partial.rb +5 -0
  283. data/spec/rails/templates/rendering_context_system_spec/lib/simple_rc.rb +17 -0
  284. data/spec/rails/templates/rendering_system_spec/app/controllers/rendering_system_spec_controller.rb +111 -0
  285. data/spec/rails/templates/rendering_system_spec/app/views/layouts/application.html.erb +19 -0
  286. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_layout_for_partial.html.erb +3 -0
  287. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/_the_partial.html.erb +1 -0
  288. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/partial_with_layout.rb +5 -0
  289. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection.html.erb +3 -0
  290. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_collection_as.html.erb +3 -0
  291. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_file_from_widget.rb +7 -0
  292. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_html_safe_strings.rb +16 -0
  293. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_inline_from_widget.rb +11 -0
  294. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_object.html.erb +3 -0
  295. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_from_widget.rb +7 -0
  296. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_layout.html.erb +3 -0
  297. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_partial_with_widget_layout.html.erb +3 -0
  298. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_template_from_widget.rb +7 -0
  299. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/render_text_from_widget.rb +7 -0
  300. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/stream_widget.rb +13 -0
  301. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/trivial_widget.rb +5 -0
  302. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_layout_for_partial.rb +7 -0
  303. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/widget_with_name.rb +7 -0
  304. data/spec/rails/templates/rendering_system_spec/app/views/rendering_system_spec/word.rb +7 -0
  305. data/spec/rails/templates/rendering_system_spec/app/views/widget_to_render.rb +7 -0
  306. data/spec/rails/templates/rules_system_spec/app/controllers/rules_system_spec_controller.rb +22 -0
  307. data/spec/rails/templates/rules_system_spec/app/views/layouts/fortitude_layout_with_p.rb +19 -0
  308. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/_intervening_partial_erb_partial.html.erb +1 -0
  309. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial.rb +9 -0
  310. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/intervening_partial_fortitude_partial.rb +9 -0
  311. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial.html.erb +3 -0
  312. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_partial_partial.rb +9 -0
  313. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalid_start_tag_in_view.rb +9 -0
  314. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag.rb +11 -0
  315. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial.html.erb +3 -0
  316. data/spec/rails/templates/rules_system_spec/app/views/rules_system_spec/invalidly_nested_tag_in_partial_partial.rb +11 -0
  317. data/spec/rails/templates/static_method_system_spec/app/controllers/static_method_system_spec_controller.rb +15 -0
  318. data/spec/rails/templates/static_method_system_spec/app/helpers/some_helper.rb +10 -0
  319. data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/allows_helper_access.rb +8 -0
  320. data/spec/rails/templates/static_method_system_spec/app/views/static_method_system_spec/localization.rb +7 -0
  321. data/spec/rails/templates/static_method_system_spec/config/locales/en.yml +4 -0
  322. data/spec/rails/templates/static_method_system_spec/config/locales/fr.yml +4 -0
  323. data/spec/system/around_content_system_spec.rb +399 -0
  324. data/spec/system/assigns_system_spec.rb +316 -0
  325. data/spec/system/attribute_rules_system_spec.rb +227 -0
  326. data/spec/system/basic_system_spec.rb +9 -0
  327. data/spec/system/content_inheritance_system_spec.rb +13 -0
  328. data/spec/system/convenience_methods_system_spec.rb +30 -0
  329. data/spec/system/doctypes_system_spec.rb +228 -0
  330. data/spec/system/erector_compatibility_system_spec.rb +84 -0
  331. data/spec/system/escaping_system_spec.rb +43 -0
  332. data/spec/system/formatting_system_spec.rb +63 -0
  333. data/spec/system/helpers_system_spec.rb +235 -0
  334. data/spec/system/id_uniqueness_system_spec.rb +205 -0
  335. data/spec/system/inline_system_spec.rb +58 -0
  336. data/spec/system/localization_system_spec.rb +94 -0
  337. data/spec/system/method_precedence_system_spec.rb +48 -0
  338. data/spec/system/needs_system_spec.rb +381 -0
  339. data/spec/system/other_outputters_system_spec.rb +117 -0
  340. data/spec/system/rails_not_available_spec.rb +11 -0
  341. data/spec/system/rebuild_notifications_system_spec.rb +208 -0
  342. data/spec/system/rendering_context_system_spec.rb +83 -0
  343. data/spec/system/setting_inheritance_system_spec.rb +585 -0
  344. data/spec/system/shared_variable_system_spec.rb +120 -0
  345. data/spec/system/start_end_comments_system_spec.rb +363 -0
  346. data/spec/system/static_method_system_spec.rb +348 -0
  347. data/spec/system/tag_rendering_system_spec.rb +260 -0
  348. data/spec/system/tag_return_value_system_spec.rb +41 -0
  349. data/spec/system/tag_rules_system_spec.rb +196 -0
  350. data/spec/system/tag_updating_system_spec.rb +171 -0
  351. data/spec/system/tilt_system_spec.rb +382 -0
  352. data/spec/system/unparsed_data_system_spec.rb +16 -0
  353. data/spec/system/void_tags_system_spec.rb +90 -0
  354. data/spec/system/widget_return_values_system_spec.rb +107 -0
  355. metadata +759 -0
@@ -0,0 +1,19 @@
1
+ <!DOCTYPE html>
2
+ <%
3
+ $order << :layout_start if $order
4
+ %>
5
+ start_of_layout order: <%= $order.inspect %>
6
+ <html>
7
+ <head>
8
+ <title>rails_spec_application layout_default</title>
9
+ </head>
10
+ <body>
11
+
12
+ <%= yield %>
13
+
14
+ </body>
15
+ </html>
16
+ <%
17
+ $order << :layout_end if $order
18
+ %>
19
+ end_of_layout order: <%= $order.inspect %>
@@ -0,0 +1,3 @@
1
+ partial_layout before
2
+ <%= yield %>
3
+ partial_layout after
@@ -0,0 +1,5 @@
1
+ class Views::RenderingSystemSpec::PartialWithLayout < Fortitude::Widgets::Html5
2
+ def content
3
+ text "partial_with_layout"
4
+ end
5
+ end
@@ -0,0 +1,3 @@
1
+ collection is:
2
+ <%= render :partial => 'word', :collection => %w{apple pie is nice} %>
3
+ and that's all!
@@ -0,0 +1,3 @@
1
+ collection is:
2
+ <%= render :partial => 'widget_with_name', :collection => %w{bonita applebaum the dude}, :as => :name %>
3
+ and that's all!
@@ -0,0 +1,7 @@
1
+ class Views::RenderingSystemSpec::RenderFileFromWidget < Fortitude::Widgets::Html5
2
+ def content
3
+ p "this is the widget"
4
+ render :file => File.join(File.dirname(__FILE__), "widget_with_name"), :locals => { :name => "Fred" }
5
+ p "this is the widget again"
6
+ end
7
+ end
@@ -0,0 +1,16 @@
1
+ class Views::RenderingSystemSpec::RenderHtmlSafeStrings < Fortitude::Widgets::Html5
2
+ needs :a, :b, :c, :d, :e
3
+
4
+ def content
5
+ text "a: "
6
+ text a
7
+ text ", b: "
8
+ text b
9
+ text ", c: "
10
+ text raw(c)
11
+ text ", d: "
12
+ rawtext h(d)
13
+ text ", e: "
14
+ text h(e)
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ class Views::RenderingSystemSpec::RenderInlineFromWidget < Fortitude::Widgets::Html5
2
+ def content
3
+ p "this is the widget"
4
+
5
+ text = <<-EOS
6
+ widget_with_name: <%= name %>
7
+ EOS
8
+ render :inline => text, :locals => { :name => "Fred" }
9
+ p "this is the widget again"
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ partial is:
2
+ <%= render :partial => 'word', :object => "donkey" %>
3
+ and that's all!
@@ -0,0 +1,7 @@
1
+ class Views::RenderingSystemSpec::RenderPartialFromWidget < Fortitude::Widgets::Html5
2
+ def content
3
+ p "this is the widget"
4
+ render :partial => 'the_partial'
5
+ p "this is the widget again"
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ this is the partial:
2
+ <%= render :partial => 'partial_with_layout', :layout => 'layout_for_partial' %>
3
+ done!
@@ -0,0 +1,3 @@
1
+ this is the partial:
2
+ <%= render :partial => 'partial_with_layout', :layout => 'widget_layout_for_partial' %>
3
+ done!
@@ -0,0 +1,7 @@
1
+ class Views::RenderingSystemSpec::RenderTemplateFromWidget < Fortitude::Widgets::Html5
2
+ def content
3
+ p "this is the widget"
4
+ render :template => "rendering_system_spec/widget_with_name", :locals => { :name => "Fred" }
5
+ p "this is the widget again"
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class Views::RenderingSystemSpec::RenderTextFromWidget < Fortitude::Widgets::Html5
2
+ def content
3
+ p "this is the widget"
4
+ render :text => "this is render_text"
5
+ p "this is the widget again"
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ class Views::RenderingSystemSpec::StreamWidget < Fortitude::Widgets::Html5
2
+ def content
3
+ $order << :widget if $order
4
+
5
+ p "About to sleep"
6
+ sleep 0.1
7
+ p "Slept once"
8
+ sleep 0.1
9
+ p "Slept again"
10
+
11
+ p "end_of_widget order: #{$order.inspect}"
12
+ end
13
+ end
@@ -0,0 +1,5 @@
1
+ class Views::RenderingSystemSpec::TrivialWidget < Fortitude::Widgets::Html5
2
+ def content
3
+ p "hello, world"
4
+ end
5
+ end
@@ -0,0 +1,7 @@
1
+ class Views::RenderingSystemSpec::WidgetLayoutForPartial < Fortitude::Widgets::Html5
2
+ def content
3
+ text "widget_partial_layout before"
4
+ yield
5
+ text "widget_partial_layout after"
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class Views::RenderingSystemSpec::WidgetWithName < Fortitude::Widgets::Html5
2
+ needs :name
3
+
4
+ def content
5
+ p "widget_with_name: #{name}"
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class Views::RenderingSystemSpec::Word < Fortitude::Widgets::Html5
2
+ needs :word
3
+
4
+ def content
5
+ text "word: #{word}"
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ class Views::WidgetToRender < Fortitude::Widgets::Html5
2
+ needs :name
3
+
4
+ def content
5
+ p "hello from a widget named #{name}"
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ class RulesSystemSpecController < ApplicationController
2
+ def invalidly_nested_tag
3
+ # nothing here
4
+ end
5
+
6
+ def invalidly_nested_tag_in_partial
7
+ # nothing here
8
+ end
9
+
10
+ def invalid_start_tag_in_partial
11
+ # nothing here
12
+ end
13
+
14
+ def invalid_start_tag_in_view
15
+ # nothing here
16
+ render :layout => 'fortitude_layout_with_p'
17
+ end
18
+
19
+ def intervening_partial
20
+ # nothing here
21
+ end
22
+ end
@@ -0,0 +1,19 @@
1
+ class Views::Layouts::FortitudeLayoutWithP < Fortitude::Widgets::Html5
2
+ doctype :html5
3
+ enforce_element_nesting_rules true
4
+
5
+ def content
6
+ doctype!
7
+
8
+ html {
9
+ head {
10
+ title "rails_spec_application"
11
+ }
12
+ }
13
+ body {
14
+ p {
15
+ yield
16
+ }
17
+ }
18
+ end
19
+ end
@@ -0,0 +1 @@
1
+ <%= render :partial => 'intervening_partial_fortitude_partial' %>
@@ -0,0 +1,9 @@
1
+ class Views::RulesSystemSpec::InterveningPartial < Fortitude::Widgets::Html5
2
+ enforce_element_nesting_rules true
3
+
4
+ def content
5
+ p do
6
+ render :partial => 'intervening_partial_erb_partial'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class Views::RulesSystemSpec::InterveningPartialFortitudePartial < Fortitude::Widgets::Html5
2
+ enforce_element_nesting_rules true
3
+
4
+ def content
5
+ div do
6
+ text "we got there!"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ <p>
2
+ <%= render :partial => 'invalid_start_tag_in_partial_partial' %>
3
+ </p>
@@ -0,0 +1,9 @@
1
+ class Views::RulesSystemSpec::InvalidStartTagInPartialPartial < Fortitude::Widgets::Html5
2
+ enforce_element_nesting_rules true
3
+
4
+ def content
5
+ div do
6
+ text "we got there!"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class Views::RulesSystemSpec::InvalidStartTagInView < Fortitude::Widgets::Html5
2
+ enforce_element_nesting_rules true
3
+
4
+ def content
5
+ div do
6
+ text "we got there!"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ class Views::RulesSystemSpec::InvalidlyNestedTag < Fortitude::Widgets::Html5
2
+ enforce_element_nesting_rules true
3
+
4
+ def content
5
+ p do
6
+ div do
7
+ text "hi"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ yo
2
+ <%= render :partial => 'invalidly_nested_tag_in_partial_partial' %>
3
+ yo
@@ -0,0 +1,11 @@
1
+ class Views::RulesSystemSpec::InvalidlyNestedTagInPartialPartial < Fortitude::Widgets::Html5
2
+ enforce_element_nesting_rules true
3
+
4
+ def content
5
+ p do
6
+ div do
7
+ text "hi"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ class StaticMethodSystemSpecController < ApplicationController
2
+ before_filter :set_locale
3
+
4
+ def set_locale
5
+ I18n.locale = params[:locale] if params[:locale]
6
+ end
7
+
8
+ def allows_helper_access
9
+ # nothing here
10
+ end
11
+
12
+ def localization
13
+ # nothing here
14
+ end
15
+ end
@@ -0,0 +1,10 @@
1
+ module SomeHelper
2
+ def foo(x)
3
+ "foo#{x}foo"
4
+ end
5
+
6
+ private
7
+ def bar(x)
8
+ output_buffer << "bar#{x}!"
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ class Views::StaticMethodSystemSpec::AllowsHelperAccess < Fortitude::Widgets::Html5
2
+ def content
3
+ text "foo is: #{foo('aaa')}"
4
+ bar('bbb')
5
+ end
6
+
7
+ static :content
8
+ end
@@ -0,0 +1,7 @@
1
+ class Views::StaticMethodSystemSpec::Localization < Fortitude::Widgets::Html5
2
+ def content
3
+ text "hello is: #{t('.hello')}"
4
+ end
5
+
6
+ # static :content
7
+ end
@@ -0,0 +1,4 @@
1
+ en:
2
+ static_method_system_spec:
3
+ localization:
4
+ hello: "hello"
@@ -0,0 +1,4 @@
1
+ fr:
2
+ static_method_system_spec:
3
+ localization:
4
+ hello: "bonjour"
@@ -0,0 +1,399 @@
1
+ describe "Fortitude around_content operations", :type => :system do
2
+ it "should operate with no around_content declared" do
3
+ wc = widget_class do
4
+ def content
5
+ text "foo"
6
+ end
7
+ end
8
+
9
+ expect(wc.send(:around_content_methods)).to eq([ ])
10
+ expect(render(wc.new)).to eq("foo")
11
+ end
12
+
13
+ it "should run an around_content method around the content method" do
14
+ wc = widget_class do
15
+ def content
16
+ text "content"
17
+ end
18
+
19
+ def around_content
20
+ text "around_before"
21
+ yield
22
+ text "around_after"
23
+ end
24
+
25
+ around_content :around_content
26
+ end
27
+
28
+ expect(render(wc.new)).to eq("around_beforecontentaround_after")
29
+ end
30
+
31
+ it "should still let #content call #yield properly" do
32
+ wc = widget_class do
33
+ def content
34
+ yield "aaa", "bbb"
35
+ text "content"
36
+ end
37
+
38
+ def around_content
39
+ text "around_before"
40
+ yield
41
+ text "around_after"
42
+ end
43
+
44
+ around_content :around_content
45
+ end
46
+
47
+ yielded = [ ]
48
+ rendering_context = rc(:yield_block => lambda { |*args| yielded << args; "" })
49
+ expect(render(wc.new, :rendering_context => rendering_context)).to eq("around_beforecontentaround_after")
50
+ expect(yielded).to eq([ [ "aaa", "bbb" ] ])
51
+ end
52
+
53
+ it "should not run the content method or other around_content methods if you don't call yield" do
54
+ wc = widget_class do
55
+ def content
56
+ text "content"
57
+ end
58
+
59
+ def around1
60
+ text "around1_before"
61
+ text "around1_after"
62
+ end
63
+
64
+ def around2
65
+ text "around2_before"
66
+ yield
67
+ text "around2_after"
68
+ end
69
+
70
+ around_content :around1, :around2
71
+ end
72
+
73
+ expect(render(wc.new)).to eq("around1_beforearound1_after")
74
+ end
75
+
76
+ it "should work even if you declare around_content after the method you're calling" do
77
+ wc = widget_class do
78
+ around_content :around1
79
+
80
+ def content
81
+ text "content"
82
+ end
83
+
84
+ def around1
85
+ text "around1_before"
86
+ yield
87
+ text "around1_after"
88
+ end
89
+ end
90
+
91
+ expect(render(wc.new)).to eq("around1_beforecontentaround1_after")
92
+ end
93
+
94
+ it "should propagate an exception out of the content method, using normal Ruby semantics" do
95
+ wc = widget_class do
96
+ def mark(token)
97
+ @marks ||= [ ]
98
+ @marks << token
99
+ end
100
+
101
+ def marks
102
+ @marks ||= [ ]
103
+ end
104
+
105
+ def content
106
+ mark(:content)
107
+ raise("kaboom")
108
+ end
109
+
110
+ def around1
111
+ mark(:around1_before)
112
+ yield
113
+ mark(:around1_after)
114
+ end
115
+
116
+ def around2
117
+ mark(:around2_before)
118
+ yield
119
+ mark(:around2_after)
120
+ end
121
+
122
+ around_content :around1, :around2
123
+ end
124
+
125
+ instance = wc.new
126
+ expect { render(instance) }.to raise_error("kaboom")
127
+ expect(instance.marks).to eq([ :around1_before, :around2_before, :content ])
128
+ end
129
+
130
+ it "should propagate an exception out of an around_content method, using normal Ruby semantics" do
131
+ wc = widget_class do
132
+ def mark(token)
133
+ @marks ||= [ ]
134
+ @marks << token
135
+ end
136
+
137
+ def marks
138
+ @marks ||= [ ]
139
+ end
140
+
141
+ def content
142
+ mark(:content)
143
+ end
144
+
145
+ def around1
146
+ mark(:around1_before)
147
+ yield
148
+ mark(:around1_after)
149
+ end
150
+
151
+ def around2
152
+ mark(:around2_before)
153
+ raise("kaboom")
154
+ yield
155
+ mark(:around2_after)
156
+ end
157
+
158
+ around_content :around1, :around2
159
+ end
160
+
161
+ instance = wc.new
162
+ expect { render(instance) }.to raise_error("kaboom")
163
+ expect(instance.marks).to eq([ :around1_before, :around2_before ])
164
+ end
165
+
166
+ it "should let you remove around_content methods, and let you add them back, and remove them again" do
167
+ wc = widget_class do
168
+ def around1
169
+ text "around1"
170
+ yield
171
+ end
172
+
173
+ def around2
174
+ text "around2"
175
+ yield
176
+ end
177
+
178
+ def content
179
+ text "content"
180
+ end
181
+ end
182
+
183
+ expect(render(wc)).to eq("content")
184
+ wc.around_content :around1, :around2
185
+ expect(render(wc)).to eq("around1around2content")
186
+ wc.remove_around_content(:around2)
187
+ expect(render(wc)).to eq("around1content")
188
+ wc.around_content :around2
189
+ expect(render(wc)).to eq("around1around2content")
190
+
191
+ wc.remove_around_content :around2, :around1
192
+ expect(render(wc)).to eq("content")
193
+ wc.around_content :around2, :around1
194
+ expect(render(wc)).to eq("around2around1content")
195
+ end
196
+
197
+ it "should fail if you try to remove an around_content method that's not present, or defined on a superclass" do
198
+ parent = widget_class do
199
+ def around1
200
+ text "around1"
201
+ yield
202
+ end
203
+
204
+ around_content :around1
205
+ end
206
+
207
+ child = widget_class(:superclass => parent) do
208
+ def around2
209
+ text "around2"
210
+ yield
211
+ end
212
+
213
+ def content
214
+ text "content"
215
+ end
216
+
217
+ around_content :around2
218
+ end
219
+
220
+ expect { parent.remove_around_content(:foobar) }.to raise_error(ArgumentError)
221
+ expect { parent.remove_around_content(:around2) }.to raise_error(ArgumentError)
222
+ expect { child.remove_around_content(:foobar) }.to raise_error(ArgumentError)
223
+ expect { child.remove_around_content(:around1) }.to raise_error(ArgumentError)
224
+ end
225
+
226
+
227
+ it "should not fail if you try to remove an around_content method that's not present, and you tell it not to care" do
228
+ parent = widget_class do
229
+ def around1
230
+ text "around1"
231
+ yield
232
+ end
233
+
234
+ around_content :around1
235
+ end
236
+
237
+ child = widget_class(:superclass => parent) do
238
+ def around2
239
+ text "around2"
240
+ yield
241
+ end
242
+
243
+ def content
244
+ text "content"
245
+ end
246
+
247
+ around_content :around2
248
+ end
249
+
250
+ parent.remove_around_content(:foobar, :fail_if_not_present => false)
251
+ parent.remove_around_content(:around2, :fail_if_not_present => false)
252
+ child.remove_around_content(:foobar, :fail_if_not_present => false)
253
+ child.remove_around_content(:around1, :fail_if_not_present => false)
254
+
255
+ expect(render(child)).to eq("around1around2content")
256
+ end
257
+
258
+ it "should run around_content methods in the order they are declared" do
259
+ wc = widget_class do
260
+ def around1
261
+ text "around1_before"
262
+ yield
263
+ text "around1_after"
264
+ end
265
+
266
+ def around2
267
+ text "around2_before"
268
+ yield
269
+ text "around2_after"
270
+ end
271
+
272
+ def content
273
+ text "content"
274
+ end
275
+
276
+ around_content :around1
277
+ around_content :around2
278
+ end
279
+
280
+ expect(render(wc.new)).to eq("around1_beforearound2_beforecontentaround2_afteraround1_after")
281
+ end
282
+
283
+ it "should run superclass around_content methods before subclass ones" do
284
+ grandparent = widget_class do
285
+ def gp1
286
+ text "gp1_before"
287
+ yield
288
+ text "gp1_after"
289
+ end
290
+
291
+ def gp2
292
+ text "gp2_before"
293
+ yield
294
+ text "gp2_after"
295
+ end
296
+ end
297
+
298
+ parent = widget_class(:superclass => grandparent) do
299
+ def p1
300
+ text "p1_before"
301
+ yield
302
+ text "p1_after"
303
+ end
304
+
305
+ def p2
306
+ text "p2_before"
307
+ yield
308
+ text "p2_after"
309
+ end
310
+ end
311
+
312
+ child = widget_class(:superclass => parent) do
313
+ def c1
314
+ text "c1_before"
315
+ yield
316
+ text "c1_after"
317
+ end
318
+
319
+ def c2
320
+ text "c2_before"
321
+ yield
322
+ text "c2_after"
323
+ end
324
+
325
+ def content
326
+ text "content"
327
+ end
328
+ end
329
+
330
+ # we do it in this order to make sure the order in which they're declared as around_content methods
331
+ # doesn't make any difference
332
+ parent.around_content :p2, :p1
333
+ child.around_content :c1, :c2
334
+ grandparent.around_content :gp1, :gp2
335
+
336
+ expect(render(child.new)).to eq("gp1_beforegp2_beforep2_beforep1_beforec1_beforec2_beforecontentc2_afterc1_afterp1_afterp2_aftergp2_aftergp1_after")
337
+ end
338
+
339
+ it "should allow two child classes to both inherit around_content methods of a parent, but add their own ones, as well" do
340
+ parent = widget_class do
341
+ def p1
342
+ text "p1_before"
343
+ yield
344
+ text "p1_after"
345
+ end
346
+
347
+ def p2
348
+ text "p2_before"
349
+ yield
350
+ text "p2_after"
351
+ end
352
+
353
+ around_content :p1, :p2
354
+ end
355
+
356
+ c1 = widget_class(:superclass => parent) do
357
+ def c1a1
358
+ text "c1a1_before"
359
+ yield
360
+ text "c1a1_after"
361
+ end
362
+
363
+ def c1a2
364
+ text "c1a2_before"
365
+ yield
366
+ text "c1a2_after"
367
+ end
368
+
369
+ def content
370
+ text "content"
371
+ end
372
+
373
+ around_content :c1a1, :c1a2
374
+ end
375
+
376
+ c2 = widget_class(:superclass => parent) do
377
+ def c2a1
378
+ text "c2a1_before"
379
+ yield
380
+ text "c2a1_after"
381
+ end
382
+
383
+ def c2a2
384
+ text "c2a2_before"
385
+ yield
386
+ text "c2a2_after"
387
+ end
388
+
389
+ def content
390
+ text "content"
391
+ end
392
+
393
+ around_content :c2a1, :c2a2
394
+ end
395
+
396
+ expect(render(c1.new)).to eq("p1_beforep2_beforec1a1_beforec1a2_beforecontentc1a2_afterc1a1_afterp2_afterp1_after")
397
+ expect(render(c2.new)).to eq("p1_beforep2_beforec2a1_beforec2a2_beforecontentc2a2_afterc2a1_afterp2_afterp1_after")
398
+ end
399
+ end