middleman-core 3.0.0.beta.2 → 3.0.0.beta.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (240) hide show
  1. data/features/cli_extension.feature +13 -0
  2. data/features/{cli.feature → cli_init.feature} +1 -10
  3. data/features/directory_index.feature +29 -1
  4. data/features/dynamic_pages.feature +1 -0
  5. data/features/extensionless_text_files.feature +0 -2
  6. data/features/front-matter.feature +17 -1
  7. data/features/frontmatter_page_settings.feature +16 -1
  8. data/features/helpers_relative_link_to.feature +68 -0
  9. data/features/unicode_filenames.feature +14 -0
  10. data/fixtures/csspie/config.rb +0 -0
  11. data/fixtures/csspie/source/stylesheets/PIE.htc +96 -0
  12. data/fixtures/dynamic-pages-app/config.rb +3 -0
  13. data/fixtures/frontmatter-app/source/front-matter-auto.erb +6 -0
  14. data/fixtures/frontmatter-app/source/front-matter.html.erb +2 -0
  15. data/fixtures/frontmatter-app/source/json-front-matter-2.php.erb +7 -0
  16. data/fixtures/frontmatter-app/source/json-front-matter-auto.erb +6 -0
  17. data/fixtures/frontmatter-app/source/json-front-matter.html.erb +6 -0
  18. data/fixtures/unicode-filenames-app/config.rb +1 -0
  19. data/fixtures/unicode-filenames-app/source/snowmen-rule-/342/230/203.html +4 -0
  20. data/lib/middleman-core/application.rb +43 -335
  21. data/lib/middleman-core/cli/build.rb +11 -4
  22. data/lib/middleman-core/cli/bundler.rb +40 -0
  23. data/lib/middleman-core/cli/extension.rb +36 -0
  24. data/lib/middleman-core/cli/server.rb +2 -2
  25. data/lib/middleman-core/cli.rb +2 -6
  26. data/lib/middleman-core/core_extensions/assets.rb +35 -31
  27. data/lib/middleman-core/core_extensions/builder.rb +14 -9
  28. data/lib/middleman-core/core_extensions/data.rb +150 -145
  29. data/lib/middleman-core/core_extensions/default_helpers.rb +159 -97
  30. data/lib/middleman-core/core_extensions/extensions.rb +103 -97
  31. data/lib/middleman-core/core_extensions/external_helpers.rb +27 -23
  32. data/lib/middleman-core/core_extensions/file_watcher.rb +140 -110
  33. data/lib/middleman-core/core_extensions/front_matter.rb +155 -175
  34. data/lib/middleman-core/core_extensions/i18n.rb +111 -102
  35. data/lib/middleman-core/core_extensions/rendering.rb +293 -295
  36. data/lib/middleman-core/core_extensions/request.rb +338 -0
  37. data/lib/middleman-core/core_extensions/routing.rb +72 -68
  38. data/lib/middleman-core/core_extensions/show_exceptions.rb +23 -18
  39. data/lib/middleman-core/core_extensions.rb +39 -0
  40. data/lib/middleman-core/extensions/directory_indexes.rb +1 -4
  41. data/lib/middleman-core/extensions/lorem.rb +10 -3
  42. data/lib/middleman-core/extensions.rb +2 -64
  43. data/lib/middleman-core/preview_server.rb +157 -0
  44. data/lib/middleman-core/sitemap/extensions/ignores.rb +73 -68
  45. data/lib/middleman-core/sitemap/extensions/on_disk.rb +65 -58
  46. data/lib/middleman-core/sitemap/extensions/proxies.rb +86 -75
  47. data/lib/middleman-core/sitemap/extensions/traversal.rb +68 -61
  48. data/lib/middleman-core/sitemap/resource.rb +123 -102
  49. data/lib/middleman-core/sitemap/store.rb +170 -149
  50. data/lib/middleman-core/sitemap.rb +57 -57
  51. data/lib/middleman-core/step_definitions/server_steps.rb +13 -3
  52. data/lib/middleman-core/templates/extension/Gemfile +4 -0
  53. data/lib/middleman-core/templates/extension/Rakefile +12 -0
  54. data/lib/middleman-core/templates/extension/features/support/env.rb +4 -0
  55. data/lib/middleman-core/templates/extension/gemspec +24 -0
  56. data/lib/middleman-core/templates/extension/lib/lib.rb +49 -0
  57. data/lib/middleman-core/templates/extension/lib/middleman_extension.rb +1 -0
  58. data/lib/middleman-core/templates/shared/gitignore +14 -0
  59. data/lib/middleman-core/templates.rb +14 -8
  60. data/lib/middleman-core/util.rb +31 -9
  61. data/lib/middleman-core/version.rb +1 -1
  62. data/lib/middleman-core.rb +6 -4
  63. data/middleman-core.gemspec +4 -6
  64. metadata +62 -203
  65. data/lib/middleman-core/vendor/padrino-core-0.10.6/.document +0 -5
  66. data/lib/middleman-core/vendor/padrino-core-0.10.6/.gitignore +0 -22
  67. data/lib/middleman-core/vendor/padrino-core-0.10.6/.yardopts +0 -1
  68. data/lib/middleman-core/vendor/padrino-core-0.10.6/LICENSE.txt +0 -20
  69. data/lib/middleman-core/vendor/padrino-core-0.10.6/README.rdoc +0 -294
  70. data/lib/middleman-core/vendor/padrino-core-0.10.6/Rakefile +0 -5
  71. data/lib/middleman-core/vendor/padrino-core-0.10.6/bin/padrino +0 -9
  72. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/application/rendering.rb +0 -292
  73. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/application/routing.rb +0 -943
  74. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/application/showexceptions.rb +0 -20
  75. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/application.rb +0 -269
  76. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/caller.rb +0 -53
  77. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/cli/adapter.rb +0 -24
  78. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/cli/base.rb +0 -150
  79. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/cli/console.rb +0 -20
  80. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/cli/rake.rb +0 -24
  81. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/cli/rake_tasks.rb +0 -59
  82. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/command.rb +0 -38
  83. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/images/404.png +0 -0
  84. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/images/500.png +0 -0
  85. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/loader.rb +0 -211
  86. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/cs.yml +0 -34
  87. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/da.yml +0 -34
  88. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/de.yml +0 -34
  89. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/en.yml +0 -34
  90. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/es.yml +0 -34
  91. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/fr.yml +0 -34
  92. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/hu.yml +0 -34
  93. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/it.yml +0 -40
  94. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/ja.yml +0 -34
  95. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/lv.yml +0 -34
  96. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/nl.yml +0 -34
  97. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/no.yml +0 -35
  98. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/pl.yml +0 -34
  99. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/pt_br.yml +0 -40
  100. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/ru.yml +0 -35
  101. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/tr.yml +0 -34
  102. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/uk.yml +0 -34
  103. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/zh_cn.yml +0 -34
  104. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/locale/zh_tw.yml +0 -34
  105. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/logger.rb +0 -428
  106. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/mounter.rb +0 -224
  107. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/reloader.rb +0 -254
  108. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/router.rb +0 -98
  109. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/server.rb +0 -79
  110. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/support_lite.rb +0 -199
  111. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/tasks.rb +0 -21
  112. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/version.rb +0 -20
  113. data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core.rb +0 -152
  114. data/lib/middleman-core/vendor/padrino-core-0.10.6/padrino-core.gemspec +0 -38
  115. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/apps/.components +0 -6
  116. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/apps/.gitignore +0 -7
  117. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/apps/complex.rb +0 -32
  118. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/apps/simple.rb +0 -33
  119. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/dependencies/a.rb +0 -9
  120. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/dependencies/b.rb +0 -4
  121. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/dependencies/c.rb +0 -1
  122. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/dependencies/circular/e.rb +0 -13
  123. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/dependencies/circular/f.rb +0 -2
  124. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/dependencies/circular/g.rb +0 -2
  125. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/fixtures/dependencies/d.rb +0 -4
  126. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/helper.rb +0 -83
  127. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/mini_shoulda.rb +0 -45
  128. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_application.rb +0 -108
  129. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_core.rb +0 -77
  130. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_dependencies.rb +0 -44
  131. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_filters.rb +0 -278
  132. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_locale.rb +0 -21
  133. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_logger.rb +0 -154
  134. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_mounter.rb +0 -177
  135. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_reloader_complex.rb +0 -75
  136. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_reloader_simple.rb +0 -98
  137. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_rendering.rb +0 -461
  138. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_restful_routing.rb +0 -33
  139. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_router.rb +0 -146
  140. data/lib/middleman-core/vendor/padrino-core-0.10.6/test/test_routing.rb +0 -1680
  141. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/.document +0 -5
  142. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/.gitignore +0 -21
  143. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/.yardopts +0 -1
  144. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/LICENSE.txt +0 -20
  145. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/README.rdoc +0 -239
  146. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/Rakefile +0 -5
  147. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/asset_tag_helpers.rb +0 -417
  148. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/form_builder/abstract_form_builder.rb +0 -251
  149. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -43
  150. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/form_helpers.rb +0 -787
  151. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/format_helpers.rb +0 -381
  152. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/cs.yml +0 -103
  153. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/da.yml +0 -91
  154. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/de.yml +0 -81
  155. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/en.yml +0 -103
  156. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/es.yml +0 -103
  157. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/fr.yml +0 -80
  158. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/hu.yml +0 -103
  159. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/it.yml +0 -89
  160. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/ja.yml +0 -103
  161. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/lv.yml +0 -103
  162. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/nl.yml +0 -82
  163. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/no.yml +0 -91
  164. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/pl.yml +0 -95
  165. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/pt_br.yml +0 -103
  166. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/ru.yml +0 -103
  167. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/tr.yml +0 -103
  168. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/uk.yml +0 -103
  169. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/zh_cn.yml +0 -104
  170. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/locale/zh_tw.yml +0 -103
  171. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/number_helpers.rb +0 -288
  172. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -98
  173. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/output_helpers/erb_handler.rb +0 -79
  174. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -63
  175. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/output_helpers/slim_handler.rb +0 -81
  176. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/output_helpers.rb +0 -175
  177. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/render_helpers.rb +0 -60
  178. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/tag_helpers.rb +0 -260
  179. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/translation_helpers.rb +0 -38
  180. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers.rb +0 -59
  181. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/padrino-helpers.gemspec +0 -27
  182. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/app.rb +0 -73
  183. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/capture_concat.erb +0 -14
  184. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/capture_concat.haml +0 -12
  185. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/capture_concat.slim +0 -13
  186. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/content_for.erb +0 -14
  187. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/content_for.haml +0 -12
  188. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/content_for.slim +0 -12
  189. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/content_tag.erb +0 -11
  190. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/content_tag.haml +0 -9
  191. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/content_tag.slim +0 -9
  192. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/current_engine.erb +0 -5
  193. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/current_engine.haml +0 -5
  194. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/current_engine.slim +0 -5
  195. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/fields_for.erb +0 -20
  196. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/fields_for.haml +0 -15
  197. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/fields_for.slim +0 -15
  198. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/form_for.erb +0 -72
  199. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/form_for.haml +0 -59
  200. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/form_for.slim +0 -59
  201. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/form_tag.erb +0 -86
  202. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/form_tag.haml +0 -70
  203. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/form_tag.slim +0 -70
  204. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/link_to.erb +0 -5
  205. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/link_to.haml +0 -4
  206. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/link_to.slim +0 -4
  207. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/mail_to.erb +0 -3
  208. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/mail_to.haml +0 -3
  209. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/mail_to.slim +0 -3
  210. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/meta_tag.erb +0 -3
  211. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/meta_tag.haml +0 -3
  212. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/meta_tag.slim +0 -3
  213. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/partials/_erb.erb +0 -1
  214. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/partials/_haml.haml +0 -1
  215. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
  216. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/simple_partial.erb +0 -1
  217. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/simple_partial.haml +0 -1
  218. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/markup_app/views/simple_partial.slim +0 -1
  219. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/app.rb +0 -50
  220. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/current_engine.haml +0 -5
  221. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/current_engines/_erb.erb +0 -1
  222. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/current_engines/_haml.haml +0 -1
  223. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/current_engines/_slim.slim +0 -1
  224. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/erb/test.erb +0 -1
  225. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/explicit_engine.haml +0 -5
  226. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/haml/test.haml +0 -1
  227. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/template/_user.haml +0 -7
  228. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/template/haml_template.haml +0 -1
  229. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/fixtures/render_app/views/template/some_template.haml +0 -2
  230. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/helper.rb +0 -66
  231. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_asset_tag_helpers.rb +0 -328
  232. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_form_builder.rb +0 -1106
  233. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_form_helpers.rb +0 -770
  234. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_format_helpers.rb +0 -227
  235. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_locale.rb +0 -20
  236. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_number_helpers.rb +0 -139
  237. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_output_helpers.rb +0 -153
  238. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_render_helpers.rb +0 -76
  239. data/lib/middleman-core/vendor/padrino-helpers-0.10.6/test/test_tag_helpers.rb +0 -106
  240. data/lib/middleman-core/watcher.rb +0 -196
