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
@@ -1,34 +1,35 @@
1
- require "tilt"
2
-
3
1
  module Middleman::Renderers::Markdown
4
2
  class << self
5
3
  def registered(app)
6
- app.extend ClassMethods
7
-
8
- app.set :markdown_engine, :maruku
4
+ app.send :include, InstanceMethods
9
5
 
10
- if !app.respond_to? :markdown_engine_prefix
11
- app.set :markdown_engine_prefix, ::Tilt
6
+ begin
7
+ require "maruku"
8
+ app.set :markdown_engine, :maruku
9
+ rescue LoadError
10
+ app.set :markdown_engine, nil
12
11
  end
12
+
13
+ app.set :markdown_engine_prefix, ::Tilt
13
14
 
14
15
  app.after_configuration do
15
- engine = app.settings.markdown_engine
16
+ unless markdown_engine.nil?
17
+ if markdown_engine.is_a? Symbol
18
+ markdown_engine = markdown_tilt_template_from_symbol(markdown_engine)
19
+ end
16
20
 
17
- if engine.is_a? Symbol
18
- engine = app.tilt_template_from_symbol(engine)
21
+ ::Tilt.prefer(markdown_engine)
19
22
  end
20
-
21
- ::Tilt.prefer(engine)
22
23
  end
23
24
  end
24
25
  alias :included :registered
25
26
  end
26
27
 
27
- module ClassMethods
28
- def tilt_template_from_symbol(engine)
28
+ module InstanceMethods
29
+ def markdown_tilt_template_from_symbol(engine)
29
30
  engine = engine.to_s
30
31
  engine = engine == "rdiscount" ? "RDiscount" : engine.camelize
31
- settings.markdown_engine_prefix.const_get("#{engine}Template")
32
+ markdown_engine_prefix.const_get("#{engine}Template")
32
33
  end
33
34
  end
34
35
  end
@@ -1,5 +1,6 @@
1
+ require "sprockets"
2
+ require "sprockets-sass"
1
3
  require "sass"
2
- require "sass/plugin"
3
4
 
4
5
  module Middleman::Renderers::Sass
5
6
  class << self
@@ -9,55 +10,50 @@ module Middleman::Renderers::Sass
9
10
  end
10
11
  alias :included :registered
11
12
  end
12
-
13
- class SassPlusCSSFilenameTemplate < ::Tilt::SassTemplate
14
- def sass_options_with_scope(scope)
15
- return sass_options if basename.nil?
16
-
17
- location_of_sass_file = if scope.build?
18
- File.join(scope.root, scope.build_dir)
19
- else
20
- scope.views
21
- end
22
-
23
- parts = basename.split('.')
24
- parts.pop
25
- css_filename = File.join(location_of_sass_file, scope.css_dir, parts.join("."))
26
- sass_options.merge(scope.settings.sass).merge(:css_filename => css_filename)
27
- end
28
13
 
29
- def evaluate(scope, locals, &block)
30
- @engine = ::Sass::Engine.new(data, sass_options_with_scope(scope.class))
31
-
14
+ class SassPlusCSSFilenameTemplate < ::Sprockets::Sass::SassTemplate
15
+ self.default_mime_type = "text/css"
16
+
17
+ # Add exception messaging
18
+ def evaluate(context, locals, &block)
32
19
  begin
33
20
  super
34
21
  rescue Sass::SyntaxError => e
35
22
  Sass::SyntaxError.exception_to_css(e, :full_exception => true)
36
23
  end
37
24
  end
25
+
26
+ protected
27
+ def sass_options
28
+ location_of_sass_file = if @context.build?
29
+ File.expand_path(@context.build_dir, @context.root)
30
+ else
31
+ File.expand_path(@context.views, @context.root)
32
+ end
33
+
34
+ parts = basename.split('.')
35
+ parts.pop
36
+ css_filename = File.join(location_of_sass_file, @context.css_dir, parts.join("."))
37
+
38
+ super.merge(
39
+ :css_filename => css_filename
40
+ )
41
+ end
38
42
  end
