middleman-core 3.2.0 → 3.2.1

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 (241) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +10 -0
  3. data/features/helpers_auto_javascript_include_tag.feature +21 -0
  4. data/features/helpers_auto_stylesheet_link_tag.feature +21 -0
  5. data/features/i18n_builder.feature +23 -13
  6. data/features/i18n_preview.feature +9 -9
  7. data/features/markdown_kramdown.feature +1 -1
  8. data/fixtures/i18n-test-app/source/{layout.erb → layouts/layout.erb} +0 -0
  9. data/fixtures/i18n-test-app/source/{morning.en.html.erb → localizable/morning.en.html.erb} +0 -0
  10. data/fixtures/i18n-test-app/source/{morning.es.html.erb → localizable/morning.es.html.erb} +0 -0
  11. data/fixtures/i18n-test-app/source/{one.en.md → localizable/one.en.md} +0 -0
  12. data/fixtures/i18n-test-app/source/{one.es.md → localizable/one.es.md} +0 -0
  13. data/lib/middleman-core/application.rb +4 -0
  14. data/lib/middleman-core/cli/build.rb +14 -2
  15. data/lib/middleman-core/cli/init.rb +1 -0
  16. data/lib/middleman-core/core_extensions.rb +6 -1
  17. data/lib/middleman-core/core_extensions/file_watcher.rb +1 -0
  18. data/lib/middleman-core/core_extensions/request.rb +2 -4
  19. data/lib/middleman-core/extensions.rb +13 -5
  20. data/lib/middleman-core/meta_pages.rb +25 -11
  21. data/lib/middleman-core/meta_pages/sitemap_resource.rb +2 -2
  22. data/lib/middleman-core/meta_pages/templates/config.html.erb +7 -9
  23. data/lib/middleman-core/meta_pages/templates/index.html.erb +3 -3
  24. data/lib/middleman-core/meta_pages/templates/sitemap.html.erb +6 -6
  25. data/lib/middleman-core/sitemap/extensions/redirects.rb +1 -2
  26. data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +2 -3
  27. data/lib/middleman-core/sitemap/resource.rb +7 -13
  28. data/lib/middleman-core/util.rb +2 -3
  29. data/lib/middleman-core/version.rb +1 -1
  30. data/lib/middleman-more/core_extensions/default_helpers.rb +9 -5
  31. data/lib/middleman-more/core_extensions/i18n.rb +17 -10
  32. data/lib/middleman-more/extensions/{automatic-alt-tags.rb → automatic_alt_tags.rb} +0 -0
  33. data/lib/middleman-more/extensions/gzip.rb +29 -6
  34. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.document +0 -0
  35. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.gitignore +0 -0
  36. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.yardopts +0 -0
  37. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/LICENSE.txt +0 -0
  38. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/README.rdoc +5 -5
  39. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/Rakefile +0 -0
  40. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/bin/padrino +0 -0
  41. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core.rb +4 -10
  42. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application.rb +39 -35
  43. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/flash.rb +7 -7
  44. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering.rb +317 -0
  45. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/rendering/extensions/erubis.rb +15 -6
  46. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/rendering/extensions/haml.rb +2 -0
  47. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/rendering/extensions/slim.rb +0 -0
  48. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/routing.rb +406 -368
  49. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/showexceptions.rb +21 -0
  50. data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/caller.rb +53 -0
  51. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/adapter.rb +4 -4
  52. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/base.rb +40 -39
  53. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/console.rb +0 -0
  54. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/rake.rb +2 -2
  55. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/rake_tasks.rb +2 -4
  56. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/command.rb +2 -2
  57. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/images/404.png +0 -0
  58. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/images/500.png +0 -0
  59. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/loader.rb +14 -15
  60. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/cs.yml +0 -1
  61. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/da.yml +0 -1
  62. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/de.yml +0 -1
  63. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/en.yml +0 -1
  64. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/es.yml +1 -2
  65. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/fr.yml +2 -3
  66. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/hu.yml +1 -2
  67. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/it.yml +0 -1
  68. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ja.yml +1 -2
  69. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/lv.yml +0 -1
  70. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/nl.yml +0 -1
  71. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/no.yml +0 -2
  72. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/pl.yml +0 -1
  73. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/pt_br.yml +0 -1
  74. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ro.yml +0 -1
  75. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ru.yml +0 -1
  76. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/sv.yml +0 -1
  77. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/tr.yml +0 -1
  78. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/uk.yml +0 -1
  79. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/zh_cn.yml +0 -1
  80. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/zh_tw.yml +0 -1
  81. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/logger.rb +30 -36
  82. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/module.rb +3 -3
  83. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/mounter.rb +59 -59
  84. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/reloader.rb +23 -23
  85. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/router.rb +10 -13
  86. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/server.rb +17 -19
  87. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/support_lite.rb +0 -0
  88. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/tasks.rb +3 -3
  89. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/version.rb +1 -1
  90. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/padrino-core.gemspec +2 -2
  91. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/Gemfile +0 -0
  92. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/app/app.rb +0 -0
  93. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/app_gem.gemspec +0 -0
  94. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/lib/app_gem.rb +0 -0
  95. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/lib/app_gem/version.rb +0 -0
  96. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/.components +0 -0
  97. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/.gitignore +0 -0
  98. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/complex.rb +0 -0
  99. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/simple.rb +0 -0
  100. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/a.rb +0 -0
  101. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/b.rb +0 -0
  102. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/c.rb +0 -0
  103. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/e.rb +0 -0
  104. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/f.rb +0 -0
  105. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/g.rb +0 -0
  106. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/d.rb +0 -0
  107. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/helper.rb +0 -0
  108. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/mini_shoulda.rb +0 -0
  109. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_application.rb +7 -7
  110. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_core.rb +0 -0
  111. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_csrf_protection.rb +0 -0
  112. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_dependencies.rb +0 -0
  113. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_filters.rb +0 -0
  114. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_flash.rb +0 -0
  115. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_locale.rb +0 -0
  116. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_logger.rb +29 -0
  117. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_mounter.rb +0 -0
  118. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_reloader_complex.rb +0 -0
  119. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_reloader_simple.rb +0 -0
  120. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_rendering.rb +15 -2
  121. data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering_extensions.rb +14 -0
  122. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_restful_routing.rb +0 -0
  123. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_router.rb +0 -0
  124. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_routing.rb +69 -11
  125. data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_support_lite.rb +0 -0
  126. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.document +0 -0
  127. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.gitignore +0 -0
  128. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.yardopts +0 -0
  129. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/LICENSE.txt +0 -0
  130. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/README.rdoc +1 -1
  131. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/Rakefile +0 -0
  132. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers.rb +3 -6
  133. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/asset_tag_helpers.rb +34 -42
  134. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/breadcrumb_helpers.rb +183 -0
  135. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/form_builder/abstract_form_builder.rb +126 -118
  136. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/form_builder/standard_form_builder.rb +6 -9
  137. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/form_helpers.rb +252 -195
  138. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/format_helpers.rb +29 -42
  139. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/cs.yml +14 -14
  140. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/da.yml +1 -1
  141. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/de.yml +1 -1
  142. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/en.yml +16 -16
  143. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/es.yml +16 -16
  144. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/fr.yml +1 -2
  145. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/hu.yml +16 -16
  146. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/it.yml +2 -2
  147. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ja.yml +16 -16
  148. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/lv.yml +16 -16
  149. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/nl.yml +1 -1
  150. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/no.yml +1 -1
  151. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/pl.yml +7 -7
  152. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/pt_br.yml +16 -16
  153. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ro.yml +16 -16
  154. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ru.yml +16 -16
  155. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/sv.yml +16 -16
  156. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/tr.yml +16 -16
  157. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/uk.yml +16 -16
  158. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/zh_cn.yml +16 -16
  159. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/zh_tw.yml +16 -16
  160. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/number_helpers.rb +10 -15
  161. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers.rb +50 -58
  162. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/abstract_handler.rb +16 -18
  163. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/erb_handler.rb +11 -12
  164. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/haml_handler.rb +9 -9
  165. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers/slim_handler.rb +11 -13
  166. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/render_helpers.rb +5 -6
  167. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/tag_helpers.rb +26 -22
  168. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/translation_helpers.rb +4 -6
  169. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/padrino-helpers.gemspec +0 -0
  170. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/app.rb +7 -3
  171. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.erb +8 -0
  172. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.haml +5 -0
  173. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.slim +6 -0
  174. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/capture_concat.erb +0 -0
  175. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/capture_concat.haml +0 -0
  176. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/capture_concat.slim +0 -0
  177. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_for.erb +0 -0
  178. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_for.haml +0 -0
  179. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_for.slim +0 -0
  180. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_tag.erb +0 -0
  181. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_tag.haml +0 -0
  182. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/content_tag.slim +0 -0
  183. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/current_engine.erb +0 -0
  184. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/current_engine.haml +0 -0
  185. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/current_engine.slim +0 -0
  186. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/fields_for.erb +0 -0
  187. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/fields_for.haml +0 -0
  188. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/fields_for.slim +0 -0
  189. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_for.erb +0 -0
  190. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_for.haml +0 -0
  191. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_for.slim +0 -0
  192. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_tag.erb +9 -0
  193. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_tag.haml +8 -0
  194. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/form_tag.slim +9 -0
  195. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/link_to.erb +0 -0
  196. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/link_to.haml +0 -0
  197. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/link_to.slim +0 -0
  198. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/mail_to.erb +0 -0
  199. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/mail_to.haml +0 -0
  200. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/mail_to.slim +0 -0
  201. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/meta_tag.erb +0 -0
  202. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/meta_tag.haml +0 -0
  203. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/meta_tag.slim +0 -0
  204. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/partials/_erb.erb +0 -0
  205. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/partials/_haml.haml +0 -0
  206. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/partials/_slim.slim +0 -0
  207. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/simple_partial.erb +0 -0
  208. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/simple_partial.haml +0 -0
  209. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/views/simple_partial.slim +0 -0
  210. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/app.rb +1 -0
  211. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engine.haml +0 -0
  212. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engines/_erb.erb +0 -0
  213. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engines/_haml.haml +0 -0
  214. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/current_engines/_slim.slim +0 -0
  215. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/double_capture_erb.erb +0 -0
  216. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/double_capture_haml.haml +0 -0
  217. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/double_capture_slim.slim +0 -0
  218. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/erb/test.erb +0 -0
  219. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/explicit_engine.haml +0 -0
  220. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/haml/test.haml +0 -0
  221. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/template/_user.haml +0 -0
  222. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/template/haml_template.haml +0 -0
  223. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/views/template/some_template.haml +0 -0
  224. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/helper.rb +0 -0
  225. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_asset_tag_helpers.rb +9 -3
  226. data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_breadcrumb_helpers.rb +134 -0
  227. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_form_builder.rb +38 -6
  228. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_form_helpers.rb +230 -12
  229. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_format_helpers.rb +3 -3
  230. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_locale.rb +0 -0
  231. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_number_helpers.rb +4 -0
  232. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_output_helpers.rb +1 -1
  233. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_render_helpers.rb +1 -1
  234. data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_tag_helpers.rb +3 -3
  235. data/middleman-core.gemspec +7 -8
  236. data/spec/spec_helper.rb +1 -1
  237. metadata +220 -215
  238. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering.rb +0 -320
  239. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/showexceptions.rb +0 -20
  240. data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/caller.rb +0 -53
  241. data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/breadcrumb_helpers.rb +0 -171