@@ -1,7 +1,3 @@
1
- # Built on Rack
2
- require "rack"
3
- require "rack/file"
4
-
5
1
  # Using Tilt for templating
6
2
  require "tilt"
7
3
 
@@ -12,6 +8,8 @@ require "active_support/json"
12
8
  require "middleman-core/vendor/hooks-0.2.0/lib/hooks"
13
9
 
14
10
  require "middleman-core/sitemap"
11
+
12
+ require "middleman-core/core_extensions"
15
13
 
16
14
  # Core Middleman Class
17
15
  module Middleman
@@ -26,97 +24,6 @@ module Middleman
26
24
  define_hook :ready
27
25
 
28
26
  class << self
29
-
30
- # Reset Rack setup
31
- #
32
- # @private
33
- def reset!
34
- @app = nil
35
- @prototype = nil
36
- end
37
-
38
- # The shared Rack instance being build
39
- #
40
- # @private
41
- # @return [Rack::Builder]
42
- def app
43
- @app ||= Rack::Builder.new
44
- end
45
-
46
- # Get the static instance
47
- #
48
- # @private
49
- # @return [Middleman::Application]
50
- def inst(&block)
51
- @inst ||= begin
52
- mm = new(&block)
53
- mm.run_hook :ready
54
- mm
55
- end
56
- end
57
-
58
- # Set the shared instance
59
- #
60
- # @private
61
- # @param [Middleman::Application] inst
62
- # @return [void]
63
- def inst=(inst)
64
- @inst = inst
65
- end
66
-
67
- # Return built Rack app
68
- #
69
- # @private
70
- # @return [Rack::Builder]
71
- def to_rack_app(&block)
72
- inner_app = inst(&block)
73
-
74
- (@middleware || []).each do |m|
75
- app.use(m[0], *m[1], &m[2])
76
- end
77
-
78
- app.map("/") { run inner_app }
79
-
80
- (@mappings || []).each do |m|
81
- app.map(m[0], &m[1])
82
- end
83
-
84
- app
85
- end
86
-
87
- # Prototype app. Used in config.ru
88
- #
89
- # @private
90
- # @return [Rack::Builder]
91
- def prototype
92
- @prototype ||= to_rack_app
93
- end
94
-
95
- # Call prototype, use in config.ru
96
- #
97
- # @private
98
- def call(env)
99
- prototype.call(env)
100
- end
101
-
102
- # Use Rack middleware
103
- #
104
- # @param [Class] Middleware
105
- # @return [void]
106
- def use(middleware, *args, &block)
107
- @middleware ||= []
108
- @middleware << [middleware, args, block]
109
- end
110
-
111
- # Add Rack App mapped to specific path
112
- #
113
- # @param [String] Path to map
114
- # @return [void]
115
- def map(map, &block)
116
- @mappings ||= []
117
- @mappings << [map, block]
118
- end
119
-
120
27
  # Mix-in helper methods. Accepts either a list of Modules
