middleman-core 3.1.0.rc.1 → 3.1.0.rc.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (281) hide show
  1. checksums.yaml +4 -4
  2. data/.simplecov +6 -0
  3. data/features/clean_build.feature +20 -3
  4. data/features/custom-source.feature +7 -0
  5. data/features/data.feature +27 -1
  6. data/features/front-matter-neighbor.feature +2 -2
  7. data/features/front-matter.feature +3 -3
  8. data/features/i18n_builder.feature +5 -1
  9. data/features/i18n_preview.feature +18 -0
  10. data/features/layouts_dir.feature +30 -0
  11. data/features/minify_javascript.feature +3 -3
  12. data/features/support/env.rb +6 -0
  13. data/fixtures/basic-data-app/source/data.html.erb +5 -1
  14. data/fixtures/basic-data-app/source/data3.html.erb +5 -1
  15. data/fixtures/chained-app/source/index.html.str.erb +1 -1
  16. data/fixtures/clean-nested-app/config.rb +1 -3
  17. data/fixtures/clean-nested-app/source/nested/nested.html +1 -0
  18. data/fixtures/custom-src-app/config.rb +1 -0
  19. data/fixtures/custom-src-app/src/index.html +0 -0
  20. data/fixtures/custom-src-app/src/layouts/layout.html.erb +1 -0
  21. data/fixtures/frontmatter-app/source/front-matter-2.php.erb +2 -2
  22. data/fixtures/frontmatter-app/source/front-matter-auto.erb +1 -1
  23. data/fixtures/frontmatter-app/source/front-matter-change.html.erb +1 -1
  24. data/fixtures/frontmatter-app/source/front-matter-encoding.html.erb +1 -1
  25. data/fixtures/frontmatter-app/source/front-matter-line-2.html.erb +1 -1
  26. data/fixtures/frontmatter-app/source/json-front-matter-2.php.erb +2 -2
  27. data/fixtures/frontmatter-app/source/json-front-matter-auto.erb +1 -1
  28. data/fixtures/frontmatter-app/source/json-front-matter-encoding.html.erb +1 -1
  29. data/fixtures/frontmatter-app/source/json-front-matter-line-2.html.erb +1 -1
  30. data/fixtures/frontmatter-app/source/json-front-matter.html.erb +1 -1
  31. data/fixtures/frontmatter-app/source/raw-front-matter.html +1 -1
  32. data/fixtures/frontmatter-neighbor-app/source/front-matter-2.php.erb +2 -2
  33. data/fixtures/frontmatter-neighbor-app/source/front-matter-auto.erb +1 -1
  34. data/fixtures/frontmatter-neighbor-app/source/front-matter-change.html.erb +1 -1
  35. data/fixtures/frontmatter-neighbor-app/source/front-matter-encoding.html.erb +1 -1
  36. data/fixtures/frontmatter-neighbor-app/source/json-front-matter-2.php.erb +2 -2
  37. data/fixtures/frontmatter-neighbor-app/source/json-front-matter-auto.erb +1 -1
  38. data/fixtures/frontmatter-neighbor-app/source/json-front-matter.html.erb +1 -1
  39. data/fixtures/frontmatter-neighbor-app/source/raw-front-matter.html +1 -1
  40. data/fixtures/i18n-nested-app/locales/en/more.yml +3 -0
  41. data/fixtures/i18n-nested-app/locales/en.yml +4 -0
  42. data/fixtures/i18n-nested-app/locales/es/mucho.yml +3 -0
  43. data/fixtures/i18n-nested-app/locales/es.yml +4 -0
  44. data/fixtures/i18n-nested-app/source/localizable/index.html.erb +3 -0
  45. data/fixtures/i18n-test-app/locales/es.yml +1 -0
  46. data/fixtures/i18n-test-app/source/one.en.md +1 -0
  47. data/fixtures/i18n-test-app/source/one.es.md +1 -0
  48. data/fixtures/layouts-dir-app/source/index.html.erb +2 -0
  49. data/fixtures/layouts-dir-app/source/layouts/layout.erb +3 -0
  50. data/fixtures/layouts-dir-app/source/layouts2/layout.erb +3 -0
  51. data/fixtures/layouts-dir-app/source/nested/layouts2/layout.erb +3 -0
  52. data/fixtures/nested-data-app/data/examples/deeper/stuff.yml +1 -0
  53. data/fixtures/nested-data-app/data/examples/more.yml +1 -0
  54. data/fixtures/nested-data-app/source/test.html.erb +3 -1
  55. data/fixtures/nested-layout-app/source/layouts/master.erb +2 -2
  56. data/fixtures/nested-layout-app/source/layouts/master_haml.haml +2 -2
  57. data/fixtures/nested-layout-app/source/layouts/master_slim.slim +2 -2
  58. data/lib/middleman-core/application.rb +20 -3
  59. data/lib/middleman-core/cli/build.rb +5 -8
  60. data/lib/middleman-core/configuration.rb +1 -1
  61. data/lib/middleman-core/core_extensions/extensions.rb +26 -9
  62. data/lib/middleman-core/core_extensions/file_watcher.rb +9 -1
  63. data/lib/middleman-core/core_extensions/front_matter.rb +145 -173
  64. data/lib/middleman-core/core_extensions/rendering.rb +4 -4
  65. data/lib/middleman-core/core_extensions.rb +63 -0
  66. data/lib/middleman-core/extensions.rb +61 -7
  67. data/lib/middleman-core/renderers/redcarpet.rb +2 -15
  68. data/lib/middleman-core/sitemap/extensions/ignores.rb +4 -1
  69. data/lib/middleman-core/sitemap/extensions/on_disk.rb +5 -1
  70. data/lib/middleman-core/sitemap/store.rb +10 -2
  71. data/lib/middleman-core/sitemap.rb +4 -4
  72. data/lib/middleman-core/templates/empty/Gemfile.tt +3 -0
  73. data/lib/middleman-core/templates/empty.rb +23 -0
  74. data/lib/middleman-core/templates/shared/Gemfile.tt +0 -2
  75. data/lib/middleman-core/templates.rb +13 -1
  76. data/lib/middleman-core/util.rb +0 -57
  77. data/lib/middleman-core/version.rb +1 -1
  78. data/lib/middleman-core.rb +0 -1
  79. data/lib/middleman-more/core_extensions/compass.rb +3 -3
  80. data/lib/middleman-more/core_extensions/default_helpers.rb +2 -1
  81. data/lib/middleman-more/core_extensions/i18n.rb +79 -57
  82. data/lib/middleman-more/extensions/asset_hash.rb +43 -30
  83. data/lib/middleman-more/extensions/automatic_image_sizes.rb +1 -1
  84. data/lib/middleman-more/extensions/directory_indexes.rb +1 -1
  85. data/lib/middleman-more/extensions/gzip.rb +17 -19
  86. data/lib/middleman-more/extensions/minify_css.rb +16 -16
  87. data/lib/middleman-more/extensions/minify_javascript.rb +26 -20
  88. data/lib/{middleman-more/extensions/automatic_image_sizes → vendored-middleman-deps}/fastimage.rb +0 -0
  89. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/CHANGES.textile +0 -0
  90. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/Gemfile +0 -0
  91. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/README.rdoc +0 -0
  92. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/Rakefile +0 -0
  93. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/hooks.gemspec +0 -0
  94. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/lib/hooks/inheritable_attribute.rb +0 -0
  95. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/lib/hooks.rb +0 -0
  96. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/test/hooks_test.rb +0 -0
  97. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/test/inheritable_attribute_test.rb +0 -0
  98. data/lib/{middleman-core/vendor → vendored-middleman-deps}/hooks-0.2.0/test/test_helper.rb +0 -0
  99. data/lib/vendored-middleman-deps/padrino-core-0.10.7/.document +5 -0
  100. data/lib/vendored-middleman-deps/padrino-core-0.10.7/.gitignore +22 -0
  101. data/lib/vendored-middleman-deps/padrino-core-0.10.7/.yardopts +1 -0
  102. data/lib/vendored-middleman-deps/padrino-core-0.10.7/LICENSE.txt +20 -0
  103. data/lib/vendored-middleman-deps/padrino-core-0.10.7/README.rdoc +294 -0
  104. data/lib/vendored-middleman-deps/padrino-core-0.10.7/Rakefile +5 -0
  105. data/lib/vendored-middleman-deps/padrino-core-0.10.7/bin/padrino +9 -0
  106. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/application/rendering.rb +292 -0
  107. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/application/routing.rb +943 -0
  108. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/application/showexceptions.rb +20 -0
  109. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/application.rb +269 -0
  110. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/caller.rb +53 -0
  111. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/adapter.rb +24 -0
  112. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/base.rb +155 -0
  113. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/console.rb +20 -0
  114. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/rake.rb +25 -0
  115. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/rake_tasks.rb +59 -0
  116. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/command.rb +38 -0
  117. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/images/404.png +0 -0
  118. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/images/500.png +0 -0
  119. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/loader.rb +211 -0
  120. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/cs.yml +34 -0
  121. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/da.yml +34 -0
  122. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/de.yml +34 -0
  123. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/en.yml +34 -0
  124. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/es.yml +34 -0
  125. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/fr.yml +34 -0
  126. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/hu.yml +34 -0
  127. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/it.yml +40 -0
  128. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/ja.yml +34 -0
  129. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/lv.yml +34 -0
  130. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/nl.yml +34 -0
  131. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/no.yml +35 -0
  132. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/pl.yml +34 -0
  133. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/pt_br.yml +40 -0
  134. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/ro.yml +34 -0
  135. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/ru.yml +35 -0
  136. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/sv.yml +34 -0
  137. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/tr.yml +34 -0
  138. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/uk.yml +34 -0
  139. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/zh_cn.yml +34 -0
  140. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/locale/zh_tw.yml +34 -0
  141. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/logger.rb +428 -0
  142. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/mounter.rb +224 -0
  143. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/reloader.rb +254 -0
  144. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/router.rb +98 -0
  145. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/server.rb +79 -0
  146. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/support_lite.rb +207 -0
  147. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/tasks.rb +21 -0
  148. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/version.rb +20 -0
  149. data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core.rb +152 -0
  150. data/lib/vendored-middleman-deps/padrino-core-0.10.7/padrino-core.gemspec +38 -0
  151. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/apps/.components +6 -0
  152. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/apps/.gitignore +7 -0
  153. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/apps/complex.rb +32 -0
  154. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/apps/simple.rb +33 -0
  155. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/dependencies/a.rb +9 -0
  156. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/dependencies/b.rb +4 -0
  157. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/dependencies/c.rb +1 -0
  158. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/dependencies/circular/e.rb +13 -0
  159. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/dependencies/circular/f.rb +2 -0
  160. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/dependencies/circular/g.rb +2 -0
  161. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/fixtures/dependencies/d.rb +4 -0
  162. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/helper.rb +83 -0
  163. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/mini_shoulda.rb +45 -0
  164. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_application.rb +108 -0
  165. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_core.rb +77 -0
  166. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_dependencies.rb +44 -0
  167. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_filters.rb +278 -0
  168. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_locale.rb +21 -0
  169. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_logger.rb +154 -0
  170. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_mounter.rb +177 -0
  171. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_reloader_complex.rb +75 -0
  172. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_reloader_simple.rb +98 -0
  173. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_rendering.rb +461 -0
  174. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_restful_routing.rb +33 -0
  175. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_router.rb +146 -0
  176. data/lib/vendored-middleman-deps/padrino-core-0.10.7/test/test_routing.rb +1695 -0
  177. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/.document +5 -0
  178. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/.gitignore +21 -0
  179. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/.yardopts +1 -0
  180. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/LICENSE.txt +20 -0
  181. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/README.rdoc +239 -0
  182. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/Rakefile +5 -0
  183. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/asset_tag_helpers.rb +417 -0
  184. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/form_builder/abstract_form_builder.rb +251 -0
  185. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/form_builder/standard_form_builder.rb +43 -0
  186. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/form_helpers.rb +787 -0
  187. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/format_helpers.rb +381 -0
  188. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/cs.yml +103 -0
  189. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/da.yml +91 -0
  190. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/de.yml +81 -0
  191. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/en.yml +103 -0
  192. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/es.yml +103 -0
  193. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/fr.yml +80 -0
  194. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/hu.yml +103 -0
  195. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/it.yml +89 -0
  196. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/ja.yml +103 -0
  197. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/lv.yml +103 -0
  198. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/nl.yml +82 -0
  199. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/no.yml +91 -0
  200. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/pl.yml +95 -0
  201. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/pt_br.yml +103 -0
  202. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/ro.yml +103 -0
  203. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/ru.yml +103 -0
  204. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/sv.yml +103 -0
  205. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/tr.yml +103 -0
  206. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/uk.yml +103 -0
  207. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/zh_cn.yml +104 -0
  208. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/locale/zh_tw.yml +103 -0
  209. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/number_helpers.rb +288 -0
  210. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/output_helpers/abstract_handler.rb +98 -0
  211. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/output_helpers/erb_handler.rb +79 -0
  212. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/output_helpers/haml_handler.rb +63 -0
  213. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/output_helpers/slim_handler.rb +81 -0
  214. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/output_helpers.rb +175 -0
  215. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/render_helpers.rb +60 -0
  216. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/tag_helpers.rb +260 -0
  217. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers/translation_helpers.rb +38 -0
  218. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/lib/padrino-helpers.rb +59 -0
  219. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/padrino-helpers.gemspec +27 -0
  220. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/app.rb +73 -0
  221. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/capture_concat.erb +14 -0
  222. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/capture_concat.haml +12 -0
  223. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/capture_concat.slim +13 -0
  224. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_for.erb +14 -0
  225. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_for.haml +12 -0
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_for.slim +12 -0
  227. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_tag.erb +11 -0
  228. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_tag.haml +9 -0
  229. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_tag.slim +9 -0
  230. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/current_engine.erb +5 -0
  231. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/current_engine.haml +5 -0
  232. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/current_engine.slim +5 -0
  233. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/fields_for.erb +20 -0
  234. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/fields_for.haml +15 -0
  235. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/fields_for.slim +15 -0
  236. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_for.erb +72 -0
  237. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_for.haml +59 -0
  238. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_for.slim +59 -0
  239. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_tag.erb +86 -0
  240. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_tag.haml +70 -0
  241. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_tag.slim +70 -0
  242. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/link_to.erb +5 -0
  243. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/link_to.haml +4 -0
  244. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/link_to.slim +4 -0
  245. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/mail_to.erb +3 -0
  246. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/mail_to.haml +3 -0
  247. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/mail_to.slim +3 -0
  248. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/meta_tag.erb +3 -0
  249. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/meta_tag.haml +3 -0
  250. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/meta_tag.slim +3 -0
  251. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/partials/_erb.erb +1 -0
  252. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/partials/_haml.haml +1 -0
  253. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
  254. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/simple_partial.erb +1 -0
  255. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/simple_partial.haml +1 -0
  256. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/simple_partial.slim +1 -0
  257. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/app.rb +50 -0
  258. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/current_engine.haml +5 -0
  259. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/current_engines/_erb.erb +1 -0
  260. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/current_engines/_haml.haml +1 -0
  261. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/current_engines/_slim.slim +1 -0
  262. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/erb/test.erb +1 -0
  263. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/explicit_engine.haml +5 -0
  264. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/haml/test.haml +1 -0
  265. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/template/_user.haml +7 -0
  266. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/template/haml_template.haml +1 -0
  267. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/render_app/views/template/some_template.haml +2 -0
  268. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/helper.rb +66 -0
  269. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_asset_tag_helpers.rb +334 -0
  270. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_form_builder.rb +1106 -0
  271. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_form_helpers.rb +776 -0
  272. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_format_helpers.rb +227 -0
  273. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_locale.rb +20 -0
  274. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_number_helpers.rb +139 -0
  275. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_output_helpers.rb +152 -0
  276. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_render_helpers.rb +76 -0
  277. data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/test_tag_helpers.rb +106 -0
  278. data/middleman-core.gemspec +2 -2
  279. data/spec/spec_helper.rb +5 -0
  280. metadata +243 -18
  281. data/lib/middleman-more.rb +0 -102