@@ -1,15 +1,17 @@
1
+ require 'padrino-core/application/flash'
1
2
  require 'padrino-core/application/rendering'
2
3
  require 'padrino-core/application/routing'
3
- require 'padrino-core/application/flash'
4
4
  require 'padrino-core/application/showexceptions'
5
5
 
6
6
  module Padrino
7
- class ApplicationSetupError < RuntimeError # @private
7
+ class ApplicationSetupError < RuntimeError
8
8
  end
9
9
 
10
10
  ##
11
- # Subclasses of this become independent Padrino applications (stemming from Sinatra::Application)
12
- # These subclassed applications can be easily mounted into other Padrino applications as well.
11
+ # Subclasses of this become independent Padrino applications
12
+ # (stemming from Sinatra::Application).
13
+ # These subclassed applications can be easily mounted into other
14
+ # Padrino applications as well.
13
15
  #
14
16
  class Application < Sinatra::Base
15
17
  # Support for advanced routing, controllers, url_for
@@ -25,8 +27,7 @@ module Padrino
25
27
  end
26
28
 
27
29
  class << self
28
-
29
- def inherited(base) # @private
30
+ def inherited(base)
30
31
  begun_at = Time.now
31
32
  CALLERS_TO_IGNORE.concat(PADRINO_IGNORE_CALLERS)