121
28
  # and/or a block to be evaluated
122
29
  # @return [void]
@@ -135,8 +42,8 @@ module Middleman
135
42
 
136
43
  # Set class-wide defaults
137
44
  #
138
- # @param [Symbol] Unique key name
139
- # @param Default value
45
+ # @param [Symbol] key Unique key name
46
+ # @param value Default value
140
47
  # @return [void]
141
48
  def set(key, value=nil, &block)
142
49
  @defaults ||= {}
@@ -145,11 +52,13 @@ module Middleman
145
52
  @inst.set(key, value, &block) if @inst
146
53
  end
147
54
  end
148
-
55
+
56
+ delegate :helpers, :to => :"self.class"
57
+
149
58
  # Set attributes (global variables)
150
59
  #
151
- # @param [Symbol] Name of the attribue
152
- # @param Attribute value
60
+ # @param [Symbol] key Name of the attribue
61
+ # @param value Attribute value
153
62
  # @return [void]
154
63
  def set(key, value=nil, &block)
155
64
  setter = "#{key}=".to_sym
@@ -212,6 +121,9 @@ module Middleman
212
121
 
213
122
  # Activate custom features and extensions
214
123
  include Middleman::CoreExtensions::Extensions
124
+
125
+ # Basic Rack Request Handling
126
+ include Middleman::CoreExtensions::Request
215
127
 
