middleman-core 3.2.2 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
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