middleman-core 3.2.2 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (273) hide show
  1. checksums.yaml +4 -4
  2. data/features/cli_init.feature +18 -8
  3. data/features/helpers_select_tag.feature +1 -1
  4. data/features/layouts_dir.feature +8 -0
  5. data/features/markdown_redcarpet.feature +2 -2
  6. data/fixtures/asciidoc-app/source/layouts/default.erb +0 -1
  7. data/fixtures/capture-html-app/source/capture_html_haml.html.haml +1 -1
  8. data/fixtures/content-for-app/source/content_for_haml.html.haml +1 -1
  9. data/fixtures/frontmatter-settings-app/source/layouts/override.erb +1 -2
  10. data/fixtures/frontmatter-settings-neighbor-app/source/layouts/override.erb +1 -2
  11. data/fixtures/layouts-dir-app/source/ambiguous.html.erb +5 -0
  12. data/fixtures/layouts-dir-app/source/layouts/other.erb +3 -0
  13. data/fixtures/layouts-dir-app/source/other.erb +3 -0
  14. data/fixtures/link-to-app/source/link_to_haml.html.haml +1 -1
  15. data/fixtures/link-to-app/source/link_to_slim.html.slim +1 -1
  16. data/fixtures/nested-layout-app/source/layouts/inner_haml.haml +1 -1
  17. data/fixtures/nested-layout-app/source/layouts/inner_slim.slim +1 -1
  18. data/fixtures/nested-layout-app/source/layouts/outer_haml.haml +1 -1
  19. data/fixtures/nested-layout-app/source/layouts/outer_slim.slim +1 -1
  20. data/lib/middleman-core/application.rb +12 -3
  21. data/lib/middleman-core/cli/build.rb +5 -3
  22. data/lib/middleman-core/cli/console.rb +1 -1
  23. data/lib/middleman-core/cli/init.rb +1 -1
  24. data/lib/middleman-core/core_extensions.rb +0 -1
  25. data/lib/middleman-core/core_extensions/file_watcher.rb +11 -11
  26. data/lib/middleman-core/core_extensions/rendering.rb +40 -66
  27. data/lib/middleman-core/extension.rb +167 -0
  28. data/lib/middleman-core/extensions.rb +2 -151
  29. data/lib/middleman-core/logger.rb +2 -2
  30. data/lib/middleman-core/meta_pages/assets/config.css +13 -0
  31. data/lib/middleman-core/meta_pages/assets/meta.css +19 -3
  32. data/lib/middleman-core/meta_pages/assets/sitemap.css +18 -1
  33. data/lib/middleman-core/meta_pages/config_setting.rb +7 -9
  34. data/lib/middleman-core/meta_pages/sitemap_resource.rb +24 -15
  35. data/lib/middleman-core/meta_pages/sitemap_tree.rb +5 -1
  36. data/lib/middleman-core/meta_pages/templates/config.html.erb +2 -2
  37. data/lib/middleman-core/meta_pages/templates/index.html.erb +18 -8
  38. data/lib/middleman-core/meta_pages/templates/sitemap.html.erb +4 -5
  39. data/lib/middleman-core/preview_server.rb +6 -3
  40. data/lib/middleman-core/renderers/erb.rb +12 -14
  41. data/lib/middleman-core/renderers/haml.rb +10 -0
  42. data/lib/middleman-core/renderers/markdown.rb +5 -1
  43. data/lib/middleman-core/renderers/sass.rb +0 -4
  44. data/lib/middleman-core/renderers/slim.rb +16 -3
  45. data/lib/middleman-core/sitemap/resource.rb +1 -1
  46. data/lib/middleman-core/step_definitions.rb +2 -1
  47. data/lib/middleman-core/templates.rb +3 -1
  48. data/lib/middleman-core/templates/shared/Gemfile.tt +4 -1
  49. data/lib/middleman-core/templates/shared/config.tt +3 -1
  50. data/lib/middleman-core/templates/shared/gitignore +2 -1
  51. data/lib/middleman-core/util.rb +22 -16
  52. data/lib/middleman-core/version.rb +1 -1
  53. data/lib/middleman-more/core_extensions/compass.rb +3 -3
  54. data/lib/middleman-more/core_extensions/default_helpers.rb +18 -15
  55. data/lib/middleman-more/extensions/asset_hash.rb +1 -0
  56. data/middleman-core.gemspec +9 -6
  57. metadata +69 -227
  58. data/features/sass_cache_path.feature +0 -22
  59. data/fixtures/sass-cache-path-custom-app/config.rb +0 -3
  60. data/fixtures/sass-cache-path-custom-app/source/stylesheets/plain.css.sass +0 -4
  61. data/fixtures/sass-cache-path-default-app/config.rb +0 -3
  62. data/fixtures/sass-cache-path-default-app/source/stylesheets/plain.css.sass +0 -4
  63. data/lib/vendored-middleman-deps/hooks-0.2.0/CHANGES.textile +0 -9
  64. data/lib/vendored-middleman-deps/hooks-0.2.0/Gemfile +0 -3
  65. data/lib/vendored-middleman-deps/hooks-0.2.0/README.rdoc +0 -107
  66. data/lib/vendored-middleman-deps/hooks-0.2.0/Rakefile +0 -12
  67. data/lib/vendored-middleman-deps/hooks-0.2.0/hooks.gemspec +0 -22
  68. data/lib/vendored-middleman-deps/hooks-0.2.0/lib/hooks.rb +0 -109
  69. data/lib/vendored-middleman-deps/hooks-0.2.0/lib/hooks/inheritable_attribute.rb +0 -33
  70. data/lib/vendored-middleman-deps/hooks-0.2.0/test/hooks_test.rb +0 -141
  71. data/lib/vendored-middleman-deps/hooks-0.2.0/test/inheritable_attribute_test.rb +0 -55
  72. data/lib/vendored-middleman-deps/hooks-0.2.0/test/test_helper.rb +0 -10
  73. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.document +0 -5
  74. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.gitignore +0 -22
  75. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.yardopts +0 -1
  76. data/lib/vendored-middleman-deps/padrino-core-0.11.4/LICENSE.txt +0 -20
  77. data/lib/vendored-middleman-deps/padrino-core-0.11.4/README.rdoc +0 -294
  78. data/lib/vendored-middleman-deps/padrino-core-0.11.4/Rakefile +0 -5
  79. data/lib/vendored-middleman-deps/padrino-core-0.11.4/bin/padrino +0 -9
  80. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core.rb +0 -200
  81. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application.rb +0 -297
  82. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/flash.rb +0 -229
  83. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering.rb +0 -317
  84. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/erubis.rb +0 -64
  85. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/haml.rb +0 -28
  86. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/slim.rb +0 -14
  87. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/routing.rb +0 -1077
  88. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/showexceptions.rb +0 -21
  89. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/caller.rb +0 -53
  90. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/adapter.rb +0 -24
  91. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/base.rb +0 -159
  92. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/console.rb +0 -20
  93. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/rake.rb +0 -47
  94. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/rake_tasks.rb +0 -52
  95. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/command.rb +0 -38
  96. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/images/404.png +0 -0
  97. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/images/500.png +0 -0
  98. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/loader.rb +0 -224
  99. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/cs.yml +0 -33
  100. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/da.yml +0 -33
  101. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/de.yml +0 -33
  102. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/en.yml +0 -33
  103. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/es.yml +0 -33
  104. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/fr.yml +0 -33
  105. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/hu.yml +0 -33
  106. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/it.yml +0 -39
  107. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ja.yml +0 -33
  108. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/lv.yml +0 -33
  109. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/nl.yml +0 -33
  110. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/no.yml +0 -33
  111. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/pl.yml +0 -33
  112. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/pt_br.yml +0 -39
  113. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ro.yml +0 -33
  114. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ru.yml +0 -34
  115. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/sv.yml +0 -33
  116. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/tr.yml +0 -33
  117. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/uk.yml +0 -33
  118. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/zh_cn.yml +0 -33
  119. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/zh_tw.yml +0 -33
  120. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/logger.rb +0 -438
  121. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/module.rb +0 -58
  122. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/mounter.rb +0 -234
  123. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/reloader.rb +0 -341
  124. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/router.rb +0 -95
  125. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/server.rb +0 -77
  126. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/support_lite.rb +0 -260
  127. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/tasks.rb +0 -21
  128. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/version.rb +0 -20
  129. data/lib/vendored-middleman-deps/padrino-core-0.11.4/padrino-core.gemspec +0 -43
  130. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/Gemfile +0 -4
  131. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/app/app.rb +0 -3
  132. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/app_gem.gemspec +0 -17
  133. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/lib/app_gem.rb +0 -7
  134. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/lib/app_gem/version.rb +0 -3
  135. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/.components +0 -6
  136. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/.gitignore +0 -7
  137. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/complex.rb +0 -32
  138. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/simple.rb +0 -33
  139. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/a.rb +0 -9
  140. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/b.rb +0 -4
  141. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/c.rb +0 -1
  142. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/e.rb +0 -13
  143. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/f.rb +0 -2
  144. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/g.rb +0 -2
  145. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/d.rb +0 -4
  146. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/helper.rb +0 -83
  147. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/mini_shoulda.rb +0 -45
  148. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_application.rb +0 -125
  149. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_core.rb +0 -77
  150. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_csrf_protection.rb +0 -80
  151. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_dependencies.rb +0 -44
  152. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_filters.rb +0 -348
  153. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_flash.rb +0 -168
  154. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_locale.rb +0 -21
  155. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_logger.rb +0 -210
  156. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_mounter.rb +0 -199
  157. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_reloader_complex.rb +0 -75
  158. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_reloader_simple.rb +0 -98
  159. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering.rb +0 -545
  160. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering_extensions.rb +0 -14
  161. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_restful_routing.rb +0 -33
  162. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_router.rb +0 -146
  163. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_routing.rb +0 -1927
  164. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_support_lite.rb +0 -56
  165. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.document +0 -5
  166. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.gitignore +0 -21
  167. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.yardopts +0 -1
  168. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/LICENSE.txt +0 -20
  169. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/README.rdoc +0 -239
  170. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/Rakefile +0 -5
  171. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers.rb +0 -57
  172. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/asset_tag_helpers.rb +0 -401
  173. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/breadcrumb_helpers.rb +0 -183
  174. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_builder/abstract_form_builder.rb +0 -317
  175. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -40
  176. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_helpers.rb +0 -919
  177. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/format_helpers.rb +0 -372
  178. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/cs.yml +0 -103
  179. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/da.yml +0 -91
  180. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/de.yml +0 -81
  181. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/en.yml +0 -103
  182. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/es.yml +0 -103
  183. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/fr.yml +0 -79
  184. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/hu.yml +0 -103
  185. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/it.yml +0 -89
  186. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ja.yml +0 -103
  187. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/lv.yml +0 -103
  188. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/nl.yml +0 -82
  189. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/no.yml +0 -91
  190. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/pl.yml +0 -95
  191. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/pt_br.yml +0 -103
  192. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ro.yml +0 -103
  193. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ru.yml +0 -103
  194. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/sv.yml +0 -103
  195. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/tr.yml +0 -103
  196. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/uk.yml +0 -103
  197. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/zh_cn.yml +0 -103
  198. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/zh_tw.yml +0 -103
  199. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/number_helpers.rb +0 -283
  200. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers.rb +0 -207
  201. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -96
  202. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/erb_handler.rb +0 -78
  203. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -63
  204. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/slim_handler.rb +0 -78
  205. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/render_helpers.rb +0 -59
  206. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/tag_helpers.rb +0 -292
  207. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/translation_helpers.rb +0 -36
  208. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/padrino-helpers.gemspec +0 -27
  209. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/app.rb +0 -84
  210. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.erb +0 -8
  211. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.haml +0 -5
  212. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.slim +0 -6
  213. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.erb +0 -14
  214. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.haml +0 -12
  215. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.slim +0 -12
  216. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.erb +0 -14
  217. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.haml +0 -12
  218. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.slim +0 -12
  219. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.erb +0 -11
  220. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.haml +0 -9
  221. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.slim +0 -9
  222. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.erb +0 -5
  223. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.haml +0 -5
  224. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.slim +0 -5
  225. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.erb +0 -20
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.haml +0 -15
  227. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.slim +0 -15
  228. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.erb +0 -72
  229. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.haml +0 -59
  230. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.slim +0 -59
  231. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.erb +0 -95
  232. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.haml +0 -78
  233. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.slim +0 -79
  234. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.erb +0 -5
  235. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.haml +0 -4
  236. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.slim +0 -4
  237. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.erb +0 -3
  238. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.haml +0 -3
  239. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.slim +0 -3
  240. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.erb +0 -3
  241. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.haml +0 -3
  242. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  243. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_erb.erb +0 -1
  244. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_haml.haml +0 -1
  245. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  246. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.erb +0 -1
  247. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.haml +0 -1
  248. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  249. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/app.rb +0 -58
  250. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engine.haml +0 -5
  251. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_erb.erb +0 -1
  252. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_haml.haml +0 -1
  253. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_slim.slim +0 -1
  254. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_erb.erb +0 -3
  255. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_haml.haml +0 -2
  256. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_slim.slim +0 -2
  257. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/erb/test.erb +0 -1
  258. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/explicit_engine.haml +0 -5
  259. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/haml/test.haml +0 -1
  260. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/_user.haml +0 -7
  261. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/haml_template.haml +0 -1
  262. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/some_template.haml +0 -2
  263. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/helper.rb +0 -67
  264. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_asset_tag_helpers.rb +0 -359
  265. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_breadcrumb_helpers.rb +0 -134
  266. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_form_builder.rb +0 -1178
  267. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_form_helpers.rb +0 -1030
  268. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_format_helpers.rb +0 -241
  269. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_locale.rb +0 -20
  270. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_number_helpers.rb +0 -143
  271. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_output_helpers.rb +0 -154
  272. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_render_helpers.rb +0 -94
  273. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_tag_helpers.rb +0 -117
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 399878e22fa5885a804711e6492dca948a8b31f6
4
- data.tar.gz: 85bfe5dd5d745dc7cfb3dff4f92bdc5fcc0bec2e
3
+ metadata.gz: ec86e75a709ebacbc0ae4fd050a256758886f76f
4
+ data.tar.gz: 631a42d3975ab12e85936cd886447c1e46a0eefe
5
5
  SHA512:
6
- metadata.gz: aecbe3601a5a83dc338598bf3eda63906ebb3ee2f6c22e3d27786763245e0e89b1245d731dda9561c8914c0491482ef4aac432f777722ed62bd14c09cf732aef
7
- data.tar.gz: 807a69fdf80e525bda9d44fd08615395a6bd23bca2c846480fc05b095ef38ec729e9fef8ab42397859964fb5e71b8e132c76e4b8459fc2a35c99da4228100ab3
6
+ metadata.gz: 362ba5051eaba3f44b7a02bb9ff7a3f1bd95b65246c8b56ec5d26985045aaf7d8e45282441ac2a6ec17b8613934d5e2049bc1f3f02332e33d4517eb4d5c2f2eb
7
+ data.tar.gz: 221fec08ab0e003b107cfc8627f65f22f2b6b1e4b81a3793735c2b11c05c3ff2c2ba45d9d74fc7cb5fe07f7873f365b5eeaa048a0d71076e5c3fd4d4586e3a22
@@ -15,19 +15,29 @@ Feature: Middleman CLI
15
15
  | source/javascripts/all.js |
16
16
  | source/stylesheets/all.css |
17
17
  | source/stylesheets/normalize.css |
18
-
18
+
19
+ Scenario: Create a new project in the current directory
20
+ Given a directory named "MY_PROJECT"
21
+ When I cd to "MY_PROJECT"
22
+ And I run `middleman init`
23
+ Then the exit status should be 0
24
+ And the following files should exist:
25
+ | Gemfile |
26
+ | config.rb |
27
+ | source/index.html.erb |
28
+
19
29
  Scenario: Create a new project (alias i)
