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
@@ -3,8 +3,10 @@ require "thor/group"
3
3
  require 'rack/test'
4
4
  require 'find'
5
5
 
6
- SHARED_SERVER = Middleman.server
7
- SHARED_SERVER.set :environment, :build
6
+ SHARED_SERVER_INST = Middleman.server.inst do
7
+ set :environment, :build
8
+ end
9
+ SHARED_SERVER = SHARED_SERVER_INST.class
8
10
 
9
11
  module Middleman
10
12
  module ThorActions
@@ -12,73 +14,21 @@ module Middleman
12
14
  config = args.last.is_a?(Hash) ? args.pop : {}
13
15
  destination = args.first || source
14
16
 
15
- # source = File.expand_path(find_in_source_paths(source.to_s))
16
- # context = instance_eval('binding')
17
+ request_path = destination.sub(/^#{SHARED_SERVER_INST.build_dir}/, "")
17
18
 
18
- request_path = destination.sub(/^#{SHARED_SERVER.build_dir}/, "")
19
-
20
- begin
21
- destination, request_path = SHARED_SERVER.reroute_builder(destination, request_path)
19
+ # begin
20
+ destination, request_path = SHARED_SERVER_INST.reroute_builder(destination, request_path)
22
21
 
23
22
  request_path.gsub!(/\s/, "%20")
24
23
  response = Middleman::Builder.shared_rack.get(request_path)
25
-
26
- dequeue_file_from destination if cleaning?
27
24
 
28
25
  create_file destination, nil, config do
29
26
  response.body
30
27
  end if response.status == 200
31
- rescue
32
- end
33
- end
34
-
35
-
36
- def clean!(destination)
37
- return unless cleaning?
38
- queue_current_paths_from destination
39
- add_clean_up_callback
40
- end
41
-
42
- def cleaning?
43
- options.has_key?("clean") && options["clean"]
44
- end
45
-
46
- def add_clean_up_callback
47
- clean_up_callback = lambda do
48
- files = @cleaning_queue.select { |q| File.file? q }
49
- directories = @cleaning_queue.select { |q| File.directory? q }
50
-
51
- files.each { |f| remove_file f, :force => true }
52
-
53
- directories = directories.sort_by {|d| d.length }.reverse!
54
-
55
- directories.each do |d|
56
- remove_file d, :force => true if directory_empty? d
57
- end
58
- end
59
- self.class.after_run :clean_up_callback do
60
- clean_up_callback.call
61
- end
62
- end
63
-
64
- def directory_empty?(directory)
65
- Dir["#{directory}/*"].empty?
28
+ # rescue
29
+ # say_status :error, destination, :red
30
+ # end
66
31
  end
67
-
68
- def queue_current_paths_from(destination)
69
- @cleaning_queue = []
70
- Find.find(destination) do |path|
71
- next if path.match(/\/\./)
72
- unless path == destination
73
- @cleaning_queue << path.sub(destination, destination[/([^\/]+?)$/])
74
- end
75
- end
76
- end
77
-
78
- def dequeue_file_from(destination)
79
- @cleaning_queue.delete_if {|q| q == destination }
80
- end
81
-
82
32
  end
83
33
 
84
34
  class Builder < Thor::Group
@@ -87,7 +37,7 @@ module Middleman
87
37
 
88
38
  def self.shared_rack
89
39
  @shared_rack ||= begin
90
- mock = ::Rack::MockSession.new(SHARED_SERVER)
40
+ mock = ::Rack::MockSession.new(SHARED_SERVER.to_rack_app)
91
41
  sess = ::Rack::Test::Session.new(mock)
92
42
  response = sess.get("__middleman__")
93
43
  sess
@@ -101,155 +51,121 @@ module Middleman
101
51
  super
102
52
 
103
53
  if options.has_key?("relative") && options["relative"]
104
- SHARED_SERVER.activate :relative_assets
54
+ SHARED_SERVER_INST.activate :relative_assets
105
55
  end
106
56
  end
107
57
 
108
58
  def source_paths
109
59
  @source_paths ||= [
110
- SHARED_SERVER.root
60
+ SHARED_SERVER_INST.root
111
61
  ]
112
62
  end
113
63
 
114
64
  def build_all_files
115
65
  self.class.shared_rack
116
66
 
117
- if options.has_key?("glob")
118
- action GlobAction.new(self, SHARED_SERVER.views, SHARED_SERVER.build_dir, { :force => true, :glob => options["glob"] })
119
- else
120
- action DirectoryAction.new(self, SHARED_SERVER.views, SHARED_SERVER.build_dir, { :force => true })
67
+ opts = { }
68
+ opts[:glob] = options["glob"] if options.has_key?("glob")
69
+ opts[:clean] = options["clean"] if options.has_key?("clean")
121
70
 
122
- SHARED_SERVER.proxied_paths.each do |url, proxy|
123
- tilt_template(url.gsub(/^\//, "#{SHARED_SERVER.build_dir}/"), { :force => true })
124
- end
125
- end
126
- end
127
-
128
- @@hooks = {}
129
- def self.after_run(name, &block)
130
- @@hooks[name] = block
131
- end
132
-
133
- def run_hooks
134
- return if options.has_key?("glob")
135
-
136
- @@hooks.each do |name, proc|
137
- instance_eval(&proc)
138
- end
71
+ action GlobAction.new(self, SHARED_SERVER_INST, opts)
139
72
 
140
- SHARED_SERVER.after_build_callbacks.each do |proc|
141
- instance_eval(&proc)
142
- end
73
+ SHARED_SERVER_INST.run_hook :after_build, self
143
74
  end
144
75
  end
145
76
 
146
- class BaseAction < ::Thor::Actions::EmptyDirectory
77
+ class GlobAction < ::Thor::Actions::EmptyDirectory
147
78
  attr_reader :source
148
79
 
149
- def initialize(base, source, destination=nil, config={}, &block)
80
+ def initialize(base, app, config={}, &block)
81
+ @app = app
82
+ source = @app.views
83
+ @destination = @app.build_dir
84
+
150
85
  @source = File.expand_path(base.find_in_source_paths(source.to_s))
151
- @block = block
152
- super(base, destination, { :recursive => true }.merge(config))
86
+
87
+ super(base, destination, config)
153
88
  end
154
89
 
155
90
  def invoke!
156
- base.clean! destination
91
+ queue_current_paths if cleaning?
157
92
  execute!
93
+ clean! if cleaning?
158
94
  end
159
95
 
160
96
  def revoke!
161
97
  execute!
162
98
  end
163
-
99
+
164
100
  protected
165
- def handle_path(file_source)
166
- # Skip partials prefixed with an underscore while still handling files prefixed with 2 consecutive underscores
167
- return unless file_source.gsub(SHARED_SERVER.root, '').split('/').select { |p| p[/^_[^_]/] }.empty?
168
-
169
- file_extension = File.extname(file_source)
170
- file_destination = File.join(given_destination, file_source.gsub(source, '.'))
171
- file_destination.gsub!('/./', '/')
172
-
173
- handled_by_tilt = ::Tilt.mappings.has_key?(file_extension.gsub(/^\./, ""))
174
- if handled_by_tilt
175
- file_destination.gsub!(file_extension, "")
176
- end
177
-
178
- destination = base.tilt_template(file_source, file_destination, config, &@block)
179
- end
180
- end
181
101
 
182
- class GlobAction < BaseAction
102
+ def clean!
103
+ files = @cleaning_queue.select { |q| File.file? q }
104
+ directories = @cleaning_queue.select { |q| File.directory? q }
183
105
 
184
- protected
185
- def execute!
186
- Dir[File.join(source, @config[:glob])].each do |path|
187
- file_name = path.gsub(SHARED_SERVER.views + "/", "")
188
- if file_name == "layouts"
189
- false
190
- elsif file_name.include?("layout.") && file_name.split(".").length == 2
191
- false
192
- else
193
- next if File.directory?(path)
106
+ files.each do |f|
107
+ base.remove_file f, :force => true
108
+ end
194
109
 
195
- handle_path(path)
110
+ directories = directories.sort_by {|d| d.length }.reverse!
196
111
 
197
- true
198
- end
112
+ directories.each do |d|
113
+ base.remove_file d, :force => true if directory_empty? d
199
114
  end
200
115
  end
201
- end
202
116
 
203
- class DirectoryAction < BaseAction
204
- def invoke!
205
- base.empty_directory given_destination, config
206
- super
117
+ def cleaning?
118
+ @config.has_key?(:clean) && @config[:clean]
119
+ end
120
+
121
+ def directory_empty?(directory)
122
+ Dir["#{directory}/*"].empty?
123
+ end
124
+
125
+ def queue_current_paths
126
+ @cleaning_queue = []
127
+ Find.find(@destination) do |path|
128
+ next if path.match(/\/\./)
129
+ unless path == destination
130
+ @cleaning_queue << path.sub(@destination, destination[/([^\/]+?)$/])
131
+ end
132
+ end
207
133
  end
208
134
 
209
- protected
210
- def handle_directory(lookup, &block)
211
- lookup = File.join(lookup, '*')
135
+ def execute!
136
+ sort_order = %w(.png .jpeg .jpg .gif .bmp .ico .woff .otf .ttf .eot .js .css)
212
137
 
213
- results = Dir[lookup].sort do |a, b|
214
- simple_a = a.gsub(SHARED_SERVER.root + "/", '').gsub(SHARED_SERVER.views + "/", '')
215
- simple_b = b.gsub(SHARED_SERVER.root + "/", '').gsub(SHARED_SERVER.views + "/", '')
138
+ paths = @app.sitemap.all_paths.sort do |a, b|
139
+ a_ext = File.extname(a)
140
+ b_ext = File.extname(b)
216
141
 
217
- a_dir = simple_a.split("/").first
218
- b_dir = simple_b.split("/").first
142
+ a_idx = sort_order.index(a_ext) || 100
143
+ b_idx = sort_order.index(b_ext) || 100
219
144
 
220
- if a_dir == SHARED_SERVER.images_dir
221
- -1
222
- elsif b_dir == SHARED_SERVER.images_dir
223
- 1
224
- else
225
- 0
226
- end
145
+ a_idx <=> b_idx
227
146
  end
228
147
 
229
- results = results.select(&block) if block_given?
230
-
231
- results.each do |file_source|
232
- if File.directory?(file_source)
233
- handle_directory(file_source)
148
+ paths.each do |path|
149
+ file_source = path
150
+ file_destination = File.join(given_destination, file_source.gsub(source, '.'))
151
+ file_destination.gsub!('/./', '/')
152
+
153
+ if @app.sitemap.generic_path?(file_source)
154
+ # no-op
155
+ elsif @app.sitemap.proxied_path?(file_source)
156
+ file_source = @app.sitemap.path_target(file_source)
157
+ elsif @app.sitemap.ignored_path?(file_source)
234
158
  next
235
159
  end
236
160
 
237
- handle_path(file_source)
238
- end
239
- end
240
-
241
- def execute!
242
- handle_directory(source) do |path|
243
- file_name = path.gsub(SHARED_SERVER.views + "/", "")
244
- if file_name == "layouts"
245
- false
246
- elsif file_name.include?("layout.") && file_name.split(".").length == 2
247
- false
248
- else
249
- true
161
+ @cleaning_queue.delete(file_destination) if cleaning?
162
+
163
+ if @config[:glob]
164
+ next unless File.fnmatch(@config[:glob], file_source)
250
165
  end
166
+
167
+ base.tilt_template(file_source, file_destination, { :force => true })
251
168
  end
252
169
  end
253
-
254
170
  end
255
171
  end
data/lib/middleman/cli.rb CHANGED
@@ -6,20 +6,38 @@ module Middleman
6
6
  check_unknown_options!
7
7
  default_task :server
8
8
 
9
- class_option "help", :type => :boolean, :default => false, :aliases => "-h"
9
+ class_option "help",
10
+ :type => :boolean,
11
+ :default => false,
12
+ :aliases => "-h"
10
13
  def initialize(*)
11
14
  super
12
15
  help_check if options[:help]
13
16
  end
14
17
 
15
- desc "init NAME", "Create new Middleman project directory NAME"
18
+ desc "init NAME [options]", "Create new project NAME"
16
19
  available_templates = Middleman::Templates.registered_names.join(", ")
17
- method_option "template", :aliases => "-T", :default => "default", :desc => "Optionally use a pre-defined project template: #{available_templates}"
18
- method_option "css_dir", :default => "stylesheets", :desc => 'The path to the css files'
19
- method_option "js_dir", :default => "javascripts", :desc => 'The path to the javascript files'
20
- method_option "images_dir", :default => "images", :desc => 'The path to the image files'
21
- method_option "rack", :type => :boolean, :default => false, :desc => 'Include a config.ru file'
22
- method_option "bundler", :type => :boolean, :default => false, :desc => 'Create a Gemfile and use Bundler to manage gems'
20
+ method_option "template",
21
+ :aliases => "-T",
22
+ :default => "default",
23
+ :desc => "Use a project template: #{available_templates}"
24
+ method_option "css_dir",
25
+ :default => "stylesheets",
26
+ :desc => 'The path to the css files'
27
+ method_option "js_dir",
28
+ :default => "javascripts",
29
+ :desc => 'The path to the javascript files'
30
+ method_option "images_dir",
31
+ :default => "images",
32
+ :desc => 'The path to the image files'
33
+ method_option "rack",
34
+ :type => :boolean,
35
+ :default => false,
36
+ :desc => 'Include a config.ru file'
37
+ method_option "bundler",
38
+ :type => :boolean,
39
+ :default => false,
40
+ :desc => 'Create a Gemfile and use Bundler to manage gems'
23
41
  def init(name)
24
42
  key = options[:template].to_sym
25
43
  unless Middleman::Templates.registered_templates.has_key?(key)
@@ -30,42 +48,54 @@ module Middleman
30
48
  thor_group.new([name], options).invoke_all
31
49
  end
32
50
 
33
- desc "server [-p 4567] [-e development]", "Starts the Middleman preview server"
34
- method_option "environment", :aliases => "-e", :default => ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development', :desc => "The environment Middleman will run under"
35
- method_option "port", :aliases => "-p", :default => "4567", :desc => "The port Middleman will listen on"
36
-
37
- method_option "disable-watcher", :default => false, :type => :boolean, :desc => "Don't use config.rb watcher (also disables livereload)"
38
- method_option "livereload", :default => false, :type => :boolean, :desc => "Whether to enable Livereload or not"
39
- method_option "livereload-port", :default => "35729", :desc => "The port Livereload will listen on"
51
+ desc "server [options]", "Start the preview server"
52
+ method_option "environment",
53
+ :aliases => "-e",
54
+ :default => ENV['MM_ENV'] || ENV['RACK_ENV'] || 'development',
55
+ :desc => "The environment Middleman will run under"
56
+ method_option "port",
57
+ :aliases => "-p",
58
+ :default => "4567",
59
+ :desc => "The port Middleman will listen on"
60
+ method_option "debug",
61
+ :type => :boolean,
62
+ :default => false,
63
+ :desc => 'Print debug messages'
40
64
  def server
41
65
  v1_check
42
66
 
43
- if options["livereload"]
44
- livereload_options = {:port => options["livereload-port"]}
45
- end
46
-
47
67
  params = {
48
- :port => options[:port],
49
- :environment => options[:environment]
68
+ :port => options["port"],
69
+ :environment => options["environment"],
70
+ :debug => options["debug"]
50
71
  }
51
72
 
52
- if options["disable-watcher"]
53
- Middleman.start_server(params)
54
- else
55
- Middleman::Guard.start(params, livereload_options)
56
- end
73
+ puts "== The Middleman is loading"
74
+ Middleman::Guard.start(params)
57
75
  end
58
76
 
59
77
  desc "build", "Builds the static site for deployment"
60
- method_option :relative, :type => :boolean, :aliases => "-r", :default => false, :desc => 'Override the config.rb file and force relative urls'
61
- method_option :clean, :type => :boolean, :aliases => "-c", :default => false, :desc => 'Builds a clean project removing any orpahand files or directories'
62
- method_option :glob, :type => :string, :aliases => "-g", :default => nil, :desc => 'Build a subset of the project'
78
+ method_option :relative,
79
+ :type => :boolean,
80
+ :aliases => "-r",
81
+ :default => false,
82
+ :desc => 'Force relative urls'
83
+ method_option :clean,
84
+ :type => :boolean,
85
+ :aliases => "-c",
86
+ :default => false,
87
+ :desc => 'Removes orpahand files or directories from build'
88
+ method_option :glob,
89
+ :type => :string,
90
+ :aliases => "-g",
91
+ :default => nil,
92
+ :desc => 'Build a subset of the project'
63
93
  def build
64
94
  v1_check
65
95
  thor_group = Middleman::Builder.new([], options).invoke_all
66
96
  end
67
97
 
68
- desc "migrate", "Migrates an older Middleman project to the 2.0 structure"
98
+ desc "migrate", "Migrates an older project to the 2.0 structure"
69
99
  def migrate
70
100
  return if File.exists?("source")
71
101
  `mv public source`
@@ -73,7 +103,7 @@ module Middleman
73
103
  `rm -rf views`
74
104
  end
75
105
 
76
- desc "version", "Show Middleman version"
106
+ desc "version", "Show version"
77
107
  def version
78
108
  require 'middleman/version'
79
109
  say "Middleman #{Middleman::VERSION}"
@@ -92,6 +122,5 @@ module Middleman
92
122
  help self.class.send(:retrieve_task_name, ARGV.dup)
93
123
  exit 0
94
124
  end
95
-
96
125
  end
97
126
  end