middleman-core 3.2.0 → 3.2.1

Sign up to get free protection for your applications and to get access to all the features.
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'