middleman 2.0.16.1 → 3.0.0.alpha.2

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 (259) hide show
  1. data/.gitignore +2 -1
  2. data/CHANGELOG +16 -8
  3. data/features/builder.feature +2 -5
  4. data/features/cache_buster.feature +1 -1
  5. data/features/clean_build.feature +0 -1
  6. data/features/coffee-script.feature +3 -3
  7. data/features/custom_layout_engines.feature +10 -0
  8. data/features/directory_index.feature +0 -1
  9. data/features/dynamic_pages.feature +0 -1
  10. data/features/fonts.feature +0 -1
  11. data/features/{padrino_helpers.feature → former_padrino_helpers.feature} +1 -1
  12. data/features/sprockets.feature +34 -5
  13. data/features/sprockets_gems.feature +7 -4
  14. data/features/step_definitions/asset_host_steps.rb +7 -6
  15. data/features/step_definitions/builder_steps.rb +4 -0
  16. data/features/step_definitions/middleman_steps.rb +22 -16
  17. data/features/step_definitions/page_layout_steps.rb +10 -8
  18. data/fixtures/custom-layout-app/config.rb +1 -0
  19. data/fixtures/custom-layout-app/source/index.html.erb +1 -0
  20. data/fixtures/custom-layout-app/source/layout.haml +6 -0
  21. data/fixtures/sprockets-app/config.rb +2 -1
  22. data/fixtures/sprockets-app/source/library/css/bootstrap_include.css.scss +1 -0
  23. data/fixtures/sprockets-app/source/library/css/plain.css +3 -0
  24. data/fixtures/sprockets-app/source/library/css/sprockets_base1.css.scss +1 -0
  25. data/fixtures/sprockets-app/source/library/css/sprockets_base2.css.scss +1 -0
  26. data/fixtures/sprockets-app/source/library/css/sprockets_sub.css.scss +1 -0
  27. data/fixtures/sprockets-app/source/{jquery_include.js → library/js/jquery_include.js} +0 -0
  28. data/fixtures/sprockets-app/source/library/js/plain.js +3 -0
  29. data/fixtures/sprockets-app/source/library/{javascripts → js}/sprockets_base.js +0 -0
  30. data/fixtures/sprockets-app/source/library/{javascripts → js}/sprockets_sub.js +0 -0
  31. data/fixtures/test-app/config.rb +5 -4
  32. data/fixtures/test-app/source/{padrino_test.html.haml → former_padrino_test.html.haml} +0 -0
  33. data/fixtures/test-app/source/stylesheets/sprockets_base1.css.scss +1 -0
  34. data/fixtures/test-app/source/stylesheets/sprockets_base2.css.scss +1 -0
  35. data/fixtures/test-app/source/stylesheets/sprockets_sub.css.scss +1 -0
  36. data/lib/middleman.rb +27 -25
  37. data/lib/middleman/base.rb +408 -166
  38. data/lib/middleman/builder.rb +78 -162
  39. data/lib/middleman/cli.rb +61 -32
  40. data/lib/middleman/core_extensions/assets.rb +4 -44
  41. data/lib/middleman/core_extensions/builder.rb +12 -16
  42. data/lib/middleman/core_extensions/compass.rb +28 -57
  43. data/lib/middleman/core_extensions/data.rb +65 -49
  44. data/lib/middleman/core_extensions/default_helpers.rb +33 -18
  45. data/lib/middleman/core_extensions/features.rb +48 -26
  46. data/lib/middleman/core_extensions/file_watcher.rb +66 -0
  47. data/lib/middleman/core_extensions/front_matter.rb +91 -86
  48. data/lib/middleman/core_extensions/rendering.rb +9 -8
  49. data/lib/middleman/core_extensions/routing.rb +19 -53
  50. data/lib/middleman/core_extensions/sitemap.rb +229 -0
  51. data/lib/middleman/core_extensions/sprockets.rb +53 -37
  52. data/lib/middleman/features/asset_host.rb +20 -10
  53. data/lib/middleman/features/automatic_image_sizes.rb +12 -9
  54. data/lib/middleman/features/cache_buster.rb +38 -25
  55. data/lib/middleman/features/directory_indexes.rb +31 -28
  56. data/lib/middleman/features/minify_css.rb +3 -2
  57. data/lib/middleman/features/minify_css/cssmin.rb +55 -0
  58. data/lib/middleman/features/minify_javascript.rb +12 -5
  59. data/lib/middleman/features/relative_assets.rb +28 -25
  60. data/lib/middleman/features/sitemap_tree.rb +34 -0
  61. data/lib/middleman/guard.rb +57 -23
  62. data/lib/middleman/renderers/erb.rb +29 -0
  63. data/lib/middleman/renderers/liquid.rb +3 -12
  64. data/lib/middleman/renderers/markdown.rb +16 -15
  65. data/lib/middleman/renderers/sass.rb +34 -38
  66. data/lib/middleman/vendor/hooks-0.2.0/CHANGES.textile +9 -0
  67. data/lib/middleman/vendor/hooks-0.2.0/Gemfile +3 -0
  68. data/lib/middleman/vendor/hooks-0.2.0/README.rdoc +107 -0
  69. data/lib/middleman/vendor/hooks-0.2.0/Rakefile +12 -0
  70. data/lib/middleman/vendor/hooks-0.2.0/hooks.gemspec +22 -0
  71. data/lib/middleman/vendor/hooks-0.2.0/lib/hooks.rb +109 -0
  72. data/lib/middleman/vendor/hooks-0.2.0/lib/hooks/inheritable_attribute.rb +33 -0
  73. data/lib/middleman/vendor/hooks-0.2.0/test/hooks_test.rb +141 -0
  74. data/lib/middleman/vendor/hooks-0.2.0/test/inheritable_attribute_test.rb +55 -0
  75. data/lib/middleman/vendor/hooks-0.2.0/test/test_helper.rb +10 -0
  76. data/lib/middleman/vendor/padrino-core-0.10.5/.document +5 -0
  77. data/lib/middleman/vendor/padrino-core-0.10.5/.gitignore +22 -0
  78. data/lib/middleman/vendor/padrino-core-0.10.5/.yardopts +1 -0
  79. data/lib/middleman/vendor/padrino-core-0.10.5/LICENSE.txt +20 -0
  80. data/lib/middleman/vendor/padrino-core-0.10.5/README.rdoc +294 -0
  81. data/lib/middleman/vendor/padrino-core-0.10.5/Rakefile +5 -0
  82. data/lib/middleman/vendor/padrino-core-0.10.5/bin/padrino +9 -0
  83. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core.rb +167 -0
  84. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application.rb +270 -0
  85. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/rendering.rb +292 -0
  86. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/routing.rb +934 -0
  87. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/showexceptions.rb +20 -0
  88. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/caller.rb +53 -0
  89. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/adapter.rb +24 -0
  90. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/base.rb +151 -0
  91. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/console.rb +20 -0
  92. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/rake.rb +24 -0
  93. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/rake_tasks.rb +59 -0
  94. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/command.rb +38 -0
  95. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/images/404.png +0 -0
  96. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/images/500.png +0 -0
  97. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/loader.rb +210 -0
  98. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/cs.yml +34 -0
  99. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/da.yml +34 -0
  100. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/de.yml +34 -0
  101. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/en.yml +34 -0
  102. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/es.yml +34 -0
  103. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/fr.yml +34 -0
  104. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/hu.yml +34 -0
  105. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/it.yml +40 -0
  106. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/ja.yml +34 -0
  107. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/lv.yml +34 -0
  108. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/nl.yml +34 -0
  109. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/no.yml +35 -0
  110. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/pl.yml +34 -0
  111. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/pt_br.yml +40 -0
  112. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/ru.yml +35 -0
  113. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/tr.yml +34 -0
  114. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/uk.yml +34 -0
  115. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/zh_cn.yml +34 -0
  116. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/zh_tw.yml +34 -0
  117. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/logger.rb +345 -0
  118. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/mounter.rb +224 -0
  119. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/reloader.rb +254 -0
  120. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/router.rb +98 -0
  121. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/server.rb +79 -0
  122. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/support_lite.rb +199 -0
  123. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/tasks.rb +21 -0
  124. data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/version.rb +20 -0
  125. data/lib/middleman/vendor/padrino-core-0.10.5/padrino-core.gemspec +38 -0
  126. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/.components +6 -0
  127. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/.gitignore +7 -0
  128. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/complex.rb +32 -0
  129. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/simple.rb +33 -0
  130. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/a.rb +9 -0
  131. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/b.rb +4 -0
  132. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/c.rb +1 -0
  133. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/e.rb +13 -0
  134. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/f.rb +2 -0
  135. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/g.rb +2 -0
  136. data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/d.rb +4 -0
  137. data/lib/middleman/vendor/padrino-core-0.10.5/test/helper.rb +81 -0
  138. data/lib/middleman/vendor/padrino-core-0.10.5/test/mini_shoulda.rb +45 -0
  139. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_application.rb +108 -0
  140. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_core.rb +79 -0
  141. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_dependencies.rb +44 -0
  142. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_filters.rb +278 -0
  143. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_locale.rb +21 -0
  144. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_logger.rb +100 -0
  145. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_mounter.rb +177 -0
  146. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_reloader_complex.rb +75 -0
  147. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_reloader_simple.rb +98 -0
  148. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_rendering.rb +461 -0
  149. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_restful_routing.rb +33 -0
  150. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_router.rb +146 -0
  151. data/lib/middleman/vendor/padrino-core-0.10.5/test/test_routing.rb +1673 -0
  152. data/lib/middleman/vendor/padrino-helpers-0.10.5/.document +5 -0
  153. data/lib/middleman/vendor/padrino-helpers-0.10.5/.gitignore +21 -0
  154. data/lib/middleman/vendor/padrino-helpers-0.10.5/.yardopts +1 -0
  155. data/lib/middleman/vendor/padrino-helpers-0.10.5/LICENSE.txt +20 -0
  156. data/lib/middleman/vendor/padrino-helpers-0.10.5/README.rdoc +239 -0
  157. data/lib/middleman/vendor/padrino-helpers-0.10.5/Rakefile +5 -0
  158. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers.rb +58 -0
  159. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/asset_tag_helpers.rb +420 -0
  160. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_builder/abstract_form_builder.rb +220 -0
  161. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_builder/standard_form_builder.rb +43 -0
  162. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_helpers.rb +602 -0
  163. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/format_helpers.rb +381 -0
  164. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/cs.yml +103 -0
  165. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/da.yml +91 -0
  166. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/de.yml +81 -0
  167. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/en.yml +103 -0
  168. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/es.yml +103 -0
  169. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/fr.yml +80 -0
  170. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/hu.yml +103 -0
  171. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/it.yml +89 -0
  172. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/ja.yml +103 -0
  173. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/lv.yml +103 -0
  174. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/nl.yml +82 -0
  175. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/no.yml +91 -0
  176. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/pl.yml +95 -0
  177. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/pt_br.yml +103 -0
  178. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/ru.yml +103 -0
  179. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/tr.yml +103 -0
  180. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/uk.yml +103 -0
  181. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/zh_cn.yml +104 -0
  182. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/zh_tw.yml +103 -0
  183. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/number_helpers.rb +288 -0
  184. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers.rb +175 -0
  185. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/abstract_handler.rb +98 -0
  186. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/erb_handler.rb +79 -0
  187. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/haml_handler.rb +63 -0
  188. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/slim_handler.rb +81 -0
  189. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/render_helpers.rb +60 -0
  190. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/tag_helpers.rb +103 -0
  191. data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/translation_helpers.rb +38 -0
  192. data/lib/middleman/vendor/padrino-helpers-0.10.5/padrino-helpers.gemspec +27 -0
  193. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/app.rb +73 -0
  194. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.erb +14 -0
  195. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.haml +12 -0
  196. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.slim +13 -0
  197. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.erb +14 -0
  198. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.haml +12 -0
  199. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.slim +12 -0
  200. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.erb +11 -0
  201. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.haml +9 -0
  202. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.slim +9 -0
  203. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.erb +5 -0
  204. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.haml +5 -0
  205. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.slim +5 -0
  206. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.erb +20 -0
  207. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.haml +15 -0
  208. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.slim +15 -0
  209. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.erb +56 -0
  210. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.haml +47 -0
  211. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.slim +47 -0
  212. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.erb +56 -0
  213. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.haml +45 -0
  214. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.slim +45 -0
  215. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.erb +5 -0
  216. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.haml +4 -0
  217. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.slim +4 -0
  218. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.erb +3 -0
  219. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.haml +3 -0
  220. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.slim +3 -0
  221. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.erb +3 -0
  222. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.haml +3 -0
  223. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.slim +3 -0
  224. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_erb.erb +1 -0
  225. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_haml.haml +1 -0
  226. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
  227. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.erb +1 -0
  228. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.haml +1 -0
  229. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.slim +1 -0
  230. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/app.rb +50 -0
  231. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engine.haml +5 -0
  232. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_erb.erb +1 -0
  233. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_haml.haml +1 -0
  234. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_slim.slim +1 -0
  235. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/erb/test.erb +1 -0
  236. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/explicit_engine.haml +5 -0
  237. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/haml/test.haml +1 -0
  238. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/_user.haml +7 -0
  239. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/haml_template.haml +1 -0
  240. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/some_template.haml +2 -0
  241. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/helper.rb +66 -0
  242. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_asset_tag_helpers.rb +320 -0
  243. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_form_builder.rb +996 -0
  244. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_form_helpers.rb +645 -0
  245. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_format_helpers.rb +227 -0
  246. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_locale.rb +20 -0
  247. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_number_helpers.rb +136 -0
  248. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_output_helpers.rb +153 -0
  249. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_render_helpers.rb +76 -0
  250. data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_tag_helpers.rb +105 -0
  251. data/lib/middleman/version.rb +1 -1
  252. data/middleman-x86-mingw32.gemspec +16 -33
  253. data/middleman.gemspec +16 -31
  254. metadata +590 -349
  255. data/features/sinatra.feature +0 -6
  256. data/lib/middleman/core_extensions/rack_map.rb +0 -35
  257. data/lib/middleman/renderers/coffee_script.rb +0 -8
  258. data/lib/middleman/renderers/haml.rb +0 -31
  259. data/lib/middleman/renderers/slim.rb +0 -8