216
128
  # Handle exceptions
217
129
  register Middleman::CoreExtensions::ShowExceptions
@@ -224,13 +136,14 @@ module Middleman
224
136
 
225
137
  # Activate Data package
226
138
  register Middleman::CoreExtensions::Data
227
-
228
- # Parse YAML from templates
229
- register Middleman::CoreExtensions::FrontMatter
230
139
 
231
140
  # Setup custom rendering
232
141
  register Middleman::CoreExtensions::Rendering
233
142
 
143
+ # Parse YAML from templates. Must be before sitemap so sitemap
144
+ # extensions see updated frontmatter!
145
+ register Middleman::CoreExtensions::FrontMatter
146
+
234
147
  # Sitemap
235
148
  register Middleman::Sitemap
236
149
 
@@ -250,34 +163,34 @@ module Middleman
250
163
  register Middleman::CoreExtensions::I18n
251
164
 
252
165
  # Built-in Extensions
253
- Middleman::Extensions.register(:directory_indexes) {
254
- Middleman::Extensions::DirectoryIndexes }
255
- Middleman::Extensions.register(:lorem) {
256
- Middleman::Extensions::Lorem }
257
- Middleman::Extensions.register(:automatic_image_sizes) {
258
- Middleman::Extensions::AutomaticImageSizes }
259
- Middleman::Extensions.register(:asset_host) {
260
- Middleman::Extensions::AssetHost }
261
-
262
- # Backwards-compatibility with old request.path signature
263
- attr :request
264
-
265
- # Accessor for current path
266
- # @return [String]
267
- def current_path
268
- @_current_path
166
+
167
+ # Provide Apache-style index.html files for directories
168
+ Middleman::Extensions.register(:directory_indexes) do
169
+ require "middleman-core/extensions/directory_indexes"
170
+ Middleman::Extensions::DirectoryIndexes
269
171
  end