32
33
  base.default_configuration!
@@ -42,7 +43,7 @@ module Padrino
42
43
  end
43
44
 
44
45
  ##
45
- # Reloads the application files from all defined load paths
46
+ # Reloads the application files from all defined load paths.
46
47
  #
47
48
  # This method is used from our Padrino Reloader during development mode
48
49
  # in order to reload the source files.
@@ -54,19 +55,19 @@ module Padrino
54
55
  #
55
56
  def reload!
56
57
  logger.devel "Reloading #{settings}"
57
- reset! # Reset sinatra app
58
- reset_router! # Reset all routes
58
+ reset!
59
+ reset_router!
59
60
  Padrino.require_dependencies(settings.app_file, :force => true) # Reload the app file
60
- require_dependencies # Reload dependencies
61
- default_filters! # Reload filters
62
- default_routes! # Reload default routes
63
- default_errors! # Reload our errors
64
- I18n.reload! if defined?(I18n) # Reload also our translations
61
+ require_dependencies
62
+ default_filters!
63
+ default_routes!
64
+ default_errors!
65
+ I18n.reload! if defined?(I18n)
65
66
  true
66
67
  end
67
68
 
68
69
  ##
69
- # Resets application routes to only routes not defined by the user
70
+ # Resets application routes to only routes not defined by the user.
70
71
  #