@@ -30,16 +30,38 @@
30
30
 
31
31
  module Middleman::CoreExtensions::Features
32
32
 
33
- # The Feature API is itself a Feature. Mind blowing!
34
33
  class << self
35
- def registered(app)
36
- app.set :default_features, []
34
+ def included(app)
35
+ # app.set :default_features, []
36
+ app.define_hook :after_configuration
37
+ app.define_hook :before_configuration
38
+ app.define_hook :build_config
39
+ app.define_hook :development_config
37
40
  app.extend ClassMethods
41
+ app.send :include, InstanceMethods
38
42
  end
39
- alias :included :registered
40
43
  end
41
44
 
42
45
  module ClassMethods
46
+ def configure(env, &block)
47
+ send("#{env}_config", &block)
48
+ end
49
+
50
+ def extensions
51
+ @extensions ||= []
52
+ end
53
+
54
+ def register(*new_extensions)
55
+ @extensions ||= []
56
+ @extensions += new_extensions
57
+ new_extensions.each do |extension|
58
+ extend extension
59
+ extension.registered(self) if extension.respond_to?(:registered)
60
+ end
61
+ end
62
+ end
63
+
64
+ module InstanceMethods
43
65
  # This method is available in the project's `config.rb`.
44
66
  # It takes a underscore-separated symbol, finds the appropriate