270
-
271
- # Set the current path
272
- #
273
- # @param [String] path The new current path
274
- # @return [void]
275
- def current_path=(path)
276
- @_current_path = path
277
- @request = ::Thor::CoreExt::HashWithIndifferentAccess.new({
278
- :path => path,
279
- :params => req ? ::Thor::CoreExt::HashWithIndifferentAccess.new(req.params) : {}
280
- })
172
+
173
+ # Lorem provides a handful of helpful prototyping methods to generate
174
+ # words, paragraphs, fake images, names and email addresses.
175
+ Middleman::Extensions.register(:lorem) do
176
+ require "middleman-core/extensions/lorem"
177
+ Middleman::Extensions::Lorem
178
+ end
179
+
180
+ # AutomaticImageSizes inspects the images used in your dynamic templates
181
+ # and automatically adds width and height attributes to their HTML
182
+ # elements.
183
+ Middleman::Extensions.register(:automatic_image_sizes) do
184
+ require "middleman-core/extensions/automatic_image_sizes"
185
+ Middleman::Extensions::AutomaticImageSizes
186
+ end
187
+
188
+ # AssetHost allows you to setup multiple domains to host your static
189
+ # assets. Calls to asset paths in dynamic templates will then rotate
190
+ # through each of the asset servers to better spread the load.
191
+ Middleman::Extensions.register(:asset_host) do
192
+ require "middleman-core/extensions/asset_host"
193
+ Middleman::Extensions::AssetHost
281
194
  end
282
195
 
283
196
  # Initialize the Middleman project
@@ -311,60 +224,7 @@ module Middleman
311
224
  @_cache ||= ::Middleman::Util::Cache.new
312
225
  end
313
226
  delegate :cache, :to => :"self.class"
314
-
315
- # Rack env
316
- attr :env
317
-
318
- # Rack request
319
- # @return [Rack::Request]
320
- attr :req
321
-
322
- # Rack response
323
- # @return [Rack::Response]
324
- attr :res
325
-
326
- # Rack Interface
327
- #
328
- # @private
329
- # @param Rack environment
330
- def call(env)
331
- # Store environment, request and response for later
332
- @env = env
333
- @req = Rack::Request.new(env)
334
- @res = Rack::Response.new
335
227
 
336
- if env["PATH_INFO"] == "/__middleman__"
337
- if env["REQUEST_METHOD"] == "POST"
338
- if req.params.has_key?("change")
339
- self.files.did_change(req.params["change"])
340
- elsif req.params.has_key?("delete")
341
- self.files.did_delete(req.params["delete"])
342
- end
343
- end
344
-
345
- res.status = 200
346
- return res.finish
347
- end
348
-
349
- puts "== Request: #{env["PATH_INFO"]}" if logging?
350
-
351
- # Catch :halt exceptions and use that response if given
352
- catch(:halt) do
353
- process_request
354
-
355
- res.status = 404
356
- res.finish
357
- end
358
- end
359
-
360
- # Halt the current request and return a response
361
- #
362
- # @private
363
- # @param [String] Response value
364
- def halt(response)
365
- throw :halt, response
366
- end
367
-
368
228
  # Whether we're in development mode
369
229
  # @return [Boolean] If we're in dev mode
370
230
  def development?; environment == :development; end
@@ -372,55 +232,6 @@ module Middleman
372
232
  # Whether we're in build mode
373
233
  # @return [Boolean] If we're in build mode
374
234
  def build?; environment == :build; end