20
30
  When I run `middleman i MY_PROJECT`
21
31
  Then a directory named "MY_PROJECT" should exist
22
-
32
+
23
33
  Scenario: Create a new project (alias new)
24
34
  When I run `middleman new MY_PROJECT`
25
35
  Then a directory named "MY_PROJECT" should exist
26
-
36
+
27
37
  Scenario: Create a new project (alias n)
28
38
  When I run `middleman n MY_PROJECT`
29
39
  Then a directory named "MY_PROJECT" should exist
30
-
40
+
31
41
  Scenario: Create a new project with Rack
32
42
  When I run `middleman init MY_PROJECT --rack`
33
43
  Then a directory named "MY_PROJECT" should exist
@@ -36,7 +46,7 @@ Feature: Middleman CLI
36
46
  | config.rb |
37
47
  | config.ru |
38
48
  | Gemfile |
39
-
49
+
40
50
  Scenario: Create a new HTML5 project
41
51
  When I run `middleman init MY_PROJECT --template=html5`
42
52
  Then a directory named "MY_PROJECT" should exist
@@ -54,7 +64,7 @@ Feature: Middleman CLI
54
64
  | layouts/layout.erb |
55
65
  | humans.txt |
56
66
  | js/main.js |
57
-
67
+
58
68
  Scenario: Create a new HTML5 project with Rack
