middleman-core 3.0.0.beta.1 → 3.0.0.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -44
- data/bin/middleman +12 -8
- data/features/3rd_party_cli.feature +12 -2
- data/features/builder.feature +1 -1
- data/features/clean_build.feature +24 -14
- data/features/cli.feature +9 -30
- data/features/custom_layouts.feature +6 -0
- data/features/directory_index.feature +2 -0
- data/features/dynamic_pages.feature +37 -0
- data/features/extensionless_text_files.feature +58 -0
- data/features/former_padrino_helpers.feature +5 -3
- data/features/frontmatter_page_settings.feature +27 -0
- data/features/helpers_external.feature +7 -1
- data/features/i18n_builder.feature +121 -0
- data/features/i18n_preview.feature +113 -0
- data/features/ignore.feature +198 -0
- data/features/implied_extensions.feature +52 -0
- data/features/instance_vars.feature +0 -2
- data/features/partials.feature +5 -0
- data/features/request_params.feature +6 -0
- data/features/{sitemap_traversal.features → sitemap_traversal.feature} +24 -24
- data/features/wildcard_page_helper.feature +1 -1
- data/fixtures/clean-dir-app/config.rb +2 -1
- data/fixtures/clean-nested-app/config.rb +3 -0
- data/fixtures/clean-nested-app/source/about.html +1 -0
- data/fixtures/dynamic-pages-app/config.rb +25 -5
- data/fixtures/dynamic-pages-app/source/real/index.html.erb +5 -1
- data/{lib/middleman-core/vendor/darwin/spec/fixtures/custom 'path/.gitignore → fixtures/extensionless-text-files-app/config.rb} +0 -0
- data/fixtures/extensionless-text-files-app/source/CNAME +1 -0
- data/fixtures/extensionless-text-files-app/source/LICENSE +1 -0
- data/fixtures/extensionless-text-files-app/source/README +1 -0
- data/fixtures/extensionless-text-files-app/source/index.html +1 -0
- data/fixtures/external-helpers/helpers/four_helper.rb +3 -0
- data/fixtures/external-helpers/helpers/one_helper.rb +3 -0
- data/fixtures/external-helpers/helpers/three_helper.rb +3 -0
- data/fixtures/external-helpers/helpers/two_helper.rb +3 -0
- data/fixtures/external-helpers/source/automatic.html.erb +1 -0
- data/fixtures/frontmatter-settings-app/config.rb +4 -0
- data/fixtures/frontmatter-settings-app/source/alternate_layout.html.erb +5 -0
- data/fixtures/frontmatter-settings-app/source/ignored.html.erb +5 -0
- data/fixtures/frontmatter-settings-app/source/layouts/alternate.erb +3 -0
- data/fixtures/frontmatter-settings-app/source/no_index.html.erb +5 -0
- data/fixtures/i18n-alt-root-app/locales/en.yml +4 -0
- data/fixtures/i18n-alt-root-app/locales/es.yml +7 -0
- data/fixtures/i18n-alt-root-app/source/lang_data/hello.html.erb +1 -0
- data/fixtures/i18n-alt-root-app/source/lang_data/index.html.erb +1 -0
- data/fixtures/i18n-alt-root-app/source/layout.erb +1 -0
- data/fixtures/i18n-test-app/locales/en.yml +4 -0
- data/fixtures/i18n-test-app/locales/es.yml +7 -0
- data/fixtures/i18n-test-app/source/layout.erb +1 -0
- data/fixtures/i18n-test-app/source/localizable/hello.html.erb +1 -0
- data/fixtures/i18n-test-app/source/localizable/index.html.erb +1 -0
- data/fixtures/ignore-app/source/about.html.erb +1 -0
- data/{lib/middleman-core/vendor/darwin/spec/fixtures/folder1/file1.txt → fixtures/ignore-app/source/images/icon/messages.png} +0 -0
- data/{lib/middleman-core/vendor/darwin/spec/fixtures/folder1/folder2/file2.txt → fixtures/ignore-app/source/images/pic.png} +0 -0
- data/fixtures/ignore-app/source/images/portrait.jpg +0 -0
- data/fixtures/ignore-app/source/index.html.erb +0 -0
- data/fixtures/ignore-app/source/plain.html +1 -0
- data/fixtures/ignore-app/source/reports/another.html +0 -0
- data/fixtures/ignore-app/source/reports/index.html +0 -0
- data/fixtures/implied-extensions-app/config.rb +0 -0
- data/fixtures/implied-extensions-app/source/index.erb +1 -0
- data/fixtures/indexable-app/config.rb +3 -1
- data/fixtures/indexable-app/source/wildcard_leave_me_alone.html +1 -0
- data/fixtures/large-build-app/source/feed.xml.builder +4 -0
- data/fixtures/lorem-app/config.rb +1 -0
- data/fixtures/padrino-helpers-app/source/former_padrino_test.html.erb +2 -1
- data/fixtures/partials-app/source/shared/_footer.erb +1 -1
- data/fixtures/partials-app/source/shared/snippet.erb +1 -0
- data/fixtures/partials-app/source/using_snippet.html.erb +1 -0
- data/fixtures/request-app/config.rb +0 -0
- data/fixtures/request-app/source/index.html.erb +3 -0
- data/fixtures/traversal-app/source/layout.erb +2 -0
- data/lib/middleman-core/application.rb +558 -0
- data/lib/middleman-core/cli/build.rb +67 -64
- data/lib/middleman-core/cli/init.rb +10 -4
- data/lib/middleman-core/cli/server.rb +7 -1
- data/lib/middleman-core/cli.rb +22 -2
- data/lib/middleman-core/core_extensions/assets.rb +12 -3
- data/lib/middleman-core/core_extensions/builder.rb +0 -37
- data/lib/middleman-core/core_extensions/data.rb +3 -3
- data/lib/middleman-core/core_extensions/default_helpers.rb +17 -26
- data/lib/middleman-core/core_extensions/extensions.rb +13 -10
- data/lib/middleman-core/core_extensions/external_helpers.rb +35 -0
- data/lib/middleman-core/core_extensions/file_watcher.rb +9 -5
- data/lib/middleman-core/core_extensions/front_matter.rb +85 -15
- data/lib/middleman-core/core_extensions/i18n.rb +137 -0
- data/lib/middleman-core/core_extensions/rendering.rb +134 -21
- data/lib/middleman-core/core_extensions/routing.rb +42 -23
- data/lib/middleman-core/core_extensions/show_exceptions.rb +13 -3
- data/lib/middleman-core/extensions/asset_host.rb +21 -3
- data/lib/middleman-core/extensions/automatic_image_sizes.rb +20 -1
- data/lib/middleman-core/extensions/directory_indexes.rb +42 -47
- data/lib/middleman-core/extensions/lorem.rb +54 -6
- data/lib/middleman-core/extensions.rb +179 -0
- data/lib/middleman-core/renderers/erb.rb +28 -21
- data/lib/middleman-core/sitemap/extensions/ignores.rb +86 -0
- data/lib/middleman-core/sitemap/extensions/on_disk.rb +77 -0
- data/lib/middleman-core/sitemap/extensions/proxies.rb +97 -0
- data/lib/middleman-core/sitemap/extensions/traversal.rb +77 -0
- data/lib/middleman-core/sitemap/resource.rb +126 -0
- data/lib/middleman-core/sitemap/store.rb +148 -97
- data/lib/middleman-core/sitemap.rb +78 -0
- data/lib/middleman-core/step_definitions/builder_steps.rb +15 -1
- data/lib/middleman-core/step_definitions/server_steps.rb +11 -4
- data/lib/middleman-core/templates/default.rb +10 -0
- data/lib/middleman-core/templates/html5/source/404.html +32 -27
- data/lib/middleman-core/templates/html5/source/README.md +34 -367
- data/lib/middleman-core/templates/html5/source/apple-touch-icon-114x114-precomposed.png +0 -0
- data/lib/middleman-core/templates/html5/source/apple-touch-icon-57x57-precomposed.png +0 -0
- data/lib/middleman-core/templates/html5/source/apple-touch-icon-72x72-precomposed.png +0 -0
- data/lib/middleman-core/templates/html5/source/apple-touch-icon-precomposed.png +0 -0
- data/lib/middleman-core/templates/html5/source/apple-touch-icon.png +0 -0
- data/lib/middleman-core/templates/html5/source/crossdomain.xml +0 -0
- data/lib/middleman-core/templates/html5/source/css/style.css +37 -37
- data/lib/middleman-core/templates/html5/source/favicon.ico +0 -0
- data/lib/middleman-core/templates/html5/source/humans.txt +0 -0
- data/lib/middleman-core/templates/html5/source/img/.gitignore +0 -2
- data/lib/middleman-core/templates/html5/source/index.html +31 -43
- data/lib/middleman-core/templates/html5/source/js/libs/{jquery-1.6.2.js → jquery-1.7.1.js} +1922 -1637
- data/lib/middleman-core/templates/html5/source/js/libs/jquery-1.7.1.min.js +4 -0
- data/lib/middleman-core/templates/html5/source/js/libs/modernizr-2.5.3.min.js +4 -0
- data/lib/middleman-core/templates/html5/source/js/plugins.js +3 -12
- data/lib/middleman-core/templates/html5/source/js/script.js +0 -0
- data/lib/middleman-core/templates/html5/source/robots.txt +1 -2
- data/lib/middleman-core/templates/html5.rb +10 -5
- data/lib/middleman-core/templates/local.rb +8 -1
- data/lib/middleman-core/templates/shared/config.tt +6 -6
- data/lib/middleman-core/templates.rb +10 -13
- data/lib/middleman-core/util.rb +90 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/.document +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/.gitignore +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/.yardopts +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/LICENSE.txt +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/README.rdoc +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/Rakefile +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/bin/padrino +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/application/rendering.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/application/routing.rb +38 -29
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/application/showexceptions.rb +0 -0
- data/lib/middleman-core/vendor/padrino-core-0.10.6/lib/padrino-core/application.rb +269 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/caller.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/cli/adapter.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/cli/base.rb +4 -5
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/cli/console.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/cli/rake.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/cli/rake_tasks.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/command.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/images/404.png +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/images/500.png +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/loader.rb +1 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/cs.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/da.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/de.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/en.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/es.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/fr.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/hu.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/it.yml +1 -1
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/ja.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/lv.yml +2 -2
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/nl.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/no.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/pl.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/pt_br.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/ru.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/tr.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/uk.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/zh_cn.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/locale/zh_tw.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/logger.rb +192 -109
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/mounter.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/reloader.rb +39 -39
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/router.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/server.rb +2 -2
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/support_lite.rb +4 -5
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/tasks.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core/version.rb +1 -1
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/lib/padrino-core.rb +0 -15
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/padrino-core.gemspec +1 -1
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/apps/.components +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/apps/.gitignore +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/apps/complex.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/apps/simple.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/dependencies/a.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/dependencies/b.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/dependencies/c.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/dependencies/circular/e.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/dependencies/circular/f.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/dependencies/circular/g.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/fixtures/dependencies/d.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/helper.rb +2 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/mini_shoulda.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_application.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_core.rb +0 -2
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_dependencies.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_filters.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_locale.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_logger.rb +54 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_mounter.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_reloader_complex.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_reloader_simple.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_rendering.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_restful_routing.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_router.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-core-0.10.5 → padrino-core-0.10.6}/test/test_routing.rb +7 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/.document +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/.gitignore +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/.yardopts +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/LICENSE.txt +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/README.rdoc +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/Rakefile +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/asset_tag_helpers.rb +76 -79
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/form_builder/abstract_form_builder.rb +31 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/form_builder/standard_form_builder.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/form_helpers.rb +211 -26
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/format_helpers.rb +2 -2
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/cs.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/da.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/de.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/en.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/es.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/fr.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/hu.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/it.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/ja.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/lv.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/nl.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/no.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/pl.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/pt_br.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/ru.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/tr.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/uk.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/zh_cn.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/locale/zh_tw.yml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/number_helpers.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/output_helpers/abstract_handler.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/output_helpers/erb_handler.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/output_helpers/haml_handler.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/output_helpers/slim_handler.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/output_helpers.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/render_helpers.rb +0 -0
- data/lib/middleman-core/vendor/padrino-helpers-0.10.6/lib/padrino-helpers/tag_helpers.rb +260 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers/translation_helpers.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/lib/padrino-helpers.rb +4 -3
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/padrino-helpers.gemspec +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/app.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/capture_concat.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/capture_concat.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/capture_concat.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/content_for.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/content_for.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/content_for.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/content_tag.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/content_tag.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/content_tag.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/current_engine.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/current_engine.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/current_engine.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/fields_for.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/fields_for.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/fields_for.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/form_for.erb +20 -4
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/form_for.haml +15 -3
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/form_for.slim +15 -3
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/form_tag.erb +30 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/form_tag.haml +25 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/form_tag.slim +25 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/link_to.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/link_to.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/link_to.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/mail_to.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/mail_to.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/mail_to.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/meta_tag.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/meta_tag.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/meta_tag.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/partials/_erb.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/partials/_haml.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/partials/_slim.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/simple_partial.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/simple_partial.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/markup_app/views/simple_partial.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/app.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/current_engine.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/current_engines/_erb.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/current_engines/_haml.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/current_engines/_slim.slim +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/erb/test.erb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/explicit_engine.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/haml/test.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/template/_user.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/template/haml_template.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/fixtures/render_app/views/template/some_template.haml +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/helper.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_asset_tag_helpers.rb +14 -6
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_form_builder.rb +116 -6
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_form_helpers.rb +134 -9
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_format_helpers.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_locale.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_number_helpers.rb +3 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_output_helpers.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_render_helpers.rb +0 -0
- data/lib/middleman-core/vendor/{padrino-helpers-0.10.5 → padrino-helpers-0.10.6}/test/test_tag_helpers.rb +7 -6
- data/lib/middleman-core/version.rb +2 -2
- data/lib/middleman-core/watcher.rb +75 -36
- data/lib/middleman-core.rb +7 -252
- data/middleman-core.gemspec +14 -11
- metadata +396 -348
- data/bin/fsevent_watch_guard +0 -0
- data/ext/extconf.rb +0 -61
- data/ext/fsevent/fsevent_watch.c +0 -226
- data/fixtures/3rd-party-command/config.rb +0 -10
- data/fixtures/ignore-app/config.rb +0 -2
- data/fixtures/ignore-app/source/articles/template.html.erb +0 -1
- data/fixtures/ignore-app/source/template.html.erb +0 -1
- data/lib/middleman-core/base.rb +0 -494
- data/lib/middleman-core/cache.rb +0 -57
- data/lib/middleman-core/core_extensions/sitemap.rb +0 -72
- data/lib/middleman-core/sitemap/page.rb +0 -186
- data/lib/middleman-core/sitemap/template.rb +0 -82
- data/lib/middleman-core/templates/html5/source/js/libs/jquery-1.6.2.min.js +0 -18
- data/lib/middleman-core/templates/html5/source/js/libs/modernizr-2.0.6.min.js +0 -4
- data/lib/middleman-core/templates/html5/source/js/mylibs/.gitignore +0 -2
- data/lib/middleman-core/templates/html5/source/test/index.html +0 -31
- data/lib/middleman-core/templates/html5/source/test/qunit/qunit.css +0 -148
- data/lib/middleman-core/templates/html5/source/test/qunit/qunit.js +0 -1265
- data/lib/middleman-core/templates/html5/source/test/tests.js +0 -24
- data/lib/middleman-core/vendor/darwin/.gitignore +0 -18
- data/lib/middleman-core/vendor/darwin/Gemfile +0 -6
- data/lib/middleman-core/vendor/darwin/Guardfile +0 -8
- data/lib/middleman-core/vendor/darwin/LICENSE +0 -20
- data/lib/middleman-core/vendor/darwin/README.rdoc +0 -254
- data/lib/middleman-core/vendor/darwin/Rakefile +0 -21
- data/lib/middleman-core/vendor/darwin/ext/extconf.rb +0 -61
- data/lib/middleman-core/vendor/darwin/ext/fsevent/fsevent_watch.c +0 -226
- data/lib/middleman-core/vendor/darwin/lib/rb-fsevent/fsevent.rb +0 -105
- data/lib/middleman-core/vendor/darwin/lib/rb-fsevent/version.rb +0 -3
- data/lib/middleman-core/vendor/darwin/lib/rb-fsevent.rb +0 -2
- data/lib/middleman-core/vendor/darwin/rb-fsevent.gemspec +0 -24
- data/lib/middleman-core/vendor/darwin/spec/rb-fsevent/fsevent_spec.rb +0 -75
- data/lib/middleman-core/vendor/darwin/spec/spec_helper.rb +0 -24
- data/lib/middleman-core/vendor/linux/.gitignore +0 -3
- data/lib/middleman-core/vendor/linux/.yardopts +0 -4
- data/lib/middleman-core/vendor/linux/MIT-LICENSE +0 -20
- data/lib/middleman-core/vendor/linux/README.md +0 -66
- data/lib/middleman-core/vendor/linux/Rakefile +0 -54
- data/lib/middleman-core/vendor/linux/VERSION +0 -1
- data/lib/middleman-core/vendor/linux/lib/rb-inotify/event.rb +0 -139
- data/lib/middleman-core/vendor/linux/lib/rb-inotify/native/flags.rb +0 -89
- data/lib/middleman-core/vendor/linux/lib/rb-inotify/native.rb +0 -31
- data/lib/middleman-core/vendor/linux/lib/rb-inotify/notifier.rb +0 -308
- data/lib/middleman-core/vendor/linux/lib/rb-inotify/watcher.rb +0 -83
- data/lib/middleman-core/vendor/linux/lib/rb-inotify.rb +0 -17
- data/lib/middleman-core/vendor/linux/rb-inotify.gemspec +0 -53
- data/lib/middleman-core/vendor/padrino-core-0.10.5/lib/padrino-core/application.rb +0 -270
- data/lib/middleman-core/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/tag_helpers.rb +0 -103
@@ -1,18 +1,33 @@
|
|
1
|
+
# Parsing YAML frontmatter
|
1
2
|
require "yaml"
|
3
|
+
|
4
|
+
# Looking up Tilt extensions
|
2
5
|
require "tilt"
|
3
6
|
|
7
|
+
# Frontmatter namespace
|
4
8
|
module Middleman::CoreExtensions::FrontMatter
|
9
|
+
|
10
|
+
# Setup extension
|
5
11
|
class << self
|
12
|
+
|
13
|
+
# Once registered
|
6
14
|
def registered(app)
|
7
15
|
app.set :frontmatter_extensions, %w(.htm .html .php)
|
8
16
|
app.extend ClassMethods
|
9
17
|
app.send :include, InstanceMethods
|
10
18
|
app.delegate :frontmatter_changed, :to => :"self.class"
|
19
|
+
|
20
|
+
::Middleman::Sitemap::Resource.send :include, ResourceInstanceMethods
|
11
21
|
end
|
12
22
|
alias :included :registered
|
13
23
|
end
|
14
24
|
|
25
|
+
# Frontmatter class methods
|
15
26
|
module ClassMethods
|
27
|
+
|
28
|
+
# Register callback on frontmatter updates
|
29
|
+
# @param [Regexp] matcher
|
30
|
+
# @return [Array<Array<Proc, Regexp>>]
|
16
31
|
def frontmatter_changed(matcher=nil, &block)
|
17
32
|
@_frontmatter_changed ||= []
|
18
33
|
@_frontmatter_changed << [block, matcher] if block_given?
|
@@ -20,29 +35,40 @@ module Middleman::CoreExtensions::FrontMatter
|
|
20
35
|
end
|
21
36
|
end
|
22
37
|
|
38
|
+
module ResourceInstanceMethods
|
39
|
+
|
40
|
+
# This page's frontmatter
|
41
|
+
# @return [Hash]
|
42
|
+
def data
|
43
|
+
app.frontmatter(relative_path).first
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
# Frontmatter instance methods
|
23
49
|
module InstanceMethods
|
50
|
+
|
51
|
+
# Override init
|
24
52
|
def initialize
|
25
|
-
super
|
26
|
-
|
27
53
|
exts = frontmatter_extensions.join("|").gsub(".", "\.")
|
28
54
|
|
29
|
-
static_path = source_dir.sub(
|
55
|
+
static_path = source_dir.sub(root, "").sub(/^\//, "").sub(/\/$/, "") + "/"
|
30
56
|
|
31
57
|
matcher = %r{#{static_path}.*(#{exts})}
|
32
58
|
|
33
|
-
|
34
|
-
|
59
|
+
files.changed matcher do |file|
|
60
|
+
frontmatter_extension.touch_file(file)
|
35
61
|
end
|
36
62
|
|
37
|
-
|
38
|
-
|
63
|
+
files.deleted matcher do |file|
|
64
|
+
frontmatter_extension.remove_file(file)
|
39
65
|
end
|
40
66
|
|
41
|
-
provides_metadata matcher do |path|
|
42
|
-
relative_path = path.sub(source_dir, "")
|
67
|
+
sitemap.provides_metadata matcher do |path|
|
68
|
+
relative_path = path.sub(self.source_dir, "")
|
43
69
|
|
44
|
-
fmdata = if frontmatter_extension.has_data?(relative_path)
|
45
|
-
frontmatter(relative_path)[0]
|
70
|
+
fmdata = if self.frontmatter_extension.has_data?(relative_path)
|
71
|
+
self.frontmatter(relative_path)[0]
|
46
72
|
else
|
47
73
|
{}
|
48
74
|
end
|
@@ -54,8 +80,16 @@ module Middleman::CoreExtensions::FrontMatter
|
|
54
80
|
|
55
81
|
{ :options => data, :page => fmdata }
|
56
82
|
end
|
83
|
+
|
84
|
+
# Initialize class
|
85
|
+
frontmatter_extension
|
86
|
+
|
87
|
+
super
|
57
88
|
end
|
58
89
|
|
90
|
+
# Notify callbacks that the frontmatter changed
|
91
|
+
# @param [String] path
|
92
|
+
# @return [void]
|
59
93
|
def frontmatter_did_change(path)
|
60
94
|
frontmatter_changed.each do |callback, matcher|
|
61
95
|
next if path.match(%r{^#{build_dir}/})
|
@@ -64,26 +98,50 @@ module Middleman::CoreExtensions::FrontMatter
|
|
64
98
|
end
|
65
99
|
end
|
66
100
|
|
101
|
+
# Get the frontmatter object
|
102
|
+
# @return [Middleman::CoreExtensions::FrontMatter::FrontMatter]
|
67
103
|
def frontmatter_extension
|
68
104
|
@_frontmatter_extension ||= FrontMatter.new(self)
|
69
105
|
end
|
70
106
|
|
107
|
+
# Get the frontmatter for the given params
|
108
|
+
# @param [String] path
|
109
|
+
# @return [Hash, nil]
|
71
110
|
def frontmatter(*args)
|
72
111
|
frontmatter_extension.data(*args)
|
73
112
|
end
|
74
113
|
end
|
75
114
|
|
115
|
+
# Core Frontmatter class
|
76
116
|
class FrontMatter
|
117
|
+
|
118
|
+
# Initialize frontmatter with current app
|
119
|
+
# @param [Middleman::Application] app
|
77
120
|
def initialize(app)
|
78
121
|
@app = app
|
79
122
|
@source = File.expand_path(@app.source, @app.root)
|
80
123
|
@local_data = {}
|
124
|
+
|
125
|
+
# Setup ignore callback
|
126
|
+
@app.ignore do |path|
|
127
|
+
if p = @app.sitemap.find_resource_by_path(path)
|
128
|
+
!p.proxy? && p.data && p.data["ignored"] == true
|
129
|
+
else
|
130
|
+
false
|
131
|
+
end
|
132
|
+
end
|
81
133
|
end
|
82
134
|
|
135
|
+
# Whether the frontmatter knows about a path
|
136
|
+
# @param [String] path
|
137
|
+
# @return [Boolean]
|
83
138
|
def has_data?(path)
|
84
139
|
@local_data.has_key?(path.to_s)
|
85
140
|
end
|
86
141
|
|
142
|
+
# Update frontmatter if a file changes
|
143
|
+
# @param [String] file
|
144
|
+
# @return [void]
|
87
145
|
def touch_file(file)
|
88
146
|
extension = File.extname(file).sub(/\./, "")
|
89
147
|
return unless ::Tilt.mappings.has_key?(extension)
|
@@ -95,7 +153,8 @@ module Middleman::CoreExtensions::FrontMatter
|
|
95
153
|
|
96
154
|
if result
|
97
155
|
data, content = result
|
98
|
-
|
156
|
+
|
157
|
+
data = ::Middleman::Util.recursively_enhance(data).freeze
|
99
158
|
file = file.sub(@app.source_dir, "")
|
100
159
|
@local_data[file] = [data, content]
|
101
160
|
path = File.join(@app.source_dir, file)
|
@@ -104,28 +163,40 @@ module Middleman::CoreExtensions::FrontMatter
|
|
104
163
|
end
|
105
164
|
end
|
106
165
|
|
166
|
+
# Update frontmatter if a file is delted
|
167
|
+
# @param [String] file
|
168
|
+
# @return [void]
|
107
169
|
def remove_file(file)
|
108
170
|
file = File.expand_path(file, @app.root)
|
109
171
|
file = file.sub(@app.source_dir, "")
|
110
|
-
# @app.logger.debug :frontmatter_remove, Time.now, file if @app.logging?
|
111
172
|
|
112
173
|
if @local_data.has_key?(file)
|
174
|
+
path = File.join(@app.source_dir, file)
|
175
|
+
@app.cache.remove(:raw_template, path)
|
113
176
|
@local_data.delete(file)
|
114
177
|
end
|
115
178
|
end
|
116
179
|
|
180
|
+
# Get the frontmatter for a given path
|
181
|
+
# @param [String] path
|
182
|
+
# @return [Hash]
|
117
183
|
def data(path)
|
118
184
|
if @local_data.has_key?(path.to_s)
|
119
185
|
@local_data[path.to_s]
|
120
186
|
else
|
121
|
-
|
187
|
+
{}.freeze
|
122
188
|
end
|
123
189
|
end
|
124
190
|
|
125
191
|
private
|
192
|
+
# Parse frontmatter out of a string
|
193
|
+
# @param [String] content
|
194
|
+
# @return [Array<Hash, String>]
|
126
195
|
def parse_front_matter(content)
|
127
196
|
yaml_regex = /^(---\s*\n.*?\n?)^(---\s*$\n?)/m
|
128
197
|
if content =~ yaml_regex
|
198
|
+
content = content[($1.size + $2.size)..-1]
|
199
|
+
|
129
200
|
begin
|
130
201
|
data = YAML.load($1)
|
131
202
|
rescue => e
|
@@ -133,7 +204,6 @@ module Middleman::CoreExtensions::FrontMatter
|
|
133
204
|
return false
|
134
205
|
end
|
135
206
|
|
136
|
-
content = content.split(yaml_regex).last
|
137
207
|
else
|
138
208
|
return false
|
139
209
|
end
|
@@ -0,0 +1,137 @@
|
|
1
|
+
# i18n Namespace
|
2
|
+
module Middleman::CoreExtensions::I18n
|
3
|
+
|
4
|
+
# Setup extension
|
5
|
+
class << self
|
6
|
+
|
7
|
+
# Once registerd
|
8
|
+
def registered(app)
|
9
|
+
app.set :locales_dir, "locales"
|
10
|
+
|
11
|
+
app.send :include, InstanceMethods
|
12
|
+
|
13
|
+
# Needed for helpers as well
|
14
|
+
app.after_configuration do
|
15
|
+
::I18n.load_path = [Dir[File.join(root, locales_dir, "*.yml")]]
|
16
|
+
::I18n.reload!
|
17
|
+
end
|
18
|
+
end
|
19
|
+
alias :included :registered
|
20
|
+
end
|
21
|
+
|
22
|
+
class Localizer
|
23
|
+
def initialize(app)
|
24
|
+
@app = app
|
25
|
+
@maps = {}
|
26
|
+
end
|
27
|
+
|
28
|
+
def setup(options)
|
29
|
+
@options = options
|
30
|
+
|
31
|
+
@lang_map = @options[:lang_map] || {}
|
32
|
+
@path = @options[:path] || "/:locale/"
|
33
|
+
@templates_dir = @options[:templates_dir] || "localizable"
|
34
|
+
@mount_at_root = @options.has_key?(:mount_at_root) ? @options[:mount_at_root] : langs.first
|
35
|
+
|
36
|
+
if !@app.build?
|
37
|
+
puts "== Locales: #{langs.join(", ")}"
|
38
|
+
end
|
39
|
+
|
40
|
+
# Don't output localizable files
|
41
|
+
@app.ignore File.join(@templates_dir, "**")
|
42
|
+
|
43
|
+
@app.sitemap.provides_metadata_for_path do |url|
|
44
|
+
if d = get_localization_data(url)
|
45
|
+
lang, page_id = d
|
46
|
+
instance_vars = Proc.new {
|
47
|
+
::I18n.locale = lang
|
48
|
+
@lang = lang
|
49
|
+
@page_id = page_id
|
50
|
+
}
|
51
|
+
{ :blocks => [instance_vars] }
|
52
|
+
else
|
53
|
+
{}
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
@app.sitemap.register_resource_list_manipulator(
|
58
|
+
:i18n,
|
59
|
+
@app.i18n
|
60
|
+
)
|
61
|
+
end
|
62
|
+
|
63
|
+
def langs
|
64
|
+
@options[:langs] || begin
|
65
|
+
Dir[File.join(@app.root, @app.locales_dir, "*.yml")].map { |file|
|
66
|
+
File.basename(file).gsub(".yml", "")
|
67
|
+
}.sort.map(&:to_sym)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def get_localization_data(path)
|
72
|
+
@_localization_data ||= {}
|
73
|
+
@_localization_data[path]
|
74
|
+
end
|
75
|
+
|
76
|
+
# Update the main sitemap resource list
|
77
|
+
# @return [void]
|
78
|
+
def manipulate_resource_list(resources)
|
79
|
+
@_localization_data = {}
|
80
|
+
|
81
|
+
new_resources = []
|
82
|
+
|
83
|
+
resources.each do |resource|
|
84
|
+
next unless File.fnmatch(File.join(@templates_dir, "**"), resource.path)
|
85
|
+
|
86
|
+
page_id = File.basename(resource.path, File.extname(resource.path))
|
87
|
+
|
88
|
+
langs.map do |lang|
|
89
|
+
::I18n.locale = lang
|
90
|
+
|
91
|
+
localized_page_id = ::I18n.t("paths.#{page_id}", :default => page_id)
|
92
|
+
path = resource.path.sub(@templates_dir, "")
|
93
|
+
|
94
|
+
# Build lang path
|
95
|
+
if @mount_at_root == lang
|
96
|
+
prefix = "/"
|
97
|
+
else
|
98
|
+
replacement = @lang_map.has_key?(lang) ? @lang_map[lang] : lang
|
99
|
+
prefix = @path.sub(":locale", replacement.to_s)
|
100
|
+
end
|
101
|
+
|
102
|
+
path = ::Middleman::Util.normalize_path(
|
103
|
+
File.join(prefix, path.sub(page_id, localized_page_id))
|
104
|
+
)
|
105
|
+
|
106
|
+
@_localization_data[path] = [lang, path, localized_page_id]
|
107
|
+
|
108
|
+
p = ::Middleman::Sitemap::Resource.new(
|
109
|
+
@app.sitemap,
|
110
|
+
path
|
111
|
+
)
|
112
|
+
p.proxy_to(resource.path)
|
113
|
+
|
114
|
+
new_resources << p
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
resources + new_resources
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
# Frontmatter class methods
|
123
|
+
module InstanceMethods
|
124
|
+
|
125
|
+
# Initialize the i18n
|
126
|
+
def i18n
|
127
|
+
@_i18n ||= Localizer.new(self)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Main i18n API
|
131
|
+
def localize(options={})
|
132
|
+
settings.after_configuration do
|
133
|
+
i18n.setup(options)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
137
|
+
end
|
@@ -1,27 +1,44 @@
|
|
1
|
+
require "middleman-core/renderers/erb"
|
2
|
+
|
1
3
|
# Shutup Tilt Warnings
|
4
|
+
# @private
|
2
5
|
class Tilt::Template
|
3
6
|
def warn(*args)
|
4
7
|
# Kernel.warn(*args)
|
5
8
|
end
|
6
9
|
end
|
7
10
|
|
11
|
+
# Rendering extension
|
8
12
|
module Middleman::CoreExtensions::Rendering
|
13
|
+
|
14
|
+
# Setup extension
|
9
15
|
class << self
|
16
|
+
|
17
|
+
# Once registered
|
10
18
|
def registered(app)
|
19
|
+
# Include methods
|
11
20
|
app.send :include, InstanceMethods
|
12
21
|
|
13
22
|
# Activate custom renderers
|
14
23
|
app.register Middleman::Renderers::ERb
|
15
24
|
end
|
25
|
+
|
16
26
|
alias :included :registered
|
17
27
|
end
|
18
28
|
|
29
|
+
# Custom error class for handling
|
19
30
|
class TemplateNotFound < RuntimeError
|
20
31
|
end
|
21
32
|
|
33
|
+
# Rendering instance methods
|
22
34
|
module InstanceMethods
|
35
|
+
|
36
|
+
# Override init to clear cache on file removal
|
23
37
|
def initialize
|
24
|
-
|
38
|
+
# Default extension map
|
39
|
+
@_template_extensions = {
|
40
|
+
|
41
|
+
}
|
25
42
|
|
26
43
|
static_path = source_dir.sub(self.root, "").sub(/^\//, "")
|
27
44
|
render_regex = static_path.empty? ? // : (%r{^#{static_path + "/"}})
|
@@ -30,41 +47,73 @@ module Middleman::CoreExtensions::Rendering
|
|
30
47
|
path = File.expand_path(file, self.root)
|
31
48
|
self.cache.remove(:raw_template, path)
|
32
49
|
end
|
50
|
+
|
51
|
+
super
|
52
|
+
end
|
53
|
+
|
54
|
+
# Add or overwrite a default template extension
|
55
|
+
#
|
56
|
+
# @param [Hash] extension_map
|
57
|
+
# @return [void]
|
58
|
+
def template_extensions(extension_map={})
|
59
|
+
@_template_extensions.merge!(extension_map)
|
33
60
|
end
|
34
61
|
|
62
|
+
# Render a template, with layout, given a path
|
63
|
+
#
|
64
|
+
# @param [String] path
|
65
|
+
# @param [Hash] locs
|
66
|
+
# @param [Hash] opts
|
67
|
+
# @return [String]
|
35
68
|
def render_template(path, locs={}, opts={})
|
69
|
+
# Detect the remdering engine from the extension
|
36
70
|
extension = File.extname(path)
|
37
71
|
engine = extension[1..-1].to_sym
|
38
72
|
|
73
|
+
# Store last engine for later (could be inside nested renders)
|
39
74
|
@current_engine, engine_was = engine, @current_engine
|
40
75
|
|
41
76
|
# Use a dup of self as a context so that instance variables set within
|
42
77
|
# the template don't persist for other templates.
|
43
78
|
context = self.dup
|
44
79
|
|
80
|
+
# Store current locs/opts for later
|
45
81
|
@current_locs = locs, @current_opts = opts
|
46
82
|
|
83
|
+
# Keep rendering template until we've used up all extensions. This handles
|
84
|
+
# cases like `style.css.sass.erb`
|
47
85
|
while ::Tilt[path]
|
48
86
|
content = render_individual_file(path, locs, opts, context)
|
49
87
|
path = File.basename(path, File.extname(path))
|
50
88
|
cache.set([:raw_template, path], content)
|
51
89
|
end
|
52
90
|
|
53
|
-
|
91
|
+
# Certain output file types don't use layouts
|
92
|
+
needs_layout = !%w(.js .json .css .txt).include?(extension)
|
54
93
|
|
94
|
+
# If we need a layout and have a layout, use it
|
55
95
|
if needs_layout && layout_path = fetch_layout(engine, opts)
|
56
96
|
content = render_individual_file(layout_path, locs, opts, context) { content }
|
57
97
|
end
|
58
98
|
|
99
|
+
# Return result
|
59
100
|
content
|
60
101
|
ensure
|
102
|
+
# Pop all the saved variables from earlier as we may be returning to a
|
103
|
+
# previous render (layouts, partials, nested layouts).
|
61
104
|
@current_engine = engine_was
|
62
105
|
@content_blocks = nil
|
63
106
|
@current_locs = nil
|
64
107
|
@current_opts = nil
|
65
108
|
end
|
66
109
|
|
67
|
-
# Sinatra/Padrino render method signature
|
110
|
+
# Sinatra/Padrino compatible render method signature referenced by some view
|
111
|
+
# helpers. Especially partials.
|
112
|
+
#
|
113
|
+
# @param [String, Symbol] engine
|
114
|
+
# @param [String, Symbol] data
|
115
|
+
# @param [Hash] options
|
116
|
+
# @return [String]
|
68
117
|
def render(engine, data, options={}, &block)
|
69
118
|
data = data.to_s
|
70
119
|
|
@@ -73,30 +122,36 @@ module Middleman::CoreExtensions::Rendering
|
|
73
122
|
found_partial = false
|
74
123
|
engine = nil
|
75
124
|
|
76
|
-
|
77
|
-
|
78
|
-
current_dir = File.dirname(
|
79
|
-
engine = File.extname(
|
125
|
+
# If the path is known to the sitemap
|
126
|
+
if resource = sitemap.find_resource_by_path(current_path)
|
127
|
+
current_dir = File.dirname(resource.source_file)
|
128
|
+
engine = File.extname(resource.source_file)[1..-1].to_sym
|
80
129
|
|
130
|
+
# Look for partials relative to the current path
|
81
131
|
if current_dir != self.source_dir
|
82
132
|
relative_dir = File.join(current_dir.sub("#{self.source_dir}/", ""), data)
|
83
133
|
|
84
|
-
|
134
|
+
# Try to use the current engine first
|
135
|
+
found_partial, found_engine = resolve_template(relative_dir, :preferred_engine => engine, :try_without_underscore => true)
|
85
136
|
|
137
|
+
# Fall back to any engine available
|
86
138
|
if !found_partial
|
87
|
-
found_partial, found_engine = resolve_template(relative_dir)
|
139
|
+
found_partial, found_engine = resolve_template(relative_dir, :try_without_underscore => true)
|
88
140
|
end
|
89
141
|
end
|
90
142
|
end
|
91
|
-
|
143
|
+
|
144
|
+
# Look in the root for the partial with the current engine
|
92
145
|
if !found_partial && !engine.nil?
|
93
|
-
found_partial, found_engine = resolve_template(data, :preferred_engine => engine)
|
146
|
+
found_partial, found_engine = resolve_template(data, :preferred_engine => engine, :try_without_underscore => true)
|
94
147
|
end
|
95
148
|
|
149
|
+
# Look in the root with any engine
|
96
150
|
if !found_partial
|
97
|
-
found_partial, found_engine = resolve_template(data)
|
151
|
+
found_partial, found_engine = resolve_template(data, :try_without_underscore => true)
|
98
152
|
end
|
99
153
|
|
154
|
+
# Render the partial if found, otherwide throw exception
|
100
155
|
if found_partial
|
101
156
|
render_individual_file(found_partial, locals, options, self, &block)
|
102
157
|
else
|
@@ -104,34 +159,53 @@ module Middleman::CoreExtensions::Rendering
|
|
104
159
|
end
|
105
160
|
end
|
106
161
|
|
107
|
-
#
|
162
|
+
# Render an on-disk file. Used for everything, including layouts.
|
163
|
+
#
|
164
|
+
# @param [String, Symbol] path
|
165
|
+
# @param [Hash] locs
|
166
|
+
# @param [Hash] opts
|
167
|
+
# @param [Class] context
|
168
|
+
# @return [String]
|
108
169
|
def render_individual_file(path, locs = {}, opts = {}, context = self, &block)
|
109
170
|
path = path.to_s
|
110
171
|
|
172
|
+
# Save current buffere for later
|
111
173
|
@_out_buf, _buf_was = "", @_out_buf
|
112
174
|
|
175
|
+
# Read from disk or cache the contents of the file
|
113
176
|
body = cache.fetch(:raw_template, path) do
|
114
177
|
File.read(path)
|
115
178
|
end
|
116
179
|
|
180
|
+
# Merge per-extension options from config
|
117
181
|
extension = File.extname(path)
|
118
182
|
options = opts.merge(options_for_ext(extension))
|
119
183
|
options[:outvar] ||= '@_out_buf'
|
120
184
|
|
185
|
+
# Read compiled template from disk or cache
|
121
186
|
template = cache.fetch(:compiled_template, options, body) do
|
122
187
|
::Tilt.new(path, 1, options) { body }
|
123
188
|
end
|
124
189
|
|
190
|
+
# Render using Tilt
|
125
191
|
template.render(context, locs, &block)
|
126
|
-
ensure
|
192
|
+
ensure
|
193
|
+
# Reset stored buffer
|
127
194
|
@_out_buf = _buf_was
|
128
195
|
end
|
129
196
|
|
130
|
-
#
|
197
|
+
# Get a hash of configuration options for a given file extension, from
|
198
|
+
# config.rb
|
199
|
+
#
|
200
|
+
# @param [String] ext
|
201
|
+
# @return [Hash]
|
131
202
|
def options_for_ext(ext)
|
203
|
+
# Read options for extension from config/Tilt or cache
|
132
204
|
cache.fetch(:options_for_ext, ext) do
|
133
205
|
options = {}
|
134
206
|
|
207
|
+
# Find all the engines which handle this extension in tilt. Look for
|
208
|
+
# config variables of that name and merge it
|
135
209
|
extension_class = ::Tilt[ext]
|
136
210
|
::Tilt.mappings.each do |ext, engines|
|
137
211
|
next unless engines.include? extension_class
|
@@ -143,13 +217,21 @@ module Middleman::CoreExtensions::Rendering
|
|
143
217
|
end
|
144
218
|
end
|
145
219
|
|
146
|
-
#
|
220
|
+
# Find a layout for a given engine
|
221
|
+
#
|
222
|
+
# @param [Symbol] engine
|
223
|
+
# @param [Hash] opts
|
224
|
+
# @return [String]
|
147
225
|
def fetch_layout(engine, opts)
|
226
|
+
# The layout name comes from either the system default or the options
|
148
227
|
local_layout = opts.has_key?(:layout) ? opts[:layout] : layout
|
149
228
|
return false unless local_layout
|
150
229
|
|
230
|
+
# Look for engine-specific options
|
151
231
|
engine_options = respond_to?(engine) ? send(engine) : {}
|
152
232
|
|
233
|
+
# The engine for the layout can be set in options, engine_options or passed
|
234
|
+
# into this method
|
153
235
|
layout_engine = if opts.has_key?(:layout_engine)
|
154
236
|
opts[:layout_engine]
|
155
237
|
elsif engine_options.has_key?(:layout_engine)
|
@@ -158,7 +240,7 @@ module Middleman::CoreExtensions::Rendering
|
|
158
240
|
engine
|
159
241
|
end
|
160
242
|
|
161
|
-
# Automatic
|
243
|
+
# Automatic mode
|
162
244
|
if local_layout == :_auto_layout
|
163
245
|
# Look for :layout of any extension
|
164
246
|
# If found, use it. If not, continue
|
@@ -174,10 +256,15 @@ module Middleman::CoreExtensions::Rendering
|
|
174
256
|
end
|
175
257
|
end
|
176
258
|
|
177
|
-
#
|
259
|
+
# Find a layout on-disk, optionally using a specific engine
|
260
|
+
# @param [String] name
|
261
|
+
# @param [Symbol] preferred_engine
|
262
|
+
# @return [String]
|
178
263
|
def locate_layout(name, preferred_engine=nil)
|
264
|
+
# Whether we've found the layout
|
179
265
|
layout_path = false
|
180
266
|
|
267
|
+
# If we prefer a specific engine
|
181
268
|
if !preferred_engine.nil?
|
182
269
|
# Check root
|
183
270
|
layout_path, layout_engine = resolve_template(name, :preferred_engine => preferred_engine)
|
@@ -198,38 +285,52 @@ module Middleman::CoreExtensions::Rendering
|
|
198
285
|
layout_path, layout_engine = resolve_template(File.join("layouts", name.to_s))
|
199
286
|
end
|
200
287
|
|
288
|
+
# Return the path
|
201
289
|
layout_path
|
202
290
|
end
|
203
291
|
|
292
|
+
# Allow layouts to be wrapped in the contents of other layouts
|
293
|
+
# @param [String, Symbol] layout_name
|
294
|
+
# @return [void]
|
204
295
|
def wrap_layout(layout_name, &block)
|
205
296
|
content = capture(&block) if block_given?
|
206
297
|
layout_path = locate_layout(layout_name, current_engine)
|
207
298
|
concat render_individual_file(layout_path, @current_locs || {}, @current_opts || {}, self) { content }
|
208
299
|
end
|
209
|
-
|
300
|
+
|
301
|
+
# The currently rendering engine
|
302
|
+
# @return [Symbol, nil]
|
210
303
|
def current_engine
|
211
304
|
@current_engine ||= nil
|
212
305
|
end
|
213
306
|
|
214
|
-
#
|
307
|
+
# Find a template on disk given a output path
|
308
|
+
# @param [String] request_path
|
309
|
+
# @param [Hash] options
|
310
|
+
# @return [Array<String, Symbol>, Boolean]
|
215
311
|
def resolve_template(request_path, options={})
|
312
|
+
# Find the path by searching or using the cache
|
216
313
|
request_path = request_path.to_s
|
217
314
|
cache.fetch(:resolve_template, request_path, options) do
|
218
315
|
relative_path = request_path.sub(%r{^/}, "")
|
219
316
|
on_disk_path = File.expand_path(relative_path, self.source_dir)
|
220
317
|
|
318
|
+
# By default, any engine will do
|
221
319
|
preferred_engine = "*"
|
222
320
|
|
321
|
+
# Unless we're specifically looking for a preferred engine
|
223
322
|
if options.has_key?(:preferred_engine)
|
224
323
|
extension_class = ::Tilt[options[:preferred_engine]]
|
225
324
|
matched_exts = []
|
226
325
|
|
326
|
+
# Get a list of extensions for a preferred engine
|
227
327
|
# TODO: Cache this
|
228
328
|
::Tilt.mappings.each do |ext, engines|
|
229
329
|
next unless engines.include? extension_class
|
230
330
|
matched_exts << ext
|
231
331
|
end
|
232
332
|
|
333
|
+
# Change the glob to only look for the matched extensions
|
233
334
|
if matched_exts.length > 0
|
234
335
|
preferred_engine = "{" + matched_exts.join(",") + "}"
|
235
336
|
else
|
@@ -237,11 +338,23 @@ module Middleman::CoreExtensions::Rendering
|
|
237
338
|
end
|
238
339
|
end
|
239
340
|
|
341
|
+
# Look for files that match
|
240
342
|
path_with_ext = on_disk_path + "." + preferred_engine
|
343
|
+
|
241
344
|
found_path = Dir[path_with_ext].find do |path|
|
242
345
|
::Tilt[path]
|
243
346
|
end
|
244
347
|
|
348
|
+
if !found_path && options[:try_without_underscore] &&
|
349
|
+
path_no_underscore = path_with_ext.
|
350
|
+
sub(relative_path, relative_path.sub(/^_/, "").
|
351
|
+
sub(/\/_/, "/"))
|
352
|
+
found_path = Dir[path_no_underscore].find do |path|
|
353
|
+
::Tilt[path]
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
357
|
+
# If we found one, return it and the found engine
|
245
358
|
if found_path || (File.exists?(on_disk_path) && !File.directory?(on_disk_path))
|
246
359
|
engine = found_path ? File.extname(found_path)[1..-1].to_sym : nil
|
247
360
|
[ found_path || on_disk_path, engine ]
|
@@ -251,4 +364,4 @@ module Middleman::CoreExtensions::Rendering
|
|
251
364
|
end
|
252
365
|
end
|
253
366
|
end
|
254
|
-
end
|
367
|
+
end
|