375
-
376
- # Core response method. We process the request, check with the sitemap,
377
- # and return the correct file, response or status message.
378
- #
379
- # @private
380
- def process_request
381
- # Normalize the path and add index if we're looking at a directory
382
- @original_path = env["PATH_INFO"].dup
383
- @escaped_path = @original_path.gsub("%20", " ")
384
- @request_path = full_path(@escaped_path)
385
-
386
- # Run before callbacks
387
- run_hook :before
388
-
389
- if @escaped_path != @request_path
390
- # Get the resource object for this path
391
- resource = sitemap.find_resource_by_destination_path(@escaped_path)
392
- end
393
-
394
- # Get the resource object for this full path
395
- resource ||= sitemap.find_resource_by_destination_path(@request_path)
396
-
397
- # Return 404 if not in sitemap
398
- return not_found unless resource && !resource.ignored?
399
-
400
- # If this path is a static file, send it immediately
401
- return send_file(resource.source_file) unless resource.template?
402
-
403
- # Set the current path for use in helpers
404
- self.current_path = @request_path.dup
405
-
406
- # Set a HTTP content type based on the request's extensions
407
- content_type resource.mime_type
408
-
409
- begin
410
- # Write out the contents of the page
411
- res.write resource.render
412
-
413
- # Valid content is a 200 status
414
- res.status = 200
415
- rescue Middleman::CoreExtensions::Rendering::TemplateNotFound => e
416
- res.write "Error: #{e.message}"
417
- res.status = 500
418
- end
419
-
420
- # End the request
421
- puts "== Finishing Request: #{self.current_path}" if logging?
422
- halt res.finish
423
- end
424
235
 
425
236
  # Backwards compatibilty with old Sinatra template interface
426
237
  #
@@ -451,108 +262,5 @@ module Middleman
451
262
  end
452
263
  end
453
264
 
454
- # Add a new mime-type for a specific extension
455
- #
456
- # @param [Symbol] type File extension
457
- # @param [String] value Mime type
458
- # @return [void]
459
- def mime_type(type, value=nil)
460
- return type if type.nil? || type.to_s.include?('/')
461
- type = ".#{type}" unless type.to_s[0] == ?.
462
- return ::Rack::Mime.mime_type(type, nil) unless value
463
- ::Rack::Mime::MIME_TYPES[type] = value
464
- end
465
-
466
- protected
467
-
468
- # Halt request and return 404
469
- def not_found
470
- @res.status == 404
471
- @res.write "<html><body><h1>File Not Found</h1><p>#{@request_path}</p></body>"
472
- @res.finish
473
- end
474
-
475
- delegate :helpers, :use, :map, :to => :"self.class"
476
-
477
- # Immediately send static file
478
- #
479
- # @param [String] path File to send
480
- def send_file(path)
481
- extension = File.extname(path)
482
- matched_mime = mime_type(extension)
483
- matched_mime = "application/octet-stream" if matched_mime.nil?
484
- content_type matched_mime
485
-
486
- file = ::Rack::File.new nil
487
- file.path = path
488
- response = file.serving(env)
489
- response[1]['Content-Encoding'] = 'gzip' if %w(.svgz).include?(extension)
490
- halt response
491
- end
492
-
493
- # Set the content type for the current request
494
- #
495
- # @param [String] type Content type
496
- # @param [Hash] params
497
- # @return [void]
498
- def content_type(type = nil, params={})
499
- return res['Content-Type'] unless type
500
- default = params.delete :default
501
- mime_type = mime_type(type) || default
502
- throw "Unknown media type: %p" % type if mime_type.nil?
503
- mime_type = mime_type.dup
504
- unless params.include? :charset
505
- params[:charset] = params.delete('charset') || "utf-8"
506
- end
507
- params.delete :charset if mime_type.include? 'charset'
508
- unless params.empty?
509
- mime_type << (mime_type.include?(';') ? ', ' : ';')
510
- mime_type << params.map { |kv| kv.join('=') }.join(', ')
511
- end
512
- res['Content-Type'] = mime_type
513
- end
514
- end
515
-
516
- class << self
517
- # Create a new Class which is based on Middleman::Application
518
- # Used to create a safe sandbox into which extensions and
519
- # configuration can be included later without impacting
520
- # other classes and instances.
521
- #
522
- # @return [Class]
523
- def server(&block)
524
- @@servercounter ||= 1
525
- @@servercounter += 1
526
- const_set("MiddlemanApplication#{@@servercounter}", Class.new(Middleman::Application))
527
- end
528
-
529
- # Creates a new Rack::Server
530
- #
531
- # @param [Hash] options to pass to Rack::Server.new
532
- # @return [Rack::Server]
533
- def start_server(options={})
534
- require "webrick"
535
-
536
- opts = {
537
- :Port => options[:port] || 4567,
538
- :Host => options[:host] || "0.0.0.0",
539
- :AccessLog => []
540
- }
541
-
542
- # opts[:Logger] = WEBrick::Log::new("/dev/null", 7) if !options[:logging]
543
-
544
- app_class = options[:app] ||= ::Middleman.server.inst
545
- opts[:app] = app_class
546
-
547
- # Disable for Beta 1. See if people notice.
548
- require "thin"
549
- ::Thin::Logging.silent = !options[:logging]
550
- opts[:server] = 'thin'
551
- # opts[:server] = 'webrick'
552
-
553
- server = ::Rack::Server.new(opts)
554
- server.start
555
- server
556
- end
557
265
  end
