middleman-core 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. checksums.yaml +4 -4
  2. data/features/cli_init.feature +18 -8
  3. data/features/helpers_select_tag.feature +1 -1
  4. data/features/layouts_dir.feature +8 -0
  5. data/features/markdown_redcarpet.feature +2 -2
  6. data/fixtures/asciidoc-app/source/layouts/default.erb +0 -1
  7. data/fixtures/capture-html-app/source/capture_html_haml.html.haml +1 -1
  8. data/fixtures/content-for-app/source/content_for_haml.html.haml +1 -1
  9. data/fixtures/frontmatter-settings-app/source/layouts/override.erb +1 -2
  10. data/fixtures/frontmatter-settings-neighbor-app/source/layouts/override.erb +1 -2
  11. data/fixtures/layouts-dir-app/source/ambiguous.html.erb +5 -0
  12. data/fixtures/layouts-dir-app/source/layouts/other.erb +3 -0
  13. data/fixtures/layouts-dir-app/source/other.erb +3 -0
  14. data/fixtures/link-to-app/source/link_to_haml.html.haml +1 -1
  15. data/fixtures/link-to-app/source/link_to_slim.html.slim +1 -1
  16. data/fixtures/nested-layout-app/source/layouts/inner_haml.haml +1 -1
  17. data/fixtures/nested-layout-app/source/layouts/inner_slim.slim +1 -1
  18. data/fixtures/nested-layout-app/source/layouts/outer_haml.haml +1 -1
  19. data/fixtures/nested-layout-app/source/layouts/outer_slim.slim +1 -1
  20. data/lib/middleman-core/application.rb +12 -3
  21. data/lib/middleman-core/cli/build.rb +5 -3
  22. data/lib/middleman-core/cli/console.rb +1 -1
  23. data/lib/middleman-core/cli/init.rb +1 -1
  24. data/lib/middleman-core/core_extensions.rb +0 -1
  25. data/lib/middleman-core/core_extensions/file_watcher.rb +11 -11
  26. data/lib/middleman-core/core_extensions/rendering.rb +40 -66
  27. data/lib/middleman-core/extension.rb +167 -0
  28. data/lib/middleman-core/extensions.rb +2 -151
  29. data/lib/middleman-core/logger.rb +2 -2
  30. data/lib/middleman-core/meta_pages/assets/config.css +13 -0
  31. data/lib/middleman-core/meta_pages/assets/meta.css +19 -3
  32. data/lib/middleman-core/meta_pages/assets/sitemap.css +18 -1
  33. data/lib/middleman-core/meta_pages/config_setting.rb +7 -9
  34. data/lib/middleman-core/meta_pages/sitemap_resource.rb +24 -15
  35. data/lib/middleman-core/meta_pages/sitemap_tree.rb +5 -1
  36. data/lib/middleman-core/meta_pages/templates/config.html.erb +2 -2
  37. data/lib/middleman-core/meta_pages/templates/index.html.erb +18 -8
  38. data/lib/middleman-core/meta_pages/templates/sitemap.html.erb +4 -5
  39. data/lib/middleman-core/preview_server.rb +6 -3
  40. data/lib/middleman-core/renderers/erb.rb +12 -14
  41. data/lib/middleman-core/renderers/haml.rb +10 -0
  42. data/lib/middleman-core/renderers/markdown.rb +5 -1
  43. data/lib/middleman-core/renderers/sass.rb +0 -4
  44. data/lib/middleman-core/renderers/slim.rb +16 -3
  45. data/lib/middleman-core/sitemap/resource.rb +1 -1
  46. data/lib/middleman-core/step_definitions.rb +2 -1
  47. data/lib/middleman-core/templates.rb +3 -1
  48. data/lib/middleman-core/templates/shared/Gemfile.tt +4 -1
  49. data/lib/middleman-core/templates/shared/config.tt +3 -1
  50. data/lib/middleman-core/templates/shared/gitignore +2 -1
  51. data/lib/middleman-core/util.rb +22 -16
  52. data/lib/middleman-core/version.rb +1 -1
  53. data/lib/middleman-more/core_extensions/compass.rb +3 -3
  54. data/lib/middleman-more/core_extensions/default_helpers.rb +18 -15
  55. data/lib/middleman-more/extensions/asset_hash.rb +1 -0
  56. data/middleman-core.gemspec +9 -6
  57. metadata +69 -227
  58. data/features/sass_cache_path.feature +0 -22
  59. data/fixtures/sass-cache-path-custom-app/config.rb +0 -3
  60. data/fixtures/sass-cache-path-custom-app/source/stylesheets/plain.css.sass +0 -4
  61. data/fixtures/sass-cache-path-default-app/config.rb +0 -3
  62. data/fixtures/sass-cache-path-default-app/source/stylesheets/plain.css.sass +0 -4
  63. data/lib/vendored-middleman-deps/hooks-0.2.0/CHANGES.textile +0 -9
  64. data/lib/vendored-middleman-deps/hooks-0.2.0/Gemfile +0 -3
  65. data/lib/vendored-middleman-deps/hooks-0.2.0/README.rdoc +0 -107
  66. data/lib/vendored-middleman-deps/hooks-0.2.0/Rakefile +0 -12
  67. data/lib/vendored-middleman-deps/hooks-0.2.0/hooks.gemspec +0 -22
  68. data/lib/vendored-middleman-deps/hooks-0.2.0/lib/hooks.rb +0 -109
  69. data/lib/vendored-middleman-deps/hooks-0.2.0/lib/hooks/inheritable_attribute.rb +0 -33
  70. data/lib/vendored-middleman-deps/hooks-0.2.0/test/hooks_test.rb +0 -141
  71. data/lib/vendored-middleman-deps/hooks-0.2.0/test/inheritable_attribute_test.rb +0 -55
  72. data/lib/vendored-middleman-deps/hooks-0.2.0/test/test_helper.rb +0 -10
  73. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.document +0 -5
  74. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.gitignore +0 -22
  75. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.yardopts +0 -1
  76. data/lib/vendored-middleman-deps/padrino-core-0.11.4/LICENSE.txt +0 -20
  77. data/lib/vendored-middleman-deps/padrino-core-0.11.4/README.rdoc +0 -294
  78. data/lib/vendored-middleman-deps/padrino-core-0.11.4/Rakefile +0 -5
  79. data/lib/vendored-middleman-deps/padrino-core-0.11.4/bin/padrino +0 -9
  80. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core.rb +0 -200
  81. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application.rb +0 -297
  82. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/flash.rb +0 -229
  83. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering.rb +0 -317
  84. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/erubis.rb +0 -64
  85. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/haml.rb +0 -28
  86. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/slim.rb +0 -14
  87. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/routing.rb +0 -1077
  88. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/showexceptions.rb +0 -21
  89. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/caller.rb +0 -53
  90. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/adapter.rb +0 -24
  91. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/base.rb +0 -159
  92. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/console.rb +0 -20
  93. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/rake.rb +0 -47
  94. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/rake_tasks.rb +0 -52
  95. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/command.rb +0 -38
  96. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/images/404.png +0 -0
  97. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/images/500.png +0 -0
  98. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/loader.rb +0 -224
  99. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/cs.yml +0 -33
  100. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/da.yml +0 -33
  101. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/de.yml +0 -33
  102. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/en.yml +0 -33
  103. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/es.yml +0 -33
  104. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/fr.yml +0 -33
  105. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/hu.yml +0 -33
  106. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/it.yml +0 -39
  107. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ja.yml +0 -33
  108. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/lv.yml +0 -33
  109. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/nl.yml +0 -33
  110. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/no.yml +0 -33
  111. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/pl.yml +0 -33
  112. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/pt_br.yml +0 -39
  113. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ro.yml +0 -33
  114. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ru.yml +0 -34
  115. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/sv.yml +0 -33
  116. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/tr.yml +0 -33
  117. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/uk.yml +0 -33
  118. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/zh_cn.yml +0 -33
  119. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/zh_tw.yml +0 -33
  120. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/logger.rb +0 -438
  121. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/module.rb +0 -58
  122. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/mounter.rb +0 -234
  123. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/reloader.rb +0 -341
  124. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/router.rb +0 -95
  125. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/server.rb +0 -77
  126. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/support_lite.rb +0 -260
  127. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/tasks.rb +0 -21
  128. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/version.rb +0 -20
  129. data/lib/vendored-middleman-deps/padrino-core-0.11.4/padrino-core.gemspec +0 -43
  130. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/Gemfile +0 -4
  131. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/app/app.rb +0 -3
  132. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/app_gem.gemspec +0 -17
  133. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/lib/app_gem.rb +0 -7
  134. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/lib/app_gem/version.rb +0 -3
  135. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/.components +0 -6
  136. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/.gitignore +0 -7
  137. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/complex.rb +0 -32
  138. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/simple.rb +0 -33
  139. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/a.rb +0 -9
  140. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/b.rb +0 -4
  141. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/c.rb +0 -1
  142. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/e.rb +0 -13
  143. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/f.rb +0 -2
  144. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/g.rb +0 -2
  145. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/d.rb +0 -4
  146. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/helper.rb +0 -83
  147. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/mini_shoulda.rb +0 -45
  148. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_application.rb +0 -125
  149. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_core.rb +0 -77
  150. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_csrf_protection.rb +0 -80
  151. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_dependencies.rb +0 -44
  152. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_filters.rb +0 -348
  153. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_flash.rb +0 -168
  154. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_locale.rb +0 -21
  155. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_logger.rb +0 -210
  156. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_mounter.rb +0 -199
  157. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_reloader_complex.rb +0 -75
  158. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_reloader_simple.rb +0 -98
  159. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering.rb +0 -545
  160. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering_extensions.rb +0 -14
  161. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_restful_routing.rb +0 -33
  162. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_router.rb +0 -146
  163. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_routing.rb +0 -1927
  164. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_support_lite.rb +0 -56
  165. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.document +0 -5
  166. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.gitignore +0 -21
  167. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.yardopts +0 -1
  168. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/LICENSE.txt +0 -20
  169. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/README.rdoc +0 -239
  170. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/Rakefile +0 -5
  171. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers.rb +0 -57
  172. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/asset_tag_helpers.rb +0 -401
  173. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/breadcrumb_helpers.rb +0 -183
  174. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_builder/abstract_form_builder.rb +0 -317
  175. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -40
  176. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_helpers.rb +0 -919
  177. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/format_helpers.rb +0 -372
  178. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/cs.yml +0 -103
  179. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/da.yml +0 -91
  180. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/de.yml +0 -81
  181. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/en.yml +0 -103
  182. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/es.yml +0 -103
  183. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/fr.yml +0 -79
  184. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/hu.yml +0 -103
  185. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/it.yml +0 -89
  186. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ja.yml +0 -103
  187. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/lv.yml +0 -103
  188. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/nl.yml +0 -82
  189. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/no.yml +0 -91
  190. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/pl.yml +0 -95
  191. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/pt_br.yml +0 -103
  192. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ro.yml +0 -103
  193. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ru.yml +0 -103
  194. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/sv.yml +0 -103
  195. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/tr.yml +0 -103
  196. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/uk.yml +0 -103
  197. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/zh_cn.yml +0 -103
  198. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/zh_tw.yml +0 -103
  199. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/number_helpers.rb +0 -283
  200. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers.rb +0 -207
  201. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -96
  202. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/erb_handler.rb +0 -78
  203. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -63
  204. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/slim_handler.rb +0 -78
  205. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/render_helpers.rb +0 -59
  206. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/tag_helpers.rb +0 -292
  207. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/translation_helpers.rb +0 -36
  208. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/padrino-helpers.gemspec +0 -27
  209. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/app.rb +0 -84
  210. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.erb +0 -8
  211. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.haml +0 -5
  212. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.slim +0 -6
  213. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.erb +0 -14
  214. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.haml +0 -12
  215. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.slim +0 -12
  216. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.erb +0 -14
  217. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.haml +0 -12
  218. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.slim +0 -12
  219. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.erb +0 -11
  220. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.haml +0 -9
  221. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.slim +0 -9
  222. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.erb +0 -5
  223. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.haml +0 -5
  224. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.slim +0 -5
  225. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.erb +0 -20
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.haml +0 -15
  227. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.slim +0 -15
  228. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.erb +0 -72
  229. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.haml +0 -59
  230. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.slim +0 -59
  231. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.erb +0 -95
  232. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.haml +0 -78
  233. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.slim +0 -79
  234. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.erb +0 -5
  235. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.haml +0 -4
  236. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.slim +0 -4
  237. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.erb +0 -3
  238. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.haml +0 -3
  239. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.slim +0 -3
  240. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.erb +0 -3
  241. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.haml +0 -3
  242. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  243. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_erb.erb +0 -1
  244. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_haml.haml +0 -1
  245. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  246. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.erb +0 -1
  247. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.haml +0 -1
  248. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  249. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/app.rb +0 -58
  250. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engine.haml +0 -5
  251. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_erb.erb +0 -1
  252. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_haml.haml +0 -1
  253. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_slim.slim +0 -1
  254. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_erb.erb +0 -3
  255. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_haml.haml +0 -2
  256. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_slim.slim +0 -2
  257. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/erb/test.erb +0 -1
  258. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/explicit_engine.haml +0 -5
  259. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/haml/test.haml +0 -1
  260. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/_user.haml +0 -7
  261. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/haml_template.haml +0 -1
  262. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/some_template.haml +0 -2
  263. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/helper.rb +0 -67
  264. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_asset_tag_helpers.rb +0 -359
  265. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_breadcrumb_helpers.rb +0 -134
  266. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_form_builder.rb +0 -1178
  267. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_form_helpers.rb +0 -1030
  268. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_format_helpers.rb +0 -241
  269. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_locale.rb +0 -20
  270. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_number_helpers.rb +0 -143
  271. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_output_helpers.rb +0 -154
  272. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_render_helpers.rb +0 -94
  273. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_tag_helpers.rb +0 -117
