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,98 @@
1
+ module Padrino
2
+ ##
3
+ # This class is an extended version of Rack::URLMap
4
+ #
5
+ # Padrino::Router like Rack::URLMap dispatches in such a way that the
6
+ # longest paths are tried first, since they are most specific.
7
+ #
8
+ # Features:
9
+ #
10
+ # * Map a path to the specified App
11
+ # * Ignore server names (this solve issues with vhost and domain aliases)
12
+ # * Use hosts instead of server name for mappings (this help us with our vhost and doman aliases)
13
+ #
14
+ # @example
15
+ #
16
+ # routes = Padrino::Router.new do
17
+ # map(:path => "/", :to => PadrinoWeb, :host => "padrino.local")
18
+ # map(:path => "/", :to => Admin, :host => "admin.padrino.local")
19
+ # end
20
+ # run routes
21
+ #
22
+ # routes = Padrino::Router.new do
23
+ # map(:path => "/", :to => PadrinoWeb, :host => /*.padrino.local/)
24
+ # end
25
+ # run routes
26
+ #
27
+ # @api semipublic
28
+ class Router
29
+
30
+ # Constructs a new route mapper instance
31
+ def initialize(*mapping, &block)
32
+ @mapping = []
33
+ mapping.each { |m| map(m) }
34
+ instance_eval(&block) if block
35
+ end
36
+
37
+ ##
38
+ # Map a route path and host to a specified application.
39
+ #
40
+ # @param [Hash] options
41
+ # The options to map.
42
+ # @option options [Sinatra::Application] :to
43
+ # The class of the application to mount.
44
+ # @option options [String] :path ("/")
45
+ # The path to map the specified application.
46
+ # @option options [String] :host
47
+ # The host to map the specified application.
48
+ #
49
+ # @example
50
+ # map(:path => "/", :to => PadrinoWeb, :host => "padrino.local")
51
+ #
52
+ # @return [Array] The sorted route mappings.
53
+ # @api semipublic
54
+ def map(options={})
55
+ path = options[:path] || "/"
56
+ host = options[:host]
57
+ app = options[:to]
58
+
59
+ raise ArgumentError, "paths need to start with /" if path[0] != ?/
60
+ raise ArgumentError, "app is required" if app.nil?
61
+
62
+ path = path.chomp('/')
63
+ match = Regexp.new("^#{Regexp.quote(path).gsub('/', '/+')}(.*)", nil, 'n')
64
+ host = Regexp.new("^#{Regexp.quote(host)}$", true, 'n') unless host.nil? || host.is_a?(Regexp)
65
+
66
+ @mapping << [host, path, match, app]
67
+ sort!
68
+ end
69
+
70
+ # The call handler setup to route a request given the mappings specified.
71
+ # @api private
72
+ def call(env)
73
+ rPath = env["PATH_INFO"].to_s
74
+ script_name = env['SCRIPT_NAME']
75
+ hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT')
76
+ @mapping.each do |host, path, match, app|
77
+ next unless host.nil? || hHost =~ host
78
+ next unless rPath =~ match && rest = $1
79
+ next unless rest.empty? || rest[0] == ?/
80
+
81
+ rest = "/" if rest.empty?
82
+
83
+ return app.call(
84
+ env.merge(
85
+ 'SCRIPT_NAME' => (script_name + path),
86
+ 'PATH_INFO' => rest))
87
+ end
88
+ [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found: #{rPath}"]]
89
+ end
90
+
91
+ private
92
+
93
+ # Sorts the mapped routes in consistent order
94
+ def sort!
95
+ @mapping = @mapping.sort_by { |h, p, m, a| -p.size }
96
+ end
97
+ end # Router
98
+ end # Padrino
@@ -0,0 +1,79 @@
1
+ module Padrino
2
+ ##
3
+ # Runs the Padrino apps as a self-hosted server using:
4
+ # thin, mongrel, or webrick in that order.
5
+ #
6
+ # @example
7
+ # Padrino.run! # with these defaults => host: "localhost", port: "3000", adapter: the first found
8
+ # Padrino.run!("localhost", "4000", "mongrel") # use => host: "0.0.0.0", port: "3000", adapter: "mongrel"
9
+ #
10
+ def self.run!(options={})
11
+ Padrino.load!
12
+ Server.start(Padrino.application, options)
13
+ end
14
+
15
+ ##
16
+ # This module builds a Padrino server to run the project based on available handlers.
17
+ #
18
+ class Server < Rack::Server
19
+ # Server Handlers
20
+ Handlers = [:thin, :mongrel, :webrick]
21
+
22
+ # Starts the application on the available server with specified options.
23
+ def self.start(app, opts={})
24
+ options = {}.merge(opts) # We use a standard hash instead of Thor::CoreExt::HashWithIndifferentAccess
25
+ options.symbolize_keys!
26
+ options[:Host] = options.delete(:host) || '0.0.0.0'
27
+ options[:Port] = options.delete(:port) || 3000
28
+ options[:AccessLog] = []
29
+ if options[:daemonize]
30
+ options[:pid] = options[:pid].blank? ? File.expand_path('tmp/pids/server.pid') : opts[:pid]
31
+ FileUtils.mkdir_p(File.dirname(options[:pid]))
32
+ end
33
+ options[:server] = detect_rack_handler if options[:server].blank?
34
+ new(options, app).start
35
+ end
36
+
37
+ def initialize(options, app)
38
+ @options, @app = options, app
39
+ end
40
+
41
+ # Starts the application on the available server with specified options.
42
+ def start
43
+ puts "=> Padrino/#{Padrino.version} has taken the stage #{Padrino.env} at http://#{options[:Host]}:#{options[:Port]}"
44
+ [:INT, :TERM].each { |sig| trap(sig) { exit } }
45
+ super
46
+ ensure
47
+ puts "<= Padrino has ended his set (crowd applauds)" unless options[:daemonize]
48
+ end
49
+
50
+ # The application the server will run.
51
+ def app
52
+ @app
53
+ end
54
+ alias :wrapped_app :app
55
+
56
+ # The options specified to the server.
57
+ def options
58
+ @options
59
+ end
60
+
61
+ private
62
+
63
+ # Detects the supported handler to use.
64
+ #
65
+ # @example
66
+ # detect_rack_handler => <ThinHandler>
67
+ #
68
+ def self.detect_rack_handler
69
+ Handlers.each do |handler|
70
+ begin
71
+ return handler if Rack::Handler.get(handler.to_s.downcase)
72
+ rescue LoadError
73
+ rescue NameError
74
+ end
75
+ end
76
+ fail "Server handler (#{Handlers.join(', ')}) not found."
77
+ end
78
+ end # Server
79
+ end # Padrino
@@ -0,0 +1,199 @@
1
+ ##
2
+ # This file loads certain extensions required by Padrino from ActiveSupport.
3
+ #
4
+ require 'active_support/core_ext/module/aliasing' # alias_method_chain
5
+ require 'active_support/core_ext/hash/keys' # symbolize_keys
6
+ require 'active_support/core_ext/hash/reverse_merge' # reverse_merge
7
+ require 'active_support/core_ext/hash/slice' # slice
8
+ require 'active_support/core_ext/object/blank' # present?
9
+ require 'active_support/core_ext/array/extract_options' # extract_options
10
+ require 'active_support/inflector/methods' # constantize
11
+ require 'active_support/inflector/inflections' # pluralize
12
+ require 'active_support/inflections' # load default inflections
13
+ require 'yaml' unless defined?(YAML) # load yaml for i18n
14
+ require 'Win32/Console/ANSI' if RUBY_PLATFORM =~ /win32/ # ruby color suppor for win
15
+
16
+ ##
17
+ # This is an adapted version of active_support/core_ext/string/inflections.rb
18
+ # to prevent loading several dependencies including I18n gem.
19
+ #
20
+ # Issue: https://github.com/rails/rails/issues/1526
21
+ #
22
+ class String
23
+ ##
24
+ # Returns the plural form of the word in the string.
25
+ #
26
+ # "post".pluralize # => "posts"
27
+ # "octopus".pluralize # => "octopi"
28
+ # "sheep".pluralize # => "sheep"
29
+ # "words".pluralize # => "words"
30
+ # "the blue mailman".pluralize # => "the blue mailmen"
31
+ # "CamelOctopus".pluralize # => "CamelOctopi"
32
+ #
33
+ def pluralize
34
+ ActiveSupport::Inflector.pluralize(self)
35
+ end
36
+
37
+ ##
38
+ # Returns the singular form of the word in the string.
39
+ #
40
+ # "posts".singularize # => "post"
41
+ # "octopi".singularize # => "octopus"
42
+ # "sheep".singularize # => "sheep"
43
+ # "words".singularize # => "word"
44
+ # "the blue mailmen".singularize # => "the blue mailman"
45
+ # "CamelOctopi".singularize # => "CamelOctopus"
46
+ #
47
+ def singularize
48
+ ActiveSupport::Inflector.singularize(self)
49
+ end
50
+
51
+ ##
52
+ # +constantize+ tries to find a declared constant with the name specified
53
+ # in the string. It raises a NameError when the name is not in CamelCase
54
+ # or is not initialized.
55
+ #
56
+ # "Module".constantize # => Module
57
+ # "Class".constantize # => Class
58
+ #
59
+ def constantize
60
+ ActiveSupport::Inflector.constantize(self)
61
+ end
62
+
63
+ ##
64
+ # The reverse of +camelize+. Makes an underscored, lowercase form from the expression in the string.
65
+ #
66
+ # +underscore+ will also change '::' to '/' to convert namespaces to paths.
67
+ #
68
+ # "ActiveRecord".underscore # => "active_record"
69
+ # "ActiveRecord::Errors".underscore # => active_record/errors
70
+ #
71
+ def underscore
72
+ ActiveSupport::Inflector.underscore(self)
73
+ end
74
+
75
+ ##
76
+ # By default, +camelize+ converts strings to UpperCamelCase. If the argument to camelize
77
+ # is set to <tt>:lower</tt> then camelize produces lowerCamelCase.
78
+ #
79
+ # +camelize+ will also convert '/' to '::' which is useful for converting paths to namespaces.
80
+ #
81
+ # "active_record".camelize # => "ActiveRecord"
82
+ # "active_record".camelize(:lower) # => "activeRecord"
83
+ # "active_record/errors".camelize # => "ActiveRecord::Errors"
84
+ # "active_record/errors".camelize(:lower) # => "activeRecord::Errors"
85
+ #
86
+ def camelize(first_letter = :upper)
87
+ case first_letter
88
+ when :upper then ActiveSupport::Inflector.camelize(self, true)
89
+ when :lower then ActiveSupport::Inflector.camelize(self, false)
90
+ end
91
+ end
92
+ alias_method :camelcase, :camelize
93
+
94
+ ##
95
+ # Create a class name from a plural table name like Rails does for table names to models.
96
+ # Note that this returns a string and not a class. (To convert to an actual class
97
+ # follow +classify+ with +constantize+.)
98
+ #
99
+ # "egg_and_hams".classify # => "EggAndHam"
100
+ # "posts".classify # => "Post"
101
+ #
102
+ # Singular names are not handled correctly.
103
+ #
104
+ # "business".classify # => "Busines"
105
+ #
106
+ def classify
107
+ ActiveSupport::Inflector.classify(self)
108
+ end
109
+ end
110
+
111
+ module ObjectSpace
112
+ class << self
113
+ # Returns all the classes in the object space.
114
+ def classes
115
+ ObjectSpace.each_object(Module).select do |klass|
116
+ # Why this? Ruby when you remove a constant don't clean it from
117
+ # rb_tables, this mean that here we can found classes that was
118
+ # removed.
119
+ klass.name rescue false
120
+ end
121
+ end
122
+ end
123
+ end
124
+
125
+ ##
126
+ # FileSet helper method for iterating and interacting with files inside a directory
127
+ #
128
+ module FileSet
129
+ extend self
130
+ ##
131
+ # Iterates over every file in the glob pattern and yields to a block
132
+ # Returns the list of files matching the glob pattern
133
+ # FileSet.glob('padrino-core/application/*.rb', __FILE__) { |file| load file }
134
+ #
135
+ def glob(glob_pattern, file_path=nil, &block)
136
+ glob_pattern = File.join(File.dirname(file_path), glob_pattern) if file_path
137
+ file_list = Dir.glob(glob_pattern).sort
138
+ file_list.each { |file| block.call(file) }
139
+ file_list
140
+ end
141
+
142
+ ##
143
+ # Requires each file matched in the glob pattern into the application
144
+ # FileSet.glob_require('padrino-core/application/*.rb', __FILE__)
145
+ #
146
+ def glob_require(glob_pattern, file_path=nil)
147
+ glob(glob_pattern, file_path) { |f| require f }
148
+ end
149
+ end
150
+
151
+ ##
152
+ # Removes indentation
153
+ # Add colors
154
+ #
155
+ # @example
156
+ # help <<-EOS.undent
157
+ # Here my help usage
158
+ # sample_code
159
+ #
160
+ # Fix
161
+ # EOS
162
+ # puts help.red.bold
163
+ #
164
+ class String
165
+ def self.colors
166
+ @_colors ||= {
167
+ :clear => 0,
168
+ :bold => 1,
169
+ :black => 30,
170
+ :red => 31,
171
+ :green => 32,
172
+ :yellow => 33,
173
+ :blue => 34,
174
+ :magenta => 35,
175
+ :cyan => 36,
176
+ :white => 37
177
+ }
178
+ end
179
+
180
+ colors.each do |color, value|
181
+ define_method(color) do
182
+ ["\e[", value.to_s, "m", self, "\e[", self.class.colors[:clear], "m"] * ''
183
+ end
184
+ end
185
+
186
+ def undent
187
+ gsub(/^.{#{slice(/^ +/).size}}/, '')
188
+ end
189
+ end
190
+
191
+ ##
192
+ # Loads our locale configuration files
193
+ #
194
+ I18n.load_path += Dir["#{File.dirname(__FILE__)}/locale/*.yml"] if defined?(I18n)
195
+
196
+ ##
197
+ # Used to determine if this file has already been required
198
+ #
199
+ module SupportLite; end
@@ -0,0 +1,21 @@
1
+ module Padrino
2
+ ##
3
+ # This module it's used for bootstrap with padrino rake
4
+ # thirdy party tasks, in your gem/plugin/extension you
5
+ # need only do this:
6
+ #
7
+ # @example
8
+ # Padrino::Tasks.files << yourtask.rb
9
+ # Padrino::Tasks.files.concat(Dir["/path/to/all/my/tasks/*.rb"])
10
+ # Padrino::Tasks.files.unshift("yourtask.rb")
11
+ #
12
+ module Tasks
13
+
14
+ ##
15
+ # Returns a list of files to handle with padrino rake
16
+ #
17
+ def self.files
18
+ @files ||= []
19
+ end
20
+ end # Tasks
21
+ end # Padrino
@@ -0,0 +1,20 @@
1
+ #
2
+ # Manages current Padrino version for use in gem generation.
3
+ #
4
+ # We put this in a separate file so you can get padrino version
5
+ # without include full padrino core.
6
+ #
7
+ module Padrino
8
+ # The version constant for the current version of Padrino.
9
+ VERSION = '0.10.5' unless defined?(Padrino::VERSION)
10
+
11
+ #
12
+ # The current Padrino version.
13
+ #
14
+ # @return [String]
15
+ # The version number.
16
+ #
17
+ def self.version
18
+ VERSION
19
+ end
20
+ end # Padrino
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env gem build
2
+ # encoding: utf-8
3
+
4
+ require File.expand_path("../lib/padrino-core/version.rb", __FILE__)
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "padrino-core"
8
+ s.rubyforge_project = "padrino-core"
9
+ s.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
10
+ s.email = "padrinorb@gmail.com"
11
+ s.summary = "The required Padrino core gem"
12
+ s.homepage = "http://www.padrinorb.com"
13
+ s.description = "The Padrino core gem required for use of this framework"
14
+ s.required_rubygems_version = ">= 1.3.6"
15
+ s.version = Padrino.version
16
+ s.date = Time.now.strftime("%Y-%m-%d")
17
+
18
+ s.extra_rdoc_files = Dir["*.rdoc"]
19
+ s.files = `git ls-files`.split("\n")
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
+ s.require_paths = ["lib"]
23
+ s.rdoc_options = ["--charset=UTF-8"]
24
+
25
+ # TODO remove after a couple versions
26
+ # s.post_install_message = "\e[32m" + ("*" * 20)
27
+ # s.post_install_message << "\n UPGRADE NOTES\n\n\e[31m When upgrading, please 'enable :sessions' for each application"
28
+ # s.post_install_message << " as shown here:\e[0m http://bit.ly/kODKMx\n"
29
+ # s.post_install_message << "\e[31m When upgrading, please 'register Padrino::Rendering' for each application"
30
+ # s.post_install_message << " as shown here:\e[0m https://gist.github.com/1d36a35794dbbd664ea4"
31
+ # s.post_install_message << "\n\e[32m" + ("*" * 20) + "\n\e[0m"
32
+
33
+ s.add_dependency("tilt", "~> 1.3.0")
34
+ s.add_dependency("sinatra", "~> 1.3.1")
35
+ s.add_dependency("http_router", "~> 0.10.2")
36
+ s.add_dependency("thor", "~> 0.14.3")
37
+ s.add_dependency("activesupport", "~> 3.1.0")
38
+ end