558
266
  end
@@ -61,7 +61,7 @@ module Middleman::Cli
61
61
  #
62
62
  # @return [Middleman::Application]
63
63
  def shared_instance(verbose=false)
64
- @_shared_instance ||= ::Middleman.server.inst do
64
+ @_shared_instance ||= ::Middleman::Application.server.inst do
65
65
  set :environment, :build
66
66
  set :logging, verbose
67
67
  end
@@ -104,7 +104,8 @@ module Middleman::Cli
104
104
  output_file = File.join(build_dir, resource.destination_path)
105
105
 
106
106
  begin
107
- response = self.class.shared_rack.get(resource.destination_path.gsub(/\s/, "%20"))
107
+ response = self.class.shared_rack.get(URI.escape(resource.destination_path))
108
+
108
109
  if response.status == 200
109
110
  create_file(output_file, response.body, { :force => true })
110
111
  else
@@ -196,19 +197,25 @@ module Middleman::Cli
196
197
  sort_order = %w(.png .jpeg .jpg .gif .bmp .svg .svgz .ico .woff .otf .ttf .eot .js .css)
197
198
 
198
199
  # Pre-request CSS to give Compass a chance to build sprites
200
+ puts "== Prerendering CSS" if @app.logging?
201
+
199
202
  @app.sitemap.resources.select do |resource|
200
203
  resource.ext == ".css"
201
204
  end.each do |resource|
202
- Middleman::Cli::Build.shared_rack.get(resource.destination_path.gsub(/\s/, "%20"))
205
+ Middleman::Cli::Build.shared_rack.get(URI.escape(resource.destination_path))
203
206
  end
204
207
 
208
+ puts "== Checking for Compass sprites" if @app.logging?
209
+
205
210
  # Double-check for compass sprites
206
- @app.files.reload_path(File.join(@app.source_dir, @app.images_dir))
211
+ @app.files.find_new_files(File.join(@app.source_dir, @app.images_dir))
207
212
 
208
213
  # Sort paths to be built by the above order. This is primarily so Compass can
209
214
  # find files in the build folder when it needs to generate sprites for the
210
215
  # css files
211
216
 
217
+ puts "== Building files" if @app.logging?
218
+
212
219
  resources = @app.sitemap.resources.sort do |a, b|
213
220
  a_idx = sort_order.index(a.ext) || 100
214
221
  b_idx = sort_order.index(b.ext) || 100
@@ -0,0 +1,40 @@
1
+ # CLI Module
2
+ module Middleman::Cli
3
+
4
+ # A initializing Bundler
5
+ class Bundle < Thor
6
+ include Thor::Actions
7
+ check_unknown_options!
8
+
9
+ namespace :bundle
10
+
11
+ desc "bundle", "Setup initial bundle", :hide => true
12
+
13
+ # The setup task
14
+ def bundle
15
+ run('bundle install --without development test')#, :capture => true)
16
+ end
17
+ end
18
+
19
+ # A upgrading Bundler
20
+ class Upgrade < Thor
21
+ include Thor::Actions
22
+ check_unknown_options!
23
+
24
+ namespace :upgrade
25
+
26
+ desc "upgrade", "Upgrade installed bundle"
27
+
28
+ # The upgrade task
29
+ def upgrade
30
+ inside(ENV["MM_ROOT"]) do
31
+ run('bundle update')#, :capture => true)
32
+ end
33
+ end
34
+ end
35
+
36
+ # Map "u" to "upgrade"
37
+ Base.map({
38
+ "u" => "upgrade"
39
+ })
40
+ end
@@ -0,0 +1,36 @@
1
+ # CLI Module
2
+ module Middleman::Cli
3
+
4
+ # A thor task for creating new projects
5
+ class Extension < Thor
6
+ include Thor::Actions
7
+
8
+ check_unknown_options!
9
+
10
+ namespace :extension
11
+
12
+ # Required path for the new project to be generated
13
+ argument :name, :type => :string
14
+
15
+ desc "extension NAME [options]", "Create Middleman extension scaffold NAME"
16
+
17
+ # The extension task
18
+ # @param [String] name
19
+ def extension
20
+ template "Rakefile", File.join(name, "Rakefile")
21
+ template "gemspec", File.join(name, "#{name}.gemspec")
22
+ template "Gemfile", File.join(name, "Gemfile")
23
+ template "lib/middleman_extension.rb", File.join(name, "lib", "middleman_extension.rb")
24
+ template "lib/lib.rb", File.join(name, "lib", "#{name}.rb")
25
+ template "features/support/env.rb", File.join(name, "features", "support", "env.rb")
26
+ empty_directory File.join(name, "fixtures")
27
+ end
28
+
29
+ # Template files are relative to this file
30
+ # @return [String]
31
+ def self.source_root
32
+ File.join(File.dirname(__FILE__), "..", "templates", "extension")
33
+ end
34
+
35
+ end
36
+ end
@@ -1,4 +1,4 @@
1
- require "middleman-core/watcher"
1
+ require "middleman-core/preview_server"
2
2
 