@@ -1,283 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- ##
4
- # Provides methods for converting numbers into formatted strings.
5
- # Methods are provided for phone numbers, currency, percentage,
6
- # precision, positional notation, and file size.
7
- #
8
- # Adapted from Rails Number Helpers.
9
- #
10
- module NumberHelpers
11
- ##
12
- # Formats a +number+ into a currency string (e.g., $13.65). You can customize the format
13
- # in the +options+ hash.
14
- #
15
- # @param [Float] number
16
- # Currency value to format.
17
- # @param [Hash] options
18
- # Options for currency conversion.
19
- # @option options [Fixnum] :precision (2)
20
- # Sets the level of precision.
21
- # @option options [String] :unit ("$")
22
- # Sets the denomination of the currency.
23
- # @option options [String] :separator (".")
24
- # Sets the separator between the units.
25
- # @option options [String] :delimiter (",")
26
- # Sets the thousands delimiter.
27
- # @option options [String] :format ("%u%n")
28
- # Sets the format of the output string. The field types are:
29
- # %u The currency unit
30
- # %n The number
31
- #
32
- # @return [String] The formatted representation of the currency.
33
- #
34
- # @example
35
- # number_to_currency(1234567890.50) # => $1,234,567,890.50
36
- # number_to_currency(1234567890.506) # => $1,234,567,890.51
37
- # number_to_currency(1234567890.506, :precision => 3) # => $1,234,567,890.506
38
- # number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "")
39
- # # => £1234567890,50
40
- # number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "", :format => "%n %u")
41
- # # => 1234567890,50 £
42
- #
43
- def number_to_currency(number, options = {})
44
- options.symbolize_keys!
45
-
46
- defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
47
- currency = I18n.translate(:'number.currency.format', :locale => options[:locale], :raise => true) rescue {}
48
- defaults = defaults.merge(currency)
49
-
50
- precision = options[:precision] || defaults[:precision]
51
- unit = options[:unit] || defaults[:unit]
52
- separator = options[:separator] || defaults[:separator]
53
- delimiter = options[:delimiter] || defaults[:delimiter]
54
- format = options[:format] || defaults[:format]
55
- separator = '' if precision == 0
56
-
57
- begin
58
- format.gsub(/%n/, number_with_precision(number,
59
- :precision => precision,
60
- :delimiter => delimiter,
61
- :separator => separator)
62
- ).gsub(/%u/, unit)
63
- rescue
64
- number
65
- end
66
- end
67
-
68
- ##
69
- # Formats a +number+ as a percentage string (e.g., 65%). You can customize the
70
- # format in the +options+ hash.
71
- #
72
- # @param [Fixnum, Float] number
73
- # Percentage value to format.
74
- # @param [Hash] options
75
- # Options for percentage conversion.
76
- # @option options [Fixnum] :precision (3)
77
- # Sets the level of precision.
78
- # @option options [String] :separator (".")
79
- # Sets the separator between the units.
80
- # @option options [String] :delimiter ("")
81
- # Sets the thousands delimiter.
82
- #
83
- # @return [String] The formatted representation of the percentage
84
- #
85
- # @example
86
- # number_to_percentage(100) # => 100.000%
87
- # number_to_percentage(100, :precision => 0) # => 100%
88
- # number_to_percentage(1000, :delimiter => '.', :separator => ',') # => 1.000,000%
89
- # number_to_percentage(302.24398923423, :precision => 5) # => 302.24399%
90
- #
91
- def number_to_percentage(number, options = {})
92
- options.symbolize_keys!
93
-
94
- defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
95
- percentage = I18n.translate(:'number.percentage.format', :locale => options[:locale], :raise => true) rescue {}
96
- defaults = defaults.merge(percentage)
97
-
98
- precision = options[:precision] || defaults[:precision]
99
- separator = options[:separator] || defaults[:separator]
100
- delimiter = options[:delimiter] || defaults[:delimiter]
101
-
102
- begin
103
- number_with_precision(number,
104
- :precision => precision,
105
- :separator => separator,
106
- :delimiter => delimiter) + "%"
107
- rescue
108
- number
109
- end
110
- end
111
-
112
- ##
113
- # Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You can
114
- # customize the format in the +options+ hash.
115
- #
116
- # @overload number_with_delimiter(number, options={})
117
- # @param [Fixnum, Float] number
118
- # Number value to format.
119
- # @param [Hash] options
120
- # Options for formatter.
121
- # @option options [String] :delimiter (", ")
122
- # Sets the thousands delimiter.
123
- # @option options [String] :separator (".")
124
- # Sets the separator between the units.
125
- #
126
- # @return [String] The formatted representation of the number.
127
- #
128
- # @example
129
- # number_with_delimiter(12345678) # => 12,345,678
130
- # number_with_delimiter(12345678.05) # => 12,345,678.05
131
- # number_with_delimiter(12345678, :delimiter => ".") # => 12.345.678
132
- # number_with_delimiter(12345678, :separator => ",") # => 12,345,678
133
- # number_with_delimiter(98765432.98, :delimiter => " ", :separator => ",")
134
- # # => 98 765 432,98
135
- #
136
- def number_with_delimiter(number, *args)
137
- options = args.extract_options!
138
- options.symbolize_keys!
139
-
140
- defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
141
-
142
- delimiter ||= (options[:delimiter] || defaults[:delimiter])
143
- separator ||= (options[:separator] || defaults[:separator])
144
-
145
- begin
146
- parts = number.to_s.split('.')
147
- parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
148
- parts.join(separator)
149
- rescue
150
- number
151
- end
152
- end
153
-
154
- ##
155
- # Formats a +number+ with the specified level of <tt>:precision</tt> (e.g., 112.32 has a precision of 2).
156
- # You can customize the format in the +options+ hash.
157
- #
158
- # @overload number_with_precision(number, options={})
159
- # @param [Fixnum, Float] number
160
- # Number value to format.
161
- # @param [Hash] options
162
- # Options for formatter.
163
- # @option options [Fixnum] :precision (3)
164
- # Sets the level of precision.
165
- # @option options [String] :separator (".")
166
- # Sets the separator between the units.
167
- # @option options [String] :delimiter ("")
168
- # Sets the thousands delimiter.
169
- #
170
- # @return [String] The formatted representation of the number.
171
- #
172
- # @example
173
- # number_with_precision(111.2345) # => 111.235
174
- # number_with_precision(111.2345, :precision => 2) # => 111.23
175
- # number_with_precision(13, :precision => 5) # => 13.00000
176
- # number_with_precision(389.32314, :precision => 0) # => 389
177
- # number_with_precision(1111.2345, :precision => 2, :separator => ',', :delimiter => '.')
178
- # # => 1.111,23
179
- #
180
- def number_with_precision(number, *args)
181
- options = args.extract_options!
182
- options.symbolize_keys!
183
-
184
- defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
185
- precision_defaults = I18n.translate(:'number.precision.format', :locale => options[:locale],
186
- :raise => true) rescue {}
187
- defaults = defaults.merge(precision_defaults)
188
-
189
- precision ||= (options[:precision] || defaults[:precision])
190
- separator ||= (options[:separator] || defaults[:separator])
191
- delimiter ||= (options[:delimiter] || defaults[:delimiter])
192
-
193
- begin
194
- rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
195
- number_with_delimiter("%01.#{precision}f" % rounded_number,
196
- :separator => separator,
197
- :delimiter => delimiter)
198
- rescue
199
- number
200
- end
201
- end
202
-
203
- # The units available for storage formatting.
204
- STORAGE_UNITS = [:byte, :kb, :mb, :gb, :tb].freeze
205
-
206
- ##
207
- # Formats the bytes in +size+ into a more understandable representation
208
- # (e.g., giving it 1500 yields 1.5 KB). This method is useful for
209
- # reporting file sizes to users. This method returns nil if
210
- # +size+ cannot be converted into a number. You can customize the
211
- # format in the +options+ hash.
212
- #
213
- #
214
- # @overload number_to_human_size(number, options={})
215
- # @param [Fixnum] number
216
- # Number value to format.
217
- # @param [Hash] options
218
- # Options for formatter.
219
- # @option options [Fixnum] :precision (1)
220
- # Sets the level of precision.
221
- # @option options [String] :separator (".")
222
- # Sets the separator between the units.
223
- # @option options [String] :delimiter ("")
224
- # Sets the thousands delimiter.
225
- #
226
- # @return [String] The formatted representation of bytes
227
- #
228
- # @example
229
- # number_to_human_size(123) # => 123 Bytes
230
- # number_to_human_size(1234) # => 1.2 KB
231
- # number_to_human_size(12345) # => 12.1 KB
232
- # number_to_human_size(1234567) # => 1.2 MB
233
- # number_to_human_size(1234567890) # => 1.1 GB
234
- # number_to_human_size(1234567890123) # => 1.1 TB
235
- # number_to_human_size(1234567, :precision => 2) # => 1.18 MB
236
- # number_to_human_size(483989, :precision => 0) # => 473 KB
237
- # number_to_human_size(1234567, :precision => 2, :separator => ',') # => 1,18 MB
238
- #
239
- def number_to_human_size(number, *args)
240
- return nil if number.nil?
241
-
242
- options = args.extract_options!
243
- options.symbolize_keys!
244
-
245
- defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
246
- human = I18n.translate(:'number.human.format', :locale => options[:locale], :raise => true) rescue {}
247
- defaults = defaults.merge(human)
248
-
249
- precision ||= (options[:precision] || defaults[:precision])
250
- separator ||= (options[:separator] || defaults[:separator])
251
- delimiter ||= (options[:delimiter] || defaults[:delimiter])
252
-
253
- storage_units_format = I18n.translate(:'number.human.storage_units.format', :locale => options[:locale], :raise => true)
254
-
255
- if number.to_i < 1024
256
- unit = I18n.translate(:'number.human.storage_units.units.byte', :locale => options[:locale], :count => number.to_i, :raise => true)
257
- storage_units_format.gsub(/%n/, number.to_i.to_s).gsub(/%u/, unit)
258
- else
259
- max_exp = STORAGE_UNITS.size - 1
260
- number = Float(number)
261
- exponent = (Math.log(number) / Math.log(1024)).to_i # Convert to base 1024
262
- exponent = max_exp if exponent > max_exp # we need this to avoid overflow for the highest unit
263
- number /= 1024 ** exponent
264
-
265
- unit_key = STORAGE_UNITS[exponent]
266
- unit = I18n.translate(:"number.human.storage_units.units.#{unit_key}", :locale => options[:locale], :count => number, :raise => true)
267
-
268
- begin
269
- escaped_separator = Regexp.escape(separator)
270
- formatted_number = number_with_precision(number,
271
- :precision => precision,
272
- :separator => separator,
273
- :delimiter => delimiter
274
- ).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '')
275
- storage_units_format.gsub(/%n/, formatted_number).gsub(/%u/, unit)
276
- rescue
277
- number
278
- end
279
- end
280
- end
281
- end
282
- end
283
- end
@@ -1,207 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- ##
4
- # Helpers related to buffer output for various template engines.
5
- #
6
- module OutputHelpers
7
- def self.included(base)
8
- base.send(:include, SinatraCurrentEngine) unless base.method_defined?(:current_engine)
9
- end
10
-
11
- ##
12
- # Module used to detect the current engine in vanilla Sinatra apps.
13
- #
14
- module SinatraCurrentEngine
15
- attr_reader :current_engine
16
-
17
- def render(engine, *)
18
- @current_engine, engine_was = engine, @current_engine
19
- output = super
20
- @current_engine = engine_was
21
- output
22
- end
23
- end
24
-
25
- ##
26
- # Captures the html from a block of template code for any available handler.
27
- #
28
- # Be aware that trusting the html is up to the caller.
29
- #
30
- # @param [Object] *args
31
- # Objects yield to the captured block.
32
- # @param [Proc] &block
33
- # Template code to capture as HTML.
34
- #
35
- # @return [String] Captured HTML resulting from the block.
36
- #
37
- # @example
38
- # capture_html(&block) => "...html..."
39
- # capture_html(object_for_block, &block) => "...html..."
40
- #
41
- # @example
42
- # ActiveSupport::SafeBuffer.new + capture_html { "<foo>" }
43
- # # => "&lt;foo&gt;"
44
- # ActiveSupport::SafeBuffer.new.safe_concat(capture_html { "<foo>" })
45
- # # => "<foo>"
46
- #
47
- def capture_html(*args, &block)
48
- handler = find_proper_handler
49
- captured_block, captured_html = nil, ""
50
- if handler && handler.is_type? && handler.block_is_type?(block)
51
- captured_html, captured_block = handler.capture_from_template(*args, &block)
52
- end
53
- # invoking the block directly if there was no template
54
- captured_html = block_given? && ( captured_block || block.call(*args) ) if captured_html.blank?
55
- captured_html
56
- end
57
- alias :capture :capture_html
58
-
59
- ##
60
- # Outputs the given text to the templates buffer directly.
61
- #
62
- # The output might be subject to escaping, if it is not marked as safe.
63
- #
64
- # @param [String, SafeBuffer] text
65
- # Text to concatenate to the buffer.
66
- #
67
- # @example
68
- # concat_content("This will be output to the template buffer")
69
- #
70
- def concat_content(text="")
71
- handler = find_proper_handler
72
- if handler && handler.is_type?
73
- handler.concat_to_template(text)
74
- else # theres no template to concat, return the text directly
75
- text
76
- end
77
- end
78
- alias :concat :concat_content
79
-
80
- ##
81
- # Outputs the given text to the templates buffer directly,
82
- # assuming that it is safe.
83
- #
84
- # @param [String] text
85
- # Text to concatenate to the buffer.
86
- #
87
- # @example
88
- # concat_safe_content("This will be output to the template buffer")
89
- #
90
- def concat_safe_content(text="")
91
- concat_content text.html_safe
92
- end
93
-
94
- ##
95
- # Returns true if the block is from a supported template type; false otherwise.
96
- # Used to determine if html should be returned or concatenated to the view.
97
- #
98
- # @param [Block] block
99
- # Determine if this block is a view template.
100
- #
101
- # @example
102
- # block_is_template?(block) => true
103
- #
104
- # @return [Boolean] True if the block is a template; false otherwise.
105
- #
106
- def block_is_template?(block)
107
- handler = find_proper_handler
108
- block && handler && handler.block_is_type?(block)
109
- end
110
-
111
- ##
112
- # Capture a block or text of content to be rendered at a later time.
113
- # Your blocks can also receive values, which are passed to them by <tt>yield_content</tt>.
114
- #
115
- # @overload content_for(key, content)
116
- # @param [Symbol] key Name of your key for the content yield.
117
- # @param [String] content Text to be stored for this key.
118
- # @overload content_for(key, &block)
119
- # @param [Symbol] key Name of your key for the content yield.
120
- # @param [Proc] block Block to be stored as content for this key.
121
- #
122
- # @example
123
- # content_for(:name) { ...content... }
124
- # content_for(:name) { |name| ...content... }
125
- # content_for(:name, "I'm Jeff")
126
- #
127
- def content_for(key, content = nil, &block)
128
- content_blocks[key.to_sym] << (block_given? ? block : Proc.new { content })
129
- end
130
-
131
- ##
132
- # Is there a content block for a given key?
133
- #
134
- # @param [Symbol] key
135
- # Name of content to yield.
136
- #
137
- # @return [TrueClass,FalseClass] Result html for the given +key+
138
- #
139
- # @example
140
- # content_for? :header => true
141
- #
142
- def content_for?(key)
143
- content_blocks[key.to_sym].present?
144
- end
145
-
146
- ##
147
- # Render the captured content blocks for a given key.
148
- # You can also pass values to the content blocks by passing them
149
- # as arguments after the key.
150
- #
151
- # @param [Symbol] key
152
- # Name of content to yield.
153
- # @param *args
154
- # Values to pass to the content block.
155
- #
156
- # @return [String] Result HTML for the given +key+.
157
- #
158
- # @example
159
- # yield_content :include
160
- # yield_content :head, "param1", "param2"
161
- # yield_content(:title) || "My page title"
162
- #
163
- def yield_content(key, *args)
164
- blocks = content_blocks[key.to_sym]
165
- return nil if blocks.empty?
166
- mark_safe(blocks.map { |content| capture_html(*args, &content) }.join)
167
- end
168
-
169
- protected
170
- ##
171
- # Retrieves content_blocks stored by content_for or within yield_content.
172
- #
173
- # @example
174
- # content_blocks[:name] => ['...', '...']
175
- #
176
- def content_blocks
177
- @content_blocks ||= Hash.new { |h,k| h[k] = [] }
178
- end
179
-
180
- ##
181
- # Retrieves the template handler for the given output context.
182
- # Can handle any output related to capturing or concatenating in a given template.
183
- #
184
- # @example
185
- # find_proper_handler => <OutputHelpers::HamlHandler>
186
- #
187
- def find_proper_handler
188
- OutputHelpers.handlers.map { |h| h.new(self) }.find { |h| h.engines.include?(current_engine) && h.is_type? }
189
- end
190
-
191
- ##
192
- # Marks a String or a collection of Strings as safe. `nil` is accepted
193
- # but ignored.
194
- #
195
- # @param [String, Array<String>] the values to be marked safe.
196
- #
197
- # @return [ActiveSupport::SafeBuffer, Array<ActiveSupport::SafeBuffer>]
198
- def mark_safe(value)
199
- if value.respond_to? :map!
200
- value.map!{|v| v.html_safe if v }
201
- else
202
- value.html_safe if value
203
- end
204
- end
205
- end
206
- end
207
- end