45
67
  # feature module and includes it.
@@ -56,47 +78,47 @@ module Middleman::CoreExtensions::Features
56
78
 
57
79
  if feature.is_a? String
58
80
  feature = feature.camelize
59
- feature = Middleman::Features.const_get(feature)
81
+ feature = ::Middleman::Features.const_get(feature)
60
82
  end
61
83
 
62
- $stderr.puts "== Activating: #{feature}" if logging?
63
- register feature
64
- end
65
-
66
- # Add a block/proc to be run after features have been setup
67
- def after_configuration(&block)
68
- @run_after_features ||= []
69
- @run_after_features << block
84
+ puts "== Activating: #{feature}" if logging?
85
+ self.class.register feature
70
86
  end
71
-
72
- def run_after_features
73
- @run_after_features || []
87
+
88
+ def configure(env, &block)
89
+ self.class.configure(env, &block)
74
90
  end
75
91
 
76
92
  # Load features before starting server
77
- def new
93
+ def initialize
94
+ super
95
+
96
+ run_hook :before_configuration
97
+
78
98
  # Check for and evaluate local configuration
79
99
  local_config = File.join(self.root, "config.rb")
80
100
  if File.exists? local_config
81
- $stderr.puts "== Reading: Local config" if logging?
82
- class_eval File.read(local_config)
83
- set :app_file, File.expand_path(local_config)
101
+ puts "== Reading: Local config" if logging?
102
+ instance_eval File.read(local_config)
84
103
  end