3
3
  # CLI Module
4
4
  module Middleman::Cli
@@ -50,7 +50,7 @@ module Middleman::Cli
50
50
  }
51
51
 
52
52
  puts "== The Middleman is loading"
53
- Middleman::Watcher.start(params)
53
+ Middleman::PreviewServer.start(params)
54
54
  end
55
55
  end
56
56
 
@@ -5,12 +5,6 @@ require "thor/group"
5
5
  # CLI Module
6
6
  module Middleman::Cli
7
7
 
8
- module Cli
9
- autoload :Build, "middleman-core/cli/build"
10
- autoload :Init, "middleman-core/cli/init"
11
- autoload :Server, "middleman-core/cli/server"
12
- end
13
-
14
8
  # The base task from which everything else etends
15
9
  class Base < Thor
16
10
 
@@ -73,5 +67,7 @@ end
73
67
 
74
68
  # Include the core CLI items
75
69
  require "middleman-core/cli/init"
70
+ require "middleman-core/cli/bundler"
71
+ require "middleman-core/cli/extension"
76
72
  require "middleman-core/cli/server"
77
73
  require "middleman-core/cli/build"
@@ -1,39 +1,43 @@
1
- # Base helper to manipulate asset paths
2
- module Middleman::CoreExtensions::Assets
1
+ module Middleman
2
+ module CoreExtensions
3
+
4
+ # Base helper to manipulate asset paths
5
+ module Assets
3
6
 
4
- # Extension registered
5
- class << self
6
- # @private
7
- def registered(app)
8
- # Disable Padrino cache buster
9
- app.set :asset_stamp, false
7
+ # Extension registered
8
+ class << self
9
+ def registered(app)
10
+ # Disable Padrino cache buster
11
+ app.set :asset_stamp, false
10
12
 
11
- # Include helpers
12
- app.send :include, InstanceMethod
13
- end
14
- alias :included :registered
15
- end
13
+ # Include helpers
14
+ app.send :include, InstanceMethod
15
+ end
16
+ alias :included :registered
17
+ end
16
18
 
17
- # Methods to be mixed-in to Middleman::Application
18
- module InstanceMethod
19
+ # Methods to be mixed-in to Middleman::Application
20
+ module InstanceMethod
19
21
 
20
- # Get the URL of an asset given a type/prefix
21
- #
22
- # @param [String] path The path (such as "photo.jpg")
23
- # @param [String] prefix The type prefix (such as "images")
24
- # @return [String] The fully qualified asset url
25
- def asset_url(path, prefix="")
26
- # Don't touch assets which already have a full path
27
- if path.include?("//")
28
- path
29
- else # rewrite paths to use their destination path
30
- path = File.join(prefix, path)
31
- if resource = sitemap.find_resource_by_path(path)
32
- path = resource.destination_path
33
- end
22
+ # Get the URL of an asset given a type/prefix
23
+ #
24
+ # @param [String] path The path (such as "photo.jpg")
25
+ # @param [String] prefix The type prefix (such as "images")
26
+ # @return [String] The fully qualified asset url
27
+ def asset_url(path, prefix="")
28
+ # Don't touch assets which already have a full path
29
+ if path.include?("//")
30
+ path
31
+ else # rewrite paths to use their destination path
32
+ path = File.join(prefix, path)
33
+ if resource = sitemap.find_resource_by_path(path)
34
+ path = resource.destination_path
35
+ end
34
36
 
35
- File.join(http_prefix, path)
37
+ File.join(http_prefix, path)
38
+ end
39
+ end
36
40
  end
37
41
  end
38
42
  end
39
- end
43
+ end