middleman 2.0.16.1 → 3.0.0.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (259) hide show
  1. data/.gitignore +2 -1
  2. data/CHANGELOG +16 -8
  3. data/features/builder.feature +2 -5
  4. data/features/cache_buster.feature +1 -1
  5. data/features/clean_build.feature +0 -1
  6. data/features/coffee-script.feature +3 -3
  7. data/features/custom_layout_engines.feature +10 -0
  8. data/features/directory_index.feature +0 -1
  9. data/features/dynamic_pages.feature +0 -1
  10. data/features/fonts.feature +0 -1
  11. data/features/{padrino_helpers.feature → former_padrino_helpers.feature} +1 -1
  12. data/features/sprockets.feature +34 -5
  13. data/features/sprockets_gems.feature +7 -4
  14. data/features/step_definitions/asset_host_steps.rb +7 -6
  15. data/features/step_definitions/builder_steps.rb +4 -0
  16. data/features/step_definitions/middleman_steps.rb +22 -16
  17. data/features/step_definitions/page_layout_steps.rb +10 -8
  18. data/fixtures/custom-layout-app/config.rb +1 -0
  19. data/fixtures/custom-layout-app/source/index.html.erb +1 -0
  20. data/fixtures/custom-layout-app/source/layout.haml +6 -0
  21. data/fixtures/sprockets-app/config.rb +2 -1
  22. data/fixtures/sprockets-app/source/library/css/bootstrap_include.css.scss +1 -0
  23. data/fixtures/sprockets-app/source/library/css/plain.css +3 -0
  24. data/fixtures/sprockets-app/source/library/css/sprockets_base1.css.scss +1 -0
  25. data/fixtures/sprockets-app/source/library/css/sprockets_base2.css.scss +1 -0
  26. data/fixtures/sprockets-app/source/library/css/sprockets_sub.css.scss +1 -0
  27. data/fixtures/sprockets-app/source/{jquery_include.js → library/js/jquery_include.js} +0 -0
  28. data/fixtures/sprockets-app/source/library/js/plain.js +3 -0
  29. data/fixtures/sprockets-app/source/library/{javascripts → js}/sprockets_base.js +0 -0
  30. data/fixtures/sprockets-app/source/library/{javascripts → js}/sprockets_sub.js +0 -0
  31. data/fixtures/test-app/config.rb +5 -4
  32. data/fixtures/test-app/source/{padrino_test.html.haml → former_padrino_test.html.haml} +0 -0
  33. data/fixtures/test-app/source/stylesheets/sprockets_base1.css.scss +1 -0
  34. data/fixtures/test-app/source/stylesheets/sprockets_base2.css.scss +1 -0
  35. data/fixtures/test-app/source/stylesheets/sprockets_sub.css.scss +1 -0
  36. data/lib/middleman.rb +27 -25
  37. data/lib/middleman/base.rb +408 -166
  38. data/lib/middleman/builder.rb +78 -162
  39. data/lib/middleman/cli.rb +61 -32
  40. data/lib/middleman/core_extensions/assets.rb +4 -44
  41. data/lib/middleman/core_extensions/builder.rb +12 -16
  42. data/lib/middleman/core_extensions/compass.rb +28 -57
  43. data/lib/middleman/core_extensions/data.rb +65 -49
  44. data/lib/middleman/core_extensions/default_helpers.rb +33 -18
  45. data/lib/middleman/core_extensions/features.rb +48 -26
  46. data/lib/middleman/core_extensions/file_watcher.rb +66 -0
  47. data/lib/middleman/core_extensions/front_matter.rb +91 -86
  48. data/lib/middleman/core_extensions/rendering.rb +9 -8
  49. data/lib/middleman/core_extensions/routing.rb +19 -53
  50. data/lib/middleman/core_extensions/sitemap.rb +229 -0
  51. data/lib/middleman/core_extensions/sprockets.rb +53 -37
  52. data/lib/middleman/features/asset_host.rb +20 -10
  53. data/lib/middleman/features/automatic_image_sizes.rb +12 -9
  54. data/lib/middleman/features/cache_buster.rb +38 -25
  55. data/lib/middleman/features/directory_indexes.rb +31 -28
  56. data/lib/middleman/features/minify_css.rb +3 -2
  57. data/lib/middleman/features/minify_css/cssmin.rb +55 -0
  58. data/lib/middleman/features/minify_javascript.rb +12 -5
  59. data/lib/middleman/features/relative_assets.rb +28 -25
  60. data/lib/middleman/features/sitemap_tree.rb +34 -0
  61. data/lib/middleman/guard.rb +57 -23
  62. data/lib/middleman/renderers/erb.rb +29 -0
  63. data/lib/middleman/renderers/liquid.rb +3 -12
  64. data/lib/middleman/renderers/markdown.rb +16 -15
  65. data/lib/middleman/renderers/sass.rb +34 -38
  66. data/lib/middleman/vendor/hooks-0.2.0/CHANGES.textile +9 -0
  67. data/lib/middleman/vendor/hooks-0.2.0/Gemfile +3 -0
  68. data/lib/middleman/vendor/hooks-0.2.0/README.rdoc +107 -0
  69. data/lib/middleman/vendor/hooks-0.2.0/Rakefile +12 -0
  70. data/lib/middleman/vendor/hooks-0.2.0/hooks.gemspec +22 -0
  71. data/lib/middleman/vendor/hooks-0.2.0/lib/hooks.rb +109 -0
  72. data/lib/middleman/vendor/hooks-0.2.0/lib/hooks/inheritable_attribute.rb +33 -0
  73. data/lib/middleman/vendor/hooks-0.2.0/test/hooks_test.rb +141 -0
  74. data/lib/middleman/vendor/hooks-0.2.0/test/inheritable_attribute_test.rb +55 -0
  75. data/lib/middleman/vendor/hooks-0.2.0/test/test_helper.rb +10 -0
  76. data/lib/middleman/vendor/padrino-core-0.10.5/.document +5 -0
  77. data/lib/middleman/vendor/padrino-core-0.10.5/.gitignore +22 -0
  78. data/lib/middleman/vendor/padrino-core-0.10.5/.yardopts +1 -0
  79. data/lib/middleman/vendor/padrino-core-0.10.5/LICENSE.txt +20 -0
  80. data/lib/middleman/vendor/padrino-core-0.10.5/README.rdoc +294 -0
  81. data/lib/middleman/vendor/padrino-core-0.10.5/Rakefile +5 -0
  82. data/lib/middleman/vendor/padrino-core-0.10.5/bin/padrino +9 -0
  83. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core.rb +167 -0
  84. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application.rb +270 -0
  85. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/rendering.rb +292 -0
  86. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/routing.rb +934 -0
  87. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/showexceptions.rb +20 -0
  88. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/caller.rb +53 -0
  89. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/adapter.rb +24 -0
  90. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/base.rb +151 -0
  91. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/console.rb +20 -0
  92. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/rake.rb +24 -0
  93. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/rake_tasks.rb +59 -0
  94. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/command.rb +38 -0
  95. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/images/404.png +0 -0
  96. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/images/500.png +0 -0
  97. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/loader.rb +210 -0
  98. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/cs.yml +34 -0
  99. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/da.yml +34 -0
  100. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/de.yml +34 -0
  101. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/en.yml +34 -0
  102. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/es.yml +34 -0
  103. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/fr.yml +34 -0
  104. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/hu.yml +34 -0
  105. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/it.yml +40 -0
  106. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/ja.yml +34 -0
  107. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/lv.yml +34 -0
  108. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/nl.yml +34 -0
  109. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/no.yml +35 -0
  110. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/pl.yml +34 -0
  111. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/pt_br.yml +40 -0
  112. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/ru.yml +35 -0
  113. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/tr.yml +34 -0
  114. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/uk.yml +34 -0
  115. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/zh_cn.yml +34 -0
  116. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/zh_tw.yml +34 -0
  117. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/logger.rb +345 -0
  118. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/mounter.rb +224 -0
  119. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/reloader.rb +254 -0
  120. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/router.rb +98 -0
  121. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/server.rb +79 -0
  122. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/support_lite.rb +199 -0
  123. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/tasks.rb +21 -0
  124. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/version.rb +20 -0
  125. data/lib/middleman/vendor/padrino-core-0.10.5/padrino-core.gemspec +38 -0
  126. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/.components +6 -0
  127. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/.gitignore +7 -0
  128. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/complex.rb +32 -0
  129. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/simple.rb +33 -0
  130. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/a.rb +9 -0
  131. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/b.rb +4 -0
  132. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/c.rb +1 -0
  133. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/e.rb +13 -0
  134. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/f.rb +2 -0
  135. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/g.rb +2 -0
  136. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/d.rb +4 -0
  137. data/lib/middleman/vendor/padrino-core-0.10.5/test/helper.rb +81 -0
  138. data/lib/middleman/vendor/padrino-core-0.10.5/test/mini_shoulda.rb +45 -0
  139. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_application.rb +108 -0
  140. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_core.rb +79 -0
  141. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_dependencies.rb +44 -0
  142. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_filters.rb +278 -0
  143. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_locale.rb +21 -0
  144. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_logger.rb +100 -0
  145. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_mounter.rb +177 -0
  146. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_reloader_complex.rb +75 -0
  147. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_reloader_simple.rb +98 -0
  148. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_rendering.rb +461 -0
  149. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_restful_routing.rb +33 -0
  150. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_router.rb +146 -0
  151. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_routing.rb +1673 -0
  152. data/lib/middleman/vendor/padrino-helpers-0.10.5/.document +5 -0
  153. data/lib/middleman/vendor/padrino-helpers-0.10.5/.gitignore +21 -0
  154. data/lib/middleman/vendor/padrino-helpers-0.10.5/.yardopts +1 -0
  155. data/lib/middleman/vendor/padrino-helpers-0.10.5/LICENSE.txt +20 -0
  156. data/lib/middleman/vendor/padrino-helpers-0.10.5/README.rdoc +239 -0
  157. data/lib/middleman/vendor/padrino-helpers-0.10.5/Rakefile +5 -0
  158. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers.rb +58 -0
  159. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/asset_tag_helpers.rb +420 -0
  160. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_builder/abstract_form_builder.rb +220 -0
  161. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_builder/standard_form_builder.rb +43 -0
  162. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_helpers.rb +602 -0
  163. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/format_helpers.rb +381 -0
  164. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/cs.yml +103 -0
  165. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/da.yml +91 -0
  166. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/de.yml +81 -0
  167. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/en.yml +103 -0
  168. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/es.yml +103 -0
  169. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/fr.yml +80 -0
  170. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/hu.yml +103 -0
  171. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/it.yml +89 -0
  172. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/ja.yml +103 -0
  173. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/lv.yml +103 -0
  174. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/nl.yml +82 -0
  175. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/no.yml +91 -0
  176. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/pl.yml +95 -0
  177. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/pt_br.yml +103 -0
  178. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/ru.yml +103 -0
  179. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/tr.yml +103 -0
  180. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/uk.yml +103 -0
  181. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/zh_cn.yml +104 -0
  182. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/zh_tw.yml +103 -0
  183. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/number_helpers.rb +288 -0
  184. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers.rb +175 -0
  185. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/abstract_handler.rb +98 -0
  186. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/erb_handler.rb +79 -0
  187. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/haml_handler.rb +63 -0
  188. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/slim_handler.rb +81 -0
  189. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/render_helpers.rb +60 -0
  190. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/tag_helpers.rb +103 -0
  191. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/translation_helpers.rb +38 -0
  192. data/lib/middleman/vendor/padrino-helpers-0.10.5/padrino-helpers.gemspec +27 -0
  193. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/app.rb +73 -0
  194. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.erb +14 -0
  195. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.haml +12 -0
  196. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.slim +13 -0
  197. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.erb +14 -0
  198. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.haml +12 -0
  199. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.slim +12 -0
  200. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.erb +11 -0
  201. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.haml +9 -0
  202. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.slim +9 -0
  203. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.erb +5 -0
  204. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.haml +5 -0
  205. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.slim +5 -0
  206. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.erb +20 -0
  207. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.haml +15 -0
  208. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.slim +15 -0
  209. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.erb +56 -0
  210. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.haml +47 -0
  211. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.slim +47 -0
  212. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.erb +56 -0
  213. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.haml +45 -0
  214. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.slim +45 -0
  215. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.erb +5 -0
  216. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.haml +4 -0
  217. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.slim +4 -0
  218. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.erb +3 -0
  219. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.haml +3 -0
  220. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.slim +3 -0
  221. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.erb +3 -0
  222. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.haml +3 -0
  223. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.slim +3 -0
  224. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_erb.erb +1 -0
  225. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_haml.haml +1 -0
  226. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
  227. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.erb +1 -0
  228. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.haml +1 -0
  229. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.slim +1 -0
  230. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/app.rb +50 -0
  231. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engine.haml +5 -0
  232. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_erb.erb +1 -0
  233. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_haml.haml +1 -0
  234. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_slim.slim +1 -0
  235. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/erb/test.erb +1 -0
  236. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/explicit_engine.haml +5 -0
  237. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/haml/test.haml +1 -0
  238. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/_user.haml +7 -0
  239. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/haml_template.haml +1 -0
  240. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/some_template.haml +2 -0
  241. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/helper.rb +66 -0
  242. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_asset_tag_helpers.rb +320 -0
  243. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_form_builder.rb +996 -0
  244. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_form_helpers.rb +645 -0
  245. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_format_helpers.rb +227 -0
  246. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_locale.rb +20 -0
  247. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_number_helpers.rb +136 -0
  248. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_output_helpers.rb +153 -0
  249. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_render_helpers.rb +76 -0
  250. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_tag_helpers.rb +105 -0
  251. data/lib/middleman/version.rb +1 -1
  252. data/middleman-x86-mingw32.gemspec +16 -33
  253. data/middleman.gemspec +16 -31
  254. metadata +590 -349
  255. data/features/sinatra.feature +0 -6
  256. data/lib/middleman/core_extensions/rack_map.rb +0 -35
  257. data/lib/middleman/renderers/coffee_script.rb +0 -8
  258. data/lib/middleman/renderers/haml.rb +0 -31
  259. data/lib/middleman/renderers/slim.rb +0 -8
