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
@@ -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