middleman 2.0.16.1 → 3.0.0.alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -1
- data/CHANGELOG +16 -8
- data/features/builder.feature +2 -5
- data/features/cache_buster.feature +1 -1
- data/features/clean_build.feature +0 -1
- data/features/coffee-script.feature +3 -3
- data/features/custom_layout_engines.feature +10 -0
- data/features/directory_index.feature +0 -1
- data/features/dynamic_pages.feature +0 -1
- data/features/fonts.feature +0 -1
- data/features/{padrino_helpers.feature → former_padrino_helpers.feature} +1 -1
- data/features/sprockets.feature +34 -5
- data/features/sprockets_gems.feature +7 -4
- data/features/step_definitions/asset_host_steps.rb +7 -6
- data/features/step_definitions/builder_steps.rb +4 -0
- data/features/step_definitions/middleman_steps.rb +22 -16
- data/features/step_definitions/page_layout_steps.rb +10 -8
- data/fixtures/custom-layout-app/config.rb +1 -0
- data/fixtures/custom-layout-app/source/index.html.erb +1 -0
- data/fixtures/custom-layout-app/source/layout.haml +6 -0
- data/fixtures/sprockets-app/config.rb +2 -1
- data/fixtures/sprockets-app/source/library/css/bootstrap_include.css.scss +1 -0
- data/fixtures/sprockets-app/source/library/css/plain.css +3 -0
- data/fixtures/sprockets-app/source/library/css/sprockets_base1.css.scss +1 -0
- data/fixtures/sprockets-app/source/library/css/sprockets_base2.css.scss +1 -0
- data/fixtures/sprockets-app/source/library/css/sprockets_sub.css.scss +1 -0
- data/fixtures/sprockets-app/source/{jquery_include.js → library/js/jquery_include.js} +0 -0
- data/fixtures/sprockets-app/source/library/js/plain.js +3 -0
- data/fixtures/sprockets-app/source/library/{javascripts → js}/sprockets_base.js +0 -0
- data/fixtures/sprockets-app/source/library/{javascripts → js}/sprockets_sub.js +0 -0
- data/fixtures/test-app/config.rb +5 -4
- data/fixtures/test-app/source/{padrino_test.html.haml → former_padrino_test.html.haml} +0 -0
- data/fixtures/test-app/source/stylesheets/sprockets_base1.css.scss +1 -0
- data/fixtures/test-app/source/stylesheets/sprockets_base2.css.scss +1 -0
- data/fixtures/test-app/source/stylesheets/sprockets_sub.css.scss +1 -0
- data/lib/middleman.rb +27 -25
- data/lib/middleman/base.rb +408 -166
- data/lib/middleman/builder.rb +78 -162
- data/lib/middleman/cli.rb +61 -32
- data/lib/middleman/core_extensions/assets.rb +4 -44
- data/lib/middleman/core_extensions/builder.rb +12 -16
- data/lib/middleman/core_extensions/compass.rb +28 -57
- data/lib/middleman/core_extensions/data.rb +65 -49
- data/lib/middleman/core_extensions/default_helpers.rb +33 -18
- data/lib/middleman/core_extensions/features.rb +48 -26
- data/lib/middleman/core_extensions/file_watcher.rb +66 -0
- data/lib/middleman/core_extensions/front_matter.rb +91 -86
- data/lib/middleman/core_extensions/rendering.rb +9 -8
- data/lib/middleman/core_extensions/routing.rb +19 -53
- data/lib/middleman/core_extensions/sitemap.rb +229 -0
- data/lib/middleman/core_extensions/sprockets.rb +53 -37
- data/lib/middleman/features/asset_host.rb +20 -10
- data/lib/middleman/features/automatic_image_sizes.rb +12 -9
- data/lib/middleman/features/cache_buster.rb +38 -25
- data/lib/middleman/features/directory_indexes.rb +31 -28
- data/lib/middleman/features/minify_css.rb +3 -2
- data/lib/middleman/features/minify_css/cssmin.rb +55 -0
- data/lib/middleman/features/minify_javascript.rb +12 -5
- data/lib/middleman/features/relative_assets.rb +28 -25
- data/lib/middleman/features/sitemap_tree.rb +34 -0
- data/lib/middleman/guard.rb +57 -23
- data/lib/middleman/renderers/erb.rb +29 -0
- data/lib/middleman/renderers/liquid.rb +3 -12
- data/lib/middleman/renderers/markdown.rb +16 -15
- data/lib/middleman/renderers/sass.rb +34 -38
- data/lib/middleman/vendor/hooks-0.2.0/CHANGES.textile +9 -0
- data/lib/middleman/vendor/hooks-0.2.0/Gemfile +3 -0
- data/lib/middleman/vendor/hooks-0.2.0/README.rdoc +107 -0
- data/lib/middleman/vendor/hooks-0.2.0/Rakefile +12 -0
- data/lib/middleman/vendor/hooks-0.2.0/hooks.gemspec +22 -0
- data/lib/middleman/vendor/hooks-0.2.0/lib/hooks.rb +109 -0
- data/lib/middleman/vendor/hooks-0.2.0/lib/hooks/inheritable_attribute.rb +33 -0
- data/lib/middleman/vendor/hooks-0.2.0/test/hooks_test.rb +141 -0
- data/lib/middleman/vendor/hooks-0.2.0/test/inheritable_attribute_test.rb +55 -0
- data/lib/middleman/vendor/hooks-0.2.0/test/test_helper.rb +10 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/.document +5 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/.gitignore +22 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/.yardopts +1 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/LICENSE.txt +20 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/README.rdoc +294 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/Rakefile +5 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/bin/padrino +9 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core.rb +167 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application.rb +270 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/rendering.rb +292 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/routing.rb +934 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/application/showexceptions.rb +20 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/caller.rb +53 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/adapter.rb +24 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/base.rb +151 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/console.rb +20 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/rake.rb +24 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/cli/rake_tasks.rb +59 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/command.rb +38 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/images/404.png +0 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/images/500.png +0 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/loader.rb +210 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/cs.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/da.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/de.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/en.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/es.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/fr.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/hu.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/it.yml +40 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/ja.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/lv.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/nl.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/no.yml +35 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/pl.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/pt_br.yml +40 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/ru.yml +35 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/tr.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/uk.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/zh_cn.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/locale/zh_tw.yml +34 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/logger.rb +345 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/mounter.rb +224 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/reloader.rb +254 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/router.rb +98 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/server.rb +79 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/support_lite.rb +199 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/tasks.rb +21 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/lib/padrino-core/version.rb +20 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/padrino-core.gemspec +38 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/.components +6 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/.gitignore +7 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/complex.rb +32 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/apps/simple.rb +33 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/a.rb +9 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/b.rb +4 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/c.rb +1 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/e.rb +13 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/f.rb +2 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/circular/g.rb +2 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/fixtures/dependencies/d.rb +4 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/helper.rb +81 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/mini_shoulda.rb +45 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_application.rb +108 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_core.rb +79 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_dependencies.rb +44 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_filters.rb +278 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_locale.rb +21 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_logger.rb +100 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_mounter.rb +177 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_reloader_complex.rb +75 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_reloader_simple.rb +98 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_rendering.rb +461 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_restful_routing.rb +33 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_router.rb +146 -0
- data/lib/middleman/vendor/padrino-core-0.10.5/test/test_routing.rb +1673 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/.document +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/.gitignore +21 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/.yardopts +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/LICENSE.txt +20 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/README.rdoc +239 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/Rakefile +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers.rb +58 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/asset_tag_helpers.rb +420 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_builder/abstract_form_builder.rb +220 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_builder/standard_form_builder.rb +43 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/form_helpers.rb +602 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/format_helpers.rb +381 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/cs.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/da.yml +91 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/de.yml +81 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/en.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/es.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/fr.yml +80 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/hu.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/it.yml +89 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/ja.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/lv.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/nl.yml +82 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/no.yml +91 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/pl.yml +95 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/pt_br.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/ru.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/tr.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/uk.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/zh_cn.yml +104 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/locale/zh_tw.yml +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/number_helpers.rb +288 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers.rb +175 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/abstract_handler.rb +98 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/erb_handler.rb +79 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/haml_handler.rb +63 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/output_helpers/slim_handler.rb +81 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/render_helpers.rb +60 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/tag_helpers.rb +103 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/lib/padrino-helpers/translation_helpers.rb +38 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/padrino-helpers.gemspec +27 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/app.rb +73 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.erb +14 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.haml +12 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/capture_concat.slim +13 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.erb +14 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.haml +12 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_for.slim +12 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.erb +11 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.haml +9 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/content_tag.slim +9 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.erb +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.haml +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/current_engine.slim +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.erb +20 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.haml +15 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/fields_for.slim +15 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.erb +56 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.haml +47 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_for.slim +47 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.erb +56 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.haml +45 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/form_tag.slim +45 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.erb +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.haml +4 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/link_to.slim +4 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.erb +3 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.haml +3 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/mail_to.slim +3 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.erb +3 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.haml +3 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/meta_tag.slim +3 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_erb.erb +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_haml.haml +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/partials/_slim.slim +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.erb +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.haml +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/markup_app/views/simple_partial.slim +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/app.rb +50 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engine.haml +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_erb.erb +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_haml.haml +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/current_engines/_slim.slim +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/erb/test.erb +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/explicit_engine.haml +5 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/haml/test.haml +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/_user.haml +7 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/haml_template.haml +1 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/fixtures/render_app/views/template/some_template.haml +2 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/helper.rb +66 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_asset_tag_helpers.rb +320 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_form_builder.rb +996 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_form_helpers.rb +645 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_format_helpers.rb +227 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_locale.rb +20 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_number_helpers.rb +136 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_output_helpers.rb +153 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_render_helpers.rb +76 -0
- data/lib/middleman/vendor/padrino-helpers-0.10.5/test/test_tag_helpers.rb +105 -0
- data/lib/middleman/version.rb +1 -1
- data/middleman-x86-mingw32.gemspec +16 -33
- data/middleman.gemspec +16 -31
- metadata +590 -349
- data/features/sinatra.feature +0 -6
- data/lib/middleman/core_extensions/rack_map.rb +0 -35
- data/lib/middleman/renderers/coffee_script.rb +0 -8
- data/lib/middleman/renderers/haml.rb +0 -31
- data/lib/middleman/renderers/slim.rb +0 -8
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
uk:
|
|
2
|
+
number:
|
|
3
|
+
# Used in number_with_delimiter()
|
|
4
|
+
# These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
|
|
5
|
+
format:
|
|
6
|
+
# Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
|
|
7
|
+
separator: ","
|
|
8
|
+
# Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three)
|
|
9
|
+
delimiter: ""
|
|
10
|
+
# Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
|
|
11
|
+
precision: 3
|
|
12
|
+
|
|
13
|
+
# Used in number_to_currency()
|
|
14
|
+
currency:
|
|
15
|
+
format:
|
|
16
|
+
# Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
|
|
17
|
+
format: "%n %u"
|
|
18
|
+
unit: "грн"
|
|
19
|
+
# These three are to override number.format and are optional
|
|
20
|
+
separator: ","
|
|
21
|
+
delimiter: " "
|
|
22
|
+
precision: 2
|
|
23
|
+
|
|
24
|
+
# Used in number_to_percentage()
|
|
25
|
+
percentage:
|
|
26
|
+
format:
|
|
27
|
+
# These three are to override number.format and are optional
|
|
28
|
+
# separator:
|
|
29
|
+
delimiter: ""
|
|
30
|
+
# precision:
|
|
31
|
+
|
|
32
|
+
# Used in number_to_precision()
|
|
33
|
+
precision:
|
|
34
|
+
format:
|
|
35
|
+
# These three are to override number.format and are optional
|
|
36
|
+
# separator:
|
|
37
|
+
delimiter: ""
|
|
38
|
+
# precision:
|
|
39
|
+
|
|
40
|
+
# Used in number_to_human_size()
|
|
41
|
+
human:
|
|
42
|
+
format:
|
|
43
|
+
# These three are to override number.format and are optional
|
|
44
|
+
# separator:
|
|
45
|
+
delimiter: ""
|
|
46
|
+
precision: 1
|
|
47
|
+
storage_units:
|
|
48
|
+
# Storage units output formatting.
|
|
49
|
+
# %u is the storage unit, %n is the number (default: 2 MB)
|
|
50
|
+
format: "%n %u"
|
|
51
|
+
units:
|
|
52
|
+
byte:
|
|
53
|
+
one: "Байт"
|
|
54
|
+
other: "Байт"
|
|
55
|
+
kb: "Кб"
|
|
56
|
+
mb: "Мб"
|
|
57
|
+
gb: "Гб"
|
|
58
|
+
tb: "Тб"
|
|
59
|
+
|
|
60
|
+
# Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
|
|
61
|
+
datetime:
|
|
62
|
+
distance_in_words:
|
|
63
|
+
half_a_minute: "півхвилини"
|
|
64
|
+
less_than_x_seconds:
|
|
65
|
+
one: "менше секунди"
|
|
66
|
+
other: "менше %{count} секунд"
|
|
67
|
+
x_seconds:
|
|
68
|
+
one: "1 секунда"
|
|
69
|
+
other: "%{count} секунд"
|
|
70
|
+
less_than_x_minutes:
|
|
71
|
+
one: "менше хвилини"
|
|
72
|
+
other: "менше %{count} хвилин"
|
|
73
|
+
x_minutes:
|
|
74
|
+
one: "1 хвилина"
|
|
75
|
+
other: "%{count} хвилин"
|
|
76
|
+
about_x_hours:
|
|
77
|
+
one: "близько години"
|
|
78
|
+
other: "близько %{count} годин"
|
|
79
|
+
x_days:
|
|
80
|
+
one: "1 день"
|
|
81
|
+
other: "%{count} днів"
|
|
82
|
+
about_x_months:
|
|
83
|
+
one: "близько місяця"
|
|
84
|
+
other: "близько %{count} місяців"
|
|
85
|
+
x_months:
|
|
86
|
+
one: "1 місяць"
|
|
87
|
+
other: "%{count} месяців"
|
|
88
|
+
about_x_years:
|
|
89
|
+
one: "близько року"
|
|
90
|
+
other: "близько %{count} років"
|
|
91
|
+
over_x_years:
|
|
92
|
+
one: "більше року"
|
|
93
|
+
other: "більше %{count} років"
|
|
94
|
+
almost_x_years:
|
|
95
|
+
one: "майже рік"
|
|
96
|
+
other: "майжу %{count} роки"
|
|
97
|
+
models:
|
|
98
|
+
errors:
|
|
99
|
+
template:
|
|
100
|
+
header:
|
|
101
|
+
one: "Дані «%{model}» не можуть бути збережені через 1 помилки"
|
|
102
|
+
other: "Дані «%{model}» не можуть бути збережені через %{count} помилок"
|
|
103
|
+
body: "Допущені помилки в наступних полях:"
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
zh_cn:
|
|
2
|
+
number:
|
|
3
|
+
# Used in number_with_delimiter()
|
|
4
|
+
# These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
|
|
5
|
+
format:
|
|
6
|
+
# Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
|
|
7
|
+
separator: "."
|
|
8
|
+
# Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three)
|
|
9
|
+
delimiter: ","
|
|
10
|
+
# Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
|
|
11
|
+
precision: 3
|
|
12
|
+
|
|
13
|
+
# Used in number_to_currency()
|
|
14
|
+
currency:
|
|
15
|
+
format:
|
|
16
|
+
# Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
|
|
17
|
+
format: "%u %n"
|
|
18
|
+
unit: "元"
|
|
19
|
+
# These three are to override number.format and are optional
|
|
20
|
+
separator: "."
|
|
21
|
+
delimiter: ","
|
|
22
|
+
precision: 2
|
|
23
|
+
|
|
24
|
+
# Used in number_to_percentage()
|
|
25
|
+
percentage:
|
|
26
|
+
format:
|
|
27
|
+
# These three are to override number.format and are optional
|
|
28
|
+
# separator:
|
|
29
|
+
delimiter: ""
|
|
30
|
+
# precision:
|
|
31
|
+
|
|
32
|
+
# Used in number_to_precision()
|
|
33
|
+
precision:
|
|
34
|
+
format:
|
|
35
|
+
# These three are to override number.format and are optional
|
|
36
|
+
# separator:
|
|
37
|
+
delimiter: ""
|
|
38
|
+
# precision:
|
|
39
|
+
|
|
40
|
+
# Used in number_to_human_size()
|
|
41
|
+
human:
|
|
42
|
+
format:
|
|
43
|
+
# These three are to override number.format and are optional
|
|
44
|
+
# separator:
|
|
45
|
+
delimiter: ""
|
|
46
|
+
precision: 1
|
|
47
|
+
storage_units:
|
|
48
|
+
# Storage units output formatting.
|
|
49
|
+
# %u is the storage unit, %n is the number (default: 2 MB)
|
|
50
|
+
format: "%n %u"
|
|
51
|
+
units:
|
|
52
|
+
byte:
|
|
53
|
+
one: "Byte"
|
|
54
|
+
other: "Bytes"
|
|
55
|
+
kb: "KB"
|
|
56
|
+
mb: "MB"
|
|
57
|
+
gb: "GB"
|
|
58
|
+
tb: "TB"
|
|
59
|
+
|
|
60
|
+
# Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
|
|
61
|
+
datetime:
|
|
62
|
+
distance_in_words:
|
|
63
|
+
half_a_minute: "半分钟"
|
|
64
|
+
less_than_x_seconds:
|
|
65
|
+
one: "不到一秒"
|
|
66
|
+
other: "不到 %{count} 秒"
|
|
67
|
+
x_seconds:
|
|
68
|
+
one: "一秒"
|
|
69
|
+
other: "%{count} 秒"
|
|
70
|
+
less_than_x_minutes:
|
|
71
|
+
one: "不到一分钟"
|
|
72
|
+
other: "不到 %{count} 分钟"
|
|
73
|
+
x_minutes:
|
|
74
|
+
one: "一分钟"
|
|
75
|
+
other: "%{count} 分钟"
|
|
76
|
+
about_x_hours:
|
|
77
|
+
one: "大约一小时"
|
|
78
|
+
other: "大约 %{count} 小时"
|
|
79
|
+
x_days:
|
|
80
|
+
one: "一天"
|
|
81
|
+
other: "%{count} 天"
|
|
82
|
+
about_x_months:
|
|
83
|
+
one: "大约一个月"
|
|
84
|
+
other: "大约 %{count} 个月"
|
|
85
|
+
x_months:
|
|
86
|
+
one: "一个月"
|
|
87
|
+
other: "%{count} 个月"
|
|
88
|
+
about_x_years:
|
|
89
|
+
one: "大约一年"
|
|
90
|
+
other: "大约 %{count} 年"
|
|
91
|
+
over_x_years:
|
|
92
|
+
one: "一年多"
|
|
93
|
+
other: "%{count} 年多"
|
|
94
|
+
almost_x_years:
|
|
95
|
+
one: "接近一年"
|
|
96
|
+
other: "接近 %{count} 年"
|
|
97
|
+
models:
|
|
98
|
+
errors:
|
|
99
|
+
template:
|
|
100
|
+
header:
|
|
101
|
+
one: "有1 个错误发生使得「%{model}」无法被储存。 "
|
|
102
|
+
other: "有%{count} 个错误发生使得「%{model}」无法被储存。 "
|
|
103
|
+
body: "以下栏位发生问题:"
|
|
104
|
+
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
zh_tw:
|
|
2
|
+
number:
|
|
3
|
+
# Used in number_with_delimiter()
|
|
4
|
+
# These are also the defaults for 'currency', 'percentage', 'precision', and 'human'
|
|
5
|
+
format:
|
|
6
|
+
# Sets the separator between the units, for more precision (e.g. 1.0 / 2.0 == 0.5)
|
|
7
|
+
separator: "."
|
|
8
|
+
# Delimets thousands (e.g. 1,000,000 is a million) (always in groups of three)
|
|
9
|
+
delimiter: ","
|
|
10
|
+
# Number of decimals, behind the separator (the number 1 with a precision of 2 gives: 1.00)
|
|
11
|
+
precision: 3
|
|
12
|
+
|
|
13
|
+
# Used in number_to_currency()
|
|
14
|
+
currency:
|
|
15
|
+
format:
|
|
16
|
+
# Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
|
|
17
|
+
format: "%u %n"
|
|
18
|
+
unit: "NT$"
|
|
19
|
+
# These three are to override number.format and are optional
|
|
20
|
+
separator: "."
|
|
21
|
+
delimiter: ","
|
|
22
|
+
precision: 2
|
|
23
|
+
|
|
24
|
+
# Used in number_to_percentage()
|
|
25
|
+
percentage:
|
|
26
|
+
format:
|
|
27
|
+
# These three are to override number.format and are optional
|
|
28
|
+
# separator:
|
|
29
|
+
delimiter: ""
|
|
30
|
+
# precision:
|
|
31
|
+
|
|
32
|
+
# Used in number_to_precision()
|
|
33
|
+
precision:
|
|
34
|
+
format:
|
|
35
|
+
# These three are to override number.format and are optional
|
|
36
|
+
# separator:
|
|
37
|
+
delimiter: ""
|
|
38
|
+
# precision:
|
|
39
|
+
|
|
40
|
+
# Used in number_to_human_size()
|
|
41
|
+
human:
|
|
42
|
+
format:
|
|
43
|
+
# These three are to override number.format and are optional
|
|
44
|
+
# separator:
|
|
45
|
+
delimiter: ""
|
|
46
|
+
precision: 1
|
|
47
|
+
storage_units:
|
|
48
|
+
# Storage units output formatting.
|
|
49
|
+
# %u is the storage unit, %n is the number (default: 2 MB)
|
|
50
|
+
format: "%n %u"
|
|
51
|
+
units:
|
|
52
|
+
byte:
|
|
53
|
+
one: "Byte"
|
|
54
|
+
other: "Bytes"
|
|
55
|
+
kb: "KB"
|
|
56
|
+
mb: "MB"
|
|
57
|
+
gb: "GB"
|
|
58
|
+
tb: "TB"
|
|
59
|
+
|
|
60
|
+
# Used in distance_of_time_in_words(), distance_of_time_in_words_to_now(), time_ago_in_words()
|
|
61
|
+
datetime:
|
|
62
|
+
distance_in_words:
|
|
63
|
+
half_a_minute: "半分鐘"
|
|
64
|
+
less_than_x_seconds:
|
|
65
|
+
one: "不到一秒"
|
|
66
|
+
other: "不到 %{count} 秒"
|
|
67
|
+
x_seconds:
|
|
68
|
+
one: "一秒"
|
|
69
|
+
other: "%{count} 秒"
|
|
70
|
+
less_than_x_minutes:
|
|
71
|
+
one: "不到一分鐘"
|
|
72
|
+
other: "不到 %{count} 分鐘"
|
|
73
|
+
x_minutes:
|
|
74
|
+
one: "一分鐘"
|
|
75
|
+
other: "%{count} 分鐘"
|
|
76
|
+
about_x_hours:
|
|
77
|
+
one: "大約一小時"
|
|
78
|
+
other: "大約 %{count} 小時"
|
|
79
|
+
x_days:
|
|
80
|
+
one: "一天"
|
|
81
|
+
other: "%{count} 天"
|
|
82
|
+
about_x_months:
|
|
83
|
+
one: "大約一個月"
|
|
84
|
+
other: "大約 %{count} 個月"
|
|
85
|
+
x_months:
|
|
86
|
+
one: "一個月"
|
|
87
|
+
other: "%{count} 個月"
|
|
88
|
+
about_x_years:
|
|
89
|
+
one: "大約一年"
|
|
90
|
+
other: "大約 %{count} 年"
|
|
91
|
+
over_x_years:
|
|
92
|
+
one: "一年多"
|
|
93
|
+
other: "%{count} 年多"
|
|
94
|
+
almost_x_years:
|
|
95
|
+
one: "接近一年"
|
|
96
|
+
other: "接近 %{count} 年"
|
|
97
|
+
models:
|
|
98
|
+
errors:
|
|
99
|
+
template:
|
|
100
|
+
header:
|
|
101
|
+
one: "有 1 個錯誤發生使得「%{model}」無法被儲存。"
|
|
102
|
+
other: "有 %{count} 個錯誤發生使得「%{model}」無法被儲存。"
|
|
103
|
+
body: "以下欄位發生問題:"
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
module Padrino
|
|
2
|
+
module Helpers
|
|
3
|
+
##
|
|
4
|
+
# Provides methods for converting numbers into formatted strings.
|
|
5
|
+
# Methods are provided for phone numbers, currency, percentage,
|
|
6
|
+
# precision, positional notation, and file size.
|
|
7
|
+
#
|
|
8
|
+
# Adapted from Rails Number Helpers.
|
|
9
|
+
#
|
|
10
|
+
module NumberHelpers
|
|
11
|
+
##
|
|
12
|
+
# Formats a +number+ into a currency string (e.g., $13.65). You can customize the format
|
|
13
|
+
# in the +options+ hash.
|
|
14
|
+
#
|
|
15
|
+
# @param [Float] number
|
|
16
|
+
# Currency value to format.
|
|
17
|
+
# @param [Hash] options
|
|
18
|
+
# Options for currency conversion.
|
|
19
|
+
# @option options [Fixnum] :precision (2)
|
|
20
|
+
# Sets the level of precision.
|
|
21
|
+
# @option options [String] :unit ("$")
|
|
22
|
+
# Sets the denomination of the currency.
|
|
23
|
+
# @option options [String] :separator (".")
|
|
24
|
+
# Sets the separator between the units.
|
|
25
|
+
# @option options [String] :delimiter (",")
|
|
26
|
+
# Sets the thousands delimiter.
|
|
27
|
+
# @option options [String] :format ("%u%n")
|
|
28
|
+
# Sets the format of the output string. The field types are:
|
|
29
|
+
# %u The currency unit
|
|
30
|
+
# %n The number
|
|
31
|
+
#
|
|
32
|
+
# @return [String] The formatted representation of the currency
|
|
33
|
+
#
|
|
34
|
+
# @example
|
|
35
|
+
# number_to_currency(1234567890.50) # => $1,234,567,890.50
|
|
36
|
+
# number_to_currency(1234567890.506) # => $1,234,567,890.51
|
|
37
|
+
# number_to_currency(1234567890.506, :precision => 3) # => $1,234,567,890.506
|
|
38
|
+
# number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "")
|
|
39
|
+
# # => £1234567890,50
|
|
40
|
+
# number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "", :format => "%n %u")
|
|
41
|
+
# # => 1234567890,50 £
|
|
42
|
+
#
|
|
43
|
+
# @api public
|
|
44
|
+
def number_to_currency(number, options = {})
|
|
45
|
+
options.symbolize_keys!
|
|
46
|
+
|
|
47
|
+
defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
|
|
48
|
+
currency = I18n.translate(:'number.currency.format', :locale => options[:locale], :raise => true) rescue {}
|
|
49
|
+
defaults = defaults.merge(currency)
|
|
50
|
+
|
|
51
|
+
precision = options[:precision] || defaults[:precision]
|
|
52
|
+
unit = options[:unit] || defaults[:unit]
|
|
53
|
+
separator = options[:separator] || defaults[:separator]
|
|
54
|
+
delimiter = options[:delimiter] || defaults[:delimiter]
|
|
55
|
+
format = options[:format] || defaults[:format]
|
|
56
|
+
separator = '' if precision == 0
|
|
57
|
+
|
|
58
|
+
begin
|
|
59
|
+
format.gsub(/%n/, number_with_precision(number,
|
|
60
|
+
:precision => precision,
|
|
61
|
+
:delimiter => delimiter,
|
|
62
|
+
:separator => separator)
|
|
63
|
+
).gsub(/%u/, unit)
|
|
64
|
+
rescue
|
|
65
|
+
number
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
##
|
|
70
|
+
# Formats a +number+ as a percentage string (e.g., 65%). You can customize the
|
|
71
|
+
# format in the +options+ hash.
|
|
72
|
+
#
|
|
73
|
+
# @param [Fixnum, Float] number
|
|
74
|
+
# Percentage value to format.
|
|
75
|
+
# @param [Hash] options
|
|
76
|
+
# Options for percentage conversion.
|
|
77
|
+
# @option options [Fixnum] :precision (3)
|
|
78
|
+
# Sets the level of precision.
|
|
79
|
+
# @option options [String] :separator (".")
|
|
80
|
+
# Sets the separator between the units.
|
|
81
|
+
# @option options [String] :delimiter ("")
|
|
82
|
+
# Sets the thousands delimiter
|
|
83
|
+
#
|
|
84
|
+
# @return [String] The formatted representation of the percentage
|
|
85
|
+
#
|
|
86
|
+
# @example
|
|
87
|
+
# number_to_percentage(100) # => 100.000%
|
|
88
|
+
# number_to_percentage(100, :precision => 0) # => 100%
|
|
89
|
+
# number_to_percentage(1000, :delimiter => '.', :separator => ',') # => 1.000,000%
|
|
90
|
+
# number_to_percentage(302.24398923423, :precision => 5) # => 302.24399%
|
|
91
|
+
#
|
|
92
|
+
# @api public
|
|
93
|
+
def number_to_percentage(number, options = {})
|
|
94
|
+
options.symbolize_keys!
|
|
95
|
+
|
|
96
|
+
defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
|
|
97
|
+
percentage = I18n.translate(:'number.percentage.format', :locale => options[:locale], :raise => true) rescue {}
|
|
98
|
+
defaults = defaults.merge(percentage)
|
|
99
|
+
|
|
100
|
+
precision = options[:precision] || defaults[:precision]
|
|
101
|
+
separator = options[:separator] || defaults[:separator]
|
|
102
|
+
delimiter = options[:delimiter] || defaults[:delimiter]
|
|
103
|
+
|
|
104
|
+
begin
|
|
105
|
+
number_with_precision(number,
|
|
106
|
+
:precision => precision,
|
|
107
|
+
:separator => separator,
|
|
108
|
+
:delimiter => delimiter) + "%"
|
|
109
|
+
rescue
|
|
110
|
+
number
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
##
|
|
115
|
+
# Formats a +number+ with grouped thousands using +delimiter+ (e.g., 12,324). You can
|
|
116
|
+
# customize the format in the +options+ hash.
|
|
117
|
+
#
|
|
118
|
+
# @overload number_with_delimiter(number, options={})
|
|
119
|
+
# @param [Fixnum, Float] number
|
|
120
|
+
# Number value to format.
|
|
121
|
+
# @param [Hash] options
|
|
122
|
+
# Options for formatter.
|
|
123
|
+
# @option options [String] :delimiter (", ")
|
|
124
|
+
# Sets the thousands delimiter
|
|
125
|
+
# @option options [String] :separator (".")
|
|
126
|
+
# Sets the separator between the units.
|
|
127
|
+
#
|
|
128
|
+
# @return [String] The formatted representation of the number
|
|
129
|
+
#
|
|
130
|
+
# @example
|
|
131
|
+
# number_with_delimiter(12345678) # => 12,345,678
|
|
132
|
+
# number_with_delimiter(12345678.05) # => 12,345,678.05
|
|
133
|
+
# number_with_delimiter(12345678, :delimiter => ".") # => 12.345.678
|
|
134
|
+
# number_with_delimiter(12345678, :separator => ",") # => 12,345,678
|
|
135
|
+
# number_with_delimiter(98765432.98, :delimiter => " ", :separator => ",")
|
|
136
|
+
# # => 98 765 432,98
|
|
137
|
+
#
|
|
138
|
+
# @api public
|
|
139
|
+
def number_with_delimiter(number, *args)
|
|
140
|
+
options = args.extract_options!
|
|
141
|
+
options.symbolize_keys!
|
|
142
|
+
|
|
143
|
+
defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
|
|
144
|
+
|
|
145
|
+
delimiter ||= (options[:delimiter] || defaults[:delimiter])
|
|
146
|
+
separator ||= (options[:separator] || defaults[:separator])
|
|
147
|
+
|
|
148
|
+
begin
|
|
149
|
+
parts = number.to_s.split('.')
|
|
150
|
+
parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{delimiter}")
|
|
151
|
+
parts.join(separator)
|
|
152
|
+
rescue
|
|
153
|
+
number
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
##
|
|
158
|
+
# Formats a +number+ with the specified level of <tt>:precision</tt> (e.g., 112.32 has a precision of 2).
|
|
159
|
+
# You can customize the format in the +options+ hash.
|
|
160
|
+
#
|
|
161
|
+
# @overload number_with_precision(number, options={})
|
|
162
|
+
# @param [Fixnum, Float] number
|
|
163
|
+
# Number value to format.
|
|
164
|
+
# @param [Hash] options
|
|
165
|
+
# Options for formatter.
|
|
166
|
+
# @option options [Fixnum] :precision (3)
|
|
167
|
+
# Sets the level of precision.
|
|
168
|
+
# @option options [String] :separator (".")
|
|
169
|
+
# Sets the separator between the units.
|
|
170
|
+
# @option options [String] :delimiter ("")
|
|
171
|
+
# Sets the thousands delimiter
|
|
172
|
+
#
|
|
173
|
+
# @return [String] The formatted representation of the number
|
|
174
|
+
#
|
|
175
|
+
# @example
|
|
176
|
+
# number_with_precision(111.2345) # => 111.235
|
|
177
|
+
# number_with_precision(111.2345, :precision => 2) # => 111.23
|
|
178
|
+
# number_with_precision(13, :precision => 5) # => 13.00000
|
|
179
|
+
# number_with_precision(389.32314, :precision => 0) # => 389
|
|
180
|
+
# number_with_precision(1111.2345, :precision => 2, :separator => ',', :delimiter => '.')
|
|
181
|
+
# # => 1.111,23
|
|
182
|
+
#
|
|
183
|
+
# @api public
|
|
184
|
+
def number_with_precision(number, *args)
|
|
185
|
+
options = args.extract_options!
|
|
186
|
+
options.symbolize_keys!
|
|
187
|
+
|
|
188
|
+
defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
|
|
189
|
+
precision_defaults = I18n.translate(:'number.precision.format', :locale => options[:locale],
|
|
190
|
+
:raise => true) rescue {}
|
|
191
|
+
defaults = defaults.merge(precision_defaults)
|
|
192
|
+
|
|
193
|
+
precision ||= (options[:precision] || defaults[:precision])
|
|
194
|
+
separator ||= (options[:separator] || defaults[:separator])
|
|
195
|
+
delimiter ||= (options[:delimiter] || defaults[:delimiter])
|
|
196
|
+
|
|
197
|
+
begin
|
|
198
|
+
rounded_number = (Float(number) * (10 ** precision)).round.to_f / 10 ** precision
|
|
199
|
+
number_with_delimiter("%01.#{precision}f" % rounded_number,
|
|
200
|
+
:separator => separator,
|
|
201
|
+
:delimiter => delimiter)
|
|
202
|
+
rescue
|
|
203
|
+
number
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
# The units available for storage formatting.
|
|
208
|
+
STORAGE_UNITS = [:byte, :kb, :mb, :gb, :tb].freeze
|
|
209
|
+
|
|
210
|
+
##
|
|
211
|
+
# Formats the bytes in +size+ into a more understandable representation
|
|
212
|
+
# (e.g., giving it 1500 yields 1.5 KB). This method is useful for
|
|
213
|
+
# reporting file sizes to users. This method returns nil if
|
|
214
|
+
# +size+ cannot be converted into a number. You can customize the
|
|
215
|
+
# format in the +options+ hash.
|
|
216
|
+
#
|
|
217
|
+
#
|
|
218
|
+
# @overload number_to_human_size(number, options={})
|
|
219
|
+
# @param [Fixnum] number
|
|
220
|
+
# Number value to format.
|
|
221
|
+
# @param [Hash] options
|
|
222
|
+
# Options for formatter.
|
|
223
|
+
# @option options [Fixnum] :precision (1)
|
|
224
|
+
# Sets the level of precision.
|
|
225
|
+
# @option options [String] :separator (".")
|
|
226
|
+
# Sets the separator between the units.
|
|
227
|
+
# @option options [String] :delimiter ("")
|
|
228
|
+
# Sets the thousands delimiter
|
|
229
|
+
#
|
|
230
|
+
# @return [String] The formatted representation of bytes
|
|
231
|
+
#
|
|
232
|
+
# @example
|
|
233
|
+
# number_to_human_size(123) # => 123 Bytes
|
|
234
|
+
# number_to_human_size(1234) # => 1.2 KB
|
|
235
|
+
# number_to_human_size(12345) # => 12.1 KB
|
|
236
|
+
# number_to_human_size(1234567) # => 1.2 MB
|
|
237
|
+
# number_to_human_size(1234567890) # => 1.1 GB
|
|
238
|
+
# number_to_human_size(1234567890123) # => 1.1 TB
|
|
239
|
+
# number_to_human_size(1234567, :precision => 2) # => 1.18 MB
|
|
240
|
+
# number_to_human_size(483989, :precision => 0) # => 473 KB
|
|
241
|
+
# number_to_human_size(1234567, :precision => 2, :separator => ',') # => 1,18 MB
|
|
242
|
+
#
|
|
243
|
+
# @api public
|
|
244
|
+
def number_to_human_size(number, *args)
|
|
245
|
+
return nil if number.nil?
|
|
246
|
+
|
|
247
|
+
options = args.extract_options!
|
|
248
|
+
options.symbolize_keys!
|
|
249
|
+
|
|
250
|
+
defaults = I18n.translate(:'number.format', :locale => options[:locale], :raise => true) rescue {}
|
|
251
|
+
human = I18n.translate(:'number.human.format', :locale => options[:locale], :raise => true) rescue {}
|
|
252
|
+
defaults = defaults.merge(human)
|
|
253
|
+
|
|
254
|
+
precision ||= (options[:precision] || defaults[:precision])
|
|
255
|
+
separator ||= (options[:separator] || defaults[:separator])
|
|
256
|
+
delimiter ||= (options[:delimiter] || defaults[:delimiter])
|
|
257
|
+
|
|
258
|
+
storage_units_format = I18n.translate(:'number.human.storage_units.format', :locale => options[:locale], :raise => true)
|
|
259
|
+
|
|
260
|
+
if number.to_i < 1024
|
|
261
|
+
unit = I18n.translate(:'number.human.storage_units.units.byte', :locale => options[:locale], :count => number.to_i, :raise => true)
|
|
262
|
+
storage_units_format.gsub(/%n/, number.to_i.to_s).gsub(/%u/, unit)
|
|
263
|
+
else
|
|
264
|
+
max_exp = STORAGE_UNITS.size - 1
|
|
265
|
+
number = Float(number)
|
|
266
|
+
exponent = (Math.log(number) / Math.log(1024)).to_i # Convert to base 1024
|
|
267
|
+
exponent = max_exp if exponent > max_exp # we need this to avoid overflow for the highest unit
|
|
268
|
+
number /= 1024 ** exponent
|
|
269
|
+
|
|
270
|
+
unit_key = STORAGE_UNITS[exponent]
|
|
271
|
+
unit = I18n.translate(:"number.human.storage_units.units.#{unit_key}", :locale => options[:locale], :count => number, :raise => true)
|
|
272
|
+
|
|
273
|
+
begin
|
|
274
|
+
escaped_separator = Regexp.escape(separator)
|
|
275
|
+
formatted_number = number_with_precision(number,
|
|
276
|
+
:precision => precision,
|
|
277
|
+
:separator => separator,
|
|
278
|
+
:delimiter => delimiter
|
|
279
|
+
).sub(/(#{escaped_separator})(\d*[1-9])?0+\z/, '\1\2').sub(/#{escaped_separator}\z/, '')
|
|
280
|
+
storage_units_format.gsub(/%n/, formatted_number).gsub(/%u/, unit)
|
|
281
|
+
rescue
|
|
282
|
+
number
|
|
283
|
+
end
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
end # NumberHelpers
|
|
287
|
+
end # Helpers
|
|
288
|
+
end # Padrino
|