43
+ ::Sprockets.register_engine ".sass", SassPlusCSSFilenameTemplate
39
44
  ::Tilt.register 'sass', SassPlusCSSFilenameTemplate
40
45
  ::Tilt.prefer(SassPlusCSSFilenameTemplate)
41
-
46
+
42
47
  class ScssPlusCSSFilenameTemplate < SassPlusCSSFilenameTemplate
43
- def sass_options_with_scope(scope)
44
- super.merge(:syntax => :scss)
48
+ self.default_mime_type = "text/css"
49
+
50
+ # Define the expected syntax for the template
51
+ def syntax
52
+ :scss
45
53
  end
46
54
  end
55
+
56
+ ::Sprockets.register_engine ".scss", ScssPlusCSSFilenameTemplate
47
57
  ::Tilt.register 'scss', ScssPlusCSSFilenameTemplate
48
58
  ::Tilt.prefer(ScssPlusCSSFilenameTemplate)
49
- end
50
-
51
- # Use sass settings in Haml filters
52
- # Other, tilt-based filters (like those used in Slim) will
53
- # work automatically.
54
- # module Middleman::Renderers::Haml
55
- # module Sass
56
- # include ::Haml::Filters::Base
57
- #
58
- # def render(text)
59
- # sass_options = scope.settings.sass
60
- # ::Sass::Engine.new(text, sass_options).render
61
- # end
62
- # end
63
- # end
59
+ end
@@ -0,0 +1,9 @@
1
+ h2. 0.2.0
2
+
3
+ h3. Changes
4
+ * Callback blocks are now executed on the instance using @instance_exec@. If you need to access the class (former context) use @self.class@.
5
+
6
+ h2. 0.1.4
7
+
8
+ h3. Bugfixes
9
+ * An uninitialized @inheritable_attr@ doesn't crash since it is not cloned anymore. Note that an uncloneable attribute value still causes an exception.
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
@@ -0,0 +1,107 @@
1
+ = Hooks
2
+
3
+ <em>Generic hooks with callbacks for Ruby.</em>
4
+
5
+
6
+ == Introduction
7
+
8
+ _Hooks_ lets you define hooks declaratively in your ruby class. You can add callbacks to your hook, which will be run as soon as _you_ run the hook!
9
+
10
+ It's almost like ActiveSupport::Callbacks but 76,6% less complex. Instead, it is not more than 60 lines of code, one method compilation, no +method_missing+ and no magic.
11
+
12
+ Also, you may pass additional arguments to your callbacks when invoking a hook.
13
+
14
+ == Example
15
+
16
+ Let's take... a cat.
17
+
18
+ require 'hooks'
19
+
20
+ class Cat
21
+ include Hooks
22
+
23
+ define_hook :after_dinner
24
+
25
+ Now you can add callbacks to your hook declaratively in your class.
26
+
27
+ after_dinner do
28
+ puts "Ice cream for #{self}!"
29
+ end
30
+
31
+ after_dinner :have_a_desert # => refers to Cat#have_a_desert
32
+
33
+ def have_a_desert
34
+ puts "Hell, yeah!"
35
+ end
36
+
37
+ This will run the block and <tt>#have_a_desert</tt> from above.
38
+
39
+ cat.run_hook :after_dinner
40
+ # => Ice cream for #<Cat:0x8df9d84>!
41
+ Hell, yeah!
42
+
43
+ Callback blocks and methods will be executed with instance context. Note how +self+ in the block refers to the Cat instance.
44
+
45
+
46
+ == Inheritance
47
+
48
+ Hooks are inherited, here's a complete example to put it all together.
49
+
50
+ class Garfield < Cat
51
+
52
+ after_dinner :want_some_more
53
+
54
+ def want_some_more
55
+ puts "Is that all?"
56
+ end
57
+ end
58
+
59
+
60
+ Garfield.new.run_hook :after_dinner
61
+ # => Ice cream for #<Cat:0x8df9d84>!
62
+ Hell, yeah!
63
+ Is that all?
64
+
65
+ Note how the callbacks are invoked in the order they were inherited.
66
+
67
+
68
+ == Options for Callbacks
69
+
70
+ You're free to pass any number of arguments to #run_callback, those will be passed to the callbacks.
71
+
72
+ cat.run_hook :before_dinner, cat, Time.now
73
+
74
+ The callbacks should be ready for receiving parameters.
75
+
76
+ before_dinner :wash_pawns
77
+ before_dinner do |who, when|
78
+ ...
79
+ end
80
+
81
+ def wash_pawns(who, when)
82
+
83
+
84
+ Not sure why a cat should have ice cream for dinner. Beside that, I was tempted naming this gem _hooker_.
85
+
86
+
87
+ == Installation
88
+
89
+ gem install hooks
90
+
91
+
92
+ == Anybody using it?
93
+
94
+ * Hooks is already used in [Apotomo:http://github.com/apotonick/apotomo], a hot widget framework for Rails. Look at +lib/apotomo/widget.rb+ for examples and into +lib/apotomo/tree_node.rb+ to learn how modules-driven code might benefit from hooks.
95
+
96
+ == Similar libraries
97
+
98
+ * http://github.com/nakajima/aspectory
99
+ * http://github.com/auser/backcall
100
+ * http://github.com/mmcgrana/simple_callbacks
101
+
102
+
103
+ == License
104
+
105
+ Copyright (c) 2010, Nick Sutterer
106
+
107
+ Released under the MIT License.
@@ -0,0 +1,12 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+
4
+ desc 'Default: run unit tests.'
5
+ task :default => :test
6
+
7
+ desc 'Test the hooks plugin.'
8
+ Rake::TestTask.new(:test) do |test|
9
+ test.libs << 'test'
10
+ test.test_files = FileList['test/*_test.rb']
11
+ test.verbose = true
12
+ end
@@ -0,0 +1,22 @@
1
+ lib = File.expand_path('../lib/', __FILE__)
2
+ $:.unshift lib unless $:.include?(lib)
3
+
4
+ require 'hooks'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "hooks"
8
+ s.version = Hooks::VERSION
9
+ s.platform = Gem::Platform::RUBY
10
+ s.authors = ["Nick Sutterer"]
11
+ s.email = ["apotonick@gmail.com"]
12
+ s.homepage = "http://nicksda.apotomo.de/tag/hooks"
13
+ s.summary = %q{Generic hooks with callbacks for Ruby.}
14
+ s.description = %q{Declaratively define hooks, add callbacks and run them with the options you like.}
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_development_dependency "shoulda"
21
+ s.add_development_dependency "rake"
22
+ end
@@ -0,0 +1,109 @@
1
+ require File.join(File.dirname(__FILE__), "hooks/inheritable_attribute")
2
+
3
+ # Almost like ActiveSupport::Callbacks but 76,6% less complex.
4
+ #
5
+ # Example:
6
+ #
7
+ # class CatWidget < Apotomo::Widget
8
+ # define_hook :after_dinner
9
+ #
10
+ # Now you can add callbacks to your hook declaratively in your class.
11
+ #
12
+ # after_dinner do puts "Ice cream!" end
13
+ # after_dinner :have_a_desert # => refers to CatWidget#have_a_desert
14
+ #
15
+ # Running the callbacks happens on instances. It will run the block and #have_a_desert from above.
16
+ #
17
+ # cat.run_hook :after_dinner
18
+ module Hooks
19
+ VERSION = "0.2.0"
20
+
21
+ def self.included(base)
22
+ base.extend InheritableAttribute
23
+ base.extend ClassMethods
24
+ end
25
+
26
+ module ClassMethods
27
+ def define_hook(name)
28
+ accessor_name = "_#{name}_callbacks"
29
+
30
+ setup_hook_accessors(accessor_name)
31
+ define_hook_writer(name, accessor_name)
32
+ end
33
+
34
+ # Like Hooks#run_hook but for the class. Note that +:callbacks+ must be class methods.
35
+ #
36
+ # Example:
37
+ #
38
+ # class Cat
39
+ # after_eight :grab_a_beer
40
+ #
41
+ # def self.grab_a_beer(*) # and so on...
42
+ #
43
+ # where <tt>Cat.run_hook :after_eight</tt> will call the class method +grab_a_beer+.
44
+ def run_hook(name, *args)
45
+ run_hook_for(name, self, *args)
46
+ end
47
+
48
+ def run_hook_for(name, scope, *args)
49
+ callbacks_for_hook(name).each do |callback|
50
+ if callback.kind_of? Symbol
51
+ scope.send(callback, *args)
52
+ else
53
+ scope.instance_exec(*args, &callback)
54
+ end
55
+ end
56
+ end
57
+
58
+ # Returns the callbacks for +name+. Handy if you want to run the callbacks yourself, say when
59
+ # they should be executed in another context.
60
+ #
61
+ # Example:
62
+ #
63
+ # def initialize
64
+ # self.class.callbacks_for_hook(:after_eight).each do |callback|
65
+ # instance_exec(self, &callback)
66
+ # end
67
+ #
68
+ # would run callbacks in the object _instance_ context, passing +self+ as block parameter.
69
+ def callbacks_for_hook(name)
70
+ send("_#{name}_callbacks")
71
+ end
72
+
73
+ private
74
+
75
+ def define_hook_writer(hook, accessor_name)
76
+ self.send(:define_method, hook.to_sym) do |&block|
77
+ if self.class.respond_to?(hook)
78
+ self.class.send(hook.to_sym, &block)
79
+ end
80
+ end
81
+
82
+ instance_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
83
+ def #{hook}(method=nil, &block)
84
+ #{accessor_name} << (block || method)
85
+ end
86
+ RUBY_EVAL
87
+ end
88
+
89
+ def setup_hook_accessors(accessor_name)
90
+ inheritable_attr(accessor_name)
91
+ send("#{accessor_name}=", []) # initialize ivar.
92
+ end
93
+ end
94
+
95
+ # Runs the callbacks (method/block) for the specified hook +name+. Additional arguments will
96
+ # be passed to the callback.
97
+ #
98
+ # Example:
99
+ #
100
+ # cat.run_hook :after_dinner, "i want ice cream!"
101
+ #
102
+ # will invoke the callbacks like
103
+ #
104
+ # desert("i want ice cream!")
105
+ # block.call("i want ice cream!")
106
+ def run_hook(name, *args)
107
+ self.class.run_hook_for(name, self, *args)
108
+ end
109
+ end
@@ -0,0 +1,33 @@
1
+ module Hooks
2
+ module InheritableAttribute
3
+ # Creates an inheritable attribute with accessors in the singleton class. Derived classes inherit the
4
+ # attributes. This is especially helpful with arrays or hashes that are extended in the inheritance
5
+ # chain. Note that you have to initialize the inheritable attribute.
6
+ #
7
+ # Example:
8
+ #
9
+ # class Cat
10
+ # inheritable_attr :drinks
11
+ # self.drinks = ["Becks"]
12
+ #
13
+ # class Garfield < Cat
14
+ # self.drinks << "Fireman's 4"
15
+ #
16
+ # and then, later
17
+ #
18
+ # Cat.drinks #=> ["Becks"]
19
+ # Garfield.drinks #=> ["Becks", "Fireman's 4"]
20
+ def inheritable_attr(name)
21
+ instance_eval %Q{
22
+ def #{name}=(v)
23
+ @#{name} = v
24
+ end
25
+
26
+ def #{name}
27
+ return @#{name} unless superclass.respond_to?(:#{name}) and value = superclass.#{name}
28
+ @#{name} ||= value.clone # only do this once.
29
+ end
30
+ }
31
+ end
32
+ end
33
+ end