middleman 2.0.16.1 → 3.0.0.alpha.2

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,229 @@
1
+ require 'find'
2
+
3
+ module Middleman::CoreExtensions::Sitemap
4
+ class << self
5
+ def registered(app)
6
+ app.send :include, InstanceMethods
7
+ end
8
+ alias :included :registered
9
+ end
10
+
11
+ module InstanceMethods
12
+ def initialize
13
+ file_changed do |file|
14
+ sitemap.touch_file(file)
15
+ end
16
+
17
+ file_deleted do |file|
18
+ sitemap.remove_file(file)
19
+ end
20
+
21
+ super
22
+ end
23
+
24
+ def sitemap
25
+ @sitemap ||= SitemapStore.new(self)
26
+ end
27
+
28
+ # Keep a path from building
29
+ def ignore(path)
30
+ sitemap.ignore_path(path)
31
+ end
32
+
33
+ def reroute(url, target)
34
+ sitemap.set_path(url, target)
35
+ end
36
+
37
+ def provides_metadata(matcher=nil, &block)
38
+ @_provides_metadata ||= []
39
+ @_provides_metadata << [block, matcher] if block_given?
40
+ @_provides_metadata
41
+ end
42
+ end
43
+
44
+ class SitemapStore
45
+ def initialize(app)
46
+ @app = app
47
+ @source = File.expand_path(@app.views, @app.root)
48
+ @map = {}
49
+ @context_map = {}
50
+ @source_map = {}
51
+ @ignored_paths = false
52
+ @generic_paths = false
53
+ @proxied_paths = false
54
+
55
+ # build_static_map
56
+ end
57
+
58
+ # Check to see if we know about a specific path
59
+ def path_exists?(path)
60
+ path = path.sub(/^\//, "")
61
+ @map.has_key?(path)
62
+ end
63
+
64
+ def path_is_proxy?(path)
65
+ path = path.sub(/^\//, "")
66
+ return false if !path_exists?(path)
67
+ @map[path].is_a?(String)
68
+ end
69
+
70
+ def path_target(path)
71
+ path = path.sub(/^\//, "")
72
+ @map[path]
73
+ end
74
+
75
+ def path_context(path)
76
+ path = path.sub(/^\//, "")
77
+ @context_map[path]
78
+ end
79
+
80
+ def set_path(path, target=true)
81
+ path = path.sub(/^\//, "")
82
+ target = target.sub(/^\//, "") if target.is_a?(String)
83
+
84
+ @map[path] = target
85
+
86
+ @ignored_paths = false if target === false
87
+ @generic_paths = false if target === true
88
+ @proxied_paths = false if target.is_a?(String)
89
+ end
90
+
91
+ def set_context(path, options={}, block=nil)
92
+ path = path.sub(/^\//, "")
93
+ @context_map[path] = {
94
+ :options => options,
95
+ :block => block
96
+ }
97
+ end
98
+
99
+ def get_context(path)
100
+ path = path.sub(/^\//, "")
101
+ @context_map[path]
102
+ end
103
+
104
+ def ignore_path(path)
105
+ set_path(path, false)
106
+ @ignored_paths = false
107
+ end
108
+
109
+ def each(&block)
110
+ @map.each do |k, v|
111
+ yield(k, v)
112
+ end
113
+ end
114
+
115
+ def all_paths
116
+ @map.keys
117
+ end
118
+
119
+ def all_values
120
+ @map.values
121
+ end
122
+
123
+ def ignored_path?(path)
124
+ path = path.sub(/^\//, "")
125
+ ignored_paths.include?(path)
126
+ end
127
+
128
+ def ignored_paths
129
+ @ignored_paths ||= begin
130
+ ignored = []
131
+ each do |k, v|
132
+ ignored << k if v === false
133
+ end
134
+ ignored
135
+ end
136
+ end
137
+
138
+ def generic_path?(path)
139
+ path = path.sub(/^\//, "")
140
+ generic_paths.include?(path)
141
+ end
142
+
143
+ def generic_paths
144
+ @generic_paths ||= begin
145
+ generic = []
146
+ each do |k, v|
147
+ generic << k if v === true
148
+ end
149
+ generic
150
+ end
151
+ end
152
+
153
+ def proxied_path?(path)
154
+ path = path.sub(/^\//, "")
155
+ proxied_paths.include?(path)
156
+ end
157
+
158
+ def proxied_paths
159
+ @proxied_paths ||= begin
160
+ proxied = []
161
+ each do |k, v|
162
+ proxied << k if v.is_a?(String)
163
+ end
164
+ proxied
165
+ end
166
+ end
167
+
168
+ def touch_file(file)
169
+ add_file(file)
170
+ end
171
+
172
+ def remove_file(file)
173
+ path = file_to_path(file)
174
+ remove_path(path) if path
175
+ end
176
+
177
+ def remove_path(path)
178
+ path = path.sub(/^\//, "")
179
+ @map.delete(path) if path_exists?(path)
180
+ @context_map.delete(path) if @context_map.has_key?(path)
181
+ end
182
+
183
+ def source_map
184
+ @source_map
185
+ end
186
+
187
+ protected
188
+ def build_static_map
189
+ Find.find(@source) do |file|
190
+ add_file(file)
191
+ end
192
+ end
193
+
194
+ def file_to_path(file)
195
+ file = File.expand_path(file, @app.root)
196
+
197
+ prefix = @source + "/"
198
+ return false unless file.include?(prefix)
199
+
200
+ path = file.sub(prefix, "")
201
+ path = @app.extensionless_path(path)
202
+
203
+ @source_map[path] = file
204
+ path
205
+ end
206
+
207
+ def add_file(file)
208
+ return false if file == @source ||
209
+ file.match(/^\./) ||
210
+ file.match(/\/\./) ||
211
+ (file.match(/\/_/) && !file.match(/\/__/)) ||
212
+ File.directory?(file)
213
+
214
+ path = file_to_path(file)
215
+
216
+ add_path(path) if path && !path_exists?(path)
217
+ end
218
+
219
+ def add_path(path)
220
+ return false if path.match(%r{^layout}) ||
221
+ path.match(%r{^layouts/})
222
+
223
+ # @app.logger.debug :sitemap_update, Time.now, path if @app.logging?
224
+ set_path(path)
225
+
226
+ true
227
+ end
228
+ end
229
+ end
@@ -6,6 +6,7 @@ module Middleman::CoreExtensions::Sprockets
6
6
  class << self
7
7
  def registered(app)
8
8
  app.set :js_compressor, false
9
+ app.set :css_compressor, false
9
10
 
10
11
  # Cut off every extension after .js (which sprockets eats up)
11
12
  app.build_reroute do |destination, request_path|
@@ -19,24 +20,47 @@ module Middleman::CoreExtensions::Sprockets
19
20
  end
20
21
  end
21
22
 
22
- app.after_configuration do
23
- js_env = Middleman::CoreExtensions::Sprockets::JavascriptEnvironment.new(app)
24
-
25
- js_dir = File.join("vendor", "assets", "javascripts")
23
+ app.ready do
24
+ js_env = Middleman::CoreExtensions::Sprockets::JavascriptEnvironment.new(self)
25
+
26
+ vendor_dir = File.join("vendor", "assets", "javascripts")
26
27
  gems_with_js = ::Middleman.rubygems_latest_specs.select do |spec|
27
- ::Middleman.spec_has_file?(spec, js_dir)
28
+ ::Middleman.spec_has_file?(spec, vendor_dir)
28
29
  end.each do |spec|
29
- js_env.append_path File.join(spec.full_gem_path, js_dir)
30
+ js_env.append_path File.join(spec.full_gem_path, vendor_dir)
30
31
  end
31
-
32
+
33
+ app_dir = File.join("app", "assets", "javascripts")
34
+ gems_with_js = ::Middleman.rubygems_latest_specs.select do |spec|
35
+ ::Middleman.spec_has_file?(spec, app_dir)
36
+ end.each do |spec|
37
+ js_env.append_path File.join(spec.full_gem_path, app_dir)
38
+ end
39
+
32
40
  # add paths to js_env (vendor/assets/javascripts)
33
- app.map "/#{app.js_dir}" do
41
+ map "/#{self.js_dir}" do
34
42
  run js_env
35
43
  end
44
+
45
+ css_env = Middleman::CoreExtensions::Sprockets::StylesheetEnvironment.new(self)
46
+
47
+ vendor_dir = File.join("vendor", "assets", "stylesheets")
48
+ gems_with_css = ::Middleman.rubygems_latest_specs.select do |spec|
49
+ ::Middleman.spec_has_file?(spec, vendor_dir)
50
+ end.each do |spec|
51
+ css_env.append_path File.join(spec.full_gem_path, vendor_dir)
52
+ end
53
+
54
+ app_dir = File.join("app", "assets", "stylesheets")
55
+ gems_with_css = ::Middleman.rubygems_latest_specs.select do |spec|
56
+ ::Middleman.spec_has_file?(spec, app_dir)
57
+ end.each do |spec|
58
+ css_env.append_path File.join(spec.full_gem_path, app_dir)
59
+ end
36
60
 
37
- # app.map "/#{app.css_dir}" do
38
- # run Middleman::CoreExtensions::Sprockets::StylesheetEnvironment.new(app)
39
- # end
61
+ map("/#{self.css_dir}") do
62
+ run css_env
63
+ end
40
64
  end
41
65
  end
42
66
  alias :included :registered
@@ -44,10 +68,7 @@ module Middleman::CoreExtensions::Sprockets
44
68
 
45
69
  class MiddlemanEnvironment < ::Sprockets::Environment
46
70
  def initialize(app)
47
- full_path = app.views
48
- full_path = File.join(app.root, app.views) unless app.views.include?(app.root)
49
-
50
- super File.expand_path(full_path)
71
+ super app.source_dir
51
72
 
52
73
  # Make the app context available to Sprockets
53
74
  context_class.send(:define_method, :app) { app }
@@ -66,12 +87,9 @@ module Middleman::CoreExtensions::Sprockets
66
87
  class JavascriptEnvironment < MiddlemanEnvironment
67
88
  def initialize(app)
68
89
  super
69
-
70
- # Disable css
71
- unregister_processor "text/css", ::Sprockets::DirectiveProcessor
72
90
 
73
- self.js_compressor = app.settings.js_compressor
74
-
91
+ self.js_compressor = app.js_compressor
92
+
75
93
  # configure search paths
76
94
  append_path app.js_dir
77
95
  end
@@ -82,21 +100,19 @@ module Middleman::CoreExtensions::Sprockets
82
100
  end
83
101
  end
84
102
 
85
- # class StylesheetEnvironment < MiddlemanEnvironment
86
- # def initialize(app)
87
- # super
88
- #
89
- # # Disable js
90
- # unregister_processor "application/javascript", ::Sprockets::DirectiveProcessor
91
- #
92
- # # configure search paths
93
- # stylesheets_path = File.join(File.expand_path(app.views), app.css_dir)
94
- # append_path stylesheets_path
95
- # end
96
- #
97
- # def css_exception_response(exception)
98
- # expire_index!
99
- # super(exception)
100
- # end
101
- # end
103
+ class StylesheetEnvironment < MiddlemanEnvironment
104
+ def initialize(app)
105
+ super
106
+
107
+ self.css_compressor = app.css_compressor
108
+
109
+ # configure search paths
110
+ append_path app.css_dir
111
+ end
112
+
113
+ def css_exception_response(exception)
114
+ expire_index!
115
+ super(exception)
116
+ end
117
+ end
102
118
  end
@@ -1,22 +1,32 @@
1
1
  module Middleman::Features::AssetHost
2
2
  class << self
3
3
  def registered(app)
4
+ app.set :asset_host, nil
5
+
4
6
  app.compass_config do |config|
5
- if app.asset_host.is_a?(Proc)
6
- config.asset_host(&app.asset_host)
7
+ if self.asset_host.is_a?(Proc)
8
+ config.asset_host(&self.asset_host)
7
9
  end
8
10
  end
11
+
12
+ app.send :include, InstanceMethods
13
+ end
14
+ alias :included :registered
15
+ end
16
+
17
+ module InstanceMethods
18
+ def asset_url(path, prefix="")
19
+ original_output = super
9
20
 
10
- app.register_asset_handler :asset_host do |path, prefix, request|
11
- original_output = app.before_asset_handler(:asset_host, path, prefix, request)
12
-
13
- valid_extensions = %w(.png .gif .jpg .jpeg .js .css)
14
-
15
- asset_prefix = app.asset_host.call(original_output)
21
+ valid_extensions = %w(.png .gif .jpg .jpeg .js .css)
16
22
 
17
- File.join(asset_prefix, original_output)
23
+ asset_prefix = if self.asset_host.is_a?(Proc)
24
+ self.asset_host.call(original_output)
25
+ elsif self.asset_host.is_a?(String)
26
+ self.asset_host
18
27
  end
28
+
29
+ File.join(asset_prefix, original_output)
19
30
  end
20
- alias :included :registered
21
31
  end
22
32
  end
@@ -3,25 +3,28 @@ module Middleman::Features::AutomaticImageSizes
3
3
  def registered(app)
4
4
  require "middleman/features/automatic_image_sizes/fastimage"
5
5
 
6
- app.helpers Helpers
6
+ app.send :include, InstanceMethods
7
7
  end
8
8
  alias :included :registered
9
9
  end
10
10
 
11
- module Helpers
11
+ module InstanceMethods
12
12
  def image_tag(path, params={})
13
- if (!params[:width] || !params[:height]) && !path.include?("://")
13
+ if !params.has_key?(:width) && !params.has_key?(:height) && !path.include?("://")
14
14
  params[:alt] ||= ""
15
- http_prefix = settings.http_images_path rescue settings.images_dir
15
+ http_prefix = self.http_images_path rescue self.images_dir
16
16
 
17
17
  begin
18
- real_path = File.join(settings.views, settings.images_dir, path)
19
- if File.exists? real_path
20
- dimensions = ::FastImage.size(real_path, :raise_on_failure => true)
21
- params[:width] ||= dimensions[0]
22
- params[:height] ||= dimensions[1]
18
+ real_path = File.join(self.views, self.images_dir, path)
19
+ full_path = File.expand_path(real_path, self.root)
20
+ http_prefix = self.http_images_path rescue self.images_dir
21
+ if File.exists? full_path
22
+ dimensions = ::FastImage.size(full_path, :raise_on_failure => true)
23
+ params[:width] = dimensions[0]
24
+ params[:height] = dimensions[1]
23
25
  end
24
26
  rescue
27
+ # $stderr.puts params.inspect
25
28
  end
26
29
  end
27
30
 
@@ -1,34 +1,12 @@
1
1
  module Middleman::Features::CacheBuster
2
2
  class << self
3
3
  def registered(app)
4
- app.register_asset_handler :cache_buster do |path, prefix, request|
5
- http_path = app.before_asset_handler(:cache_buster, path, prefix, request)
6
-
7
- if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
8
- http_path
9
- else
10
- begin
11
- prefix = app.images_dir if prefix == app.http_images_path
12
- rescue
13
- end
14
-
15
- real_path_static = File.join(app.views, prefix, path)
16
-
17
- if File.readable?(real_path_static)
18
- http_path << "?" + File.mtime(real_path_static).strftime("%s")
19
- elsif app.build?
20
- real_path_dynamic = File.join(app.root, app.build_dir, prefix, path)
21
- http_path << "?" + File.mtime(real_path_dynamic).strftime("%s") if File.readable?(real_path_dynamic)
22
- end
23
-
24
- http_path
25
- end
26
- end
27
-
4
+ app.send :include, InstanceMethods
5
+
28
6
  app.compass_config do |config|
29
7
  config.asset_cache_buster do |path, real_path|
30
8
  real_path = real_path.path if real_path.is_a? File
31
- real_path = real_path.gsub(File.join(app.root, app.build_dir), app.views)
9
+ real_path = real_path.gsub(File.join(self.root, self.build_dir), self.views)
32
10
  if File.readable?(real_path)
33
11
  File.mtime(real_path).strftime("%s")
34
12
  else
@@ -39,4 +17,39 @@ module Middleman::Features::CacheBuster
39
17
  end
40
18
  alias :included :registered
41
19
  end
20
+
21
+ module InstanceMethods
22
+ def asset_url(path, prefix="")
23
+ http_path = super
24
+
25
+ if http_path.include?("://") || !%w(.css .png .jpg .js .gif).include?(File.extname(http_path))
26
+ http_path
27
+ else
28
+ begin
29
+ prefix = self.images_dir if prefix == self.http_images_path
30
+ rescue
31
+ end
32
+
33
+ real_path_static = File.join(prefix, path)
34
+ result = resolve_template(real_path_static)
35
+
36
+ if self.build?
37
+ real_path_dynamic = File.join(self.build_dir, prefix, path)
38
+ real_path_dynamic = File.expand_path(real_path_dynamic, self.root)
39
+ http_path << "?" + File.mtime(real_path_dynamic).strftime("%s") if File.readable?(real_path_dynamic)
40
+ elsif result
41
+ if result[1].nil?
42
+ http_path << "?" + File.mtime(result[0]).strftime("%s")
43
+ else
44
+ # It's a template, possible with partials. We can't really know when
45
+ # it's updated, so generate fresh cache buster every time durin
46
+ # developement
47
+ http_path << "?" + Time.now.strftime("%s")
48
+ end
49
+ end
50
+
51
+ http_path
52
+ end
53
+ end
54
+ end
42
55
  end