71
72
  # @return [TrueClass]
72
73
  #
@@ -90,8 +91,8 @@ module Padrino
90
91
  end
91
92
 
92
93
  ##
93
- # Setup the application by registering initializers, load paths and logger
94
- # Invoked automatically when an application is first instantiated
94
+ # Setup the application by registering initializers, load paths and logger.
95
+ # Invoked automatically when an application is first instantiated.
95
96
  #
96
97
  # @return [TrueClass]
97
98
  #
@@ -111,7 +112,7 @@ module Padrino
111
112
 
112
113
  ##
113
114
  # Run the Padrino app as a self-hosted server using
114
- # Thin, Mongrel or WEBrick (in that order)
115
+ # Thin, Mongrel or WEBrick (in that order).
115
116
  #
116
117
  # @see Padrino::Server#start
117
118
  #
@@ -130,8 +131,8 @@ module Padrino
130
131
  end
131
132
 
132
133
  ##
133
- # Returns default list of path globs to load as dependencies
134
- # Appends custom dependency patterns to the be loaded for your Application
134
+ # Returns default list of path globs to load as dependencies.
135
+ # Appends custom dependency patterns to the be loaded for your Application.
135
136
  #
136
137
  # @return [Array]
137
138
  # list of path globs to load as dependencies
@@ -148,7 +149,8 @@ module Padrino
148
149
  end
149
150
 
150
151
  ##
151
- # An array of file to load before your app.rb, basically are files wich our app depends on.
152
+ # An array of file to load before your app.rb, basically are files
153
+ # which our app depends on.
152
154
  #
153
155
  # By default we look for files:
154
156
  #
@@ -158,7 +160,7 @@ module Padrino
158
160
  # yourapp/lib.rb
159
161
  # yourapp/lib/**/*.rb
160
162
  #
161
- # @example Adding a custom perequisite
163
+ # @example Adding a custom prerequisite
162
164
  # MyApp.prerequisites << Padrino.root('my_app', 'custom_model.rb')
163
165
  #
164
166
  def prerequisites
@@ -167,7 +169,7 @@ module Padrino
167
169
 
168
170
  protected
169
171
  ##
170
- # Defines default settings for Padrino application
172
+ # Defines default settings for Padrino application.
171
173
  #
172
174
  def default_configuration!
173
175
  # Overwriting Sinatra defaults
@@ -181,15 +183,17 @@ module Padrino
181
183
  set :views, Proc.new { File.join(root, 'views') }
182
184
  set :images_path, Proc.new { File.join(public_folder, 'images') }
183
185
  set :protection, true
184
- # Haml specific
186
+
185
187
  set :haml, { :ugly => (Padrino.env == :production) } if defined?(Haml)
188
+
186
189
  # Padrino specific
187
190
  set :uri_root, '/'
188
191
  set :app_name, settings.to_s.underscore.to_sym
