middleman-core 3.2.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (273) hide show
  1. checksums.yaml +4 -4
  2. data/features/cli_init.feature +18 -8
  3. data/features/helpers_select_tag.feature +1 -1
  4. data/features/layouts_dir.feature +8 -0
  5. data/features/markdown_redcarpet.feature +2 -2
  6. data/fixtures/asciidoc-app/source/layouts/default.erb +0 -1
  7. data/fixtures/capture-html-app/source/capture_html_haml.html.haml +1 -1
  8. data/fixtures/content-for-app/source/content_for_haml.html.haml +1 -1
  9. data/fixtures/frontmatter-settings-app/source/layouts/override.erb +1 -2
  10. data/fixtures/frontmatter-settings-neighbor-app/source/layouts/override.erb +1 -2
  11. data/fixtures/layouts-dir-app/source/ambiguous.html.erb +5 -0
  12. data/fixtures/layouts-dir-app/source/layouts/other.erb +3 -0
  13. data/fixtures/layouts-dir-app/source/other.erb +3 -0
  14. data/fixtures/link-to-app/source/link_to_haml.html.haml +1 -1
  15. data/fixtures/link-to-app/source/link_to_slim.html.slim +1 -1
  16. data/fixtures/nested-layout-app/source/layouts/inner_haml.haml +1 -1
  17. data/fixtures/nested-layout-app/source/layouts/inner_slim.slim +1 -1
  18. data/fixtures/nested-layout-app/source/layouts/outer_haml.haml +1 -1
  19. data/fixtures/nested-layout-app/source/layouts/outer_slim.slim +1 -1
  20. data/lib/middleman-core/application.rb +12 -3
  21. data/lib/middleman-core/cli/build.rb +5 -3
  22. data/lib/middleman-core/cli/console.rb +1 -1
  23. data/lib/middleman-core/cli/init.rb +1 -1
  24. data/lib/middleman-core/core_extensions.rb +0 -1
  25. data/lib/middleman-core/core_extensions/file_watcher.rb +11 -11
  26. data/lib/middleman-core/core_extensions/rendering.rb +40 -66
  27. data/lib/middleman-core/extension.rb +167 -0
  28. data/lib/middleman-core/extensions.rb +2 -151
  29. data/lib/middleman-core/logger.rb +2 -2
  30. data/lib/middleman-core/meta_pages/assets/config.css +13 -0
  31. data/lib/middleman-core/meta_pages/assets/meta.css +19 -3
  32. data/lib/middleman-core/meta_pages/assets/sitemap.css +18 -1
  33. data/lib/middleman-core/meta_pages/config_setting.rb +7 -9
  34. data/lib/middleman-core/meta_pages/sitemap_resource.rb +24 -15
  35. data/lib/middleman-core/meta_pages/sitemap_tree.rb +5 -1
  36. data/lib/middleman-core/meta_pages/templates/config.html.erb +2 -2
  37. data/lib/middleman-core/meta_pages/templates/index.html.erb +18 -8
  38. data/lib/middleman-core/meta_pages/templates/sitemap.html.erb +4 -5
  39. data/lib/middleman-core/preview_server.rb +6 -3
  40. data/lib/middleman-core/renderers/erb.rb +12 -14
  41. data/lib/middleman-core/renderers/haml.rb +10 -0
  42. data/lib/middleman-core/renderers/markdown.rb +5 -1
  43. data/lib/middleman-core/renderers/sass.rb +0 -4
  44. data/lib/middleman-core/renderers/slim.rb +16 -3
  45. data/lib/middleman-core/sitemap/resource.rb +1 -1
  46. data/lib/middleman-core/step_definitions.rb +2 -1
  47. data/lib/middleman-core/templates.rb +3 -1
  48. data/lib/middleman-core/templates/shared/Gemfile.tt +4 -1
  49. data/lib/middleman-core/templates/shared/config.tt +3 -1
  50. data/lib/middleman-core/templates/shared/gitignore +2 -1
  51. data/lib/middleman-core/util.rb +22 -16
  52. data/lib/middleman-core/version.rb +1 -1
  53. data/lib/middleman-more/core_extensions/compass.rb +3 -3
  54. data/lib/middleman-more/core_extensions/default_helpers.rb +18 -15
  55. data/lib/middleman-more/extensions/asset_hash.rb +1 -0
  56. data/middleman-core.gemspec +9 -6
  57. metadata +69 -227
  58. data/features/sass_cache_path.feature +0 -22
  59. data/fixtures/sass-cache-path-custom-app/config.rb +0 -3
  60. data/fixtures/sass-cache-path-custom-app/source/stylesheets/plain.css.sass +0 -4
  61. data/fixtures/sass-cache-path-default-app/config.rb +0 -3
  62. data/fixtures/sass-cache-path-default-app/source/stylesheets/plain.css.sass +0 -4
  63. data/lib/vendored-middleman-deps/hooks-0.2.0/CHANGES.textile +0 -9
  64. data/lib/vendored-middleman-deps/hooks-0.2.0/Gemfile +0 -3
  65. data/lib/vendored-middleman-deps/hooks-0.2.0/README.rdoc +0 -107
  66. data/lib/vendored-middleman-deps/hooks-0.2.0/Rakefile +0 -12
  67. data/lib/vendored-middleman-deps/hooks-0.2.0/hooks.gemspec +0 -22
  68. data/lib/vendored-middleman-deps/hooks-0.2.0/lib/hooks.rb +0 -109
  69. data/lib/vendored-middleman-deps/hooks-0.2.0/lib/hooks/inheritable_attribute.rb +0 -33
  70. data/lib/vendored-middleman-deps/hooks-0.2.0/test/hooks_test.rb +0 -141
  71. data/lib/vendored-middleman-deps/hooks-0.2.0/test/inheritable_attribute_test.rb +0 -55
  72. data/lib/vendored-middleman-deps/hooks-0.2.0/test/test_helper.rb +0 -10
  73. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.document +0 -5
  74. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.gitignore +0 -22
  75. data/lib/vendored-middleman-deps/padrino-core-0.11.4/.yardopts +0 -1
  76. data/lib/vendored-middleman-deps/padrino-core-0.11.4/LICENSE.txt +0 -20
  77. data/lib/vendored-middleman-deps/padrino-core-0.11.4/README.rdoc +0 -294
  78. data/lib/vendored-middleman-deps/padrino-core-0.11.4/Rakefile +0 -5
  79. data/lib/vendored-middleman-deps/padrino-core-0.11.4/bin/padrino +0 -9
  80. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core.rb +0 -200
  81. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application.rb +0 -297
  82. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/flash.rb +0 -229
  83. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering.rb +0 -317
  84. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/erubis.rb +0 -64
  85. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/haml.rb +0 -28
  86. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering/extensions/slim.rb +0 -14
  87. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/routing.rb +0 -1077
  88. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/showexceptions.rb +0 -21
  89. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/caller.rb +0 -53
  90. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/adapter.rb +0 -24
  91. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/base.rb +0 -159
  92. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/console.rb +0 -20
  93. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/rake.rb +0 -47
  94. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/cli/rake_tasks.rb +0 -52
  95. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/command.rb +0 -38
  96. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/images/404.png +0 -0
  97. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/images/500.png +0 -0
  98. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/loader.rb +0 -224
  99. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/cs.yml +0 -33
  100. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/da.yml +0 -33
  101. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/de.yml +0 -33
  102. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/en.yml +0 -33
  103. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/es.yml +0 -33
  104. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/fr.yml +0 -33
  105. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/hu.yml +0 -33
  106. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/it.yml +0 -39
  107. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ja.yml +0 -33
  108. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/lv.yml +0 -33
  109. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/nl.yml +0 -33
  110. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/no.yml +0 -33
  111. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/pl.yml +0 -33
  112. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/pt_br.yml +0 -39
  113. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ro.yml +0 -33
  114. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/ru.yml +0 -34
  115. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/sv.yml +0 -33
  116. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/tr.yml +0 -33
  117. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/uk.yml +0 -33
  118. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/zh_cn.yml +0 -33
  119. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/locale/zh_tw.yml +0 -33
  120. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/logger.rb +0 -438
  121. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/module.rb +0 -58
  122. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/mounter.rb +0 -234
  123. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/reloader.rb +0 -341
  124. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/router.rb +0 -95
  125. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/server.rb +0 -77
  126. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/support_lite.rb +0 -260
  127. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/tasks.rb +0 -21
  128. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/version.rb +0 -20
  129. data/lib/vendored-middleman-deps/padrino-core-0.11.4/padrino-core.gemspec +0 -43
  130. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/Gemfile +0 -4
  131. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/app/app.rb +0 -3
  132. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/app_gem.gemspec +0 -17
  133. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/lib/app_gem.rb +0 -7
  134. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/app_gem/lib/app_gem/version.rb +0 -3
  135. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/.components +0 -6
  136. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/.gitignore +0 -7
  137. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/complex.rb +0 -32
  138. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/apps/simple.rb +0 -33
  139. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/a.rb +0 -9
  140. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/b.rb +0 -4
  141. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/c.rb +0 -1
  142. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/e.rb +0 -13
  143. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/f.rb +0 -2
  144. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/circular/g.rb +0 -2
  145. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/fixtures/dependencies/d.rb +0 -4
  146. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/helper.rb +0 -83
  147. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/mini_shoulda.rb +0 -45
  148. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_application.rb +0 -125
  149. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_core.rb +0 -77
  150. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_csrf_protection.rb +0 -80
  151. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_dependencies.rb +0 -44
  152. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_filters.rb +0 -348
  153. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_flash.rb +0 -168
  154. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_locale.rb +0 -21
  155. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_logger.rb +0 -210
  156. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_mounter.rb +0 -199
  157. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_reloader_complex.rb +0 -75
  158. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_reloader_simple.rb +0 -98
  159. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering.rb +0 -545
  160. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering_extensions.rb +0 -14
  161. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_restful_routing.rb +0 -33
  162. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_router.rb +0 -146
  163. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_routing.rb +0 -1927
  164. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_support_lite.rb +0 -56
  165. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.document +0 -5
  166. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.gitignore +0 -21
  167. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/.yardopts +0 -1
  168. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/LICENSE.txt +0 -20
  169. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/README.rdoc +0 -239
  170. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/Rakefile +0 -5
  171. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers.rb +0 -57
  172. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/asset_tag_helpers.rb +0 -401
  173. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/breadcrumb_helpers.rb +0 -183
  174. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_builder/abstract_form_builder.rb +0 -317
  175. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -40
  176. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/form_helpers.rb +0 -919
  177. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/format_helpers.rb +0 -372
  178. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/cs.yml +0 -103
  179. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/da.yml +0 -91
  180. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/de.yml +0 -81
  181. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/en.yml +0 -103
  182. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/es.yml +0 -103
  183. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/fr.yml +0 -79
  184. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/hu.yml +0 -103
  185. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/it.yml +0 -89
  186. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ja.yml +0 -103
  187. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/lv.yml +0 -103
  188. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/nl.yml +0 -82
  189. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/no.yml +0 -91
  190. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/pl.yml +0 -95
  191. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/pt_br.yml +0 -103
  192. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ro.yml +0 -103
  193. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/ru.yml +0 -103
  194. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/sv.yml +0 -103
  195. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/tr.yml +0 -103
  196. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/uk.yml +0 -103
  197. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/zh_cn.yml +0 -103
  198. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/locale/zh_tw.yml +0 -103
  199. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/number_helpers.rb +0 -283
  200. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers.rb +0 -207
  201. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -96
  202. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/erb_handler.rb +0 -78
  203. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -63
  204. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/output_helpers/slim_handler.rb +0 -78
  205. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/render_helpers.rb +0 -59
  206. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/tag_helpers.rb +0 -292
  207. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/translation_helpers.rb +0 -36
  208. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/padrino-helpers.gemspec +0 -27
  209. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/app.rb +0 -84
  210. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.erb +0 -8
  211. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.haml +0 -5
  212. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.slim +0 -6
  213. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.erb +0 -14
  214. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.haml +0 -12
  215. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/capture_concat.slim +0 -12
  216. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.erb +0 -14
  217. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.haml +0 -12
  218. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_for.slim +0 -12
  219. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.erb +0 -11
  220. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.haml +0 -9
  221. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/content_tag.slim +0 -9
  222. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.erb +0 -5
  223. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.haml +0 -5
  224. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/current_engine.slim +0 -5
  225. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.erb +0 -20
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.haml +0 -15
  227. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/fields_for.slim +0 -15
  228. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.erb +0 -72
  229. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.haml +0 -59
  230. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_for.slim +0 -59
  231. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.erb +0 -95
  232. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.haml +0 -78
  233. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/form_tag.slim +0 -79
  234. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.erb +0 -5
  235. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.haml +0 -4
  236. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/link_to.slim +0 -4
  237. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.erb +0 -3
  238. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.haml +0 -3
  239. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/mail_to.slim +0 -3
  240. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.erb +0 -3
  241. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.haml +0 -3
  242. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  243. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_erb.erb +0 -1
  244. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_haml.haml +0 -1
  245. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  246. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.erb +0 -1
  247. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.haml +0 -1
  248. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  249. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/app.rb +0 -58
  250. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engine.haml +0 -5
  251. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_erb.erb +0 -1
  252. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_haml.haml +0 -1
  253. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/current_engines/_slim.slim +0 -1
  254. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_erb.erb +0 -3
  255. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_haml.haml +0 -2
  256. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/double_capture_slim.slim +0 -2
  257. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/erb/test.erb +0 -1
  258. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/explicit_engine.haml +0 -5
  259. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/haml/test.haml +0 -1
  260. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/_user.haml +0 -7
  261. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/haml_template.haml +0 -1
  262. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/render_app/views/template/some_template.haml +0 -2
  263. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/helper.rb +0 -67
  264. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_asset_tag_helpers.rb +0 -359
  265. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_breadcrumb_helpers.rb +0 -134
  266. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_form_builder.rb +0 -1178
  267. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_form_helpers.rb +0 -1030
  268. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_format_helpers.rb +0 -241
  269. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_locale.rb +0 -20
  270. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_number_helpers.rb +0 -143
  271. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_output_helpers.rb +0 -154
  272. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_render_helpers.rb +0 -94
  273. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_tag_helpers.rb +0 -117
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