@@ -0,0 +1,227 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/fixtures/markup_app/app')
3
+
4
+ describe "FormatHelpers" do
5
+ def app
6
+ MarkupDemo.tap { |app| app.set :environment, :test }
7
+ end
8
+
9
+ def setup
10
+ Time.stubs(:now).returns(Time.utc(1983, 11, 9, 5))
11
+ end
12
+
13
+ include Padrino::Helpers::FormatHelpers
14
+
15
+ context 'for #simple_format method' do
16
+ should "format simple text into html format" do
17
+ actual_text = simple_format("Here is some basic text...\n...with a line break.")
18
+ assert_equal "<p>Here is some basic text...\n<br />...with a line break.</p>", actual_text
19
+ end
20
+
21
+ should "format more text into html format" do
22
+ actual_text = simple_format("We want to put a paragraph...\n\n...right there.")
23
+ assert_equal "<p>We want to put a paragraph...</p>\n\n<p>...right there.</p>", actual_text
24
+ end
25
+
26
+ should "support defining a class for the paragraphs" do
27
+ actual_text = simple_format("Look me! A class!", :class => 'description')
28
+ assert_equal "<p class=\"description\">Look me! A class!</p>", actual_text
29
+ end
30
+
31
+ context 'wrapped in a custom tag' do
32
+ should "format simple text into html format" do
33
+ actual_text = simple_format("Here is some basic text...\n...with a line break.", :tag => :div)
34
+ assert_equal "<div>Here is some basic text...\n<br />...with a line break.</div>", actual_text
35
+ end
36
+
37
+ should "format more text into html format" do
38
+ actual_text = simple_format("We want to put a paragraph...\n\n...right there.", :tag => :div)
39
+ assert_equal "<div>We want to put a paragraph...</div>\n\n<div>...right there.</div>", actual_text
40
+ end
41
+
42
+ should "support defining a class for the paragraphs" do
43
+ actual_text = simple_format("Look me! A class!", :class => 'description', :tag => :div)
44
+ assert_equal "<div class=\"description\">Look me! A class!</div>", actual_text
45
+ end
46
+ end
47
+ end
48
+
49
+ context 'for #pluralize method' do
50
+ should "return singular count for 1 item collections" do
51
+ actual_text = pluralize(1, 'person')
52
+ assert_equal '1 person', actual_text
53
+ end
54
+ should "return plural count for empty collections" do
55
+ actual_text = pluralize(0, 'person')
56
+ assert_equal '0 people', actual_text
57
+ end
58
+ should "return plural count for many collections" do
59
+ actual_text = pluralize(2, 'person')
60
+ assert_equal '2 people', actual_text
61
+ end
62
+ should "return pluralized word specified as argument" do
63
+ actual_text = pluralize(3, 'person', 'users')
64
+ assert_equal '3 users', actual_text
65
+ end
66
+ end
67
+
68
+ context 'for #word_wrap method' do
69
+ should "return proper formatting for 8 max width" do
70
+ actual_text = word_wrap('Once upon a time', :line_width => 8)
71
+ assert_equal "Once\nupon a\ntime", actual_text
72
+ end
73
+ should "return proper formatting for 1 max width" do
74
+ actual_text = word_wrap('Once upon a time', :line_width => 1)
75
+ assert_equal "Once\nupon\na\ntime", actual_text
76
+ end
77
+ should "return proper formatting for default width" do
78
+ actual_text = word_wrap((1..50).to_a.join(" "))
79
+ assert_equal (1..30).to_a.join(" ") + "\n" + (31..50).to_a.join(" "), actual_text
80
+ actual_text = word_wrap((1..50).to_a.join(" "), 80)
81
+ assert_equal (1..30).to_a.join(" ") + "\n" + (31..50).to_a.join(" "), actual_text
82
+ end
83
+ end
84
+
85
+ context 'for #highlight method' do
86
+ should 'highligth with defaults' do
87
+ actual_text = highlight('Lorem ipsum dolor sit amet', 'dolor')
88
+ assert_equal 'Lorem ipsum <strong class="highlight">dolor</strong> sit amet', actual_text
89
+ end
90
+
91
+ should 'highlight with highlighter' do
92
+ actual_text = highlight('Lorem ipsum dolor sit amet', 'dolor', :highlighter => '<span class="custom">\1</span>')
93
+ assert_equal 'Lorem ipsum <span class="custom">dolor</span> sit amet', actual_text
94
+ end
95
+ end
96
+
97
+ context 'for #truncate method' do
98
+ should "support default truncation" do
99
+ actual_text = truncate("Once upon a time in a world far far away")
100
+ assert_equal "Once upon a time in a world...", actual_text
101
+ end
102
+ should "support specifying length" do
103
+ actual_text = truncate("Once upon a time in a world far far away", :length => 14)
104
+ assert_equal "Once upon a...", actual_text
105
+ end
106
+ should "support specifying omission text" do
107
+ actual_text = truncate("And they found that many people were sleeping better.", :length => 25, :omission => "(clipped)")
108
+ assert_equal "And they found t(clipped)", actual_text
109
+ end
110
+ end
111
+
112
+ context 'for #truncate_words method' do
113
+ should "support default truncation" do
114
+ actual_text = truncate_words("Long before books were made, people told stories. They told them to one another and to the children as they sat before the fire. Many of these stories were about interesting people, but most of them were about the ways of fairies and giants.")
115
+ assert_equal "Long before books were made, people told stories. They told them to one another and to the children as they sat before the fire. Many of these stories were about...", actual_text
116
+ end
117
+ should "support specifying length" do
118
+ actual_text = truncate_words("Once upon a time in a world far far away", :length => 8)
119
+ assert_equal "Once upon a time in a world far...", actual_text
120
+ end
121
+ should "support specifying omission text" do
122
+ actual_text = truncate_words("And they found that many people were sleeping better.", :length => 4, :omission => "(clipped)")
123
+ assert_equal "And they found that(clipped)", actual_text
124
+ end
125
+ end
126
+
127
+ context 'for #h and #h! method' do
128
+ should "escape the simple html" do
129
+ assert_equal '&lt;h1&gt;hello&lt;&#x2F;h1&gt;', h('<h1>hello</h1>')
130
+ assert_equal '&lt;h1&gt;hello&lt;&#x2F;h1&gt;', escape_html('<h1>hello</h1>')
131
+ end
132
+ should "escape all brackets, quotes and ampersands" do
133
+ assert_equal '&lt;h1&gt;&lt;&gt;&quot;&amp;demo&amp;&quot;&lt;&gt;&lt;&#x2F;h1&gt;', h('<h1><>"&demo&"<></h1>')
134
+ end
135
+ should "return default text if text is empty" do
136
+ assert_equal 'default', h!("", "default")
137
+ assert_equal '&nbsp;', h!("")
138
+ end
139
+ should "return text escaped if not empty" do
140
+ assert_equal '&lt;h1&gt;hello&lt;&#x2F;h1&gt;', h!('<h1>hello</h1>')
141
+ end
142
+ end
143
+
144
+ context 'for #time_ago_in_words method' do
145
+ should "less than 5 seconds" do
146
+ assert_equal 'less than 5 seconds', time_ago_in_words(Time.now, true)
147
+ end
148
+ should "less than 10 seconds" do
149
+ assert_equal 'less than 10 seconds', time_ago_in_words(Time.now-5, true)
150
+ end
151
+ should "less than 20 seconds" do
152
+ assert_equal 'less than 20 seconds', time_ago_in_words(Time.now-10, true)
153
+ end
154
+ should "less than a minute" do
155
+ assert_equal 'less than a minute', time_ago_in_words(Time.now-40, true)
156
+ end
157
+ should "2 minutes" do
158
+ assert_equal '2 minutes', time_ago_in_words(Time.now-120, true)
159
+ end
160
+ should "display today" do
161
+ assert_equal 'less than a minute', time_ago_in_words(Time.now)
162
+ end
163
+ should "display yesterday" do
164
+ assert_equal '1 day', time_ago_in_words(1.day.ago)
165
+ end
166
+ should "display tomorrow" do
167
+ assert_equal '1 day', time_ago_in_words(1.day.from_now)
168
+ end
169
+ should "return future number of days" do
170
+ assert_equal '4 days', time_ago_in_words(4.days.from_now)
171
+ end
172
+ should "return past days ago" do
173
+ assert_equal '4 days', time_ago_in_words(4.days.ago)
174
+ end
175
+ should "return formatted archived date" do
176
+ assert_equal '3 months', time_ago_in_words(100.days.ago)
177
+ end
178
+ should "return formatted archived year date" do
179
+ assert_equal 'over 1 year', time_ago_in_words(500.days.ago)
180
+ end
181
+ should 'display now as a minute ago' do
182
+ assert_equal '1 minute', time_ago_in_words(1.minute.ago)
183
+ end
184
+ should "display a few minutes ago" do
185
+ assert_equal '4 minutes', time_ago_in_words(4.minute.ago)
186
+ end
187
+ should "display an hour ago" do
188
+ assert_equal 'about 1 hour', time_ago_in_words(1.hour.ago + 5.minutes.ago.sec)
189
+ end
190
+ should "display a few hours ago" do
191
+ assert_equal 'about 3 hours', time_ago_in_words(3.hour.ago + 5.minutes.ago.sec)
192
+ end
193
+ should "display a day ago" do
194
+ assert_equal '1 day', time_ago_in_words(1.day.ago)
195
+ end
196
+ should "display a few days ago" do
197
+ assert_equal '5 days', time_ago_in_words(5.days.ago - 5.minutes.ago.sec)
198
+ end
199
+ should "display a month ago" do
200
+ assert_equal 'about 1 month', time_ago_in_words(32.days.ago + 5.minutes.ago.sec)
201
+ end
202
+ should "display a few months ago" do
203
+ assert_equal '6 months', time_ago_in_words(180.days.ago - 5.minutes.ago.sec)
204
+ end
205
+ should "display a year ago" do
206
+ assert_equal 'about 1 year', time_ago_in_words(365.days.ago - 5.minutes.ago.sec)
207
+ end
208
+ should "display a few years ago" do
209
+ assert_equal 'over 7 years', time_ago_in_words(2800.days.ago - 5.minutes.ago.sec)
210
+ end
211
+ end
212
+
213
+ context 'for #js_escape_html method' do
214
+ should "escape double quotes" do
215
+ assert_equal "\\\"hello\\\"", js_escape_html('"hello"')
216
+ end
217
+ should "escape single quotes" do
218
+ assert_equal "\\'hello\\'", js_escape_html("'hello'")
219
+ end
220
+ should "escape html tags and breaks" do
221
+ assert_equal "\\n\\n<p>hello<\\/p>\\n", js_escape_html("\n\r<p>hello</p>\r\n")
222
+ end
223
+ should "escape data-confirm attribute" do
224
+ assert_equal "<data-confirm=\\\"are you sure\\\">", js_escape_html("<data-confirm=\"are you sure\">")
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+
3
+ describe "Locale Helpers" do
4
+ Dir[File.expand_path("../../lib/padrino-helpers/locale/*.yml", __FILE__)].each do |file|
5
+ base_original = YAML.load_file(file)
6
+ name = File.basename(file, '.yml')
7
+ should "should have correct locale for #{name}" do
8
+ base = base_original[name]['number']['format']
9
+ assert !base['separator'].nil?
10
+ assert !base['delimiter'].nil?
11
+ assert !base['precision'].nil?
12
+ base = base_original[name]['number']['currency']['format']
13
+ assert !base['format'].nil?
14
+ assert !base['unit'].nil?
15
+ assert !base['separator'].nil?
16
+ assert !base['delimiter'].nil?
17
+ assert !base['precision'].nil?
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,136 @@
1
+ describe "NumberHelpers" do
2
+ include Padrino::Helpers::NumberHelpers
3
+
4
+ def kilobytes(number)
5
+ number * 1024
6
+ end
7
+
8
+ def megabytes(number)
9
+ kilobytes(number) * 1024
10
+ end
11
+
12
+ def gigabytes(number)
13
+ megabytes(number) * 1024
14
+ end
15
+
16
+ def terabytes(number)
17
+ gigabytes(number) * 1024
18
+ end
19
+
20
+ context 'for number helpers functionality' do
21
+
22
+ should 'display number_to_currency' do
23
+ assert_equal "$1,234,567,890.50", number_to_currency(1234567890.50)
24
+ assert_equal "$1,234,567,890.51", number_to_currency(1234567890.506)
25
+ assert_equal "$1,234,567,892", number_to_currency(1234567891.50, {:precision => 0})
26
+ assert_equal "$1,234,567,890.5", number_to_currency(1234567890.50, {:precision => 1})
27
+ assert_equal "&pound;1234567890,50", number_to_currency(1234567890.50, {:unit => "&pound;", :separator => ",", :delimiter => ""})
28
+ assert_equal "$1,234,567,890.50", number_to_currency("1234567890.50")
29
+ assert_equal "1,234,567,890.50 K&#269;", number_to_currency("1234567890.50", {:unit => "K&#269;", :format => "%n %u"})
30
+ assert_equal "$x", number_to_currency("x")
31
+
32
+ assert_nil number_to_currency(nil)
33
+ end
34
+
35
+ should 'display number_to_percentage' do
36
+ assert_equal "100.000%", number_to_percentage(100)
37
+ assert_equal "100%", number_to_percentage(100, {:precision => 0})
38
+ assert_equal "302.06%", number_to_percentage(302.0574, {:precision => 2})
39
+ assert_equal "100.000%", number_to_percentage("100")
40
+ assert_equal "1000.000%", number_to_percentage("1000")
41
+ assert_equal "x%", number_to_percentage("x")
42
+ assert_equal "1.000,000%", number_to_percentage(1000, :delimiter => '.', :separator => ',')
43
+
44
+ assert_nil number_to_percentage(nil)
45
+ end
46
+
47
+ should 'display number_with_delimiter' do
48
+ assert_equal "12,345,678", number_with_delimiter(12345678)
49
+ assert_equal "0", number_with_delimiter(0)
50
+ assert_equal "123", number_with_delimiter(123)
51
+ assert_equal "123,456", number_with_delimiter(123456)
52
+ assert_equal "123,456.78", number_with_delimiter(123456.78)
53
+ assert_equal "123,456.789", number_with_delimiter(123456.789)
54
+ assert_equal "123,456.78901", number_with_delimiter(123456.78901)
55
+ assert_equal "123,456,789.78901", number_with_delimiter(123456789.78901)
56
+ assert_equal "0.78901", number_with_delimiter(0.78901)
57
+ assert_equal "123,456.78", number_with_delimiter("123456.78")
58
+ assert_equal "x", number_with_delimiter("x")
59
+
60
+ assert_nil number_with_delimiter(nil)
61
+ end
62
+
63
+ should 'display number_with_delimiter with options' do
64
+ assert_equal '12 345 678', number_with_delimiter(12345678, :delimiter => ' ')
65
+ assert_equal '12,345,678-05', number_with_delimiter(12345678.05, :separator => '-')
66
+ assert_equal '12.345.678,05', number_with_delimiter(12345678.05, :separator => ',', :delimiter => '.')
67
+ assert_equal '12.345.678,05', number_with_delimiter(12345678.05, :delimiter => '.', :separator => ',')
68
+ end
69
+
70
+ should 'display number_with_precision' do
71
+ assert_equal "111.235", number_with_precision(111.2346)
72
+ assert_equal "31.83", number_with_precision(31.825, :precision => 2)
73
+ assert_equal "111.23", number_with_precision(111.2346, :precision => 2)
74
+ assert_equal "111.00", number_with_precision(111, :precision => 2)
75
+ assert_equal "111.235", number_with_precision("111.2346")
76
+ assert_equal "31.83", number_with_precision("31.825", :precision => 2)
77
+ assert_equal "3268", number_with_precision((32.6751 * 100.00), :precision => 0)
78
+ assert_equal "112", number_with_precision(111.50, :precision => 0)
79
+ assert_equal "1234567892", number_with_precision(1234567891.50, :precision => 0)
80
+
81
+ # Return non-numeric params unchanged.
82
+ assert_equal "x", number_with_precision("x")
83
+ assert_nil number_with_precision(nil)
84
+ end
85
+
86
+ should 'display number_with_precision with custom delimiter and separator' do
87
+ assert_equal '31,83', number_with_precision(31.825, :precision => 2, :separator => ',')
88
+ assert_equal '1.231,83', number_with_precision(1231.825, :precision => 2, :separator => ',', :delimiter => '.')
89
+ end
90
+
91
+ should 'display number_to_human_size' do
92
+ assert_equal '0 Bytes', number_to_human_size(0)
93
+ assert_equal '1 Byte', number_to_human_size(1)
94
+ assert_equal '3 Bytes', number_to_human_size(3.14159265)
95
+ assert_equal '123 Bytes', number_to_human_size(123.0)
96
+ assert_equal '123 Bytes', number_to_human_size(123)
97
+ assert_equal '1.2 KB', number_to_human_size(1234)
98
+ assert_equal '12.1 KB', number_to_human_size(12345)
99
+ assert_equal '1.2 MB', number_to_human_size(1234567)
100
+ assert_equal '1.1 GB', number_to_human_size(1234567890)
101
+ assert_equal '1.1 TB', number_to_human_size(1234567890123)
102
+ assert_equal '1025 TB', number_to_human_size(terabytes(1025))
103
+ assert_equal '444 KB', number_to_human_size(kilobytes(444))
104
+ assert_equal '1023 MB', number_to_human_size(megabytes(1023))
105
+ assert_equal '3 TB', number_to_human_size(terabytes(3))
106
+ assert_equal '1.18 MB', number_to_human_size(1234567, :precision => 2)
107
+ assert_equal '3 Bytes', number_to_human_size(3.14159265, :precision => 4)
108
+ assert_equal '123 Bytes', number_to_human_size("123")
109
+ assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0123), :precision => 2)
110
+ assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0100), :precision => 4)
111
+ assert_equal '10 KB', number_to_human_size(kilobytes(10.000), :precision => 4)
112
+ assert_equal '1 Byte', number_to_human_size(1.1)
113
+ assert_equal '10 Bytes', number_to_human_size(10)
114
+
115
+ assert_nil number_to_human_size(nil)
116
+ end
117
+
118
+ should 'display number_to_human_size with options' do
119
+ assert_equal '1.18 MB', number_to_human_size(1234567, :precision => 2)
120
+ assert_equal '3 Bytes', number_to_human_size(3.14159265, :precision => 4)
121
+ assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0123), :precision => 2)
122
+ assert_equal '1.01 KB', number_to_human_size(kilobytes(1.0100), :precision => 4)
123
+ assert_equal '10 KB', number_to_human_size(kilobytes(10.000), :precision => 4)
124
+ assert_equal '1 TB', number_to_human_size(1234567890123, :precision => 0)
125
+ assert_equal '500 MB', number_to_human_size(524288000, :precision => 0)
126
+ assert_equal '40 KB', number_to_human_size(41010, :precision => 0)
127
+ assert_equal '40 KB', number_to_human_size(41100, :precision => 0)
128
+ end
129
+
130
+ should 'display number_to_human_size with custom delimiter and separator' do
131
+ assert_equal '1,01 KB', number_to_human_size(kilobytes(1.0123), :precision => 2, :separator => ',')
132
+ assert_equal '1,01 KB', number_to_human_size(kilobytes(1.0100), :precision => 4, :separator => ',')
133
+ assert_equal '1.000,1 TB', number_to_human_size(terabytes(1000.1), :delimiter => '.', :separator => ',')
134
+ end
135
+ end
136
+ end
@@ -0,0 +1,153 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/fixtures/markup_app/app')
3
+
4
+ describe "OutputHelpers" do
5
+ def app
6
+ MarkupDemo.tap { |app| app.set :environment, :test }
7
+ end
8
+
9
+ context 'for #content_for method' do
10
+ should 'work for erb templates' do
11
+ visit '/erb/content_for'
12
+ assert_have_selector '.demo h1', :content => "This is content yielded from a content_for"
13
+ assert_have_selector '.demo2 h1', :content => "This is content yielded with name Johnny Smith"
14
+ end
15
+
16
+ should "work for haml templates" do
17
+ visit '/haml/content_for'
18
+ assert_have_selector '.demo h1', :content => "This is content yielded from a content_for"
19
+ assert_have_selector '.demo2 h1', :content => "This is content yielded with name Johnny Smith"
20
+ end
21
+
22
+ should "work for slim templates" do
23
+ visit '/slim/content_for'
24
+ assert_have_selector '.demo h1', :content => "This is content yielded from a content_for"
25
+ assert_have_selector '.demo2 h1', :content => "This is content yielded with name Johnny Smith"
26
+ end
27
+ end # content_for
28
+
29
+ context "for #content_for? method" do
30
+ should 'work for erb templates' do
31
+ visit '/erb/content_for'
32
+ assert_have_selector '.demo_has_content', :content => "true"
33
+ assert_have_selector '.fake_has_content', :content => "false"
34
+ end
35
+
36
+ should "work for haml templates" do
37
+ visit '/haml/content_for'
38
+ assert_have_selector '.demo_has_content', :content => "true"
39
+ assert_have_selector '.fake_has_content', :content => "false"
40
+ end
41
+
42
+ should "work for slim templates" do
43
+ visit '/slim/content_for'
44
+ assert_have_selector '.demo_has_content', :content => "true"
45
+ assert_have_selector '.fake_has_content', :content => "false"
46
+ end
47
+ end # content_for?
48
+
49
+ context 'for #capture_html method' do
50
+ should "work for erb templates" do
51
+ visit '/erb/capture_concat'
52
+ assert_have_selector 'p span', :content => "Captured Line 1"
53
+ assert_have_selector 'p span', :content => "Captured Line 2"
54
+ end
55
+
56
+ should "work for haml templates" do
57
+ visit '/haml/capture_concat'
58
+ assert_have_selector 'p span', :content => "Captured Line 1"
59
+ assert_have_selector 'p span', :content => "Captured Line 2"
60
+ end
61
+
62
+ should "work for slim templates" do
63
+ visit '/slim/capture_concat'
64
+ assert_have_selector 'p span', :content => "Captured Line 1"
65
+ assert_have_selector 'p span', :content => "Captured Line 2"
66
+ end
67
+ end
68
+
69
+ context 'for #concat_content method' do
70
+ should "work for erb templates" do
71
+ visit '/erb/capture_concat'
72
+ assert_have_selector 'p', :content => "Concat Line 3", :count => 1
73
+ end
74
+
75
+ should "work for haml templates" do
76
+ visit '/haml/capture_concat'
77
+ assert_have_selector 'p', :content => "Concat Line 3", :count => 1
78
+ end
79
+
80
+ should "work for slim templates" do
81
+ visit '/slim/capture_concat'
82
+ assert_have_selector 'p', :content => "Concat Line 3", :count => 1
83
+ end
84
+ end
85
+
86
+ context 'for #block_is_template?' do
87
+ should "work for erb templates" do
88
+ visit '/erb/capture_concat'
89
+ assert_have_selector 'p', :content => "The erb block passed in is a template", :class => 'is_template'
90
+ # TODO Get ERB template detection working (fix block_is_erb? method)
91
+ # assert_have_no_selector 'p', :content => "The ruby block passed in is a template", :class => 'is_template'
92
+ end
93
+
94
+ should "work for haml templates" do
95
+ visit '/haml/capture_concat'
96
+ assert_have_selector 'p', :content => "The haml block passed in is a template", :class => 'is_template'
97
+ assert_have_no_selector 'p', :content => "The ruby block passed in is a template", :class => 'is_template'
98
+ end
99
+
100
+ should_eventually "work for slim templates" do
101
+ visit '/slim/capture_concat'
102
+ assert_have_selector 'p', :content => "The slim block passed in is a template", :class => 'is_template'
103
+ # TODO Get SLIM template detection working (fix block_is_erb? method)
104
+ # assert_have_no_selector 'p', :content => "The ruby block passed in is a template", :class => 'is_template'
105
+ end
106
+ end
107
+
108
+ context 'for #current_engine method' do
109
+ should 'detect correctly current engine for erb' do
110
+ visit '/erb/current_engine'
111
+ assert_have_selector 'p.start', :content => "erb"
112
+ assert_have_selector 'p.haml', :content => "haml"
113
+ assert_have_selector 'p.erb', :content => "erb"
114
+ assert_have_selector 'p.slim', :content => "slim"
115
+ assert_have_selector 'p.end', :content => "erb"
116
+ end
117
+
118
+ should 'detect correctly current engine for haml' do
119
+ visit '/haml/current_engine'
120
+ assert_have_selector 'p.start', :content => "haml"
121
+ assert_have_selector 'p.haml', :content => "haml"
122
+ assert_have_selector 'p.erb', :content => "erb"
123
+ assert_have_selector 'p.slim', :content => "slim"
124
+ assert_have_selector 'p.end', :content => "haml"
125
+ end
126
+
127
+ should 'detect correctly current engine for slim' do
128
+ visit '/slim/current_engine'
129
+ assert_have_selector 'p.start', :content => "slim"
130
+ assert_have_selector 'p.haml', :content => "haml"
131
+ assert_have_selector 'p.erb', :content => "erb"
132
+ assert_have_selector 'p.slim', :content => "slim"
133
+ assert_have_selector 'p.end', :content => "slim"
134
+ end
135
+ end
136
+
137
+ context 'for #partial method in simple sinatra application' do
138
+ should 'properly output in erb' do
139
+ visit '/erb/simple_partial'
140
+ assert_have_selector 'p.erb', :content => "erb"
141
+ end
142
+
143
+ should 'properly output in haml' do
144
+ visit '/haml/simple_partial'
145
+ assert_have_selector 'p.haml', :content => "haml"
146
+ end
147
+
148
+ should 'properly output in slim' do
149
+ visit '/slim/simple_partial'
150
+ assert_have_selector 'p.slim', :content => "slim"
151
+ end
152
+ end
153
+ end