189
192
  set :default_builder, 'StandardFormBuilder'
190
193
  set :authentication, false
191
- # Padrino locale
194
+
192
195
  set :locale_path, Proc.new { Dir[File.join(settings.root, '/locale/**/*.{rb,yml}')] }
196
+
193
197
  # Authenticity token
194
198
  set :protect_from_csrf, false
195
199
  set :allow_disabled_csrf, false
@@ -211,19 +215,19 @@ module Padrino
211
215
  end
212
216
 
213
217
  ##
214
- # This filter it's used for know the format of the request, and automatically set the content type.
218
+ # This filter it's used for know the format of the request, and
219
+ # automatically set the content type.
215
220
  #
216
221
  def default_filters!
217
222
  before do
218
223
  unless @_content_type
219
- @_content_type = :html
220
224
  response['Content-Type'] = 'text/html;charset=utf-8'
221
225
  end
222
226
  end
223
227
  end
224
228
 
225
229
  ##
226
- # This log errors for production environments
230
+ # This log errors for production environments.
227
231
  #
228
232
  def default_errors!
229
233
  configure :production do
@@ -238,7 +242,7 @@ module Padrino
238
242
  end
239
243
 
240
244
  ##
241
- # Requires all files within the application load paths
245
+ # Requires all files within the application load paths.
242
246
  #
243
247
  def require_dependencies
244
248
  Padrino.set_load_paths(*load_paths)
@@ -246,8 +250,8 @@ module Padrino
246
250
  end
247
251
 
248
252
  private
249
- # Overrides the default middleware for Sinatra based on Padrino conventions
250
- # Also initializes the application after setting up the middleware
253
+ # Overrides the default middleware for Sinatra based on Padrino conventions.
254
+ # Also initializes the application after setting up the middleware.
251
255
  def setup_default_middleware(builder)
252
256
  setup_sessions builder
253
257
  builder.use Padrino::ShowExceptions if show_exceptions?
@@ -261,7 +265,7 @@ module Padrino
261
265
  setup_application!
262
266
  end
263
267
 
264
- # sets up csrf protection for the app
268
+ # sets up csrf protection for the app:
265
269
  def setup_csrf_protection(builder)
266
270
  if protect_from_csrf? && !sessions?
267
271
  raise(<<-ERROR)
@@ -288,6 +292,6 @@ ERROR
288
292
  end
289
293
  end
290
294
  end
291
- end # self
292
- end # Application
293
- end # Padrino
295
+ end
296
+ end
297
+ end
@@ -2,14 +2,13 @@ module Padrino
2
2
  module Flash
3
3
 
4
4
  class << self
5
- # @private
6
5
  def registered(app)
7
6
  app.helpers Helpers
8
7
  app.after do
9
8
  session[:_flash] = @_flash.next if @_flash
10
9
  end
11
10
  end
12
- end # self
11
+ end
13
12
 
14
13
  class Storage
15
14
  include Enumerable
@@ -178,7 +177,8 @@ module Padrino
178
177
 
179
178
  module Helpers
180
179
  ###
181
- # Overloads the existing redirect helper in-order to provide support for flash messages
180
+ # Overloads the existing redirect helper in-order to provide support for
181
+ # flash messages.
182
182
  #
183
183
  # @overload redirect(url)
184
184
  # @param [String] url
@@ -215,7 +215,7 @@ module Padrino
215
215
  alias_method :redirect_to, :redirect
216
216
 
217
217
  ###
218
- # Returns the flash storage object
218
+ # Returns the flash storage object.
219
219
  #
220
220
  # @return [Storage]
221
221
  #
@@ -224,6 +224,6 @@ module Padrino
224
224
  def flash
225
225
  @_flash ||= Storage.new(env['rack.session'] ? session[:_flash] : {})
226
226
  end
