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.
- checksums.yaml +4 -4
- data/.yardopts +10 -0
- data/features/helpers_auto_javascript_include_tag.feature +21 -0
- data/features/helpers_auto_stylesheet_link_tag.feature +21 -0
- data/features/i18n_builder.feature +23 -13
- data/features/i18n_preview.feature +9 -9
- data/features/markdown_kramdown.feature +1 -1
- data/fixtures/i18n-test-app/source/{layout.erb → layouts/layout.erb} +0 -0
- data/fixtures/i18n-test-app/source/{morning.en.html.erb → localizable/morning.en.html.erb} +0 -0
- data/fixtures/i18n-test-app/source/{morning.es.html.erb → localizable/morning.es.html.erb} +0 -0
- data/fixtures/i18n-test-app/source/{one.en.md → localizable/one.en.md} +0 -0
- data/fixtures/i18n-test-app/source/{one.es.md → localizable/one.es.md} +0 -0
- data/lib/middleman-core/application.rb +4 -0
- data/lib/middleman-core/cli/build.rb +14 -2
- data/lib/middleman-core/cli/init.rb +1 -0
- data/lib/middleman-core/core_extensions.rb +6 -1
- data/lib/middleman-core/core_extensions/file_watcher.rb +1 -0
- data/lib/middleman-core/core_extensions/request.rb +2 -4
- data/lib/middleman-core/extensions.rb +13 -5
- data/lib/middleman-core/meta_pages.rb +25 -11
- data/lib/middleman-core/meta_pages/sitemap_resource.rb +2 -2
- data/lib/middleman-core/meta_pages/templates/config.html.erb +7 -9
- data/lib/middleman-core/meta_pages/templates/index.html.erb +3 -3
- data/lib/middleman-core/meta_pages/templates/sitemap.html.erb +6 -6
- data/lib/middleman-core/sitemap/extensions/redirects.rb +1 -2
- data/lib/middleman-core/sitemap/extensions/request_endpoints.rb +2 -3
- data/lib/middleman-core/sitemap/resource.rb +7 -13
- data/lib/middleman-core/util.rb +2 -3
- data/lib/middleman-core/version.rb +1 -1
- data/lib/middleman-more/core_extensions/default_helpers.rb +9 -5
- data/lib/middleman-more/core_extensions/i18n.rb +17 -10
- data/lib/middleman-more/extensions/{automatic-alt-tags.rb → automatic_alt_tags.rb} +0 -0
- data/lib/middleman-more/extensions/gzip.rb +29 -6
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.document +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.gitignore +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/.yardopts +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/LICENSE.txt +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/README.rdoc +5 -5
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/Rakefile +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/bin/padrino +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core.rb +4 -10
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application.rb +39 -35
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/flash.rb +7 -7
- data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering.rb +317 -0
- 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
- 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
- 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
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/application/routing.rb +406 -368
- data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/showexceptions.rb +21 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/caller.rb +53 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/adapter.rb +4 -4
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/base.rb +40 -39
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/console.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/rake.rb +2 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/cli/rake_tasks.rb +2 -4
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/command.rb +2 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/images/404.png +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/images/500.png +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/loader.rb +14 -15
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/cs.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/da.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/de.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/en.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/es.yml +1 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/fr.yml +2 -3
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/hu.yml +1 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/it.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ja.yml +1 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/lv.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/nl.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/no.yml +0 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/pl.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/pt_br.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ro.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/ru.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/sv.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/tr.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/uk.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/zh_cn.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/locale/zh_tw.yml +0 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/logger.rb +30 -36
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/module.rb +3 -3
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/mounter.rb +59 -59
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/reloader.rb +23 -23
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/router.rb +10 -13
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/server.rb +17 -19
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/support_lite.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/tasks.rb +3 -3
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/lib/padrino-core/version.rb +1 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/padrino-core.gemspec +2 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/Gemfile +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/app/app.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/app_gem/app_gem.gemspec +0 -0
- 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
- 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
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/.components +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/.gitignore +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/complex.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/apps/simple.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/a.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/b.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/c.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/e.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/f.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/circular/g.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/fixtures/dependencies/d.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/helper.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/mini_shoulda.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_application.rb +7 -7
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_core.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_csrf_protection.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_dependencies.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_filters.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_flash.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_locale.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_logger.rb +29 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_mounter.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_reloader_complex.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_reloader_simple.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_rendering.rb +15 -2
- data/lib/vendored-middleman-deps/padrino-core-0.11.4/test/test_rendering_extensions.rb +14 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_restful_routing.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_router.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_routing.rb +69 -11
- data/lib/vendored-middleman-deps/{padrino-core-0.11.2 → padrino-core-0.11.4}/test/test_support_lite.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.document +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.gitignore +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/.yardopts +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/LICENSE.txt +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/README.rdoc +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/Rakefile +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers.rb +3 -6
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/asset_tag_helpers.rb +34 -42
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/lib/padrino-helpers/breadcrumb_helpers.rb +183 -0
- 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
- 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
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/form_helpers.rb +252 -195
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/format_helpers.rb +29 -42
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/cs.yml +14 -14
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/da.yml +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/de.yml +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/en.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/es.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/fr.yml +1 -2
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/hu.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/it.yml +2 -2
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ja.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/lv.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/nl.yml +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/no.yml +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/pl.yml +7 -7
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/pt_br.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ro.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/ru.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/sv.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/tr.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/uk.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/zh_cn.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/locale/zh_tw.yml +16 -16
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/number_helpers.rb +10 -15
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/output_helpers.rb +50 -58
- 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
- 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
- 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
- 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
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/render_helpers.rb +5 -6
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/tag_helpers.rb +26 -22
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/lib/padrino-helpers/translation_helpers.rb +4 -6
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/padrino-helpers.gemspec +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/markup_app/app.rb +7 -3
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.erb +8 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.haml +5 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/fixtures/markup_app/views/button_to.slim +6 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/fixtures/render_app/app.rb +1 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/helper.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_asset_tag_helpers.rb +9 -3
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.4/test/test_breadcrumb_helpers.rb +134 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_form_builder.rb +38 -6
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_form_helpers.rb +230 -12
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_format_helpers.rb +3 -3
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_locale.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_number_helpers.rb +4 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_output_helpers.rb +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_render_helpers.rb +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.11.2 → padrino-helpers-0.11.4}/test/test_tag_helpers.rb +3 -3
- data/middleman-core.gemspec +7 -8
- data/spec/spec_helper.rb +1 -1
- metadata +220 -215
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering.rb +0 -320
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/showexceptions.rb +0 -20
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/caller.rb +0 -53
- 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
|
|
7
|
+
class ApplicationSetupError < RuntimeError
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
##
|
|
11
|
-
# Subclasses of this become independent Padrino applications
|
|
12
|
-
#
|
|
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!
|
|
58
|
-
reset_router!
|
|
58
|
+
reset!
|
|
59
|
+
reset_router!
|
|
59
60
|
Padrino.require_dependencies(settings.app_file, :force => true) # Reload the app file
|
|
60
|
-
require_dependencies
|
|
61
|
-
default_filters!
|
|
62
|
-
default_routes!
|
|
63
|
-
default_errors!
|
|
64
|
-
I18n.reload! if defined?(I18n)
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
292
|
-
end
|
|
293
|
-
end
|
|
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
|
|
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
|
|
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
|
|
228
|
-
end
|
|
229
|
-
end
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
end
|
data/lib/vendored-middleman-deps/padrino-core-0.11.4/lib/padrino-core/application/rendering.rb
ADDED
|
@@ -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'
|