middleman-core 3.1.0.rc.2 → 3.1.0.rc.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.simplecov +2 -1
- data/features/capture_html.feature +18 -0
- data/features/content_for.feature +3 -3
- data/features/v4_extension_callbacks.feature +8 -0
- data/fixtures/capture-html-app/config.rb +7 -0
- data/fixtures/capture-html-app/source/capture_html_erb.html.erb +5 -0
- data/fixtures/capture-html-app/source/capture_html_haml.html.haml +4 -0
- data/fixtures/capture-html-app/source/capture_html_slim.html.slim +4 -0
- data/fixtures/capture-html-app/source/layouts/capture_html.erb +4 -0
- data/fixtures/content-for-app/source/content_for_erb.html.erb +1 -1
- data/fixtures/content-for-app/source/content_for_haml.html.haml +1 -1
- data/fixtures/content-for-app/source/content_for_slim.html.slim +2 -1
- data/fixtures/v4-extension-callbacks/config.rb +26 -0
- data/fixtures/v4-extension-callbacks/source/index.html.erb +2 -0
- data/lib/middleman-core/core_extensions/extensions.rb +6 -1
- data/lib/middleman-core/core_extensions/file_watcher.rb +1 -0
- data/lib/middleman-core/core_extensions/rendering.rb +1 -2
- data/lib/middleman-core/core_extensions/request.rb +2 -2
- data/lib/middleman-core/extensions.rb +21 -0
- data/lib/middleman-core/meta_pages/sitemap_resource.rb +4 -1
- data/lib/middleman-core/version.rb +1 -1
- data/lib/middleman-more/core_extensions/default_helpers.rb +17 -3
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.document +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.gitignore +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/.yardopts +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/LICENSE.txt +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/README.rdoc +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/Rakefile +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/bin/padrino +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core.rb +58 -4
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application.rb +40 -16
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/flash.rb +229 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/rendering.rb +39 -11
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/erubis.rb +55 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/haml.rb +26 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/application/rendering/extensions/slim.rb +14 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/routing.rb +133 -37
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/application/showexceptions.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/caller.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/adapter.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/base.rb +41 -38
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/console.rb +0 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/cli/rake.rb +47 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/cli/rake_tasks.rb +9 -14
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/command.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/images/404.png +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/images/500.png +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/loader.rb +23 -9
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/cs.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/da.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/de.yml +6 -6
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/en.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/es.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/fr.yml +1 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/hu.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/it.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ja.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/lv.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/nl.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/no.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/pl.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/pt_br.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ro.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/ru.yml +1 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/sv.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/tr.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/uk.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/zh_cn.yml +11 -11
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/locale/zh_tw.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/logger.rb +48 -32
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/lib/padrino-core/module.rb +58 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/mounter.rb +15 -5
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/reloader.rb +139 -52
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/router.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/server.rb +5 -5
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/support_lite.rb +59 -6
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/tasks.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/lib/padrino-core/version.rb +1 -1
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/padrino-core.gemspec +10 -5
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/Gemfile +4 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/app/app.rb +3 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/app_gem.gemspec +17 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/lib/app_gem.rb +7 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/fixtures/app_gem/lib/app_gem/version.rb +3 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/.components +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/.gitignore +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/complex.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/apps/simple.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/a.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/b.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/c.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/e.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/f.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/circular/g.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/fixtures/dependencies/d.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/helper.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/mini_shoulda.rb +2 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_application.rb +38 -21
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_core.rb +0 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_csrf_protection.rb +80 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_dependencies.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_filters.rb +70 -0
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_flash.rb +168 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_locale.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_logger.rb +27 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_mounter.rb +24 -2
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_reloader_complex.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_reloader_simple.rb +4 -4
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_rendering.rb +75 -4
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_restful_routing.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_router.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-core-0.10.7 → padrino-core-0.11.2}/test/test_routing.rb +209 -35
- data/lib/vendored-middleman-deps/padrino-core-0.11.2/test/test_support_lite.rb +56 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.document +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.gitignore +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/.yardopts +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/LICENSE.txt +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/README.rdoc +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/Rakefile +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers.rb +2 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/asset_tag_helpers.rb +58 -66
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/lib/padrino-helpers/breadcrumb_helpers.rb +171 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_builder/abstract_form_builder.rb +84 -26
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/form_helpers.rb +94 -19
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/format_helpers.rb +9 -5
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/cs.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/da.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/de.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/en.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/es.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/fr.yml +12 -12
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/hu.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/it.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ja.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/lv.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/nl.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/no.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/pl.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/pt_br.yml +2 -2
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ro.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/ru.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/sv.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/tr.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/uk.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/zh_cn.yml +13 -14
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/locale/zh_tw.yml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/number_helpers.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers.rb +45 -5
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/erb_handler.rb +3 -3
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/output_helpers/slim_handler.rb +6 -7
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/render_helpers.rb +2 -2
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/tag_helpers.rb +34 -6
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/lib/padrino-helpers/translation_helpers.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/padrino-helpers.gemspec +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/app.rb +13 -6
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.erb +2 -2
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.haml +2 -2
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/capture_concat.slim +4 -5
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_for.slim +4 -4
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_tag.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/content_tag.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/content_tag.slim +9 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.haml +1 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/current_engine.slim +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/fields_for.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/fields_for.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/fields_for.slim +15 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_for.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_for.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/form_for.slim +59 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_tag.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/form_tag.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/form_tag.slim +70 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/link_to.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/link_to.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/link_to.slim +4 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/mail_to.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/mail_to.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/mail_to.slim +3 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/meta_tag.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/meta_tag.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/meta_tag.slim +3 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/partials/_erb.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/partials/_haml.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/simple_partial.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/markup_app/views/simple_partial.haml +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/markup_app/views/simple_partial.slim +1 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/app.rb +7 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engine.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_erb.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_haml.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/current_engines/_slim.slim +0 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_erb.erb +3 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_haml.haml +2 -0
- data/lib/vendored-middleman-deps/padrino-helpers-0.11.2/test/fixtures/render_app/views/double_capture_slim.slim +2 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/erb/test.erb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/explicit_engine.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/haml/test.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/_user.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/haml_template.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/fixtures/render_app/views/template/some_template.haml +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/helper.rb +1 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_asset_tag_helpers.rb +24 -5
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_form_builder.rb +41 -1
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_form_helpers.rb +36 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_format_helpers.rb +14 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_locale.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_number_helpers.rb +0 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_output_helpers.rb +5 -3
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_render_helpers.rb +18 -0
- data/lib/vendored-middleman-deps/{padrino-helpers-0.10.7 → padrino-helpers-0.11.2}/test/test_tag_helpers.rb +11 -0
- data/middleman-core.gemspec +1 -1
- metadata +218 -184
- data/lib/vendored-middleman-deps/padrino-core-0.10.7/lib/padrino-core/cli/rake.rb +0 -25
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/content_tag.slim +0 -9
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/fields_for.slim +0 -15
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_for.slim +0 -59
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/form_tag.slim +0 -70
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/link_to.slim +0 -4
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/mail_to.slim +0 -3
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/meta_tag.slim +0 -3
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/partials/_slim.slim +0 -1
- data/lib/vendored-middleman-deps/padrino-helpers-0.10.7/test/fixtures/markup_app/views/simple_partial.slim +0 -1
- data/spec/middleman-core/sitemap_spec.rb +0 -0
@@ -0,0 +1,229 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Flash
|
3
|
+
|
4
|
+
class << self
|
5
|
+
# @private
|
6
|
+
def registered(app)
|
7
|
+
app.helpers Helpers
|
8
|
+
app.after do
|
9
|
+
session[:_flash] = @_flash.next if @_flash
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end # self
|
13
|
+
|
14
|
+
class Storage
|
15
|
+
include Enumerable
|
16
|
+
|
17
|
+
# @private
|
18
|
+
def initialize(session=nil)
|
19
|
+
@_now = session || {}
|
20
|
+
@_next = {}
|
21
|
+
end
|
22
|
+
|
23
|
+
def now
|
24
|
+
@_now
|
25
|
+
end
|
26
|
+
|
27
|
+
def next
|
28
|
+
@_next
|
29
|
+
end
|
30
|
+
|
31
|
+
# @since 0.10.8
|
32
|
+
# @api public
|
33
|
+
def [](type)
|
34
|
+
@_now[type]
|
35
|
+
end
|
36
|
+
|
37
|
+
# @since 0.10.8
|
38
|
+
# @api public
|
39
|
+
def []=(type, message)
|
40
|
+
@_next[type] = message
|
41
|
+
end
|
42
|
+
|
43
|
+
# @since 0.10.8
|
44
|
+
# @api public
|
45
|
+
def delete(type)
|
46
|
+
@_now.delete(type)
|
47
|
+
self
|
48
|
+
end
|
49
|
+
|
50
|
+
# @since 0.10.8
|
51
|
+
# @api public
|
52
|
+
def keys
|
53
|
+
@_now.keys
|
54
|
+
end
|
55
|
+
|
56
|
+
# @since 0.10.8
|
57
|
+
# @api public
|
58
|
+
def key?(type)
|
59
|
+
@_now.key?(type)
|
60
|
+
end
|
61
|
+
|
62
|
+
# @since 0.10.8
|
63
|
+
# @api public
|
64
|
+
def each(&block)
|
65
|
+
@_now.each(&block)
|
66
|
+
end
|
67
|
+
|
68
|
+
# @since 0.10.8
|
69
|
+
# @api public
|
70
|
+
def replace(hash)
|
71
|
+
@_now.replace(hash)
|
72
|
+
self
|
73
|
+
end
|
74
|
+
|
75
|
+
# @since 0.10.8
|
76
|
+
# @api public
|
77
|
+
def update(hash)
|
78
|
+
@_now.update(hash)
|
79
|
+
self
|
80
|
+
end
|
81
|
+
alias_method :merge!, :update
|
82
|
+
|
83
|
+
# @since 0.10.8
|
84
|
+
# @api public
|
85
|
+
def sweep
|
86
|
+
@_now.replace(@_next)
|
87
|
+
@_next = {}
|
88
|
+
self
|
89
|
+
end
|
90
|
+
|
91
|
+
# @since 0.10.8
|
92
|
+
# @api public
|
93
|
+
def keep(key = nil)
|
94
|
+
if key
|
95
|
+
@_next[key] = @_now[key]
|
96
|
+
else
|
97
|
+
@_next.merge!(@_now)
|
98
|
+
end
|
99
|
+
self
|
100
|
+
end
|
101
|
+
|
102
|
+
# @since 0.10.8
|
103
|
+
# @api public
|
104
|
+
def discard(key = nil)
|
105
|
+
if key
|
106
|
+
@_next.delete(key)
|
107
|
+
else
|
108
|
+
@_next = {}
|
109
|
+
end
|
110
|
+
self
|
111
|
+
end
|
112
|
+
|
113
|
+
# @since 0.10.8
|
114
|
+
# @api public
|
115
|
+
def clear
|
116
|
+
@_now.clear
|
117
|
+
end
|
118
|
+
|
119
|
+
# @since 0.10.8
|
120
|
+
# @api public
|
121
|
+
def empty?
|
122
|
+
@_now.empty?
|
123
|
+
end
|
124
|
+
|
125
|
+
# @since 0.10.8
|
126
|
+
# @api public
|
127
|
+
def to_hash
|
128
|
+
@_now.dup
|
129
|
+
end
|
130
|
+
|
131
|
+
def length
|
132
|
+
@_now.length
|
133
|
+
end
|
134
|
+
alias_method :size, :length
|
135
|
+
|
136
|
+
# @since 0.10.8
|
137
|
+
# @api public
|
138
|
+
def to_s
|
139
|
+
@_now.to_s
|
140
|
+
end
|
141
|
+
|
142
|
+
# @since 0.10.8
|
143
|
+
# @api public
|
144
|
+
def error=(message)
|
145
|
+
self[:error] = message
|
146
|
+
end
|
147
|
+
|
148
|
+
# @since 0.10.8
|
149
|
+
# @api public
|
150
|
+
def error
|
151
|
+
self[:error]
|
152
|
+
end
|
153
|
+
|
154
|
+
# @since 0.10.8
|
155
|
+
# @api public
|
156
|
+
def notice=(message)
|
157
|
+
self[:notice] = message
|
158
|
+
end
|
159
|
+
|
160
|
+
# @since 0.10.8
|
161
|
+
# @api public
|
162
|
+
def notice
|
163
|
+
self[:notice]
|
164
|
+
end
|
165
|
+
|
166
|
+
# @since 0.10.8
|
167
|
+
# @api public
|
168
|
+
def success=(message)
|
169
|
+
self[:success] = message
|
170
|
+
end
|
171
|
+
|
172
|
+
# @since 0.10.8
|
173
|
+
# @api public
|
174
|
+
def success
|
175
|
+
self[:success]
|
176
|
+
end
|
177
|
+
end # Storage
|
178
|
+
|
179
|
+
module Helpers
|
180
|
+
###
|
181
|
+
# Overloads the existing redirect helper in-order to provide support for flash messages
|
182
|
+
#
|
183
|
+
# @overload redirect(url)
|
184
|
+
# @param [String] url
|
185
|
+
#
|
186
|
+
# @overload redirect(url, status_code)
|
187
|
+
# @param [String] url
|
188
|
+
# @param [Fixnum] status_code
|
189
|
+
#
|
190
|
+
# @overload redirect(url, status_code, flash_messages)
|
191
|
+
# @param [String] url
|
192
|
+
# @param [Fixnum] status_code
|
193
|
+
# @param [Hash] flash_messages
|
194
|
+
#
|
195
|
+
# @overload redirect(url, flash_messages)
|
196
|
+
# @param [String] url
|
197
|
+
# @param [Hash] flash_messages
|
198
|
+
#
|
199
|
+
# @example
|
200
|
+
# redirect(dashboard, success: :user_created)
|
201
|
+
# redirect(new_location, 301, notice: 'This page has moved. Please update your bookmarks!!')
|
202
|
+
#
|
203
|
+
# @since 0.10.8
|
204
|
+
# @api public
|
205
|
+
def redirect(url, *args)
|
206
|
+
flashes = args.extract_options!
|
207
|
+
|
208
|
+
flashes.each do |type, message|
|
209
|
+
message = I18n.translate(message) if message.is_a?(Symbol) && defined?(I18n)
|
210
|
+
flash[type] = message
|
211
|
+
end
|
212
|
+
|
213
|
+
super(url, args)
|
214
|
+
end
|
215
|
+
alias_method :redirect_to, :redirect
|
216
|
+
|
217
|
+
###
|
218
|
+
# Returns the flash storage object
|
219
|
+
#
|
220
|
+
# @return [Storage]
|
221
|
+
#
|
222
|
+
# @since 0.10.8
|
223
|
+
# @api public
|
224
|
+
def flash
|
225
|
+
@_flash ||= Storage.new(env['rack.session'] ? session[:_flash] : {})
|
226
|
+
end
|
227
|
+
end # Helpers
|
228
|
+
end # Flash
|
229
|
+
end # Padrino
|
@@ -7,6 +7,16 @@ module Padrino
|
|
7
7
|
# locale enabled rendering, among other features.
|
8
8
|
#
|
9
9
|
module Rendering
|
10
|
+
##
|
11
|
+
# A SafeTemplate assumes that its output is safe.
|
12
|
+
#
|
13
|
+
# @api private
|
14
|
+
module SafeTemplate
|
15
|
+
def render(*)
|
16
|
+
super.html_safe
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
10
20
|
##
|
11
21
|
# Exception responsible for when an expected template did not exist.
|
12
22
|
#
|
@@ -25,19 +35,34 @@ module Padrino
|
|
25
35
|
] unless defined?(IGNORE_FILE_PATTERN)
|
26
36
|
|
27
37
|
##
|
28
|
-
# Default
|
38
|
+
# Default options used in the #resolve_template-method.
|
29
39
|
#
|
30
40
|
DEFAULT_RENDERING_OPTIONS = { :strict_format => false, :raise_exceptions => true } unless defined?(DEFAULT_RENDERING_OPTIONS)
|
31
41
|
|
32
42
|
class << self
|
43
|
+
##
|
44
|
+
# Default engine configurations for Padrino::Rendering
|
45
|
+
#
|
46
|
+
# @return {Hash<Symbol,Hash>}
|
47
|
+
# The configurations, keyed by engine.
|
48
|
+
def engine_configurations
|
49
|
+
@engine_configurations ||= {}
|
50
|
+
end
|
51
|
+
|
33
52
|
##
|
34
53
|
# Main class that register this extension.
|
35
54
|
#
|
36
55
|
def registered(app)
|
37
|
-
app
|
38
|
-
|
56
|
+
included(app)
|
57
|
+
engine_configurations.each do |engine, configs|
|
58
|
+
app.set engine, configs
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def included(base)
|
63
|
+
base.send(:include, InstanceMethods)
|
64
|
+
base.extend(ClassMethods)
|
39
65
|
end
|
40
|
-
alias :included :registered
|
41
66
|
end
|
42
67
|
|
43
68
|
##
|
@@ -152,11 +177,8 @@ module Padrino
|
|
152
177
|
# * Use render 'path/to/template.haml' (with explicit engine lookup)
|
153
178
|
# * Use render 'path/to/template', :layout => false
|
154
179
|
# * Use render 'path/to/template', :layout => false, :engine => 'haml'
|
155
|
-
# * Use render { :a => 1, :b => 2, :c => 3 } # => return a json string
|
156
180
|
#
|
157
181
|
def render(engine, data=nil, options={}, locals={}, &block)
|
158
|
-
# If engine is a hash then render data converted to json
|
159
|
-
content_type(:json, :charset => 'utf-8') and return engine.to_json if engine.is_a?(Hash)
|
160
182
|
|
161
183
|
# If engine is nil, ignore engine parameter and shift up all arguments
|
162
184
|
# render nil, "index", { :layout => true }, { :localvar => "foo" }
|
@@ -175,10 +197,10 @@ module Padrino
|
|
175
197
|
root = settings.respond_to?(:root) ? settings.root : ""
|
176
198
|
|
177
199
|
# Use @layout if it exists
|
178
|
-
|
179
|
-
|
200
|
+
layout_was = options[:layout]
|
201
|
+
options[:layout] = @layout if options[:layout].nil? || options[:layout] == true
|
180
202
|
# Resolve layouts similar to in Rails
|
181
|
-
if
|
203
|
+
if options[:layout].nil? && !settings.templates.has_key?(:layout)
|
182
204
|
layout_path, layout_engine = *resolved_layout
|
183
205
|
options[:layout] = layout_path || false # We need to force layout false so sinatra don't try to render it
|
184
206
|
options[:layout] = false unless layout_engine == engine # TODO allow different layout engine
|
@@ -186,10 +208,12 @@ module Padrino
|
|
186
208
|
elsif options[:layout].present?
|
187
209
|
options[:layout] = settings.fetch_layout_path(options[:layout] || @layout)
|
188
210
|
end
|
211
|
+
# Default to original layout value if none found
|
212
|
+
options[:layout] ||= layout_was
|
189
213
|
|
190
214
|
# Cleanup the template
|
191
215
|
@current_engine, engine_was = engine, @current_engine
|
192
|
-
@_out_buf, _buf_was =
|
216
|
+
@_out_buf, _buf_was = ActiveSupport::SafeBuffer.new, @_out_buf
|
193
217
|
|
194
218
|
# Pass arguments to Sinatra render method
|
195
219
|
super(engine, data, options.dup, locals, &block)
|
@@ -290,3 +314,7 @@ module Padrino
|
|
290
314
|
end # InstanceMethods
|
291
315
|
end # Rendering
|
292
316
|
end # Padrino
|
317
|
+
|
318
|
+
require 'padrino-core/application/rendering/extensions/haml'
|
319
|
+
require 'padrino-core/application/rendering/extensions/erubis'
|
320
|
+
require 'padrino-core/application/rendering/extensions/slim'
|
@@ -0,0 +1,55 @@
|
|
1
|
+
begin
|
2
|
+
require 'erubis'
|
3
|
+
|
4
|
+
module Padrino
|
5
|
+
module Erubis
|
6
|
+
##
|
7
|
+
# SafeBufferEnhancer is an Erubis Enhancer that compiles templates that
|
8
|
+
# are fit for using ActiveSupport::SafeBuffer as a Buffer.
|
9
|
+
#
|
10
|
+
# @api private
|
11
|
+
module SafeBufferEnhancer
|
12
|
+
def add_expr_literal(src, code)
|
13
|
+
src << " #{@bufvar}.concat((" << code << ').to_s);'
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_expr_escaped(src, code)
|
17
|
+
src << " #{@bufvar}.safe_concat " << code << ';'
|
18
|
+
end
|
19
|
+
|
20
|
+
def add_text(src, text)
|
21
|
+
src << " #{@bufvar}.safe_concat '" << escape_text(text) << "';" unless text.empty?
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
##
|
26
|
+
# SafeBufferTemplate is the classic Erubis template, augmented with
|
27
|
+
# SafeBufferEnhancer.
|
28
|
+
#
|
29
|
+
# @api private
|
30
|
+
class SafeBufferTemplate < ::Erubis::Eruby
|
31
|
+
include SafeBufferEnhancer
|
32
|
+
end
|
33
|
+
|
34
|
+
##
|
35
|
+
# Modded ErubisTemplate that doesn't insist in an String as output
|
36
|
+
# buffer.
|
37
|
+
#
|
38
|
+
# @api private
|
39
|
+
class Template < Tilt::ErubisTemplate
|
40
|
+
def precompiled_preamble(locals)
|
41
|
+
old_postamble = super.split("\n")[0..-2]
|
42
|
+
[old_postamble, "#{@outvar} = _buf = (#{@outvar} || ActiveSupport::SafeBuffer.new)"].join("\n")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
Tilt.prefer Padrino::Erubis::Template, :erb
|
49
|
+
|
50
|
+
if defined? Padrino::Rendering
|
51
|
+
Padrino::Rendering.engine_configurations[:erb] =
|
52
|
+
{:engine_class => Padrino::Erubis::SafeBufferTemplate}
|
53
|
+
end
|
54
|
+
rescue LoadError
|
55
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
begin
|
2
|
+
require 'haml'
|
3
|
+
require 'haml/helpers/xss_mods'
|
4
|
+
|
5
|
+
module Haml
|
6
|
+
module Helpers
|
7
|
+
include XssMods
|
8
|
+
end
|
9
|
+
|
10
|
+
module Util
|
11
|
+
def self.rails_xss_safe?
|
12
|
+
true
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
if defined? Padrino::Rendering
|
18
|
+
Padrino::Rendering.engine_configurations[:haml] =
|
19
|
+
{:escape_html => true}
|
20
|
+
|
21
|
+
class Tilt::HamlTemplate
|
22
|
+
include Padrino::Rendering::SafeTemplate
|
23
|
+
end
|
24
|
+
end
|
25
|
+
rescue LoadError
|
26
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
begin
|
2
|
+
require 'slim'
|
3
|
+
|
4
|
+
if defined? Padrino::Rendering
|
5
|
+
Padrino::Rendering.engine_configurations[:slim] =
|
6
|
+
{:generator => Temple::Generators::RailsOutputBuffer,
|
7
|
+
:buffer => "@_out_buf", :use_html_safe => true}
|
8
|
+
|
9
|
+
class Slim::Template
|
10
|
+
include Padrino::Rendering::SafeTemplate
|
11
|
+
end
|
12
|
+
end
|
13
|
+
rescue LoadError
|
14
|
+
end
|
@@ -11,6 +11,9 @@ class Sinatra::Request
|
|
11
11
|
def controller
|
12
12
|
route_obj && route_obj.controller
|
13
13
|
end
|
14
|
+
def action
|
15
|
+
route_obj && route_obj.action
|
16
|
+
end
|
14
17
|
end
|
15
18
|
|
16
19
|
##
|
@@ -28,8 +31,8 @@ class HttpRouter
|
|
28
31
|
@route = path.route
|
29
32
|
@params ||= {}
|
30
33
|
@params.update(env['router.params'])
|
31
|
-
@block_params = if
|
32
|
-
params_list =
|
34
|
+
@block_params = if match_data = env['router.request'].extra_env['router.regex_match']
|
35
|
+
params_list = match_data.to_a
|
33
36
|
params_list.shift
|
34
37
|
@params[:captures] = params_list
|
35
38
|
params_list
|
@@ -47,7 +50,6 @@ class HttpRouter
|
|
47
50
|
(@route.before_filters - settings.filters[:before]).each { |block| instance_eval(&block) }
|
48
51
|
@layout = path.route.use_layout if path.route.use_layout
|
49
52
|
@route.custom_conditions.each { |block| pass if block.bind(self).call == false } if @route.custom_conditions
|
50
|
-
@block_params = @block_params[0, @route.dest.arity] if @route.dest.arity > 0
|
51
53
|
halt_response = catch(:halt) { route_eval { @route.dest[self, @block_params] } }
|
52
54
|
@_response_buffer = halt_response.is_a?(Array) ? halt_response.last : halt_response
|
53
55
|
successful = true
|
@@ -62,7 +64,9 @@ class HttpRouter
|
|
62
64
|
|
63
65
|
# @private
|
64
66
|
class Route
|
65
|
-
|
67
|
+
VALID_HTTP_VERBS.replace %w[GET POST PUT PATCH DELETE HEAD OPTIONS LINK UNLINK]
|
68
|
+
|
69
|
+
attr_accessor :use_layout, :controller, :action, :cache, :cache_key, :cache_expires_in, :parent
|
66
70
|
|
67
71
|
def before_filters(&block)
|
68
72
|
@_before_filters ||= []
|
@@ -84,6 +88,60 @@ class HttpRouter
|
|
84
88
|
|
85
89
|
@_custom_conditions
|
86
90
|
end
|
91
|
+
|
92
|
+
def significant_variable_names
|
93
|
+
@significant_variable_names ||= if @original_path.is_a?(String)
|
94
|
+
@original_path.scan(/(^|[^\\])[:\*]([a-zA-Z0-9_]+)/).map{|p| p.last.to_sym}
|
95
|
+
elsif @original_path.is_a?(Regexp) and @original_path.respond_to?(:named_captures)
|
96
|
+
@original_path.named_captures.keys.map(&:to_sym)
|
97
|
+
else
|
98
|
+
[]
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
#Monkey patching the Request class. Using Rack::Utils.unescape rather than
|
104
|
+
#URI.unescape which can't handle utf-8 chars
|
105
|
+
class Request
|
106
|
+
def initialize(path, rack_request)
|
107
|
+
@rack_request = rack_request
|
108
|
+
@path = Rack::Utils.unescape(path).split(/\//)
|
109
|
+
@path.shift if @path.first == ''
|
110
|
+
@path.push('') if path[-1] == ?/
|
111
|
+
@extra_env = {}
|
112
|
+
@params = []
|
113
|
+
@acceptable_methods = Set.new
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
class Node::Path
|
118
|
+
def to_code
|
119
|
+
path_ivar = inject_root_ivar(self)
|
120
|
+
"#{"if !callback && request.path.size == 1 && request.path.first == '' && (request.rack_request.head? || request.rack_request.get?) && request.rack_request.path_info[-1] == ?/
|
121
|
+
catch(:pass) do
|
122
|
+
response = ::Rack::Response.new
|
123
|
+
response.redirect(request.rack_request.path_info[0, request.rack_request.path_info.size - 1], 302)
|
124
|
+
return response.finish
|
125
|
+
end
|
126
|
+
end" if router.redirect_trailing_slash?}
|
127
|
+
|
128
|
+
#{"if request.#{router.ignore_trailing_slash? ? 'path_finished?' : 'path.empty?'}" unless route.match_partially}
|
129
|
+
catch(:pass) do
|
130
|
+
if callback
|
131
|
+
request.called = true
|
132
|
+
callback.call(Response.new(request, #{path_ivar}))
|
133
|
+
else
|
134
|
+
env = request.rack_request.dup.env
|
135
|
+
env['router.request'] = request
|
136
|
+
env['router.params'] ||= {}
|
137
|
+
#{"env['router.params'].merge!(Hash[#{param_names.inspect}.zip(request.params)])" if dynamic?}
|
138
|
+
@router.rewrite#{"_partial" if route.match_partially}_path_info(env, request)
|
139
|
+
response = @router.process_destination_path(#{path_ivar}, env)
|
140
|
+
return response unless router.pass_on_response(response)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
#{"end" unless route.match_partially}"
|
144
|
+
end
|
87
145
|
end
|
88
146
|
end
|
89
147
|
|
@@ -98,7 +156,7 @@ module Padrino
|
|
98
156
|
def apply?(request)
|
99
157
|
detect = @args.any? do |arg|
|
100
158
|
case arg
|
101
|
-
when Symbol then request.route_obj && (request.route_obj.
|
159
|
+
when Symbol then request.route_obj && (request.route_obj.name == arg or request.route_obj.name == [@scoped_controller, arg].flatten.join("_").to_sym)
|
102
160
|
else arg === request.path_info
|
103
161
|
end
|
104
162
|
end || @options.any? do |name, val|
|
@@ -166,7 +224,7 @@ module Padrino
|
|
166
224
|
# Class methods responsible for enhanced routing for controllers.
|
167
225
|
module ClassMethods
|
168
226
|
##
|
169
|
-
# Method
|
227
|
+
# Method to organize our routes in a better way.
|
170
228
|
#
|
171
229
|
# @param [Array] args
|
172
230
|
# Controller arguments.
|
@@ -237,8 +295,8 @@ module Padrino
|
|
237
295
|
# get :index, :map => "/:lang" do; "params[:lang] == :de"; end
|
238
296
|
# end
|
239
297
|
#
|
240
|
-
# In a controller before and after filters are scoped and
|
241
|
-
# In a controller
|
298
|
+
# In a controller, before and after filters are scoped and don't affect other controllers or the main app.
|
299
|
+
# In a controller, layouts are scoped and don't affect other controllers or the main app.
|
242
300
|
#
|
243
301
|
# @example
|
244
302
|
# controller :posts do
|
@@ -449,7 +507,8 @@ module Padrino
|
|
449
507
|
#
|
450
508
|
def recognize_path(path)
|
451
509
|
responses = @router.recognize(Rack::MockRequest.env_for(path))
|
452
|
-
|
510
|
+
responses = responses[0] if responses[0].is_a?(Array)
|
511
|
+
[responses[0].path.route.name, responses[0].params]
|
453
512
|
end
|
454
513
|
|
455
514
|
##
|
@@ -470,11 +529,12 @@ module Padrino
|
|
470
529
|
params[:format] = params[:format].to_s unless params[:format].nil?
|
471
530
|
params = value_to_param(params)
|
472
531
|
end
|
473
|
-
url =
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
532
|
+
url =
|
533
|
+
if params_array.empty?
|
534
|
+
compiled_router.path(name, params)
|
535
|
+
else
|
536
|
+
compiled_router.path(name, *(params_array << params))
|
537
|
+
end
|
478
538
|
url[0,0] = conform_uri(uri_root) if defined?(uri_root)
|
479
539
|
url[0,0] = conform_uri(ENV['RACK_BASE_URI']) if ENV['RACK_BASE_URI']
|
480
540
|
url = "/" if url.blank?
|
@@ -556,8 +616,17 @@ module Padrino
|
|
556
616
|
# Do padrino parsing. We dup options so we can build HEAD request correctly
|
557
617
|
route_options = options.dup
|
558
618
|
route_options[:provides] = @_provides if @_provides
|
619
|
+
|
620
|
+
# CSRF protection is always active except when explicitly switched off
|
621
|
+
if allow_disabled_csrf
|
622
|
+
unless route_options[:csrf_protection] == false
|
623
|
+
route_options[:csrf_protection] = true
|
624
|
+
end
|
625
|
+
end
|
626
|
+
|
559
627
|
path, *route_options[:with] = path if path.is_a?(Array)
|
560
|
-
|
628
|
+
action = path
|
629
|
+
path, name, route_parents, options, route_options = *parse_route(path, route_options, verb)
|
561
630
|
options.reverse_merge!(@_conditions) if @_conditions
|
562
631
|
|
563
632
|
# Sinatra defaults
|
@@ -572,20 +641,22 @@ module Padrino
|
|
572
641
|
|
573
642
|
# HTTPRouter route construction
|
574
643
|
route = router.add(path, route_options)
|
575
|
-
route.name
|
644
|
+
route.name = name if name
|
645
|
+
route.action = action
|
576
646
|
priority_name = options.delete(:priority) || :normal
|
577
647
|
priority = ROUTE_PRIORITY[priority_name] or raise("Priority #{priority_name} not recognized, try #{ROUTE_PRIORITY.keys.join(', ')}")
|
578
648
|
route.cache = options.key?(:cache) ? options.delete(:cache) : @_cache
|
579
|
-
route.
|
580
|
-
route.
|
581
|
-
route.
|
649
|
+
route.parent = route_parents ? (route_parents.count == 1 ? route_parents.first : route_parents) : route_parents
|
650
|
+
route.add_request_method(verb.downcase.to_sym)
|
651
|
+
route.host = options.delete(:host) if options.key?(:host)
|
652
|
+
route.user_agent = options.delete(:agent) if options.key?(:agent)
|
582
653
|
if options.key?(:default_values)
|
583
654
|
defaults = options.delete(:default_values)
|
584
|
-
route.
|
655
|
+
route.add_default_values(defaults) if defaults
|
585
656
|
end
|
586
657
|
options.delete_if do |option, args|
|
587
|
-
if route.
|
588
|
-
route.
|
658
|
+
if route.significant_variable_names.include?(option)
|
659
|
+
route.add_match_with(option => Array(args).first)
|
589
660
|
true
|
590
661
|
end
|
591
662
|
end
|
@@ -646,8 +717,8 @@ module Padrino
|
|
646
717
|
|
647
718
|
if @_use_format or format_params = options[:provides]
|
648
719
|
process_path_for_provides(path, format_params)
|
649
|
-
options[:
|
650
|
-
options[:
|
720
|
+
# options[:add_match_with] ||= {}
|
721
|
+
# options[:add_match_with][:format] = /[^\.]+/
|
651
722
|
end
|
652
723
|
|
653
724
|
absolute_map = map && map[0] == ?/
|
@@ -657,14 +728,14 @@ module Padrino
|
|
657
728
|
if map.blank? and !absolute_map
|
658
729
|
controller_path = controller.join("/")
|
659
730
|
path.gsub!(%r{^\(/\)|/\?}, "")
|
660
|
-
path = File.join(controller_path, path)
|
731
|
+
path = File.join(controller_path, path) unless @_map
|
661
732
|
end
|
662
733
|
# Here we build the correct name route
|
663
734
|
end
|
664
735
|
|
665
736
|
# Now we need to parse our 'parent' params and parent scope
|
666
737
|
if !absolute_map and parent_params = options.delete(:parent) || @_parents
|
667
|
-
parent_params = Array(@_parents) + Array(parent_params)
|
738
|
+
parent_params = (Array(@_parents) + Array(parent_params)).uniq
|
668
739
|
path = process_path_for_parent_params(path, parent_params)
|
669
740
|
end
|
670
741
|
|
@@ -692,7 +763,7 @@ module Padrino
|
|
692
763
|
# Merge in option defaults
|
693
764
|
options.reverse_merge!(:default_values => @_defaults)
|
694
765
|
|
695
|
-
[path, name, options, route_options]
|
766
|
+
[path, name, parent_params, options, route_options]
|
696
767
|
end
|
697
768
|
|
698
769
|
##
|
@@ -756,19 +827,22 @@ module Padrino
|
|
756
827
|
def provides(*types)
|
757
828
|
@_use_format = true
|
758
829
|
condition do
|
759
|
-
mime_types = types.map { |t| mime_type(t) }
|
830
|
+
mime_types = types.map { |t| mime_type(t) }.compact
|
760
831
|
url_format = params[:format].to_sym if params[:format]
|
761
|
-
accepts = request.accept.map { |a| a.
|
832
|
+
accepts = request.accept.map { |a| a.to_str }
|
762
833
|
|
763
834
|
# per rfc2616-sec14:
|
764
835
|
# Assume */* if no ACCEPT header is given.
|
765
836
|
catch_all = (accepts.delete "*/*" || accepts.empty?)
|
766
837
|
matching_types = accepts.empty? ? mime_types.slice(0,1) : (accepts & mime_types)
|
838
|
+
if matching_types.empty? && types.include?(:any)
|
839
|
+
matching_types = accepts
|
840
|
+
end
|
767
841
|
|
768
842
|
if !url_format && matching_types.first
|
769
843
|
type = ::Rack::Mime::MIME_TYPES.find { |k, v| v == matching_types.first }[0].sub(/\./,'').to_sym
|
770
844
|
accept_format = CONTENT_TYPE_ALIASES[type] || type
|
771
|
-
elsif catch_all
|
845
|
+
elsif catch_all && !types.include?(:any)
|
772
846
|
type = types.first
|
773
847
|
accept_format = CONTENT_TYPE_ALIASES[type] || type
|
774
848
|
end
|
@@ -793,6 +867,21 @@ module Padrino
|
|
793
867
|
matched_format
|
794
868
|
end
|
795
869
|
end
|
870
|
+
|
871
|
+
##
|
872
|
+
# Implements CSRF checking when `allow_disabled_csrf` is set to true.
|
873
|
+
#
|
874
|
+
# This condition is always on, except when it is explicitly switched
|
875
|
+
# off.
|
876
|
+
#
|
877
|
+
# @example
|
878
|
+
# post("/", :csrf_protection => false)
|
879
|
+
#
|
880
|
+
def csrf_protection(on = true)
|
881
|
+
if on
|
882
|
+
condition { halt 403 if request.env['protection.csrf.failed'] }
|
883
|
+
end
|
884
|
+
end
|
796
885
|
end
|
797
886
|
|
798
887
|
##
|
@@ -836,7 +925,7 @@ module Padrino
|
|
836
925
|
else
|
837
926
|
path_params << params
|
838
927
|
end
|
839
|
-
@route.
|
928
|
+
@route.path(*path_params)
|
840
929
|
end
|
841
930
|
|
842
931
|
##
|
@@ -905,13 +994,19 @@ module Padrino
|
|
905
994
|
end
|
906
995
|
|
907
996
|
def dispatch!
|
908
|
-
|
909
|
-
|
997
|
+
invoke do
|
998
|
+
static! if settings.static? && (request.get? || request.head?)
|
999
|
+
route!
|
1000
|
+
end
|
910
1001
|
rescue ::Exception => boom
|
911
|
-
filter! :before
|
912
|
-
handle_exception!(boom)
|
1002
|
+
filter! :before if boom.kind_of? ::Sinatra::NotFound
|
1003
|
+
invoke { @boom_handled = handle_exception!(boom) }
|
913
1004
|
ensure
|
914
|
-
|
1005
|
+
@boom_handled or begin
|
1006
|
+
filter! :after unless env['sinatra.static_file']
|
1007
|
+
rescue ::Exception => boom
|
1008
|
+
invoke { handle_exception!(boom) } unless @env['sinatra.error']
|
1009
|
+
end
|
915
1010
|
end
|
916
1011
|
|
917
1012
|
def route!(base=settings, pass_block=nil)
|
@@ -919,9 +1014,10 @@ module Padrino
|
|
919
1014
|
if base.compiled_router and match = base.compiled_router.call(@request.env)
|
920
1015
|
if match.respond_to?(:each)
|
921
1016
|
route_eval do
|
922
|
-
match[1].each {|k,v| response[k] = v}
|
1017
|
+
match[1].each { |k,v| response[k] = v }
|
923
1018
|
status match[0]
|
924
1019
|
route_missing if match[0] == 404
|
1020
|
+
route_missing if allow = response['Allow'] and allow.include?(request.env['REQUEST_METHOD'])
|
925
1021
|
end
|
926
1022
|
end
|
927
1023
|
else
|