227
- end # Helpers
228
- end # Flash
229
- end # Padrino
227
+ end
228
+ end
229
+ end
@@ -0,0 +1,317 @@
1
+ require 'padrino-core/support_lite' unless defined?(SupportLite)
2
+
3
+ module Padrino
4
+ ##
5
+ # Padrino enhances the Sinatra 'render' method to have support for
6
+ # automatic template engine detection, enhanced layout functionality,
7
+ # locale enabled rendering, among other features.
8
+ #
9
+ module Rendering
10
+ ##
11
+ # A SafeTemplate assumes that its output is safe.
12
+ #
13
+ module SafeTemplate
14
+ def render(*)
15
+ super.html_safe
16
+ end
17
+ end
18
+
19
+ ##
20
+ # Exception responsible for when an expected template did not exist.
21
+ #
22
+ class TemplateNotFound < RuntimeError
23
+ end
24
+
25
+ ##
26
+ # This is an array of file patterns to ignore. If your editor add a
27
+ # suffix during editing to your files please add it like:
28
+ #
29
+ # @example
30
+ # Padrino::Rendering::IGNORE_FILE_PATTERN << /~$/
31
+ #
32
+ IGNORE_FILE_PATTERN = [
33
+ /~$/ # This is for Gedit
34
+ ] unless defined?(IGNORE_FILE_PATTERN)
35
+
36
+ ##
37
+ # Default options used in the resolve_template-method.
38
+ #
39
+ DEFAULT_RENDERING_OPTIONS = { :strict_format => false, :raise_exceptions => true } unless defined?(DEFAULT_RENDERING_OPTIONS)
40
+
41
+ class << self
42
+ ##
43
+ # Default engine configurations for Padrino::Rendering.
44
+ #
45
+ # @return {Hash<Symbol,Hash>}
46
+ # The configurations, keyed by engine.
47
+ def engine_configurations
48
+ @engine_configurations ||= {}
49
+ end
50
+
51
+ def registered(app)
52
+ included(app)
53
+ engine_configurations.each do |engine, configs|
54
+ app.set engine, configs
55
+ end
56
+ end
57
+
58
+ def included(base)
59
+ base.send(:include, InstanceMethods)
60
+ base.extend(ClassMethods)
61
+ end
62
+ end
63
+
64
+ ##
65
+ # Class methods responsible for rendering templates as part of a request.
66
+ #
67
+ module ClassMethods
68
+ ##
69
+ # Use layout like rails does or if a block given then like sinatra.
70
+ # If used without a block, sets the current layout for the route.
71
+ #
72
+ # By default, searches in your:
73
+ #
74
+ # +app+/+views+/+layouts+/+application+.(+haml+|+erb+|+xxx+)
75
+ # +app+/+views+/+layout_name+.(+haml+|+erb+|+xxx+)
76
+ #
77
+ # If you define +layout+ :+custom+ then searches for your layouts in
78
+ # +app+/+views+/+layouts+/+custom+.(+haml+|+erb+|+xxx+)
79
+ # +app+/+views+/+custom+.(+haml+|+erb+|+xxx+)
80
+ #
81
+ # @param [Symbol] name (:layout)
82
+ # The layout to use.
83
+ #
84
+ # @yield []
85
+ #
86
+ def layout(name=:layout, &block)
87
+ return super(name, &block) if block_given?
88
+ @layout = name
89
+ end
90
+
91
+ ##
92
+ # Returns the cached template file to render for a given url,
93
+ # content_type and locale.
94
+ #
95
+ # @param [Array<template_path, content_type, locale>] render_options
96
+ #
97
+ def fetch_template_file(render_options)
98
+ (@_cached_templates ||= {})[render_options]
99
+ end
100
+
101
+ ##
102
+ # Caches the template file for the given rendering options.
103
+ #
104
+ # @param [String] template_file
105
+ # The path of the template file.
106
+ #
107
+ # @param [Array<template_path, content_type, locale>] render_options
108
+ #
109
+ def cache_template_file!(template_file, render_options)
110
+ (@_cached_templates ||= {})[render_options] = template_file || []
111
+ end
112
+
113
+ ##
114
+ # Returns the cached layout path.
115
+ #
116
+ # @param [Symbol, nil] given_layout
117
+ # The requested layout.
118
+ #
119
+ def fetch_layout_path(given_layout=nil)
120
+ layout_name = given_layout || @layout || :application
121
+ @_cached_layout ||= {}
122
+ cached_layout_path = @_cached_layout[layout_name]
123
+ return cached_layout_path if cached_layout_path
124
+ has_layout_at_root = Dir["#{views}/#{layout_name}.*"].any?
125
+ layout_path = has_layout_at_root ? layout_name.to_sym : File.join('layouts', layout_name.to_s).to_sym
126
+ @_cached_layout[layout_name] = layout_path unless reload_templates?
127
+ layout_path
128
+ end
129
+ end
130
+
131
+ # Instance methods that allow enhanced rendering to function properly in Padrino.
132
+ module InstanceMethods
133
+ attr_reader :current_engine
134
+
135
+ ##
136
+ # Get/Set the content_type
137
+ #
138
+ # @param [String, nil] type
139
+ # The Content-Type to use.
140
+ #
141
+ # @param [Symbol, nil] type.
142
+ # Look and parse the given symbol to the matched Content-Type.
143
+ #
144
+ # @param [Hash] params
145
+ # Additional params to append to the Content-Type.
146
+ #
147
+ # @example
148
+ # case content_type
149
+ # when :js then do_some
150
+ # when :css then do_another
151
+ # end
152
+ #
153
+ # content_type :js
154
+ # # => set the response with 'application/javascript' Content-Type
155
+ # content_type 'text/html'
156
+ #
157
+ # # => set directly the Content-Type to 'text/html'
158
+ #
159
+ def content_type(type=nil, params={})
160
+ unless type.nil?
161
+ super(type, params)
162
+ @_content_type = type
163
+ end
164
+ @_content_type
165
+ end
166
+
167
+ private
168
+ ##
169
+ # Enhancing Sinatra render functionality for:
170
+ #
171
+ # * Using layout similar to rails
172
+ # * Use render 'path/to/my/template' (without symbols)
173
+ # * Use render 'path/to/my/template' (with engine lookup)
174
+ # * Use render 'path/to/template.haml' (with explicit engine lookup)
175
+ # * Use render 'path/to/template', :layout => false
176
+ # * Use render 'path/to/template', :layout => false, :engine => 'haml'
177
+ #
178
+ def render(engine, data=nil, options={}, locals={}, &block)
179
+
180
+ # If engine is nil, ignore engine parameter and shift up all arguments
181
+ # render nil, "index", { :layout => true }, { :localvar => "foo" }
182
+ engine, data, options = data, options, locals if engine.nil? && data
183
+
184
+ # Data is a hash of options when no engine isn't explicit
185
+ # render "index", { :layout => true }, { :localvar => "foo" }
186
+ # Data is options, and options is locals in this case
187
+ data, options, locals = nil, data, options if data.is_a?(Hash)
188
+
189
+ # If data is unassigned then this is a likely a template to be resolved
190
+ # This means that no engine was explicitly defined
191
+ data, engine = *resolve_template(engine, options.dup) if data.nil?
192
+
193
+ # Use @layout if it exists
194
+ layout_was = options[:layout]
195
+ options[:layout] = @layout if options[:layout].nil? || options[:layout] == true
196
+ # Resolve layouts similar to in Rails
197
+ if options[:layout].nil? && !settings.templates.has_key?(:layout)
198
+ layout_path, layout_engine = *resolved_layout
199
+
200
+ # We need to force layout false so sinatra don't try to render it
201
+ options[:layout] = layout_path || false
202
+ options[:layout] = false unless layout_engine == engine # TODO allow different layout engine
203
+ options[:layout_engine] = layout_engine || engine if options[:layout]
204
+ elsif options[:layout].present?
205
+ options[:layout] = settings.fetch_layout_path(options[:layout] || @layout)
206
+ end
207
+ # Default to original layout value if none found.
208
+ options[:layout] ||= layout_was
209
+
210
+ # Cleanup the template.
211
+ @current_engine, engine_was = engine, @current_engine
212
+ @_out_buf, _buf_was = ActiveSupport::SafeBuffer.new, @_out_buf
213
+
214
+ # Pass arguments to Sinatra render method.
215
+ super(engine, data, options.dup, locals, &block)
216
+ ensure
217
+ @current_engine = engine_was
218
+ @_out_buf = _buf_was
219
+ end
220
+
221
+ ##
222
+ # Returns the located layout tuple to be used for the rendered template
223
+ # (if available).
224
+ #
225
+ # @example
226
+ # resolve_layout
227
+ # # => ["/layouts/custom", :erb]
228
+ # # => [nil, nil]
229
+ #
230
+ def resolved_layout
231
+ located_layout = resolve_template(settings.fetch_layout_path, :raise_exceptions => false, :strict_format => true)
232
+ located_layout ? located_layout : [nil, nil]
233
+ end
234
+
235
+ ##
236
+ # Returns the template path and engine that match content_type (if present),
237
+ # I18n.locale.
238
+ #
239
+ # @param [String] template_path
240
+ # The path of the template.
241
+ #
242
+ # @param [Hash] options
243
+ # Additional options.
244
+ #
245
+ # @option options [Boolean] :strict_format (false)
246
+ # The resolved template must match the content_type of the request.
247
+ #
248
+ # @option options [Boolean] :raise_exceptions (false)
249
+ # Raises a {TemplateNotFound} exception if the template cannot be located.
250
+ #
251
+ # @return [Array<Symbol, Symbol>]
252
+ # The path and format of the template.
253
+ #
254
+ # @raise [TemplateNotFound]
255
+ # The template could not be found.
256
+ #
257
+ # @example
258
+ # get "/foo", :provides => [:html, :js] do; render 'path/to/foo'; end
259
+ # # If you request "/foo.js" with I18n.locale == :ru => [:"/path/to/foo.ru.js", :erb]
260
+ # # If you request "/foo" with I18n.locale == :de => [:"/path/to/foo.de.haml", :haml]
261
+ #
262
+ def resolve_template(template_path, options={})
263
+ began_at = Time.now
264
+ _content_type = content_type || :html
265
+ # Fetch cached template for rendering options
266
+ template_path = template_path.to_s[0] == ?/ ? template_path.to_s : "/#{template_path}"
267
+ rendering_options = [template_path, _content_type, locale]
268
+ cached_template = settings.fetch_template_file(rendering_options)
269
+ if cached_template
270
+ logger.debug :cached, began_at, cached_template[0] if settings.logging? && defined?(logger)
271
+ return cached_template
272
+ end
273
+
274
+ # Resolve view path and options.
275
+ options.reverse_merge!(DEFAULT_RENDERING_OPTIONS)
276
+ view_path = options.delete(:views) || settings.views || "./views"
277
+ target_extension = File.extname(template_path)[1..-1] || "none" # explicit template extension
278
+ template_path = template_path.chomp(".#{target_extension}")
279
+
280
+ # Generate potential template candidates
281
+ templates = Dir[File.join(view_path, template_path) + ".*"].map do |file|
282
+ template_engine = File.extname(file)[1..-1].to_sym # Retrieves engine extension
283
+ template_file = file.sub(view_path, '').chomp(".#{template_engine}").to_sym # retrieves template filename
284
+ [template_file, template_engine] unless IGNORE_FILE_PATTERN.any? { |pattern| template_engine.to_s =~ pattern }
285
+ end
286
+
287
+ # Check if we have a simple content type
288
+ simple_content_type = [:html, :plain].include?(_content_type)
289
+
290
+ # Resolve final template to render
291
+ located_template =
292
+ templates.find { |file, e| file.to_s == "#{template_path}.#{locale}.#{_content_type}" } ||
293
+ templates.find { |file, e| file.to_s == "#{template_path}.#{locale}" && simple_content_type } ||
294
+ templates.find { |file, e| File.extname(file.to_s) == ".#{target_extension}" or e.to_s == target_extension.to_s } ||
295
+ templates.find { |file, e| file.to_s == "#{template_path}.#{_content_type}" } ||
296
+ templates.find { |file, e| file.to_s == "#{template_path}" && simple_content_type } ||
297
+ (!options[:strict_format] && templates.first) # If not strict, fall back to the first located template.
298
+
299
+ raise TemplateNotFound, "Template '#{template_path}' not found in '#{view_path}'!" if !located_template && options[:raise_exceptions]
300
+ settings.cache_template_file!(located_template, rendering_options) unless settings.reload_templates?
301
+ logger.debug :template, began_at, located_template[0] if located_template && settings.logging? && defined?(logger)
302
+ located_template
303
+ end
304
+
305
+ ##
306
+ # Return the I18n.locale if I18n is defined.
307
+ #
308
+ def locale
309
+ I18n.locale if defined?(I18n)
310
+ end
311
+ end
312
+ end
313
+ end
314
+
315
+ require 'padrino-core/application/rendering/extensions/haml'
316
+ require 'padrino-core/application/rendering/extensions/erubis'
317
+ require 'padrino-core/application/rendering/extensions/slim'