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,96 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- module OutputHelpers
4
- ##
5
- # Returns the list of all available template handlers.
6
- #
7
- # @example
8
- # OutputHelpers.handlers => [<OutputHelpers::HamlHandler>, <OutputHelpers::ErbHandler>]
9
- #
10
- def self.handlers
11
- @_template_handlers ||= []
12
- end
13
-
14
- ##
15
- # Registers a new handler as available to the output helpers.
16
- #
17
- # @example
18
- # OutputHelpers.register(OutputHelpers::HamlHandler)
19
- #
20
- def self.register(handler)
21
- handlers << handler
22
- end
23
-
24
- # @abstract Extend this to create a template handler.
25
- class AbstractHandler
26
- attr_reader :template
27
-
28
- def initialize(template)
29
- @template = template
30
- end
31
-
32
- ##
33
- # Returns extension of the template.
34
- #
35
- # @example
36
- # @handler.template_extension => "erb"
37
- #
38
- def template_extension
39
- caller.find { |c| c =~ /\/views\// }[/\.([\w]*?)\:/, 1] rescue nil
40
- # "/some/path/app/views/posts/foo.html.erb:3:in `evaluate_source'"
41
- # => "erb"
42
- end
43
-
44
- ##
45
- # Returns an array of engines used for the template.
46
- #
47
- # @example
48
- # @handler.engines => [:erb, :erubis]
49
- #
50
- def engines
51
- # Implemented in subclass.
52
- end
53
-
54
- ##
55
- # Returns true if the current template type is same as this handlers; false otherwise.
56
- #
57
- # @example
58
- # @handler.is_type? => true
59
- #
60
- def is_type?
61
- # Implemented in subclass.
62
- end
63
-
64
- ##
65
- # Returns true if the block given is of the handler's template type; false otherwise.
66
- #
67
- # @example
68
- # @handler.block_is_type?(block) => true
69
- #
70
- def block_is_type?(block)
71
- # Implemented in subclass.
72
- end
73
-
74
- ##
75
- # Captures the html from a block of template code for this handler.
76
- #
77
- # @example
78
- # @handler.capture_from_template(&block) => "...html..."
79
- #
80
- def capture_from_template(*args, &block)
81
- # Implemented in subclass.
82
- end
83
-
84
- ##
85
- # Outputs the given text to the templates buffer directly.
86
- #
87
- # @example
88
- # @handler.concat_to_template("This will be output to the template buffer")
89
- #
90
- def concat_to_template(text="")
91
- # Implemented in subclass.
92
- end
93
- end
94
- end
95
- end
96
- end
@@ -1,78 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- module OutputHelpers
4
- ##
5
- # Handler for reading and writing from an erb template.
6
- #
7
- class ErbHandler < AbstractHandler
8
- attr_reader :output_buffer
9
-
10
- def initialize(template)
11
- super
12
- @output_buffer = template.instance_variable_get(:@_out_buf)
13
- end
14
-
15
- ##
16
- # Returns true if the current template type is same as this handlers; false otherwise.
17
- #
18
- # @example
19
- # @handler.is_type? => true
20
- #
21
- def is_type?
22
- !self.output_buffer.nil?
23
- end
24
-
25
- ##
26
- # Captures the html from a block of template code for this handler.
27
- #
28
- # @example
29
- # @handler.capture_from_template(&block) => "...html..."
30
- #
31
- def capture_from_template(*args, &block)
32
- self.output_buffer, _buf_was = ActiveSupport::SafeBuffer.new, self.output_buffer
33
- captured_block = block.call(*args)
34
- ret = eval("@_out_buf", block.binding)
35
- self.output_buffer = _buf_was
36
- [ ret, captured_block ]
37
- end
38
-
39
- ##
40
- # Outputs the given text to the templates buffer directly.
41
- #
42
- # @example
43
- # @handler.concat_to_template("This will be output to the template buffer")
44
- #
45
- def concat_to_template(text="")
46
- self.output_buffer << text if is_type? && text
47
- nil
48
- end
49
-
50
- ##
51
- # Returns true if the block given is of the handler's template type; false otherwise.
52
- #
53
- # @example
54
- # @handler.block_is_type?(block) => true
55
- #
56
- def block_is_type?(block)
57
- is_type? || (block && eval('defined?(__in_erb_template)', block.binding))
58
- end
59
-
60
- ##
61
- # Returns an array of engines used for the template.
62
- #
63
- # @example
64
- # @handler.engines => [:erb, :erubis]
65
- #
66
- def engines
67
- @_engines ||= [:erb, :erubis]
68
- end
69
-
70
- protected
71
- def output_buffer=(val)
72
- template.instance_variable_set(:@_out_buf, val)
73
- end
74
- end
75
- OutputHelpers.register(ErbHandler)
76
- end
77
- end
78
- end
@@ -1,63 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- module OutputHelpers
4
- ##
5
- # Handler for reading and writing from a haml template.
6
- #
7
- class HamlHandler < AbstractHandler
8
- ##
9
- # Returns true if the current template type is same as this handlers; false otherwise.
10
- #
11
- # @example
12
- # @handler.is_type? => true
13
- #
14
- def is_type?
15
- template.respond_to?(:is_haml?) && template.is_haml?
16
- end
17
-
18
- ##
19
- # Returns true if the block given is of the handler's template type; false otherwise.
20
- #
21
- # @example
22
- # @handler.block_is_type?(block) => true
23
- #
24
- def block_is_type?(block)
25
- template.block_is_haml?(block)
26
- end
27
-
28
- ##
29
- # Captures the html from a block of template code for this handler.
30
- #
31
- # @example
32
- # @handler.capture_from_template(&block) => "...html..."
33
- #
34
- def capture_from_template(*args, &block)
35
- eval("_hamlout ||= @haml_buffer", block.binding)
36
- template.capture_haml(*args, &block)
37
- end
38
-
39
- ##
40
- # Outputs the given text to the templates buffer directly.
41
- #
42
- # @example
43
- # @handler.concat_to_template("This will be output to the template buffer")
44
- #
45
- def concat_to_template(text="")
46
- template.haml_concat(text)
47
- nil
48
- end
49
-
50
- ##
51
- # Returns an array of engines used for the template.
52
- #
53
- # @example
54
- # @handler.engines => [:haml]
55
- #
56
- def engines
57
- @_engines ||= [:haml]
58
- end
59
- end
60
- OutputHelpers.register(HamlHandler)
61
- end
62
- end
63
- end
@@ -1,78 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- module OutputHelpers
4
- ##
5
- # Handler for reading and writing from a slim template.
6
- #
7
- class SlimHandler < AbstractHandler
8
- attr_reader :output_buffer
9
-
10
- def initialize(template)
11
- super
12
- @output_buffer = template.instance_variable_get(:@_out_buf)
13
- end
14
-
15
- ##
16
- # Returns true if the current template type is same as this handlers; false otherwise.
17
- #
18
- # @example
19
- # @handler.is_type? => true
20
- #
21
- def is_type?
22
- !self.output_buffer.nil?
23
- end
24
-
25
- ##
26
- # Captures the html from a block of template code for this handler.
27
- #
28
- # @example
29
- # @handler.capture_from_template(&block) => "...html..."
30
- #
31
- def capture_from_template(*args, &block)
32
- self.output_buffer, _buf_was = ActiveSupport::SafeBuffer.new, self.output_buffer
33
- captured_block = block.call(*args)
34
- ret = eval("@_out_buf", block.binding)
35
- self.output_buffer = _buf_was
36
- [ ret, captured_block ]
37
- end
38
-
39
- ##
40
- # Outputs the given text to the templates buffer directly.
41
- #
42
- # @example
43
- # @handler.concat_to_template("This will be output to the template buffer")
44
- #
45
- def concat_to_template(text="")
46
- self.output_buffer << text if is_type? && text
47
- nil
48
- end
49
-
50
- ##
51
- # Returns true if the block given is of the handler's template type; false otherwise.
52
- #
53
- # @example
54
- # @handler.block_is_type?(block) => true
55
- #
56
- def block_is_type?(block)
57
- is_type? || (block && eval('defined? __in_erb_template', block.binding))
58
- end
59
-
60
- ##
61
- # Returns an array of engines used for the template.
62
- #
63
- # @example
64
- # @handler.engines => [:erb, :erubis]
65
- #
66
- def engines
67
- @_engines ||= [:slim]
68
- end
69
-
70
- protected
71
- def output_buffer=(val)
72
- template.instance_variable_set(:@_out_buf, val)
73
- end
74
- end
75
- OutputHelpers.register(SlimHandler)
76
- end
77
- end
78
- end
@@ -1,59 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- ##
4
- # Helpers related to rendering within templates (i.e partials).
5
- #
6
- module RenderHelpers
7
- ##
8
- # Render a partials with collections support.
9
- #
10
- # @param [String] template
11
- # Relative path to partial template.
12
- # @param [Hash] options
13
- # Options hash for rendering options.
14
- # @option options [Object] :object
15
- # Object rendered in partial.
16
- # @option options [Array<Object>] :collection
17
- # Partial is rendered for each object in this collection.
18
- # @option options [Hash] :locals ({})
19
- # Local variables accessible in the partial.
20
- # @option options [Symbol] :engine
21
- # Explicit rendering engine to use for this partial.
22
- #
23
- # @return [String] The html generated from this partial.
24
- #
25
- # @example
26
- # partial 'photo/item', :object => @photo
27
- # partial 'photo/item', :collection => @photos
28
- # partial 'photo/item', :locals => { :foo => :bar }
29
- # partial 'photo/item', :engine => :erb
30
- #
31
- # @note If using this from Sinatra, pass explicit +:engine+ option
32
- #
33
- def partial(template, options={})
34
- options.reverse_merge!(:locals => {}, :layout => false)
35
- path = template.to_s.split(File::SEPARATOR)
36
- object_name = path[-1].to_sym
37
- path[-1] = "_#{path[-1]}"
38
- explicit_engine = options.delete(:engine)
39
- template_path = File.join(path).to_sym
40
- raise 'Partial collection specified but is nil' if options.has_key?(:collection) && options[:collection].nil?
41
- if collection = options.delete(:collection)
42
- options.delete(:object)
43
- counter = 0
44
- collection.map { |member|
45
- counter += 1
46
- options[:locals].merge!(object_name => member, "#{object_name}_counter".to_sym => counter)
47
- render(explicit_engine, template_path, options.dup)
48
- }.join("\n").html_safe
49
- else
50
- if member = options.delete(:object)
51
- options[:locals].merge!(object_name => member)
52
- end
53
- render(explicit_engine, template_path, options.dup).html_safe
54
- end
55
- end
56
- alias :render_partial :partial
57
- end
58
- end
59
- end
@@ -1,292 +0,0 @@
1
- module Padrino
2
- module Helpers
3
- ##
4
- # Helpers related to producing html tags within templates.
5
- #
6
- module TagHelpers
7
- ##
8
- # Tag values escaped to html entities.
9
- #
10
- ESCAPE_VALUES = {
11
- "&" => "&amp;",
12
- "<" => "&lt;",
13
- ">" => "&gt;",
14
- '"' => "&quot;"
15
- }
16
-
17
- ##
18
- # Cached Regexp for escaping values to avoid rebuilding one
19
- # on every escape operation.
20
- #
21
- ESCAPE_REGEXP = Regexp.union(*ESCAPE_VALUES.keys)
22
-
23
- BOOLEAN_ATTRIBUTES = [
24
- :autoplay,
25
- :autofocus,
26
- :formnovalidate,
27
- :checked,
28
- :disabled,
29
- :hidden,
30
- :loop,
31
- :multiple,
32
- :muted,
33
- :readonly,
34
- :required,
35
- :selected,
36
- :declare,
37
- :defer,
38
- :ismap,
39
- :itemscope,
40
- :noresize,
41
- :novalidate
42
- ]
43
-
44
- ##
45
- # Custom data attributes,
46
- # feel free to update with yours:
47
- #
48
- # Padrino::Helpers::TagHelpers::DATA_ATTRIBUTES.push(:dialog)
49
- # text_field :foo, :dialog => true
50
- # # Generates: <input type="text" data-dialog="true" name="foo" />
51
- #
52
- DATA_ATTRIBUTES = [
53
- :method,
54
- :remote,
55
- :confirm
56
- ]
57
-
58
- ##
59
- # A html_safe newline string to avoid allocating a new on each
60
- # concatenation.
61
- #
62
- NEWLINE = "\n".html_safe.freeze
63
-
64
- ##
65
- # Creates an HTML tag with given name, content, and options.
66
- #
67
- # @overload content_tag(name, content, options = nil)
68
- # @param [Symbol] name
69
- # The name of the HTML tag to create.
70
- # @param [String] content
71
- # The content inside of the tag.
72
- # @param [Hash] options
73
- # The HTML options to include in this tag.
74
- #
75
- # @overload content_tag(name, options = nil, &block)
76
- # @param [Symbol] name
77
- # The name of the HTML tag to create.
78
- # @param [Hash] options
79
- # The HTML options to include in this tag.
80
- # @param [Proc] block
81
- # The block returning HTML content.
82
- #
83
- # @macro [new] global_html_attributes
84
- # @option options [String] :id
85
- # Specifies a unique identifier for the element.
86
- # @option options [String] :class
87
- # Specifies the stylesheet class of the element.
88
- # @option options [String] :title
89
- # Specifies the title for the element.
90
- # @option options [String] :accesskey
91
- # Specifies a shortcut key to access the element.
92
- # @option options [Symbol] :dropzone
93
- # Specifies what happens when dragged items are dropped on the element. (:copy, :link, :move)
94
- # @option options [Boolean] :hidden
95
- # Specifies whether or not the element is hidden from view.
96
- # @option options [Boolean] :draggable
97
- # Specifies whether or not the element is draggable. (true, false, :auto)
98
- # @option options [Boolean] :contenteditable
99
- # Specifies whether or not the element is editable.
100
- #
101
- # @return [String]
102
- # Generated HTML with specified +options+.
103
- #
104
- # @example
105
- # content_tag(:p, 'Hello World', :class => 'light')
106
- #
107
- # # => <p class="light">
108
- # # => Hello World
109
- # # => </p>
110
- #
111
- # content_tag(:p, :class => 'dark') do
112
- # link_to 'Padrino', 'http://www.padrinorb.com'
113
- # end
114
- #
115
- # # => <p class="dark">
116
- # # => <a href="http://www.padrinorb.com">Padrino</a>
117
- # # => </p>
118
- #
119
- def content_tag(name, content = nil, options = nil, &block)
120
- if block_given?
121
- options = content if content.is_a?(Hash)
122
- content = capture_html(&block)
123
- end
124
-
125
- options = parse_data_options(name, options)
126
- attributes = tag_attributes(options)
127
- output = ActiveSupport::SafeBuffer.new
128
- output.safe_concat "<#{name}#{attributes}>"
129
- if content.respond_to?(:each) && !content.is_a?(String)
130
- content.each { |c| output.concat c; output.safe_concat NEWLINE }
131
- else
132
- output.concat content
133
- end
134
- output.safe_concat "</#{name}>"
135
-
136
- block_is_template?(block) ? concat_content(output) : output
137
- end
138
-
139
- ##
140
- # Like #content_tag, but assumes its input to be safe and doesn't
141
- # escape. It also returns safe HTML.
142
- #
143
- # @see #content_tag
144
- #
145
- def safe_content_tag(name, content = nil, options = nil, &block)
146
- mark_safe(content_tag(name, mark_safe(content), options, &block))
147
- end
148
-
149
- ##
150
- # Creates an HTML input field with the given type and options.
151
- #
152
- # @param [Symbol] type
153
- # The type of input to create.
154
- # @param [Hash] options
155
- # The HTML options to include in this input.
156
- #
157
- # @option options [String] :id
158
- # Specifies a unique identifier for the input.
159
- # @option options [String] :class
160
- # Specifies the stylesheet class of the input.
161
- # @option options [String] :name
162
- # Specifies the name of the input.
163
- # @option options [String] :accesskey
164
- # Specifies a shortcut key to access the input.
165
- # @option options [Integer] :tabindex
166
- # Specifies the tab order of the input.
167
- # @option options [Boolean] :hidden
168
- # Specifies whether or not the input is hidden from view.
169
- # @option options [Boolean] :spellcheck
170
- # Specifies whether or not the input should have it's spelling and grammar checked for errors.
171
- # @option options [Boolean] :draggable
172
- # Specifies whether or not the input is draggable. (true, false, :auto)
173
- # @option options [String] :pattern
174
- # Specifies the regular expression pattern that the input's value is checked against.
175
- # @option options [Symbol] :autocomplete
176
- # Specifies whether or not the input should have autocomplete enabled. (:on, :off)
177
- # @option options [Boolean] :autofocus
178
- # Specifies whether or not the input should automatically get focus when the page loads.
179
- # @option options [Boolean] :required
180
- # Specifies whether or not the input is required to be completed before the form is submitted.
181
- # @option options [Boolean] :readonly
182
- # Specifies whether or not the input is read only.
183
- # @option options [Boolean] :disabled
184
- # Specifies whether or not the input is disabled.
185
- #
186
- # @return [String]
187
- # Generated HTML with specified +options+.
188
- #
189
- # @example
190
- # input_tag :text, :name => 'handle'
191
- # # => <input type="test" name="handle" />
192
- #
193
- # input_tag :password, :name => 'password', :size => 20
194
- # # => <input type="password" name="password" size="20" />
195
- #
196
- # input_tag :text, :name => 'username', :required => true, :autofocus => true
197
- # # => <input type="text" name="username" required autofocus />
198
- #
199
- # input_tag :number, :name => 'credit_card', :autocomplete => :off
200
- # # => <input type="number" autocomplete="off" />
201
- #
202
- def input_tag(type, options = {})
203
- tag(:input, options.reverse_merge!(:type => type))
204
- end
205
-
206
- ##
207
- # Creates an HTML tag with the given name and options.
208
- #
209
- # @param [Symbol] name
210
- # The name of the HTML tag to create.
211
- # @param [Hash] options
212
- # The HTML options to include in this tag.
213
- #
214
- # @macro global_html_attributes
215
- #
216
- # @return [String]
217
- # Generated HTML with specified +options+.
218
- #
219
- # @example
220
- # tag :hr, :class => 'dotted'
221
- # # => <hr class="dotted" />
222
- #
223
- # tag :input, :name => 'username', :type => :text
224
- # # => <input name="username" type="text" />
225
- #
226
- # tag :img, :src => 'images/pony.jpg', :alt => 'My Little Pony'
227
- # # => <img src="images/pony.jpg" alt="My Little Pony" />
228
- #
229
- # tag :img, :src => 'sinatra.jpg, :data => { :nsfw => false, :geo => [34.087, -118.407] }
230
- # # => <img src="sinatra.jpg" data-nsfw="false" data-geo="34.087 -118.407" />
231
- #
232
- def tag(name, options = nil, open = false)
233
- options = parse_data_options(name, options)
234
- attributes = tag_attributes(options)
235
- "<#{name}#{attributes}#{open ? '>' : ' />'}".html_safe
236
- end
237
-
238
- private
239
- ##
240
- # Returns a compiled list of HTML attributes.
241
- #
242
- def tag_attributes(options)
243
- return '' if options.nil?
244
- attributes = options.map do |k, v|
245
- next if v.nil? || v == false
246
- if v.is_a?(Hash)
247
- nested_values(k, v)
248
- elsif BOOLEAN_ATTRIBUTES.include?(k)
249
- %(#{k}="#{k}")
250
- else
251
- %(#{k}="#{escape_value(v)}")
252
- end
253
- end.compact
254
- attributes.empty? ? '' : " #{attributes * ' '}"
255
- end
256
-
257
- ##
258
- # Escape tag values to their HTML/XML entities.
259
- #
260
- def escape_value(string)
261
- string.to_s.gsub(ESCAPE_REGEXP) { |c| ESCAPE_VALUES[c] }
262
- end
263
-
264
- ##
265
- # Iterate through nested values.
266
- #
267
- def nested_values(attribute, hash)
268
- hash.map do |k, v|
269
- if v.is_a?(Hash)
270
- nested_values("#{attribute}-#{k.to_s.dasherize}", v)
271
- else
272
- %(#{attribute}-#{k.to_s.dasherize}="#{escape_value(v)}")
273
- end
274
- end * ' '
275
- end
276
-
277
- ##
278
- # Parses custom data attributes.
279
- #
280
- def parse_data_options(tag, options)
281
- return if options.nil?
282
- parsed_options = options.dup
283
- options.each do |k, v|
284
- next if !DATA_ATTRIBUTES.include?(k) || (tag.to_s == 'form' && k == :method)
285
- parsed_options["data-#{k}"] = parsed_options.delete(k)
286
- parsed_options[:rel] = 'nofollow' if k == :method
287
- end
288
- parsed_options
289
- end
290
- end
291
- end
292
- end