@@ -0,0 +1,292 @@
1
+ require 'padrino-core/support_lite' unless defined?(SupportLite)
2
+
3
+ module Padrino
4
+ ##
5
+ # Padrino enhances the Sinatra 'render' method to have support for
6
+ # automatic template engine detection, enhanced layout functionality,
7
+ # locale enabled rendering, among other features.
8
+ #
9
+ module Rendering
10
+ ##
11
+ # Exception responsible for when an expected template did not exist.
12
+ #
13
+ class TemplateNotFound < RuntimeError
14
+ end
15
+
16
+ ##
17
+ # This is an array of file patterns to ignore. If your editor add a
18
+ # suffix during editing to your files please add it like:
19
+ #
20
+ # @example
21
+ # Padrino::Rendering::IGNORE_FILE_PATTERN << /~$/
22
+ #
23
+ IGNORE_FILE_PATTERN = [
24
+ /~$/ # This is for Gedit
25
+ ] unless defined?(IGNORE_FILE_PATTERN)
26
+
27
+ ##
28
+ # Default rendering options used in the #render-method.
29
+ #
30
+ DEFAULT_RENDERING_OPTIONS = { :strict_format => false, :raise_exceptions => true } unless defined?(DEFAULT_RENDERING_OPTIONS)
31
+
32
+ class << self
33
+ ##
34
+ # Main class that register this extension.
35
+ #
36
+ def registered(app)
37
+ app.send(:include, InstanceMethods)
38
+ app.extend(ClassMethods)
39
+ end
40
+ alias :included :registered
41
+ end
42
+
43
+ ##
44
+ # Class methods responsible for rendering templates as part of a request.
45
+ #
46
+ module ClassMethods
47
+ ##
48
+ # Use layout like rails does or if a block given then like sinatra.
49
+ # If used without a block, sets the current layout for the route.
50
+ #
51
+ # By default, searches in your:
52
+ #
53
+ # +app+/+views+/+layouts+/+application+.(+haml+|+erb+|+xxx+)
54
+ # +app+/+views+/+layout_name+.(+haml+|+erb+|+xxx+)
55
+ #
56
+ # If you define +layout+ :+custom+ then searches for your layouts in
57
+ # +app+/+views+/+layouts+/+custom+.(+haml+|+erb+|+xxx+)
58
+ # +app+/+views+/+custom+.(+haml+|+erb+|+xxx+)
59
+ #
60
+ # @param [Symbol] name (:layout)
61
+ # The layout to use.
62
+ #
63
+ # @yield []
64
+ #
65
+ def layout(name=:layout, &block)
66
+ return super(name, &block) if block_given?
67
+ @layout = name
68
+ end
69
+
70
+ ##
71
+ # Returns the cached template file to render for a given url, content_type and locale.
72
+ #
73
+ # @param [Array<template_path, content_type, locale>] render_options
74
+ #
75
+ def fetch_template_file(render_options)
76
+ (@_cached_templates ||= {})[render_options]
77
+ end
78
+
79
+ ##
80
+ # Caches the template file for the given rendering options
81
+ #
82
+ # @param [String] template_file
83
+ # The path of the template file.
84
+ #
85
+ # @param [Array<template_path, content_type, locale>] render_options
86
+ #
87
+ def cache_template_file!(template_file, render_options)
88
+ (@_cached_templates ||= {})[render_options] = template_file || []
89
+ end
90
+
91
+ ##
92
+ # Returns the cached layout path.
93
+ #
94
+ # @param [Symbol, nil] given_layout
95
+ # The requested layout.
96
+ #
97
+ def fetch_layout_path(given_layout=nil)
98
+ layout_name = given_layout || @layout || :application
99
+ @_cached_layout ||= {}
100
+ cached_layout_path = @_cached_layout[layout_name]
101
+ return cached_layout_path if cached_layout_path
102
+ has_layout_at_root = Dir["#{views}/#{layout_name}.*"].any?
103
+ layout_path = has_layout_at_root ? layout_name.to_sym : File.join('layouts', layout_name.to_s).to_sym
104
+ @_cached_layout[layout_name] = layout_path unless reload_templates?
105
+ layout_path
106
+ end
107
+ end
108
+
109
+ # Instance methods that allow enhanced rendering to function properly in Padrino.
110
+ module InstanceMethods
111
+ attr_reader :current_engine
112
+
113
+ ##
114
+ # Get/Set the content_type
115
+ #
116
+ # @param [String, nil] type
117
+ # The Content-Type to use.
118
+ #
119
+ # @param [Symbol, nil] type.
120
+ # Look and parse the given symbol to the matched Content-Type.
121
+ #
122
+ # @param [Hash] params
123
+ # Additional params to append to the Content-Type.
124
+ #
125
+ # @example
126
+ # case content_type
127
+ # when :js then do_some
128
+ # when :css then do_another
129
+ # end
130
+ #
131
+ # content_type :js
132
+ # # => set the response with 'application/javascript' Content-Type
133
+ # content_type 'text/html'
134
+ #
135
+ # # => set directly the Content-Type to 'text/html'
136
+ #
137
+ def content_type(type=nil, params={})
138
+ unless type.nil?
139
+ super(type, params)
140
+ @_content_type = type
141
+ end
142
+ @_content_type
143
+ end
144
+
145
+ private
146
+ ##
147
+ # Enhancing Sinatra render functionality for:
148
+ #
149
+ # * Using layout similar to rails
150
+ # * Use render 'path/to/my/template' (without symbols)
151
+ # * Use render 'path/to/my/template' (with engine lookup)
152
+ # * Use render 'path/to/template.haml' (with explicit engine lookup)
153
+ # * Use render 'path/to/template', :layout => false
154
+ # * Use render 'path/to/template', :layout => false, :engine => 'haml'
155
+ # * Use render { :a => 1, :b => 2, :c => 3 } # => return a json string
156
+ #
157
+ def render(engine, data=nil, options={}, locals={}, &block)
158
+ # If engine is a hash then render data converted to json
159
+ content_type(:json, :charset => 'utf-8') and return engine.to_json if engine.is_a?(Hash)
160
+
161
+ # If engine is nil, ignore engine parameter and shift up all arguments
162
+ # render nil, "index", { :layout => true }, { :localvar => "foo" }
163
+ engine, data, options = data, options, locals if engine.nil? && data
164
+
165
+ # Data is a hash of options when no engine isn't explicit
166
+ # render "index", { :layout => true }, { :localvar => "foo" }
167
+ # Data is options, and options is locals in this case
168
+ data, options, locals = nil, data, options if data.is_a?(Hash)
169
+
170
+ # If data is unassigned then this is a likely a template to be resolved
171
+ # This means that no engine was explicitly defined
172
+ data, engine = *resolve_template(engine, options.dup) if data.nil?
173
+
174
+ # Setup root
175
+ root = settings.respond_to?(:root) ? settings.root : ""
176
+
177
+ # Use @layout if it exists
178
+ options[:layout] = @layout if options[:layout].nil?
179
+
180
+ # Resolve layouts similar to in Rails
181
+ if (options[:layout].nil? || options[:layout] == true) && !settings.templates.has_key?(:layout)
182
+ layout_path, layout_engine = *resolved_layout
183
+ options[:layout] = layout_path || false # We need to force layout false so sinatra don't try to render it
184
+ options[:layout] = false unless layout_engine == engine # TODO allow different layout engine
185
+ options[:layout_engine] = layout_engine || engine if options[:layout]
186
+ elsif options[:layout].present?
187
+ options[:layout] = settings.fetch_layout_path(options[:layout] || @layout)
188
+ end
189
+
190
+ # Cleanup the template
191
+ @current_engine, engine_was = engine, @current_engine
192
+ @_out_buf, _buf_was = "", @_out_buf
193
+
194
+ # Pass arguments to Sinatra render method
195
+ super(engine, data, options.dup, locals, &block)
196
+ ensure
197
+ @current_engine = engine_was
198
+ @_out_buf = _buf_was
199
+ end
200
+
201
+ ##
202
+ # Returns the located layout tuple to be used for the rendered template
203
+ # (if available).
204
+ #
205
+ # @example
206
+ # resolve_layout
207
+ # # => ["/layouts/custom", :erb]
208
+ # # => [nil, nil]
209
+ #
210
+ def resolved_layout
211
+ located_layout = resolve_template(settings.fetch_layout_path, :raise_exceptions => false, :strict_format => true)
212
+ located_layout ? located_layout : [nil, nil]
213
+ end
214
+
215
+ ##
216
+ # Returns the template path and engine that match content_type (if present),
217
+ # I18n.locale.
218
+ #
219
+ # @param [String] template_path
220
+ # The path of the template.
221
+ #
222
+ # @param [Hash] options
223
+ # Additional options.
224
+ #
225
+ # @option options [Boolean] :strict_format (false)
226
+ # The resolved template must match the content_type of the request.
227
+ #
228
+ # @option options [Boolean] :raise_exceptions (false)
229
+ # Raises a {TemplateNotFound} exception if the template cannot be located.
230
+ #
231
+ # @return [Array<Symbol, Symbol>]
232
+ # The path and format of the template.
233
+ #
234
+ # @raise [TemplateNotFound]
235
+ # The template could not be found.
236
+ #
237
+ # @example
238
+ # get "/foo", :provides => [:html, :js] do; render 'path/to/foo'; end
239
+ # # If you request "/foo.js" with I18n.locale == :ru => [:"/path/to/foo.ru.js", :erb]
240
+ # # If you request "/foo" with I18n.locale == :de => [:"/path/to/foo.de.haml", :haml]
241
+ #
242
+ def resolve_template(template_path, options={})
243
+ began_at = Time.now
244
+ # Fetch cached template for rendering options
245
+ template_path = template_path.to_s[0] == ?/ ? template_path.to_s : "/#{template_path}"
246
+ rendering_options = [template_path, content_type, locale]
247
+ cached_template = settings.fetch_template_file(rendering_options)
248
+ if cached_template
249
+ logger.debug :cached, began_at, cached_template[0] if settings.logging? && defined?(logger)
250
+ return cached_template
251
+ end
252
+
253
+ # Resolve view path and options
254
+ options.reverse_merge!(DEFAULT_RENDERING_OPTIONS)
255
+ view_path = options.delete(:views) || settings.views || "./views"
256
+ target_extension = File.extname(template_path)[1..-1] || "none" # explicit template extension
257
+ template_path = template_path.chomp(".#{target_extension}")
258
+
259
+ # Generate potential template candidates
260
+ templates = Dir[File.join(view_path, template_path) + ".*"].map do |file|
261
+ template_engine = File.extname(file)[1..-1].to_sym # retrieves engine extension
262
+ template_file = file.sub(view_path, '').chomp(".#{template_engine}").to_sym # retrieves template filename
263
+ [template_file, template_engine] unless IGNORE_FILE_PATTERN.any? { |pattern| template_engine.to_s =~ pattern }
264
+ end
265
+
266
+ # Check if we have a simple content type
267
+ simple_content_type = [:html, :plain].include?(content_type)
268
+
269
+ # Resolve final template to render
270
+ located_template =
271
+ templates.find { |file, e| file.to_s == "#{template_path}.#{locale}.#{content_type}" } ||
272
+ templates.find { |file, e| file.to_s == "#{template_path}.#{locale}" && simple_content_type } ||
273
+ templates.find { |file, e| File.extname(file.to_s) == ".#{target_extension}" or e.to_s == target_extension.to_s } ||
274
+ templates.find { |file, e| file.to_s == "#{template_path}.#{content_type}" } ||
275
+ templates.find { |file, e| file.to_s == "#{template_path}" && simple_content_type } ||
276
+ (!options[:strict_format] && templates.first) # If not strict, fall back to the first located template
277
+
278
+ raise TemplateNotFound, "Template '#{template_path}' not found in '#{view_path}'!" if !located_template && options[:raise_exceptions]
279
+ settings.cache_template_file!(located_template, rendering_options) unless settings.reload_templates?
280
+ logger.debug :template, began_at, located_template[0] if located_template && settings.logging? && defined?(logger)
281
+ located_template
282
+ end
283
+
284
+ ##
285
+ # Return the I18n.locale if I18n is defined.
286
+ #
287
+ def locale
288
+ I18n.locale if defined?(I18n)
289
+ end
290
+ end # InstanceMethods
291
+ end # Rendering
292
+ end # Padrino