85
104
 
105
+ run_hook :build_config if build?
106
+ run_hook :development_config if development?
107
+
108
+ run_hook :after_configuration
109
+
86
110
  # Add in defaults
87
111
  default_features.each do |ext|
88
- activate ext
112
+ # activate ext
89
113
  end
90
114
 
91
- run_after_features.each { |block| class_eval(&block) }
92
-
93
115
  if logging?
94
- extensions.each do |ext|
95
- $stderr.puts "== Extension: #{ext}"
116
+ self.class.extensions.each do |ext|
117
+ puts "== Extension: #{ext}"
96
118
  end
97
119
  end
98
120
 
99
- super
121
+ run_hook :ready
100
122
  end
101
123
  end
102
124
  end
@@ -0,0 +1,66 @@
1
+ require "find"
2
+
3
+ module Middleman::CoreExtensions::FileWatcher
4
+ class << self
5
+ def registered(app)
6
+ app.extend ClassMethods
7
+ app.send :include, InstanceMethods
8
+
9
+ app.before_configuration do
10
+ data_path = File.join(root, data_dir)
11
+ Find.find(data_path) do |path|
12
+ next if File.directory?(path)
13
+ file_did_change(path.sub("#{root}/", ""))
14
+ end if File.exists?(data_path)
15
+ end
16
+
17
+ app.ready do
18
+ Find.find(root) do |path|
19
+ next if File.directory?(path)
20
+ file_did_change(path.sub("#{root}/", ""))
21
+ end
22
+ end
23
+ end
24
+ alias :included :registered
25
+ end
26
+
27
+ module ClassMethods
28
+ def file_changed(matcher=nil, &block)
29
+ @_file_changed ||= []
30
+ @_file_changed << [block, matcher] if block_given?
31
+ @_file_changed
32
+ end
33
+
34
+ def file_deleted(matcher=nil, &block)
35
+ @_file_deleted ||= []
36
+ @_file_deleted << [block, matcher] if block_given?
37
+ @_file_deleted
38
+ end
39
+ end
40
+
41
+ module InstanceMethods
42
+ def file_changed(*args, &block)
43
+ self.class.file_changed(*args, &block)
44
+ end
45
+
46
+ def file_did_change(path)
47
+ file_changed.each do |callback, matcher|
48
+ next if path.match(%r{^#{build_dir}/})
49
+ next if !matcher.nil? && !path.match(matcher)
50
+ instance_exec(path, &callback)
51
+ end
52
+ end
53
+
54
+ def file_deleted(*args)
55
+ self.class.file_deleted(*args)
56
+ end
57
+
58
+ def file_did_delete(path)
59
+ file_deleted.each do |callback, matcher|
60
+ next if path.match(%r{^#{build_dir}/})
61
+ next unless matcher.nil? || path.match(matcher)
62
+ instance_exec(path, &callback)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -4,54 +4,102 @@ require "tilt"
4
4
  module Middleman::CoreExtensions::FrontMatter
5
5
  class << self
6
6
  def registered(app)
7
- app.extend ClassMethods
8
-
9
- ::Tilt::register RDiscountTemplate, 'markdown', 'mkd', 'md'
10
- ::Tilt::register RedcarpetTemplate, 'markdown', 'mkd', 'md'
11
- ::Tilt::register MarukuTemplate, 'markdown', 'mkd', 'md'
12
- ::Tilt::register KramdownTemplate, 'markdown', 'mkd', 'md'
13
- app.set :markdown_engine_prefix, ::Middleman::CoreExtensions::FrontMatter
14
-
15
- ::Tilt::register RedClothTemplate, 'textile'
16
- ::Tilt.prefer(RedClothTemplate)
17
-
18
- ::Tilt::register ERBTemplate, 'erb', 'rhtml'
19
- ::Tilt.prefer(ERBTemplate)
7
+ app.send :include, InstanceMethods
8
+ end
9
+ alias :included :registered
10
+ end
11
+
12
+ module InstanceMethods
13
+ def initialize
14
+ file_changed FrontMatter.matcher do |file|
15
+ frontmatter.touch_file(file)
16
+ end
20
17
 
21
- ::Tilt::register LiquidTemplate, 'liquid'
22
- ::Tilt.prefer(LiquidTemplate)
18
+ file_deleted do |file|
19
+ frontmatter.remove_file(file)
20
+ end
23
21
 
24
- ::Tilt::register SlimTemplate, 'slim'
25
- ::Tilt.prefer(SlimTemplate)
22
+ provides_metadata FrontMatter.matcher do |path|
23
+ relative_path = path.sub(source_dir, "")
24
+
25
+ data = if frontmatter.has_data?(relative_path)
26
+ frontmatter.data(relative_path).first
27
+ else
28
+ {}
29
+ end
30
+
31
+ # Forward remaining data to helpers
32
+ data_content("page", data)
33
+
34
+ %w(layout layout_engine).each do |opt|
35
+ if data.has_key?(opt)
36
+ data[opt.to_sym] = data.delete(opt)
37
+ end
38
+ end
39
+
40
+ @options.merge!(data)
41
+ end
42
+
43
+ super
44
+ end
45
+
46
+ def frontmatter
47
+ @frontmatter ||= FrontMatter.new(self)
48
+ end
49
+ end
50
+
51
+ class FrontMatter
52
+ def self.matcher
53
+ %r{source/.*\.html}
54
+ end
55
+
56
+ def initialize(app)
57
+ @app = app
58
+ @source = File.expand_path(@app.views, @app.root)
59
+ @local_data = {}
60
+ end
61
+
62
+ def has_data?(path)
63
+ @local_data.has_key?(path.to_s)
64
+ end
65
+
66
+ def touch_file(file)
67
+ extension = File.extname(file).sub(/\./, "")
68
+ return unless ::Tilt.mappings.has_key?(extension)
26
69
 
27
- ::Tilt::register HamlTemplate, 'haml'
28
- ::Tilt.prefer(HamlTemplate)
70
+ file = File.expand_path(file, @app.root)
71
+ content = File.read(file)
29
72
 
30
- app.after_configuration do
31
- app.before_processing(:front_matter, 0) do |result|
32
- if result && Tilt.mappings.has_key?(result[1].to_s)
33
- extensionless_path, template_engine = result
34
- full_file_path = "#{extensionless_path}.#{template_engine}"
35
- system_path = File.join(settings.views, full_file_path)
36
- data, content = app.parse_front_matter(File.read(system_path))
37
-
38
- request['custom_options'] = {}
39
- %w(layout layout_engine).each do |opt|
40
- if data.has_key?(opt)
41
- request['custom_options'][opt.to_sym] = data.delete(opt)
42
- end
43
- end
44
-
45
- # Forward remaining data to helpers
46
- app.data_content("page", data)
47
- end
73
+ # @app.logger.debug :frontmatter_update, Time.now, file if @app.logging?
74
+ result = parse_front_matter(content)
48
75
 
49
- true
50
- end
76
+ if result
77
+ file = file.sub(@app.source_dir, "")
78
+ @local_data[file] = result
79
+ path = File.join(@app.source_dir, file)
80
+ @app.raw_templates_cache[path] = result[1]
81
+ end
82
+ end
83
+
84
+ def remove_file(file)
85
+ file = File.expand_path(file, @app.root)
86
+ file = file.sub(@app.source_dir, "")
87
+ # @app.logger.debug :frontmatter_remove, Time.now, file if @app.logging?
88
+
89
+ if @local_data.has_key?(file)
90
+ @local_data.delete(file)
91
+ end
92
+ end
93
+
94
+ def data(path)
95
+ if @local_data.has_key?(path.to_s)
96
+ @local_data[path.to_s]
97
+ else
98
+ nil
51
99
  end
52
100
  end
53
- alias :included :registered
54
101
 
102
+ private
55
103
  def parse_front_matter(content)
56
104
  yaml_regex = /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
57
105
  if content =~ yaml_regex
@@ -59,58 +107,15 @@ module Middleman::CoreExtensions::FrontMatter
59
107
  data = YAML.load($1)
60
108
  rescue => e
61
109
  puts "YAML Exception: #{e.message}"
110
+ return false
62
111
  end
63
112
 
64
113
  content = content.split(yaml_regex).last
114
+ else
115
+ return false
65
116
  end
66
117
 
67
- data ||= {}
68
118
  [data, content]
69
119
  end
70
120
  end
71
-
72
- module ClassMethods
73
- def parse_front_matter(content)
74
- Middleman::CoreExtensions::FrontMatter.parse_front_matter(content)
75
- end
76
- end
77
-
78
- module YamlAware
79
- def prepare
80
- @frontmatter, @data = Middleman::CoreExtensions::FrontMatter.parse_front_matter(@data)
81
- super
82
- end
83
- end
84
-
85
- class RDiscountTemplate < ::Tilt::RDiscountTemplate
86
- include Middleman::CoreExtensions::FrontMatter::YamlAware
87
- end
88
- class RedcarpetTemplate < ::Tilt::RedcarpetTemplate
89
- include Middleman::CoreExtensions::FrontMatter::YamlAware
90
- end
91
- class MarukuTemplate < ::Tilt::MarukuTemplate
92
- include Middleman::CoreExtensions::FrontMatter::YamlAware
93
- end
94
- class RedClothTemplate < ::Tilt::RedClothTemplate
95
- include Middleman::CoreExtensions::FrontMatter::YamlAware
96
- end
97
- class KramdownTemplate < ::Tilt::KramdownTemplate
98
- include Middleman::CoreExtensions::FrontMatter::YamlAware
99
- end
100
-
101
- class ERBTemplate < ::Tilt::ERBTemplate
102
- include Middleman::CoreExtensions::FrontMatter::YamlAware
103
- end
104
-
105
- class LiquidTemplate < ::Tilt::LiquidTemplate
106
- include Middleman::CoreExtensions::FrontMatter::YamlAware
107
- end
108
-
109
- class HamlTemplate < ::Tilt::HamlTemplate
110
- include Middleman::CoreExtensions::FrontMatter::YamlAware
111
- end
112
-
113
- class SlimTemplate < ::Slim::Template
114
- include Middleman::CoreExtensions::FrontMatter::YamlAware
115
- end
116
121
  end
@@ -1,17 +1,18 @@
1
- require "padrino-core/application/rendering"
2
-
3
1
  module Middleman::CoreExtensions::Rendering
4
2
  class << self
5
3
  def registered(app)
6
- # Tilt-aware renderer
7
- app.register Padrino::Rendering
8
-
4
+ # Autoload
5
+ require "coffee_script"
6
+
7
+ begin
8
+ require "slim"
9
+ rescue LoadError
10
+ end
11
+
9
12
  # Activate custom renderers
10
- app.register Middleman::Renderers::Slim
11
- app.register Middleman::Renderers::Haml
12
13
  app.register Middleman::Renderers::Sass
13
14
  app.register Middleman::Renderers::Markdown
14
- app.register Middleman::Renderers::CoffeeScript
15
+ app.register Middleman::Renderers::ERb
15
16
  app.register Middleman::Renderers::Liquid
16
17
  end
17
18
  alias :included :registered
@@ -1,87 +1,53 @@
1
1
  module Middleman::CoreExtensions::Routing
2
2
  class << self
3
3
  def registered(app)
4
- app.extend ClassMethods
5
-
6
- app.set :proxied_paths, {}
7
- app.set :excluded_paths, []
8
-
9
- app.build_reroute do |destination, request_path|
10
- throw if app.settings.excluded_paths.include?(request_path)
11
- end
4
+ app.send :include, InstanceMethods
12
5
  end
13
6
  alias :included :registered
14
7
  end
15
8
 
16
- module ClassMethods
17
- def path_to_index(path)
18
- parts = path ? path.split('/') : []
19
- if parts.last.nil? || parts.last.split('.').length == 1
20
- path = File.join(path, settings.index_file)
21
- end
22
- path.gsub(%r{^/}, '')
23
- end
24
-
9
+ module InstanceMethods
25
10
  # Takes a block which allows many pages to have the same layout
26
11
  # with_layout :admin do
27
12
  # page "/admin/"
28
13
  # page "/admin/login.html"
29
14
  # end
30
15
  def with_layout(layout_name, &block)
31
- old_layout = settings.layout
16
+ old_layout = layout
32
17
 
33
18
  set :layout, layout_name
34
- class_eval(&block) if block_given?
19
+ instance_exec(&block) if block_given?
35
20
  ensure
36
21
  set :layout, old_layout
37
22
  end
38
-
39
- def paths_for_url(url)
40
- url = url.gsub(%r{\/#{settings.index_file}$}, "")
41
- url = url.gsub(%r{(\/)$}, "") if url.length > 1
42
- url = "/" if url.length == 0
43
-
44
- paths = [url]
45
- paths << "#{url}/" if url.length > 1 && url.split("/").last.split('.').length <= 1
46
- paths << "/#{path_to_index(url)}"
47
- paths
48
- end
49
-
50
- # Keep a path from building
51
- def ignore(path)
52
- settings.excluded_paths << paths_for_url(path)
53
- settings.excluded_paths.flatten!
54
- settings.excluded_paths.uniq!
55
- end
56
23
 
57
24
  # The page method allows the layout to be set on a specific path
58
25
  # page "/about.html", :layout => false
59
26
  # page "/", :layout => :homepage_layout
60
27
  def page(url, options={}, &block)
61
- has_block = block_given?
62
- options[:layout] = settings.layout if options[:layout].nil?
28
+ options[:layout] = layout if options[:layout].nil?
63
29
 
30
+ url = full_path(url)
31
+
64
32
  if options.has_key?(:proxy)
65
- settings.proxied_paths[url] = options[:proxy]
33
+ reroute(url, options[:proxy])
34
+
66
35
  if options.has_key?(:ignore) && options[:ignore]
67
- settings.ignore(options[:proxy])
68
- end
36
+ ignore(options[:proxy])
37
+ options.delete(:ignore)
38
+ end
39
+
40
+ options.delete(:proxy)
69
41
  else
70
42
  if options.has_key?(:ignore) && options[:ignore]
71
- settings.ignore(url)
43
+ ignore(url)
44
+ options.delete(:ignore)
72
45
  end
73
46
  end
74
47
 
75
- paths_for_url(url).each do |p|
76
- get(p) do
77
- if settings.proxied_paths.has_key?(url)
78
- request["is_proxy"] = true
79
- request.path_info = settings.proxied_paths[url]
80
- end
81
-
82
- instance_eval(&block) if has_block
83
- process_request(options)
84
- end
48
+ a_block = block_given? ? block : nil
49
+ if a_block || !options.empty?
50
+ sitemap.set_context(url, options, a_block)
85
51
  end
86
52
  end
87
53
  end