59
69
  When I run `middleman init MY_PROJECT --rack --template=html5`
60
70
  Then a directory named "MY_PROJECT" should exist
@@ -63,7 +73,7 @@ Feature: Middleman CLI
63
73
  | config.rb |
64
74
  | config.ru |
65
75
  | Gemfile |
66
-
76
+
67
77
  Scenario: Create a new Mobile HTML5 project
68
78
  When I run `middleman init MY_PROJECT --template=mobile`
69
79
  Then a directory named "MY_PROJECT" should exist
@@ -79,7 +89,7 @@ Feature: Middleman CLI
79
89
  | index.html |
80
90
  | humans.txt |
81
91
  | js/libs/respond.min.js |
82
-
92
+
83
93
  Scenario: Create a new Mobile HTML5 project with Rack
84
94
  When I run `middleman init MY_PROJECT --rack --template=mobile`
85
95
  Then a directory named "MY_PROJECT" should exist
@@ -11,7 +11,7 @@ Feature: select_tag helper
11
11
  When I go to "/select_tag.html"
12
12
  Then I should see:
13
13
  """
14
- <select name="colors"><option value="">Choose a color</option>
14
+ <select name="colors" include_blank="Choose a color"><option value="">Choose a color</option>
15
15
  <option value="red">red</option>
16
16
  <option value="blue">blue</option>
17
17
  <option value="blorange">blorange</option>
@@ -28,3 +28,11 @@ Feature: Layouts dir
28
28
  When I go to "/index.html"
29
29
  Then I should see "contents of the layout"
30
30
 
31
+ Scenario: Prefer a layout in the layouts_dir to one with the same name in the root
32
+ Given a fixture app "layouts-dir-app"
33
+ And a file named "config.rb" with:
34
+ """
35
+ """
36
+ And the Server is running
37
+ When I go to "/ambiguous.html"
38
+ Then I should see "contents of the layout in layouts_dir"
@@ -86,8 +86,8 @@ Feature: Markdown (Redcarpet) support
86
86
  Then I should see "![dust mite](http://dust.mite/image.png)"
87
87
  And I should not see "<img"
88
88
  When I go to "/with_toc_data.html"
89
- Then I should see 'id="toc_0"'
90
- And I should see 'id="toc_1"'
89
+ Then I should see 'id="first-header"'
90
+ And I should see 'id="second-header"'
91
91
  When I go to "/hard_wrap.html"
92
92
  Then I should see "br"
93
93
  When I go to "/link.html"
@@ -5,6 +5,5 @@
5
5
  </head>
6
6
  <body>
7
7
  <%= yield %>
8
-
9
8
  </body>
10
9
  </html>
@@ -1,4 +1,4 @@
1
- - capture_html :from_template do
1
+ = capture_html :from_template do
2
2
  %h1= "I am the yielded content haml"
3
3
 
4
4
  %p I am in the template
@@ -1,4 +1,4 @@
1
- - content_for :from_template do
1
+ = content_for :from_template do
2
2
  = "I am the yielded content haml <s>with html tags</s>"
3
3
 
4
4
  %p I am in the template
@@ -1,2 +1 @@
1
- <%= yield %>
2
- Override.
1
+ <%= yield %> Override.
@@ -1,2 +1 @@
1
- <%= yield %>
2
- Override.
1
+ <%= yield %> Override.
@@ -0,0 +1,5 @@
1
+ ---
2
+ layout: other
3
+ ---
4
+
5
+ Hello
@@ -0,0 +1,3 @@
1
+ contents of the layout in layouts_dir
2
+
3
+ <%= yield %>
@@ -0,0 +1,3 @@
1
+ contents of the layout in the root
2
+
3
+ <%= yield %>
@@ -1,2 +1,2 @@
1
- - link_to "/" do
1
+ = link_to "/" do
2
2
  %s haml with html tags
@@ -1,2 +1,2 @@
1
- - link_to "/" do
1
+ = link_to "/" do
2
2
  s slim with html tags
@@ -1,3 +1,3 @@
1
- - wrap_layout :outer_haml do
1
+ = wrap_layout :outer_haml do
2
2
  Inner
3
3
  = yield
@@ -1,3 +1,3 @@
1
- - wrap_layout :outer_slim do
1
+ = wrap_layout :outer_slim do
2
2
  h3 Inner
3
3
  == yield
@@ -1,3 +1,3 @@
1
- - wrap_layout :master_haml do
1
+ = wrap_layout :master_haml do
2
2
  Outer
3
3
  = yield
@@ -1,3 +1,3 @@
1
- - wrap_layout :master_slim do
1
+ = wrap_layout :master_slim do
2
2
  h2 Outer
3
3
  == yield
@@ -6,15 +6,14 @@ require 'i18n'
6
6
 
7
7
  # Don't fail on invalid locale, that's not what our current
8
8
  # users expect.
9
- ::I18n.config.enforce_available_locales = false
9
+ ::I18n.enforce_available_locales = false
10
10
 
11
11
  # Use ActiveSupport JSON
12
12
  require 'active_support/json'
13
13
  require 'active_support/core_ext/integer/inflections'
14
- require 'active_support/core_ext/float/rounding'
15
14
 
16
15
  # Simple callback library
17
- require 'vendored-middleman-deps/hooks-0.2.0/lib/hooks'
16
+ require 'hooks'
18
17
 
19
18
  # Our custom logger
20
19
  require 'middleman-core/logger'
@@ -32,6 +31,7 @@ module Middleman
32
31
 
33
32
  # Uses callbacks
34
33
  include Hooks
34
+ include Hooks::InstanceHooks
35
35
 
36
36
  # Before request hook
37
37
  define_hook :before
@@ -39,6 +39,9 @@ module Middleman
39
39
  # Ready (all loading and parsing of extensions complete) hook
40
40
  define_hook :ready
41
41
 
42
+ # Runs before the build is started
43
+ define_hook :before_build
44
+
42
45
  # Runs after the build is finished
43
46
  define_hook :after_build
44
47
 
@@ -223,6 +226,12 @@ module Middleman
223
226
  end
224
227
  alias :inspect :to_s # Ruby 2.0 calls inspect for NoMethodError instead of to_s
225
228
 
229
+ # Hooks clones _hooks from the class to the instance.
230
+ # https://github.com/apotonick/hooks/blob/master/lib/hooks/instance_hooks.rb#L10
231
+ # Middleman expects the same list of hooks for class and instance hooks:
232
+ def _hooks
233
+ self.class._hooks
234
+ end
226
235
  end
227
236
  end
228
237
 
@@ -1,6 +1,3 @@
1
- require 'middleman-core'
2
- require 'middleman-core/logger'
3
-
4
1
  require 'fileutils'
5
2
  require 'set'
6
3
 
@@ -50,6 +47,9 @@ module Middleman::Cli
50
47
  raise Thor::Error, 'Error: Could not find a Middleman project config, perhaps you are in the wrong folder?'
51
48
  end
52
49
 
50
+ require 'middleman-core'
51
+ require 'middleman-core/logger'
52
+
53
53
  # Use Rack::Test for inspecting a running server for output
54
54
  require 'rack'
55
55
  require 'rack/test'
@@ -65,6 +65,8 @@ module Middleman::Cli
65
65
  opts[:glob] = options['glob'] if options.has_key?('glob')
66
66
  opts[:clean] = options['clean']
67
67
 
68
+ self.class.shared_instance.run_hook :before_build, self
69
+
68
70
  action BuildAction.new(self, opts)
69
71
 
70
72
  self.class.shared_instance.run_hook :after_build, self
@@ -32,7 +32,7 @@ module Middleman::Cli
32
32
  set :environment, opts[:environment].to_sym
33
33
  end
34
34
 
35
- logger(opts[:debug] ? 0 : 1, opts[:instrumenting] || false)
35
+ ::Middleman::Logger.singleton(opts[:debug] ? 0 : 1, opts[:instrumenting] || false)
36
36
  end
37
37
 
38
38
  # TODO: get file watcher / reload! working in console
@@ -43,7 +43,7 @@ module Middleman::Cli
43
43
  :desc => 'Skip Git ignores and keeps'
44
44
  # The init task
45
45
  # @param [String] name
46
- def init(name)
46
+ def init(name = '.')
47
47
  key = options[:template].to_sym
48
48
  unless ::Middleman::Templates.registered.has_key?(key)
49
49
  raise Thor::Error.new "Unknown project template '#{key}'"
@@ -35,7 +35,6 @@ require 'middleman-more/core_extensions/i18n'
35
35
  begin
36
36
  require 'middleman-more/core_extensions/compass'
37
37
  rescue LoadError
38
- $stderr.puts "Compass not installed: #{$!}"
39
38
  end
40
39
 
41
40
  ###
@@ -7,12 +7,13 @@ module Middleman
7
7
  module FileWatcher
8
8
 
9
9
  IGNORE_LIST = [
10
- /^bin\//,
11
- /^\.bundle\//,
12
- /^vendor\//,
13
- /^\.sass-cache\//,
14
- /^\.cache\//,
15
- /^\.git\//,
10
+ /^bin(\/|$)/,
11
+ /^\.bundle(\/|$)/,
12
+ /^vendor(\/|$)/,
13
+ /^node_modules(\/|$)/,
14
+ /^\.sass-cache(\/|$)/,
15
+ /^\.cache(\/|$)/,
16
+ /^\.git(\/|$)/,
16
17
  /^\.gitignore$/,
17
18
  /\.DS_Store/,
18
19
  /^\.rbenv-.*$/,
@@ -38,7 +39,7 @@ module Middleman
38
39
  end
39
40
 
40
41
  app.after_configuration do
41
- config[:file_watcher_ignore] << %r{^#{config[:build_dir]}\/}
42
+ config[:file_watcher_ignore] << %r{^#{config[:build_dir]}(\/|$)}
42
43
  end
43
44
 
44
45
  # After config, load everything else
@@ -99,7 +100,6 @@ module Middleman
99
100
  # @return [void]
100
101
  def did_change(path)
101
102
  path = Pathname(path)
102
- return if ignored?(path)
103
103
  logger.debug "== File Change: #{path}"
104
104
  @known_paths << path
105
105
  self.run_callbacks(path, :changed)
@@ -111,7 +111,6 @@ module Middleman
111
111
  # @return [void]
112
112
  def did_delete(path)
113
113
  path = Pathname(path)
114
- return if ignored?(path)
115
114
  logger.debug "== File Deletion: #{path}"
116
115
  @known_paths.delete(path)
117
116
  self.run_callbacks(path, :deleted)
@@ -131,7 +130,7 @@ module Middleman
131
130
  glob = (path + '**').to_s
132
131
  subset = @known_paths.select { |p| p.fnmatch(glob) }
133
132
 
134
- ::Middleman::Util.all_files_under(path).each do |filepath|
133
+ ::Middleman::Util.all_files_under(path, &method(:ignored?)).each do |filepath|
135
134
  next if only_new && subset.include?(filepath)
136
135
 
137
136
  subset.delete(filepath)
@@ -156,7 +155,6 @@ module Middleman
156
155
  @known_paths.include?(p)
157
156
  end
158
157
 
159
- protected
160
158
  # Whether this path is ignored
161
159
  # @param [Pathname] path
162
160
  # @return [Boolean]
@@ -165,6 +163,8 @@ module Middleman
165
163
  app.config[:file_watcher_ignore].any? { |r| path =~ r }
166
164
  end
167
165
 
166
+ protected
167
+
168
168
  # Notify callbacks for a file given an array of callbacks
169
169
  #
170
170
  # @param [Pathname] path The file that was changed
@@ -157,7 +157,7 @@ module Middleman
157
157
  content = render_individual_file(path, locs, opts, context)
158
158
  path = File.basename(path, File.extname(path))
159
159
  rescue LocalJumpError
160
- raise "Tried to render a layout (calls yield) at #{path} like it was a template. Non-default layouts need to be in #{source}/#{layout_dir}."
160
+ raise "Tried to render a layout (calls yield) at #{path} like it was a template. Non-default layouts need to be in #{source}/#{config[:layouts_dir]}."
161
161
  end
162
162
  end
163
163
 
@@ -190,42 +190,29 @@ module Middleman
190
190
  locals = options[:locals]
191
191
 
192
192
  found_partial = false
193
- engine = nil
193
+ resolve_opts = { try_without_underscore: true }
194
194
 
195
195
  # If the path is known to the sitemap
196
196
  if resource = sitemap.find_resource_by_path(current_path)
197
197
  current_dir = File.dirname(resource.source_file)
198
- engine = File.extname(resource.source_file)[1..-1].to_sym
198
+ resolve_opts[:preferred_engine] = File.extname(resource.source_file)[1..-1].to_sym
199
199
 
200
200
  # Look for partials relative to the current path
201
201
  relative_dir = File.join(current_dir.sub(%r{^#{Regexp.escape(self.source_dir)}/?}, ''), data)
202
202
 
203
- # Try to use the current engine first
204
- found_partial, found_engine = resolve_template(relative_dir, :preferred_engine => engine, :try_without_underscore => true)
205
-
206
- # Fall back to any engine available
207
- if !found_partial
208
- found_partial, found_engine = resolve_template(relative_dir, :try_without_underscore => true)
209
- end
203
+ found_partial = resolve_template(relative_dir, resolve_opts)
210
204
  end
211
205
 
212
206
  # Look in the partials_dir for the partial with the current engine
213
- partials_path = File.join(config[:partials_dir], data)
214
- if !found_partial && !engine.nil?
215
- found_partial, found_engine = resolve_template(partials_path, :preferred_engine => engine, :try_without_underscore => true)
216
- end
217
-
218
- # Look in the root with any engine
219
207
  if !found_partial
220
- found_partial, found_engine = resolve_template(partials_path, :try_without_underscore => true)
208
+ partials_path = File.join(config[:partials_dir], data)
209
+ found_partial = resolve_template(partials_path, resolve_opts)
221
210
  end
222
211
 
212
+ raise ::Middleman::CoreExtensions::Rendering::TemplateNotFound, "Could not locate partial: #{data}" unless found_partial
213
+
223
214
  # Render the partial if found, otherwide throw exception
224
- if found_partial
225
- render_individual_file(found_partial, locals, options, self, &block)
226
- else
227
- raise ::Middleman::CoreExtensions::Rendering::TemplateNotFound, "Could not locate partial: #{data}"
228
- end
215
+ render_individual_file(found_partial, locals, options, self, &block)
229
216
  end
230
217
 
231
218
  # Render an on-disk file. Used for everything, including layouts.
@@ -370,26 +357,14 @@ module Middleman
370
357
  # Whether we've found the layout
371
358
  layout_path = false
372
359
 
373
- # If we prefer a specific engine
374
- if !preferred_engine.nil?
375
- # Check root
376
- layout_path, layout_engine = resolve_template(name, :preferred_engine => preferred_engine)
377
-
378
- # Check layouts folder
379
- if !layout_path
380
- layout_path, layout_engine = resolve_template(File.join(config[:layouts_dir], name.to_s), :preferred_engine => preferred_engine)
381
- end
382
- end
360
+ resolve_opts = {}
361
+ resolve_opts[:preferred_engine] = preferred_engine if !preferred_engine.nil?
383
362
 
384
- # Check root, no preference
385
- if !layout_path
386
- layout_path, layout_engine = resolve_template(name)
387
- end
363
+ # Check layouts folder
364
+ layout_path = resolve_template(File.join(config[:layouts_dir], name.to_s), resolve_opts)
388
365
 
389
- # Check layouts folder, no preference
390
- if !layout_path
391
- layout_path, layout_engine = resolve_template(File.join(config[:layouts_dir], name.to_s))
392
- end
366
+ # If we didn't find it, check root
367
+ layout_path = resolve_template(name, resolve_opts) unless layout_path
393
368
 
394
369
  # Return the path
395
370
  layout_path
@@ -440,7 +415,8 @@ module Middleman
440
415
 
441
416
  # Find a template on disk given a output path
442
417
  # @param [String] request_path
443
- # @param [Hash] options
418
+ # @option options [Boolean] :preferred_engine If set, try this engine first, then fall back to any engine.
419
+ # @option options [Boolean] :try_without_underscore
444
420
  # @return [Array<String, Symbol>, Boolean]
445
421
  def resolve_template(request_path, options={})
446
422
  # Find the path by searching or using the cache
@@ -450,48 +426,46 @@ module Middleman
450
426
  on_disk_path = File.expand_path(relative_path, self.source_dir)
451
427
 
452
428
  # By default, any engine will do
453
- preferred_engine = '*'
429
+ preferred_engines = ['*']
454
430
 
455
- # Unless we're specifically looking for a preferred engine
431
+ # If we're specifically looking for a preferred engine
456
432
  if options.has_key?(:preferred_engine)
457
433
  extension_class = ::Tilt[options[:preferred_engine]]
458
434
  matched_exts = []
459
435
 
460
436
  # Get a list of extensions for a preferred engine
461
- # TODO: Cache this
462
- ::Tilt.mappings.each do |ext, engines|
463
- next unless engines.include? extension_class
464
- matched_exts << ext
465
- end
437
+ matched_exts = ::Tilt.mappings.select do |ext, engines|
438
+ engines.include? extension_class
439
+ end.keys
466
440
 
467
- # Change the glob to only look for the matched extensions
468
- if matched_exts.length > 0
469
- preferred_engine = '{' + matched_exts.join(',') + '}'
470
- else
471
- return false
441
+ # Prefer to look for the matched extensions
442
+ unless matched_exts.empty?
443
+ preferred_engines.unshift('{' + matched_exts.join(',') + '}')
472
444
  end
473
445
  end
474
446
 
475
- # Look for files that match
476
- path_with_ext = on_disk_path + '.' + preferred_engine
477
-
478
- found_path = Dir[path_with_ext].find do |path|
479
- ::Tilt[path]
447
+ search_paths = preferred_engines.flat_map do |preferred_engine|
448
+ path_with_ext = on_disk_path + '.' + preferred_engine
449
+ paths = [path_with_ext]
450
+ if options[:try_without_underscore]
451
+ paths << path_with_ext.sub(relative_path, relative_path.sub(/^_/, '').sub(/\/_/, '/'))
452
+ end
453
+ paths
480
454
  end
481
455
 
482
- if !found_path && options[:try_without_underscore] &&
483
- path_no_underscore = path_with_ext.
484
- sub(relative_path, relative_path.sub(/^_/, '').
485
- sub(/\/_/, '/'))
486
- found_path = Dir[path_no_underscore].find do |path|
456
+ found_path = nil
457
+ search_paths.each do |path_with_ext|
458
+ found_path = Dir[path_with_ext].find do |path|
487
459
  ::Tilt[path]
488
460
  end
461
+ break if found_path
489
462
  end
490
463
 
491
464
  # If we found one, return it and the found engine
492
- if found_path || files.exists?(on_disk_path)
493
- engine = found_path ? File.extname(found_path)[1..-1].to_sym : nil
494
- [ found_path || on_disk_path, engine ]
465
+ if found_path
466
+ found_path
467
+ elsif File.exists?(on_disk_path)
468
+ on_disk_path
495
469
  else
496
470
  false
497
471
  end