haml 3.2.0.alpha.10 → 3.2.0.alpha.13
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of haml might be problematic. Click here for more details.
- data/.yardopts +19 -7
- data/CHANGELOG.md +1224 -0
- data/FAQ.md +157 -0
- data/README.md +99 -62
- data/REFERENCE.md +1404 -0
- data/Rakefile +52 -341
- data/init.rb +1 -18
- data/lib/haml.rb +6 -30
- data/lib/haml/buffer.rb +37 -16
- data/lib/haml/compiler.rb +52 -13
- data/lib/haml/engine.rb +61 -44
- data/lib/haml/exec.rb +21 -4
- data/lib/haml/filters.rb +136 -166
- data/lib/haml/helpers.rb +37 -10
- data/lib/haml/helpers/action_view_extensions.rb +2 -1
- data/lib/haml/helpers/action_view_mods.rb +67 -181
- data/lib/haml/helpers/rails_323_textarea_fix.rb +39 -0
- data/lib/haml/helpers/xss_mods.rb +9 -11
- data/lib/haml/html.rb +22 -9
- data/lib/haml/html/erb.rb +1 -1
- data/lib/haml/parser.rb +22 -15
- data/lib/haml/railtie.rb +2 -13
- data/lib/haml/template.rb +18 -85
- data/lib/haml/template/options.rb +1 -1
- data/lib/haml/template/plugin.rb +15 -101
- data/lib/haml/util.rb +120 -603
- data/lib/haml/version.rb +1 -107
- data/test/{haml/engine_test.rb → engine_test.rb} +137 -143
- data/test/{haml/erb → erb}/_av_partial_1.erb +1 -1
- data/test/{haml/erb → erb}/_av_partial_2.erb +1 -1
- data/test/{haml/erb → erb}/action_view.erb +1 -1
- data/test/{haml/erb → erb}/standard.erb +0 -0
- data/test/filters_test.rb +141 -0
- data/test/gemfiles/Gemfile.rails-3.0.x +4 -6
- data/test/gemfiles/Gemfile.rails-3.1.x +5 -6
- data/test/gemfiles/Gemfile.rails-3.2.x +6 -0
- data/test/haml-spec/LICENSE +14 -0
- data/test/{haml/spec → haml-spec}/README.md +26 -17
- data/test/haml-spec/lua_haml_spec.lua +38 -0
- data/test/haml-spec/perl_haml_test.pl +81 -0
- data/test/haml-spec/ruby_haml_test.rb +23 -0
- data/test/{haml/spec → haml-spec}/tests.json +132 -54
- data/test/{haml/helper_test.rb → helper_test.rb} +50 -36
- data/test/{haml/html2haml → html2haml}/erb_tests.rb +0 -0
- data/test/{haml/html2haml_test.rb → html2haml_test.rb} +11 -5
- data/test/{haml/markaby → markaby}/standard.mab +0 -0
- data/test/{haml/mocks → mocks}/article.rb +0 -0
- data/test/{haml/results → results}/content_for_layout.xhtml +0 -0
- data/test/{haml/results → results}/eval_suppressed.xhtml +0 -0
- data/test/{haml/results → results}/helpers.xhtml +0 -0
- data/test/{haml/results → results}/helpful.xhtml +0 -0
- data/test/{haml/results → results}/just_stuff.xhtml +0 -0
- data/test/{haml/results → results}/list.xhtml +0 -0
- data/test/{haml/results → results}/nuke_inner_whitespace.xhtml +0 -0
- data/test/{haml/results → results}/nuke_outer_whitespace.xhtml +0 -0
- data/test/{haml/results → results}/original_engine.xhtml +0 -0
- data/test/{haml/results → results}/partial_layout.xhtml +0 -0
- data/test/{haml/results → results}/partials.xhtml +0 -0
- data/test/{haml/results → results}/render_layout.xhtml +0 -0
- data/test/{haml/results → results}/silent_script.xhtml +1 -1
- data/test/{haml/results → results}/standard.xhtml +0 -0
- data/test/{haml/results → results}/tag_parsing.xhtml +0 -0
- data/test/{haml/results → results}/very_basic.xhtml +0 -0
- data/test/{haml/results → results}/whitespace_handling.xhtml +46 -50
- data/test/{haml/template_test.rb → template_test.rb} +20 -81
- data/test/{haml/templates → templates}/_av_partial_1.haml +1 -1
- data/test/{haml/templates → templates}/_av_partial_1_ugly.haml +1 -1
- data/test/{haml/templates → templates}/_av_partial_2.haml +1 -1
- data/test/{haml/templates → templates}/_av_partial_2_ugly.haml +1 -1
- data/test/{haml/templates → templates}/_layout.erb +0 -0
- data/test/{haml/templates → templates}/_layout_for_partial.haml +0 -0
- data/test/{haml/templates → templates}/_partial.haml +0 -0
- data/test/{haml/templates → templates}/_text_area.haml +0 -0
- data/test/{haml/templates → templates}/action_view.haml +1 -1
- data/test/{haml/templates → templates}/action_view_ugly.haml +1 -1
- data/test/{haml/templates → templates}/breakage.haml +0 -0
- data/test/{haml/templates → templates}/content_for_layout.haml +0 -0
- data/test/{haml/templates → templates}/eval_suppressed.haml +0 -0
- data/test/{haml/templates → templates}/helpers.haml +0 -0
- data/test/{haml/templates → templates}/helpful.haml +0 -0
- data/test/{haml/templates → templates}/just_stuff.haml +0 -0
- data/test/{haml/templates → templates}/list.haml +0 -0
- data/test/{haml/templates → templates}/nuke_inner_whitespace.haml +0 -0
- data/test/{haml/templates → templates}/nuke_outer_whitespace.haml +0 -0
- data/test/{haml/templates → templates}/original_engine.haml +0 -0
- data/test/templates/partial_layout.haml +3 -0
- data/test/{haml/templates → templates}/partialize.haml +0 -0
- data/test/{haml/templates → templates}/partials.haml +0 -0
- data/test/{haml/templates → templates}/render_layout.haml +0 -0
- data/test/{haml/templates → templates}/silent_script.haml +2 -2
- data/test/{haml/templates → templates}/standard.haml +0 -0
- data/test/{haml/templates → templates}/standard_ugly.haml +0 -0
- data/test/{haml/templates → templates}/tag_parsing.haml +0 -0
- data/test/{haml/templates → templates}/very_basic.haml +0 -0
- data/test/{haml/templates → templates}/whitespace_handling.haml +0 -0
- data/test/test_helper.rb +42 -34
- data/test/util_test.rb +80 -0
- metadata +259 -427
- data/CONTRIBUTING +0 -3
- data/REVISION +0 -1
- data/VERSION +0 -1
- data/VERSION_NAME +0 -1
- data/extra/update_watch.rb +0 -13
- data/lib/haml/root.rb +0 -7
- data/lib/haml/shared.rb +0 -78
- data/lib/haml/template/patch.rb +0 -58
- data/lib/sass.rb +0 -8
- data/lib/sass/plugin.rb +0 -10
- data/lib/sass/rails2_shim.rb +0 -9
- data/lib/sass/rails3_shim.rb +0 -16
- data/test/benchmark.rb +0 -91
- data/test/gemfiles/Gemfile.rails-2.0.x +0 -8
- data/test/gemfiles/Gemfile.rails-2.0.x.lock +0 -38
- data/test/gemfiles/Gemfile.rails-2.1.x +0 -8
- data/test/gemfiles/Gemfile.rails-2.1.x.lock +0 -38
- data/test/gemfiles/Gemfile.rails-2.2.x +0 -8
- data/test/gemfiles/Gemfile.rails-2.2.x.lock +0 -38
- data/test/gemfiles/Gemfile.rails-2.3.x +0 -8
- data/test/gemfiles/Gemfile.rails-2.3.x.lock +0 -40
- data/test/gemfiles/Gemfile.rails-3.0.x.lock +0 -85
- data/test/gemfiles/Gemfile.rails-3.1.x.lock +0 -98
- data/test/gemfiles/Gemfile.rails-xss-2.3.x +0 -9
- data/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +0 -42
- data/test/haml/results/filters.xhtml +0 -62
- data/test/haml/spec/lua_haml_spec.lua +0 -30
- data/test/haml/spec/ruby_haml_test.rb +0 -19
- data/test/haml/spec_test.rb +0 -44
- data/test/haml/templates/filters.haml +0 -66
- data/test/haml/templates/partial_layout.haml +0 -10
- data/test/haml/util_test.rb +0 -300
- data/test/linked_rails.rb +0 -42
- data/vendor/sass/CONTRIBUTING +0 -3
- data/vendor/sass/MIT-LICENSE +0 -20
- data/vendor/sass/README.md +0 -201
- data/vendor/sass/Rakefile +0 -339
- data/vendor/sass/TODO +0 -39
- data/vendor/sass/VERSION +0 -1
- data/vendor/sass/VERSION_NAME +0 -1
- data/vendor/sass/bin/sass +0 -8
- data/vendor/sass/bin/sass-convert +0 -7
- data/vendor/sass/bin/scss +0 -8
- data/vendor/sass/doc-src/FAQ.md +0 -35
- data/vendor/sass/doc-src/INDENTED_SYNTAX.md +0 -210
- data/vendor/sass/doc-src/SASS_CHANGELOG.md +0 -2327
- data/vendor/sass/doc-src/SASS_REFERENCE.md +0 -1965
- data/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +0 -155
- data/vendor/sass/ext/extconf.rb +0 -10
- data/vendor/sass/extra/update_watch.rb +0 -13
- data/vendor/sass/init.rb +0 -18
- data/vendor/sass/lib/sass.rb +0 -73
- data/vendor/sass/lib/sass/cache_stores.rb +0 -15
- data/vendor/sass/lib/sass/cache_stores/base.rb +0 -86
- data/vendor/sass/lib/sass/cache_stores/chain.rb +0 -33
- data/vendor/sass/lib/sass/cache_stores/filesystem.rb +0 -60
- data/vendor/sass/lib/sass/cache_stores/memory.rb +0 -47
- data/vendor/sass/lib/sass/cache_stores/null.rb +0 -25
- data/vendor/sass/lib/sass/callbacks.rb +0 -66
- data/vendor/sass/lib/sass/css.rb +0 -295
- data/vendor/sass/lib/sass/engine.rb +0 -878
- data/vendor/sass/lib/sass/environment.rb +0 -166
- data/vendor/sass/lib/sass/error.rb +0 -201
- data/vendor/sass/lib/sass/exec.rb +0 -672
- data/vendor/sass/lib/sass/importers.rb +0 -22
- data/vendor/sass/lib/sass/importers/base.rb +0 -139
- data/vendor/sass/lib/sass/importers/filesystem.rb +0 -149
- data/vendor/sass/lib/sass/less.rb +0 -382
- data/vendor/sass/lib/sass/logger.rb +0 -15
- data/vendor/sass/lib/sass/logger/base.rb +0 -32
- data/vendor/sass/lib/sass/logger/log_level.rb +0 -49
- data/vendor/sass/lib/sass/plugin.rb +0 -132
- data/vendor/sass/lib/sass/plugin/compiler.rb +0 -383
- data/vendor/sass/lib/sass/plugin/configuration.rb +0 -123
- data/vendor/sass/lib/sass/plugin/generic.rb +0 -15
- data/vendor/sass/lib/sass/plugin/merb.rb +0 -48
- data/vendor/sass/lib/sass/plugin/rack.rb +0 -60
- data/vendor/sass/lib/sass/plugin/rails.rb +0 -47
- data/vendor/sass/lib/sass/plugin/staleness_checker.rb +0 -173
- data/vendor/sass/lib/sass/railtie.rb +0 -9
- data/vendor/sass/lib/sass/repl.rb +0 -58
- data/vendor/sass/lib/sass/root.rb +0 -7
- data/vendor/sass/lib/sass/script.rb +0 -40
- data/vendor/sass/lib/sass/script/bool.rb +0 -18
- data/vendor/sass/lib/sass/script/color.rb +0 -480
- data/vendor/sass/lib/sass/script/css_lexer.rb +0 -29
- data/vendor/sass/lib/sass/script/css_parser.rb +0 -31
- data/vendor/sass/lib/sass/script/funcall.rb +0 -175
- data/vendor/sass/lib/sass/script/functions.rb +0 -1386
- data/vendor/sass/lib/sass/script/interpolation.rb +0 -79
- data/vendor/sass/lib/sass/script/lexer.rb +0 -339
- data/vendor/sass/lib/sass/script/list.rb +0 -83
- data/vendor/sass/lib/sass/script/literal.rb +0 -250
- data/vendor/sass/lib/sass/script/node.rb +0 -99
- data/vendor/sass/lib/sass/script/number.rb +0 -452
- data/vendor/sass/lib/sass/script/operation.rb +0 -99
- data/vendor/sass/lib/sass/script/parser.rb +0 -474
- data/vendor/sass/lib/sass/script/string.rb +0 -51
- data/vendor/sass/lib/sass/script/string_interpolation.rb +0 -103
- data/vendor/sass/lib/sass/script/unary_operation.rb +0 -64
- data/vendor/sass/lib/sass/script/variable.rb +0 -59
- data/vendor/sass/lib/sass/scss.rb +0 -17
- data/vendor/sass/lib/sass/scss/css_parser.rb +0 -46
- data/vendor/sass/lib/sass/scss/parser.rb +0 -960
- data/vendor/sass/lib/sass/scss/rx.rb +0 -128
- data/vendor/sass/lib/sass/scss/sass_parser.rb +0 -11
- data/vendor/sass/lib/sass/scss/script_lexer.rb +0 -15
- data/vendor/sass/lib/sass/scss/script_parser.rb +0 -25
- data/vendor/sass/lib/sass/scss/static_parser.rb +0 -40
- data/vendor/sass/lib/sass/selector.rb +0 -361
- data/vendor/sass/lib/sass/selector/abstract_sequence.rb +0 -62
- data/vendor/sass/lib/sass/selector/comma_sequence.rb +0 -81
- data/vendor/sass/lib/sass/selector/sequence.rb +0 -233
- data/vendor/sass/lib/sass/selector/simple.rb +0 -113
- data/vendor/sass/lib/sass/selector/simple_sequence.rb +0 -134
- data/vendor/sass/lib/sass/shared.rb +0 -78
- data/vendor/sass/lib/sass/tree/charset_node.rb +0 -22
- data/vendor/sass/lib/sass/tree/comment_node.rb +0 -90
- data/vendor/sass/lib/sass/tree/debug_node.rb +0 -18
- data/vendor/sass/lib/sass/tree/directive_node.rb +0 -23
- data/vendor/sass/lib/sass/tree/each_node.rb +0 -24
- data/vendor/sass/lib/sass/tree/extend_node.rb +0 -29
- data/vendor/sass/lib/sass/tree/for_node.rb +0 -36
- data/vendor/sass/lib/sass/tree/function_node.rb +0 -27
- data/vendor/sass/lib/sass/tree/if_node.rb +0 -52
- data/vendor/sass/lib/sass/tree/import_node.rb +0 -68
- data/vendor/sass/lib/sass/tree/media_node.rb +0 -32
- data/vendor/sass/lib/sass/tree/mixin_def_node.rb +0 -27
- data/vendor/sass/lib/sass/tree/mixin_node.rb +0 -32
- data/vendor/sass/lib/sass/tree/node.rb +0 -201
- data/vendor/sass/lib/sass/tree/prop_node.rb +0 -148
- data/vendor/sass/lib/sass/tree/return_node.rb +0 -18
- data/vendor/sass/lib/sass/tree/root_node.rb +0 -28
- data/vendor/sass/lib/sass/tree/rule_node.rb +0 -136
- data/vendor/sass/lib/sass/tree/variable_node.rb +0 -30
- data/vendor/sass/lib/sass/tree/visitors/base.rb +0 -75
- data/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +0 -133
- data/vendor/sass/lib/sass/tree/visitors/convert.rb +0 -260
- data/vendor/sass/lib/sass/tree/visitors/cssize.rb +0 -175
- data/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +0 -87
- data/vendor/sass/lib/sass/tree/visitors/perform.rb +0 -332
- data/vendor/sass/lib/sass/tree/visitors/set_options.rb +0 -97
- data/vendor/sass/lib/sass/tree/visitors/to_css.rb +0 -210
- data/vendor/sass/lib/sass/tree/warn_node.rb +0 -18
- data/vendor/sass/lib/sass/tree/while_node.rb +0 -18
- data/vendor/sass/lib/sass/util.rb +0 -721
- data/vendor/sass/lib/sass/util/subset_map.rb +0 -101
- data/vendor/sass/lib/sass/version.rb +0 -112
- data/vendor/sass/rails/init.rb +0 -1
- data/vendor/sass/sass.gemspec +0 -33
- data/vendor/sass/test/Gemfile +0 -4
- data/vendor/sass/test/Gemfile.lock +0 -19
- data/vendor/sass/test/sass/cache_test.rb +0 -89
- data/vendor/sass/test/sass/callbacks_test.rb +0 -61
- data/vendor/sass/test/sass/conversion_test.rb +0 -1199
- data/vendor/sass/test/sass/css2sass_test.rb +0 -373
- data/vendor/sass/test/sass/data/hsl-rgb.txt +0 -319
- data/vendor/sass/test/sass/engine_test.rb +0 -2567
- data/vendor/sass/test/sass/extend_test.rb +0 -1348
- data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
- data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
- data/vendor/sass/test/sass/functions_test.rb +0 -1038
- data/vendor/sass/test/sass/importer_test.rb +0 -192
- data/vendor/sass/test/sass/less_conversion_test.rb +0 -653
- data/vendor/sass/test/sass/logger_test.rb +0 -58
- data/vendor/sass/test/sass/mock_importer.rb +0 -49
- data/vendor/sass/test/sass/more_results/more1.css +0 -9
- data/vendor/sass/test/sass/more_results/more1_with_line_comments.css +0 -26
- data/vendor/sass/test/sass/more_results/more_import.css +0 -29
- data/vendor/sass/test/sass/more_templates/_more_partial.sass +0 -2
- data/vendor/sass/test/sass/more_templates/more1.sass +0 -23
- data/vendor/sass/test/sass/more_templates/more_import.sass +0 -11
- data/vendor/sass/test/sass/plugin_test.rb +0 -472
- data/vendor/sass/test/sass/results/alt.css +0 -4
- data/vendor/sass/test/sass/results/basic.css +0 -9
- data/vendor/sass/test/sass/results/compact.css +0 -5
- data/vendor/sass/test/sass/results/complex.css +0 -86
- data/vendor/sass/test/sass/results/compressed.css +0 -1
- data/vendor/sass/test/sass/results/expanded.css +0 -19
- data/vendor/sass/test/sass/results/if.css +0 -3
- data/vendor/sass/test/sass/results/import.css +0 -31
- data/vendor/sass/test/sass/results/import_charset.css +0 -4
- data/vendor/sass/test/sass/results/import_charset_1_8.css +0 -4
- data/vendor/sass/test/sass/results/import_charset_ibm866.css +0 -4
- data/vendor/sass/test/sass/results/line_numbers.css +0 -49
- data/vendor/sass/test/sass/results/mixins.css +0 -95
- data/vendor/sass/test/sass/results/multiline.css +0 -24
- data/vendor/sass/test/sass/results/nested.css +0 -22
- data/vendor/sass/test/sass/results/options.css +0 -1
- data/vendor/sass/test/sass/results/parent_ref.css +0 -13
- data/vendor/sass/test/sass/results/script.css +0 -16
- data/vendor/sass/test/sass/results/scss_import.css +0 -31
- data/vendor/sass/test/sass/results/scss_importee.css +0 -2
- data/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
- data/vendor/sass/test/sass/results/subdir/subdir.css +0 -3
- data/vendor/sass/test/sass/results/units.css +0 -11
- data/vendor/sass/test/sass/results/warn.css +0 -0
- data/vendor/sass/test/sass/results/warn_imported.css +0 -0
- data/vendor/sass/test/sass/script_conversion_test.rb +0 -285
- data/vendor/sass/test/sass/script_test.rb +0 -514
- data/vendor/sass/test/sass/scss/css_test.rb +0 -922
- data/vendor/sass/test/sass/scss/rx_test.rb +0 -156
- data/vendor/sass/test/sass/scss/scss_test.rb +0 -1273
- data/vendor/sass/test/sass/scss/test_helper.rb +0 -37
- data/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +0 -4
- data/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +0 -4
- data/vendor/sass/test/sass/templates/_partial.sass +0 -2
- data/vendor/sass/test/sass/templates/alt.sass +0 -16
- data/vendor/sass/test/sass/templates/basic.sass +0 -23
- data/vendor/sass/test/sass/templates/bork1.sass +0 -2
- data/vendor/sass/test/sass/templates/bork2.sass +0 -2
- data/vendor/sass/test/sass/templates/bork3.sass +0 -2
- data/vendor/sass/test/sass/templates/bork4.sass +0 -2
- data/vendor/sass/test/sass/templates/bork5.sass +0 -3
- data/vendor/sass/test/sass/templates/compact.sass +0 -17
- data/vendor/sass/test/sass/templates/complex.sass +0 -305
- data/vendor/sass/test/sass/templates/compressed.sass +0 -15
- data/vendor/sass/test/sass/templates/expanded.sass +0 -17
- data/vendor/sass/test/sass/templates/if.sass +0 -11
- data/vendor/sass/test/sass/templates/import.sass +0 -12
- data/vendor/sass/test/sass/templates/import_charset.sass +0 -7
- data/vendor/sass/test/sass/templates/import_charset_1_8.sass +0 -4
- data/vendor/sass/test/sass/templates/import_charset_ibm866.sass +0 -9
- data/vendor/sass/test/sass/templates/importee.less +0 -2
- data/vendor/sass/test/sass/templates/importee.sass +0 -19
- data/vendor/sass/test/sass/templates/line_numbers.sass +0 -13
- data/vendor/sass/test/sass/templates/mixin_bork.sass +0 -5
- data/vendor/sass/test/sass/templates/mixins.sass +0 -76
- data/vendor/sass/test/sass/templates/multiline.sass +0 -20
- data/vendor/sass/test/sass/templates/nested.sass +0 -25
- data/vendor/sass/test/sass/templates/nested_bork1.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_bork2.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_bork3.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_bork4.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_bork5.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_import.sass +0 -2
- data/vendor/sass/test/sass/templates/nested_mixin_bork.sass +0 -6
- data/vendor/sass/test/sass/templates/options.sass +0 -2
- data/vendor/sass/test/sass/templates/parent_ref.sass +0 -25
- data/vendor/sass/test/sass/templates/script.sass +0 -101
- data/vendor/sass/test/sass/templates/scss_import.scss +0 -11
- data/vendor/sass/test/sass/templates/scss_importee.scss +0 -1
- data/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
- data/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
- data/vendor/sass/test/sass/templates/subdir/subdir.sass +0 -6
- data/vendor/sass/test/sass/templates/units.sass +0 -11
- data/vendor/sass/test/sass/templates/warn.sass +0 -3
- data/vendor/sass/test/sass/templates/warn_imported.sass +0 -4
- data/vendor/sass/test/sass/test_helper.rb +0 -8
- data/vendor/sass/test/sass/util/subset_map_test.rb +0 -91
- data/vendor/sass/test/sass/util_test.rb +0 -266
- data/vendor/sass/test/test_helper.rb +0 -69
- data/vendor/sass/vendor/fssm/Gemfile +0 -3
- data/vendor/sass/vendor/fssm/LICENSE +0 -20
- data/vendor/sass/vendor/fssm/README.markdown +0 -83
- data/vendor/sass/vendor/fssm/Rakefile +0 -11
- data/vendor/sass/vendor/fssm/example.rb +0 -12
- data/vendor/sass/vendor/fssm/fssm.gemspec +0 -24
- data/vendor/sass/vendor/fssm/lib/fssm.rb +0 -37
- data/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
- data/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
- data/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
- data/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +0 -42
- data/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
- data/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +0 -36
- data/vendor/sass/vendor/fssm/lib/fssm/path.rb +0 -94
- data/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +0 -36
- data/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +0 -75
- data/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +0 -24
- data/vendor/sass/vendor/fssm/lib/fssm/support.rb +0 -92
- data/vendor/sass/vendor/fssm/lib/fssm/tree.rb +0 -176
- data/vendor/sass/vendor/fssm/lib/fssm/version.rb +0 -3
- data/vendor/sass/vendor/fssm/profile/prof-cache.rb +0 -40
- data/vendor/sass/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
- data/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +0 -35
- data/vendor/sass/vendor/fssm/profile/prof-pathname.rb +0 -68
- data/vendor/sass/vendor/fssm/profile/prof-plain-pathname.html +0 -988
- data/vendor/sass/vendor/fssm/profile/prof.html +0 -2379
- data/vendor/sass/vendor/fssm/spec/count_down_latch.rb +0 -151
- data/vendor/sass/vendor/fssm/spec/monitor_spec.rb +0 -202
- data/vendor/sass/vendor/fssm/spec/path_spec.rb +0 -96
- data/vendor/sass/vendor/fssm/spec/root/duck/quack.txt +0 -0
- data/vendor/sass/vendor/fssm/spec/root/file.css +0 -0
- data/vendor/sass/vendor/fssm/spec/root/file.rb +0 -0
- data/vendor/sass/vendor/fssm/spec/root/file.yml +0 -0
- data/vendor/sass/vendor/fssm/spec/root/moo/cow.txt +0 -0
- data/vendor/sass/vendor/fssm/spec/spec_helper.rb +0 -14
- data/vendor/sass/yard/callbacks.rb +0 -29
- data/vendor/sass/yard/default/fulldoc/html/css/common.sass +0 -26
- data/vendor/sass/yard/default/layout/html/footer.erb +0 -12
- data/vendor/sass/yard/inherited_hash.rb +0 -41
@@ -1 +0,0 @@
|
|
1
|
-
.pear { color: green; }
|
@@ -1 +0,0 @@
|
|
1
|
-
@import "apple";
|
@@ -1,1038 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
require 'test/unit'
|
3
|
-
require File.dirname(__FILE__) + '/../test_helper'
|
4
|
-
require 'sass/script'
|
5
|
-
|
6
|
-
module Sass::Script::Functions
|
7
|
-
def no_kw_args
|
8
|
-
Sass::Script::String.new("no-kw-args")
|
9
|
-
end
|
10
|
-
|
11
|
-
def only_var_args(*args)
|
12
|
-
Sass::Script::String.new("only-var-args("+args.map{|a| a.plus(Sass::Script::Number.new(1)).to_s }.join(", ")+")")
|
13
|
-
end
|
14
|
-
declare :only_var_args, [], :var_args => true
|
15
|
-
|
16
|
-
def only_kw_args(kwargs)
|
17
|
-
Sass::Script::String.new("only-kw-args(" + kwargs.keys.map {|a| a.to_s}.sort.join(", ") + ")")
|
18
|
-
end
|
19
|
-
declare :only_kw_args, [], :var_kwargs => true
|
20
|
-
end
|
21
|
-
|
22
|
-
module Sass::Script::Functions::UserFunctions
|
23
|
-
def call_options_on_new_literal
|
24
|
-
str = Sass::Script::String.new("foo")
|
25
|
-
str.options[:foo]
|
26
|
-
str
|
27
|
-
end
|
28
|
-
|
29
|
-
def user_defined
|
30
|
-
Sass::Script::String.new("I'm a user-defined string!")
|
31
|
-
end
|
32
|
-
|
33
|
-
def _preceding_underscore
|
34
|
-
Sass::Script::String.new("I'm another user-defined string!")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
module Sass::Script::Functions
|
39
|
-
include Sass::Script::Functions::UserFunctions
|
40
|
-
end
|
41
|
-
|
42
|
-
class SassFunctionTest < Test::Unit::TestCase
|
43
|
-
# Tests taken from:
|
44
|
-
# http://www.w3.org/Style/CSS/Test/CSS3/Color/20070927/html4/t040204-hsl-h-rotating-b.htm
|
45
|
-
# http://www.w3.org/Style/CSS/Test/CSS3/Color/20070927/html4/t040204-hsl-values-b.htm
|
46
|
-
File.read(File.dirname(__FILE__) + "/data/hsl-rgb.txt").split("\n\n").each do |chunk|
|
47
|
-
hsls, rgbs = chunk.strip.split("====")
|
48
|
-
hsls.strip.split("\n").zip(rgbs.strip.split("\n")) do |hsl, rgb|
|
49
|
-
hsl_method = "test_hsl: #{hsl} = #{rgb}"
|
50
|
-
define_method(hsl_method) do
|
51
|
-
assert_equal(evaluate(rgb), evaluate(hsl))
|
52
|
-
end
|
53
|
-
|
54
|
-
rgb_to_hsl_method = "test_rgb_to_hsl: #{rgb} = #{hsl}"
|
55
|
-
define_method(rgb_to_hsl_method) do
|
56
|
-
rgb_color = perform(rgb)
|
57
|
-
hsl_color = perform(hsl)
|
58
|
-
|
59
|
-
white = hsl_color.lightness == 100
|
60
|
-
black = hsl_color.lightness == 0
|
61
|
-
grayscale = white || black || hsl_color.saturation == 0
|
62
|
-
|
63
|
-
assert_in_delta(hsl_color.hue, rgb_color.hue, 0.0001,
|
64
|
-
"Hues should be equal") unless grayscale
|
65
|
-
assert_in_delta(hsl_color.saturation, rgb_color.saturation, 0.0001,
|
66
|
-
"Saturations should be equal") unless white || black
|
67
|
-
assert_in_delta(hsl_color.lightness, rgb_color.lightness, 0.0001,
|
68
|
-
"Lightnesses should be equal")
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_hsl_kwargs
|
74
|
-
assert_equal "#33cccc", evaluate("hsl($hue: 180, $saturation: 60%, $lightness: 50%)")
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_hsl_checks_bounds
|
78
|
-
assert_error_message("Saturation -114 must be between 0% and 100% for `hsl'", "hsl(10, -114, 12)");
|
79
|
-
assert_error_message("Lightness 256 must be between 0% and 100% for `hsl'", "hsl(10, 10, 256%)");
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_hsl_checks_types
|
83
|
-
assert_error_message("\"foo\" is not a number for `hsl'", "hsl(\"foo\", 10, 12)");
|
84
|
-
assert_error_message("\"foo\" is not a number for `hsl'", "hsl(10, \"foo\", 12)");
|
85
|
-
assert_error_message("\"foo\" is not a number for `hsl'", "hsl(10, 10, \"foo\")");
|
86
|
-
end
|
87
|
-
|
88
|
-
def test_hsla
|
89
|
-
assert_equal "rgba(51, 204, 204, 0.4)", evaluate("hsla(180, 60%, 50%, 0.4)")
|
90
|
-
assert_equal "#33cccc", evaluate("hsla(180, 60%, 50%, 1)")
|
91
|
-
assert_equal "rgba(51, 204, 204, 0)", evaluate("hsla(180, 60%, 50%, 0)")
|
92
|
-
assert_equal "rgba(51, 204, 204, 0.4)", evaluate("hsla($hue: 180, $saturation: 60%, $lightness: 50%, $alpha: 0.4)")
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_hsla_checks_bounds
|
96
|
-
assert_error_message("Saturation -114 must be between 0% and 100% for `hsla'", "hsla(10, -114, 12, 1)");
|
97
|
-
assert_error_message("Lightness 256 must be between 0% and 100% for `hsla'", "hsla(10, 10, 256%, 0)");
|
98
|
-
assert_error_message("Alpha channel -0.1 must be between 0 and 1 for `hsla'", "hsla(10, 10, 10, -0.1)");
|
99
|
-
assert_error_message("Alpha channel 1.1 must be between 0 and 1 for `hsla'", "hsla(10, 10, 10, 1.1)");
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_hsla_checks_types
|
103
|
-
assert_error_message("\"foo\" is not a number for `hsla'", "hsla(\"foo\", 10, 12, 0.3)");
|
104
|
-
assert_error_message("\"foo\" is not a number for `hsla'", "hsla(10, \"foo\", 12, 0)");
|
105
|
-
assert_error_message("\"foo\" is not a number for `hsla'", "hsla(10, 10, \"foo\", 1)");
|
106
|
-
assert_error_message("\"foo\" is not a number for `hsla'", "hsla(10, 10, 10, \"foo\")");
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_percentage
|
110
|
-
assert_equal("50%", evaluate("percentage(.5)"))
|
111
|
-
assert_equal("100%", evaluate("percentage(1)"))
|
112
|
-
assert_equal("25%", evaluate("percentage(25px / 100px)"))
|
113
|
-
assert_equal("50%", evaluate("percentage($value: 0.5)"))
|
114
|
-
end
|
115
|
-
|
116
|
-
def test_percentage_checks_types
|
117
|
-
assert_error_message("25px is not a unitless number for `percentage'", "percentage(25px)")
|
118
|
-
assert_error_message("#cccccc is not a unitless number for `percentage'", "percentage(#ccc)")
|
119
|
-
assert_error_message("\"string\" is not a unitless number for `percentage'", %Q{percentage("string")})
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_round
|
123
|
-
assert_equal("5", evaluate("round(4.8)"))
|
124
|
-
assert_equal("5px", evaluate("round(4.8px)"))
|
125
|
-
assert_equal("5px", evaluate("round(5.49px)"))
|
126
|
-
assert_equal("5px", evaluate("round($value: 5.49px)"))
|
127
|
-
|
128
|
-
assert_error_message("#cccccc is not a number for `round'", "round(#ccc)")
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_floor
|
132
|
-
assert_equal("4", evaluate("floor(4.8)"))
|
133
|
-
assert_equal("4px", evaluate("floor(4.8px)"))
|
134
|
-
assert_equal("4px", evaluate("floor($value: 4.8px)"))
|
135
|
-
|
136
|
-
assert_error_message("\"foo\" is not a number for `floor'", "floor(\"foo\")")
|
137
|
-
end
|
138
|
-
|
139
|
-
def test_ceil
|
140
|
-
assert_equal("5", evaluate("ceil(4.1)"))
|
141
|
-
assert_equal("5px", evaluate("ceil(4.8px)"))
|
142
|
-
assert_equal("5px", evaluate("ceil($value: 4.8px)"))
|
143
|
-
|
144
|
-
assert_error_message("\"a\" is not a number for `ceil'", "ceil(\"a\")")
|
145
|
-
end
|
146
|
-
|
147
|
-
def test_abs
|
148
|
-
assert_equal("5", evaluate("abs(-5)"))
|
149
|
-
assert_equal("5px", evaluate("abs(-5px)"))
|
150
|
-
assert_equal("5", evaluate("abs(5)"))
|
151
|
-
assert_equal("5px", evaluate("abs(5px)"))
|
152
|
-
assert_equal("5px", evaluate("abs($value: 5px)"))
|
153
|
-
|
154
|
-
assert_error_message("#aaaaaa is not a number for `abs'", "abs(#aaa)")
|
155
|
-
end
|
156
|
-
|
157
|
-
def test_rgb
|
158
|
-
assert_equal("#123456", evaluate("rgb(18, 52, 86)"))
|
159
|
-
assert_equal("#beaded", evaluate("rgb(190, 173, 237)"))
|
160
|
-
assert_equal("#00ff7f", evaluate("rgb(0, 255, 127)"))
|
161
|
-
assert_equal("#00ff7f", evaluate("rgb($red: 0, $green: 255, $blue: 127)"))
|
162
|
-
end
|
163
|
-
|
164
|
-
def test_rgb_percent
|
165
|
-
assert_equal("#123456", evaluate("rgb(7.1%, 20.4%, 34%)"))
|
166
|
-
assert_equal("#beaded", evaluate("rgb(74.7%, 173, 93%)"))
|
167
|
-
assert_equal("#beaded", evaluate("rgb(190, 68%, 237)"))
|
168
|
-
assert_equal("#00ff7f", evaluate("rgb(0%, 100%, 50%)"))
|
169
|
-
end
|
170
|
-
|
171
|
-
def test_rgb_tests_bounds
|
172
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgb'",
|
173
|
-
"rgb(256, 1, 1)")
|
174
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgb'",
|
175
|
-
"rgb(1, 256, 1)")
|
176
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgb'",
|
177
|
-
"rgb(1, 1, 256)")
|
178
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgb'",
|
179
|
-
"rgb(1, 256, 257)")
|
180
|
-
assert_error_message("Color value -1 must be between 0 and 255 inclusive for `rgb'",
|
181
|
-
"rgb(-1, 1, 1)")
|
182
|
-
end
|
183
|
-
|
184
|
-
def test_rgb_test_percent_bounds
|
185
|
-
assert_error_message("Color value 100.1% must be between 0% and 100% inclusive for `rgb'",
|
186
|
-
"rgb(100.1%, 0, 0)")
|
187
|
-
assert_error_message("Color value -0.1% must be between 0% and 100% inclusive for `rgb'",
|
188
|
-
"rgb(0, -0.1%, 0)")
|
189
|
-
assert_error_message("Color value 101% must be between 0% and 100% inclusive for `rgb'",
|
190
|
-
"rgb(0, 0, 101%)")
|
191
|
-
end
|
192
|
-
|
193
|
-
def test_rgb_tests_types
|
194
|
-
assert_error_message("\"foo\" is not a number for `rgb'", "rgb(\"foo\", 10, 12)");
|
195
|
-
assert_error_message("\"foo\" is not a number for `rgb'", "rgb(10, \"foo\", 12)");
|
196
|
-
assert_error_message("\"foo\" is not a number for `rgb'", "rgb(10, 10, \"foo\")");
|
197
|
-
end
|
198
|
-
|
199
|
-
def test_rgba
|
200
|
-
assert_equal("rgba(18, 52, 86, 0.5)", evaluate("rgba(18, 52, 86, 0.5)"))
|
201
|
-
assert_equal("#beaded", evaluate("rgba(190, 173, 237, 1)"))
|
202
|
-
assert_equal("rgba(0, 255, 127, 0)", evaluate("rgba(0, 255, 127, 0)"))
|
203
|
-
assert_equal("rgba(0, 255, 127, 0)", evaluate("rgba($red: 0, $green: 255, $blue: 127, $alpha: 0)"))
|
204
|
-
end
|
205
|
-
|
206
|
-
def test_rgb_tests_bounds
|
207
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgba'",
|
208
|
-
"rgba(256, 1, 1, 0.3)")
|
209
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgba'",
|
210
|
-
"rgba(1, 256, 1, 0.3)")
|
211
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgba'",
|
212
|
-
"rgba(1, 1, 256, 0.3)")
|
213
|
-
assert_error_message("Color value 256 must be between 0 and 255 inclusive for `rgba'",
|
214
|
-
"rgba(1, 256, 257, 0.3)")
|
215
|
-
assert_error_message("Color value -1 must be between 0 and 255 inclusive for `rgba'",
|
216
|
-
"rgba(-1, 1, 1, 0.3)")
|
217
|
-
assert_error_message("Alpha channel -0.2 must be between 0 and 1 inclusive for `rgba'",
|
218
|
-
"rgba(1, 1, 1, -0.2)")
|
219
|
-
assert_error_message("Alpha channel 1.2 must be between 0 and 1 inclusive for `rgba'",
|
220
|
-
"rgba(1, 1, 1, 1.2)")
|
221
|
-
end
|
222
|
-
|
223
|
-
def test_rgba_tests_types
|
224
|
-
assert_error_message("\"foo\" is not a number for `rgba'", "rgba(\"foo\", 10, 12, 0.2)");
|
225
|
-
assert_error_message("\"foo\" is not a number for `rgba'", "rgba(10, \"foo\", 12, 0.1)");
|
226
|
-
assert_error_message("\"foo\" is not a number for `rgba'", "rgba(10, 10, \"foo\", 0)");
|
227
|
-
assert_error_message("\"foo\" is not a number for `rgba'", "rgba(10, 10, 10, \"foo\")");
|
228
|
-
end
|
229
|
-
|
230
|
-
def test_rgba_with_color
|
231
|
-
assert_equal "rgba(16, 32, 48, 0.5)", evaluate("rgba(#102030, 0.5)")
|
232
|
-
assert_equal "rgba(0, 0, 255, 0.5)", evaluate("rgba(blue, 0.5)")
|
233
|
-
assert_equal "rgba(0, 0, 255, 0.5)", evaluate("rgba($color: blue, $alpha: 0.5)")
|
234
|
-
end
|
235
|
-
|
236
|
-
def test_rgba_with_color_tests_types
|
237
|
-
assert_error_message("\"foo\" is not a color for `rgba'", "rgba(\"foo\", 0.2)");
|
238
|
-
assert_error_message("\"foo\" is not a number for `rgba'", "rgba(blue, \"foo\")");
|
239
|
-
end
|
240
|
-
|
241
|
-
def test_rgba_tests_num_args
|
242
|
-
assert_error_message("wrong number of arguments (0 for 4) for `rgba'", "rgba()");
|
243
|
-
assert_error_message("wrong number of arguments (1 for 4) for `rgba'", "rgba(blue)");
|
244
|
-
assert_error_message("wrong number of arguments (3 for 4) for `rgba'", "rgba(1, 2, 3)");
|
245
|
-
assert_error_message("wrong number of arguments (5 for 4) for `rgba'", "rgba(1, 2, 3, 0.4, 5)");
|
246
|
-
end
|
247
|
-
|
248
|
-
def test_red
|
249
|
-
assert_equal("18", evaluate("red(#123456)"))
|
250
|
-
assert_equal("18", evaluate("red($color: #123456)"))
|
251
|
-
end
|
252
|
-
|
253
|
-
def test_red_exception
|
254
|
-
assert_error_message("12 is not a color for `red'", "red(12)")
|
255
|
-
end
|
256
|
-
|
257
|
-
def test_green
|
258
|
-
assert_equal("52", evaluate("green(#123456)"))
|
259
|
-
assert_equal("52", evaluate("green($color: #123456)"))
|
260
|
-
end
|
261
|
-
|
262
|
-
def test_green_exception
|
263
|
-
assert_error_message("12 is not a color for `green'", "green(12)")
|
264
|
-
end
|
265
|
-
|
266
|
-
def test_blue
|
267
|
-
assert_equal("86", evaluate("blue(#123456)"))
|
268
|
-
assert_equal("86", evaluate("blue($color: #123456)"))
|
269
|
-
end
|
270
|
-
|
271
|
-
def test_blue_exception
|
272
|
-
assert_error_message("12 is not a color for `blue'", "blue(12)")
|
273
|
-
end
|
274
|
-
|
275
|
-
def test_hue
|
276
|
-
assert_equal("18deg", evaluate("hue(hsl(18, 50%, 20%))"))
|
277
|
-
assert_equal("18deg", evaluate("hue($color: hsl(18, 50%, 20%))"))
|
278
|
-
end
|
279
|
-
|
280
|
-
def test_hue_exception
|
281
|
-
assert_error_message("12 is not a color for `hue'", "hue(12)")
|
282
|
-
end
|
283
|
-
|
284
|
-
def test_saturation
|
285
|
-
assert_equal("52%", evaluate("saturation(hsl(20, 52%, 20%))"))
|
286
|
-
assert_equal("52%", evaluate("saturation(hsl(20, 52, 20%))"))
|
287
|
-
assert_equal("52%", evaluate("saturation($color: hsl(20, 52, 20%))"))
|
288
|
-
end
|
289
|
-
|
290
|
-
def test_saturation_exception
|
291
|
-
assert_error_message("12 is not a color for `saturation'", "saturation(12)")
|
292
|
-
end
|
293
|
-
|
294
|
-
def test_lightness
|
295
|
-
assert_equal("86%", evaluate("lightness(hsl(120, 50%, 86%))"))
|
296
|
-
assert_equal("86%", evaluate("lightness(hsl(120, 50%, 86))"))
|
297
|
-
assert_equal("86%", evaluate("lightness($color: hsl(120, 50%, 86))"))
|
298
|
-
end
|
299
|
-
|
300
|
-
def test_lightness_exception
|
301
|
-
assert_error_message("12 is not a color for `lightness'", "lightness(12)")
|
302
|
-
end
|
303
|
-
|
304
|
-
def test_alpha
|
305
|
-
assert_equal("1", evaluate("alpha(#123456)"))
|
306
|
-
assert_equal("0.34", evaluate("alpha(rgba(0, 1, 2, 0.34))"))
|
307
|
-
assert_equal("0", evaluate("alpha(hsla(0, 1, 2, 0))"))
|
308
|
-
assert_equal("0", evaluate("alpha($color: hsla(0, 1, 2, 0))"))
|
309
|
-
end
|
310
|
-
|
311
|
-
def test_alpha_exception
|
312
|
-
assert_error_message("12 is not a color for `alpha'", "alpha(12)")
|
313
|
-
end
|
314
|
-
|
315
|
-
def test_opacify
|
316
|
-
assert_equal("rgba(0, 0, 0, 0.75)", evaluate("opacify(rgba(0, 0, 0, 0.5), 0.25)"))
|
317
|
-
assert_equal("rgba(0, 0, 0, 0.3)", evaluate("opacify(rgba(0, 0, 0, 0.2), 0.1)"))
|
318
|
-
assert_equal("rgba(0, 0, 0, 0.7)", evaluate("fade-in(rgba(0, 0, 0, 0.2), 0.5px)"))
|
319
|
-
assert_equal("black", evaluate("fade_in(rgba(0, 0, 0, 0.2), 0.8)"))
|
320
|
-
assert_equal("black", evaluate("opacify(rgba(0, 0, 0, 0.2), 1)"))
|
321
|
-
assert_equal("rgba(0, 0, 0, 0.2)", evaluate("opacify(rgba(0, 0, 0, 0.2), 0%)"))
|
322
|
-
assert_equal("rgba(0, 0, 0, 0.2)", evaluate("opacify($color: rgba(0, 0, 0, 0.2), $amount: 0%)"))
|
323
|
-
assert_equal("rgba(0, 0, 0, 0.2)", evaluate("fade-in($color: rgba(0, 0, 0, 0.2), $amount: 0%)"))
|
324
|
-
end
|
325
|
-
|
326
|
-
def test_opacify_tests_bounds
|
327
|
-
assert_error_message("Amount -0.001 must be between 0 and 1 for `opacify'",
|
328
|
-
"opacify(rgba(0, 0, 0, 0.2), -0.001)")
|
329
|
-
assert_error_message("Amount 1.001 must be between 0 and 1 for `opacify'",
|
330
|
-
"opacify(rgba(0, 0, 0, 0.2), 1.001)")
|
331
|
-
end
|
332
|
-
|
333
|
-
def test_opacify_tests_types
|
334
|
-
assert_error_message("\"foo\" is not a color for `opacify'", "opacify(\"foo\", 10%)")
|
335
|
-
assert_error_message("\"foo\" is not a number for `opacify'", "opacify(#fff, \"foo\")")
|
336
|
-
end
|
337
|
-
|
338
|
-
def test_transparentize
|
339
|
-
assert_equal("rgba(0, 0, 0, 0.3)", evaluate("transparentize(rgba(0, 0, 0, 0.5), 0.2)"))
|
340
|
-
assert_equal("rgba(0, 0, 0, 0.1)", evaluate("transparentize(rgba(0, 0, 0, 0.2), 0.1)"))
|
341
|
-
assert_equal("rgba(0, 0, 0, 0.2)", evaluate("fade-out(rgba(0, 0, 0, 0.5), 0.3px)"))
|
342
|
-
assert_equal("rgba(0, 0, 0, 0)", evaluate("fade_out(rgba(0, 0, 0, 0.2), 0.2)"))
|
343
|
-
assert_equal("rgba(0, 0, 0, 0)", evaluate("transparentize(rgba(0, 0, 0, 0.2), 1)"))
|
344
|
-
assert_equal("rgba(0, 0, 0, 0.2)", evaluate("transparentize(rgba(0, 0, 0, 0.2), 0)"))
|
345
|
-
assert_equal("rgba(0, 0, 0, 0.2)", evaluate("transparentize($color: rgba(0, 0, 0, 0.2), $amount: 0)"))
|
346
|
-
assert_equal("rgba(0, 0, 0, 0.2)", evaluate("fade-out($color: rgba(0, 0, 0, 0.2), $amount: 0)"))
|
347
|
-
end
|
348
|
-
|
349
|
-
def test_transparentize_tests_bounds
|
350
|
-
assert_error_message("Amount -0.001 must be between 0 and 1 for `transparentize'",
|
351
|
-
"transparentize(rgba(0, 0, 0, 0.2), -0.001)")
|
352
|
-
assert_error_message("Amount 1.001 must be between 0 and 1 for `transparentize'",
|
353
|
-
"transparentize(rgba(0, 0, 0, 0.2), 1.001)")
|
354
|
-
end
|
355
|
-
|
356
|
-
def test_transparentize_tests_types
|
357
|
-
assert_error_message("\"foo\" is not a color for `transparentize'", "transparentize(\"foo\", 10%)")
|
358
|
-
assert_error_message("\"foo\" is not a number for `transparentize'", "transparentize(#fff, \"foo\")")
|
359
|
-
end
|
360
|
-
|
361
|
-
def test_lighten
|
362
|
-
assert_equal("#4d4d4d", evaluate("lighten(hsl(0, 0, 0), 30%)"))
|
363
|
-
assert_equal("#ee0000", evaluate("lighten(#800, 20%)"))
|
364
|
-
assert_equal("white", evaluate("lighten(#fff, 20%)"))
|
365
|
-
assert_equal("white", evaluate("lighten(#800, 100%)"))
|
366
|
-
assert_equal("#880000", evaluate("lighten(#800, 0%)"))
|
367
|
-
assert_equal("rgba(238, 0, 0, 0.5)", evaluate("lighten(rgba(136, 0, 0, 0.5), 20%)"))
|
368
|
-
assert_equal("rgba(238, 0, 0, 0.5)", evaluate("lighten($color: rgba(136, 0, 0, 0.5), $amount: 20%)"))
|
369
|
-
end
|
370
|
-
|
371
|
-
def test_lighten_tests_bounds
|
372
|
-
assert_error_message("Amount -0.001 must be between 0% and 100% for `lighten'",
|
373
|
-
"lighten(#123, -0.001)")
|
374
|
-
assert_error_message("Amount 100.001 must be between 0% and 100% for `lighten'",
|
375
|
-
"lighten(#123, 100.001)")
|
376
|
-
end
|
377
|
-
|
378
|
-
def test_lighten_tests_types
|
379
|
-
assert_error_message("\"foo\" is not a color for `lighten'", "lighten(\"foo\", 10%)")
|
380
|
-
assert_error_message("\"foo\" is not a number for `lighten'", "lighten(#fff, \"foo\")")
|
381
|
-
end
|
382
|
-
|
383
|
-
def test_darken
|
384
|
-
assert_equal("#ff6a00", evaluate("darken(hsl(25, 100, 80), 30%)"))
|
385
|
-
assert_equal("#220000", evaluate("darken(#800, 20%)"))
|
386
|
-
assert_equal("black", evaluate("darken(#000, 20%)"))
|
387
|
-
assert_equal("black", evaluate("darken(#800, 100%)"))
|
388
|
-
assert_equal("#880000", evaluate("darken(#800, 0%)"))
|
389
|
-
assert_equal("rgba(34, 0, 0, 0.5)", evaluate("darken(rgba(136, 0, 0, 0.5), 20%)"))
|
390
|
-
assert_equal("rgba(34, 0, 0, 0.5)", evaluate("darken($color: rgba(136, 0, 0, 0.5), $amount: 20%)"))
|
391
|
-
end
|
392
|
-
|
393
|
-
def test_darken_tests_bounds
|
394
|
-
assert_error_message("Amount -0.001 must be between 0% and 100% for `darken'",
|
395
|
-
"darken(#123, -0.001)")
|
396
|
-
assert_error_message("Amount 100.001 must be between 0% and 100% for `darken'",
|
397
|
-
"darken(#123, 100.001)")
|
398
|
-
end
|
399
|
-
|
400
|
-
def test_darken_tests_types
|
401
|
-
assert_error_message("\"foo\" is not a color for `darken'", "darken(\"foo\", 10%)")
|
402
|
-
assert_error_message("\"foo\" is not a number for `darken'", "darken(#fff, \"foo\")")
|
403
|
-
end
|
404
|
-
|
405
|
-
def test_saturate
|
406
|
-
assert_equal("#d9f2d9", evaluate("saturate(hsl(120, 30, 90), 20%)"))
|
407
|
-
assert_equal("#9e3f3f", evaluate("saturate(#855, 20%)"))
|
408
|
-
assert_equal("black", evaluate("saturate(#000, 20%)"))
|
409
|
-
assert_equal("white", evaluate("saturate(#fff, 20%)"))
|
410
|
-
assert_equal("#33ff33", evaluate("saturate(#8a8, 100%)"))
|
411
|
-
assert_equal("#88aa88", evaluate("saturate(#8a8, 0%)"))
|
412
|
-
assert_equal("rgba(158, 63, 63, 0.5)", evaluate("saturate(rgba(136, 85, 85, 0.5), 20%)"))
|
413
|
-
assert_equal("rgba(158, 63, 63, 0.5)", evaluate("saturate($color: rgba(136, 85, 85, 0.5), $amount: 20%)"))
|
414
|
-
end
|
415
|
-
|
416
|
-
def test_saturate_tests_bounds
|
417
|
-
assert_error_message("Amount -0.001 must be between 0% and 100% for `saturate'",
|
418
|
-
"saturate(#123, -0.001)")
|
419
|
-
assert_error_message("Amount 100.001 must be between 0% and 100% for `saturate'",
|
420
|
-
"saturate(#123, 100.001)")
|
421
|
-
end
|
422
|
-
|
423
|
-
def test_saturate_tests_types
|
424
|
-
assert_error_message("\"foo\" is not a color for `saturate'", "saturate(\"foo\", 10%)")
|
425
|
-
assert_error_message("\"foo\" is not a number for `saturate'", "saturate(#fff, \"foo\")")
|
426
|
-
end
|
427
|
-
|
428
|
-
def test_desaturate
|
429
|
-
assert_equal("#e3e8e3", evaluate("desaturate(hsl(120, 30, 90), 20%)"))
|
430
|
-
assert_equal("#726b6b", evaluate("desaturate(#855, 20%)"))
|
431
|
-
assert_equal("black", evaluate("desaturate(#000, 20%)"))
|
432
|
-
assert_equal("white", evaluate("desaturate(#fff, 20%)"))
|
433
|
-
assert_equal("#999999", evaluate("desaturate(#8a8, 100%)"))
|
434
|
-
assert_equal("#88aa88", evaluate("desaturate(#8a8, 0%)"))
|
435
|
-
assert_equal("rgba(114, 107, 107, 0.5)", evaluate("desaturate(rgba(136, 85, 85, 0.5), 20%)"))
|
436
|
-
assert_equal("rgba(114, 107, 107, 0.5)", evaluate("desaturate($color: rgba(136, 85, 85, 0.5), $amount: 20%)"))
|
437
|
-
end
|
438
|
-
|
439
|
-
def test_desaturate_tests_bounds
|
440
|
-
assert_error_message("Amount -0.001 must be between 0% and 100% for `desaturate'",
|
441
|
-
"desaturate(#123, -0.001)")
|
442
|
-
assert_error_message("Amount 100.001 must be between 0% and 100% for `desaturate'",
|
443
|
-
"desaturate(#123, 100.001)")
|
444
|
-
end
|
445
|
-
|
446
|
-
def test_desaturate_tests_types
|
447
|
-
assert_error_message("\"foo\" is not a color for `desaturate'", "desaturate(\"foo\", 10%)")
|
448
|
-
assert_error_message("\"foo\" is not a number for `desaturate'", "desaturate(#fff, \"foo\")")
|
449
|
-
end
|
450
|
-
|
451
|
-
def test_adjust_hue
|
452
|
-
assert_equal("#deeded", evaluate("adjust-hue(hsl(120, 30, 90), 60deg)"))
|
453
|
-
assert_equal("#ededde", evaluate("adjust-hue(hsl(120, 30, 90), -60deg)"))
|
454
|
-
assert_equal("#886a11", evaluate("adjust-hue(#811, 45deg)"))
|
455
|
-
assert_equal("black", evaluate("adjust-hue(#000, 45deg)"))
|
456
|
-
assert_equal("white", evaluate("adjust-hue(#fff, 45deg)"))
|
457
|
-
assert_equal("#88aa88", evaluate("adjust-hue(#8a8, 360deg)"))
|
458
|
-
assert_equal("#88aa88", evaluate("adjust-hue(#8a8, 0deg)"))
|
459
|
-
assert_equal("rgba(136, 106, 17, 0.5)", evaluate("adjust-hue(rgba(136, 17, 17, 0.5), 45deg)"))
|
460
|
-
assert_equal("rgba(136, 106, 17, 0.5)", evaluate("adjust-hue($color: rgba(136, 17, 17, 0.5), $degrees: 45deg)"))
|
461
|
-
end
|
462
|
-
|
463
|
-
def test_adjust_hue_tests_types
|
464
|
-
assert_error_message("\"foo\" is not a color for `adjust-hue'", "adjust-hue(\"foo\", 10%)")
|
465
|
-
assert_error_message("\"foo\" is not a number for `adjust-hue'", "adjust-hue(#fff, \"foo\")")
|
466
|
-
end
|
467
|
-
|
468
|
-
def test_adjust_color
|
469
|
-
# HSL
|
470
|
-
assert_equal(evaluate("hsl(180, 30, 90)"),
|
471
|
-
evaluate("adjust-color(hsl(120, 30, 90), $hue: 60deg)"))
|
472
|
-
assert_equal(evaluate("hsl(120, 50, 90)"),
|
473
|
-
evaluate("adjust-color(hsl(120, 30, 90), $saturation: 20%)"))
|
474
|
-
assert_equal(evaluate("hsl(120, 30, 60)"),
|
475
|
-
evaluate("adjust-color(hsl(120, 30, 90), $lightness: -30%)"))
|
476
|
-
# RGB
|
477
|
-
assert_equal(evaluate("rgb(15, 20, 30)"),
|
478
|
-
evaluate("adjust-color(rgb(10, 20, 30), $red: 5)"))
|
479
|
-
assert_equal(evaluate("rgb(10, 15, 30)"),
|
480
|
-
evaluate("adjust-color(rgb(10, 20, 30), $green: -5)"))
|
481
|
-
assert_equal(evaluate("rgb(10, 20, 40)"),
|
482
|
-
evaluate("adjust-color(rgb(10, 20, 30), $blue: 10)"))
|
483
|
-
# Alpha
|
484
|
-
assert_equal(evaluate("hsla(120, 30, 90, 0.65)"),
|
485
|
-
evaluate("adjust-color(hsl(120, 30, 90), $alpha: -0.35)"))
|
486
|
-
assert_equal(evaluate("rgba(10, 20, 30, 0.9)"),
|
487
|
-
evaluate("adjust-color(rgba(10, 20, 30, 0.4), $alpha: 0.5)"))
|
488
|
-
|
489
|
-
# HSL composability
|
490
|
-
assert_equal(evaluate("hsl(180, 20, 90)"),
|
491
|
-
evaluate("adjust-color(hsl(120, 30, 90), $hue: 60deg, $saturation: -10%)"))
|
492
|
-
assert_equal(evaluate("hsl(180, 20, 95)"),
|
493
|
-
evaluate("adjust-color(hsl(120, 30, 90), $hue: 60deg, $saturation: -10%, $lightness: 5%)"))
|
494
|
-
assert_equal(evaluate("hsla(120, 20, 95, 0.3)"),
|
495
|
-
evaluate("adjust-color(hsl(120, 30, 90), $saturation: -10%, $lightness: 5%, $alpha: -0.7)"))
|
496
|
-
|
497
|
-
# RGB composability
|
498
|
-
assert_equal(evaluate("rgb(15, 20, 29)"),
|
499
|
-
evaluate("adjust-color(rgb(10, 20, 30), $red: 5, $blue: -1)"))
|
500
|
-
assert_equal(evaluate("rgb(15, 45, 29)"),
|
501
|
-
evaluate("adjust-color(rgb(10, 20, 30), $red: 5, $green: 25, $blue: -1)"))
|
502
|
-
assert_equal(evaluate("rgba(10, 25, 29, 0.7)"),
|
503
|
-
evaluate("adjust-color(rgb(10, 20, 30), $green: 5, $blue: -1, $alpha: -0.3)"))
|
504
|
-
|
505
|
-
# HSL range restriction
|
506
|
-
assert_equal(evaluate("hsl(120, 30, 90)"),
|
507
|
-
evaluate("adjust-color(hsl(120, 30, 90), $hue: 720deg)"))
|
508
|
-
assert_equal(evaluate("hsl(120, 0, 90)"),
|
509
|
-
evaluate("adjust-color(hsl(120, 30, 90), $saturation: -90%)"))
|
510
|
-
assert_equal(evaluate("hsl(120, 30, 100)"),
|
511
|
-
evaluate("adjust-color(hsl(120, 30, 90), $lightness: 30%)"))
|
512
|
-
|
513
|
-
# RGB range restriction
|
514
|
-
assert_equal(evaluate("rgb(255, 20, 30)"),
|
515
|
-
evaluate("adjust-color(rgb(10, 20, 30), $red: 250)"))
|
516
|
-
assert_equal(evaluate("rgb(10, 0, 30)"),
|
517
|
-
evaluate("adjust-color(rgb(10, 20, 30), $green: -30)"))
|
518
|
-
assert_equal(evaluate("rgb(10, 20, 0)"),
|
519
|
-
evaluate("adjust-color(rgb(10, 20, 30), $blue: -40)"))
|
520
|
-
end
|
521
|
-
|
522
|
-
def test_adjust_color_tests_types
|
523
|
-
assert_error_message("\"foo\" is not a color for `adjust-color'", "adjust-color(foo, $hue: 10)")
|
524
|
-
# HSL
|
525
|
-
assert_error_message("$hue: \"foo\" is not a number for `adjust-color'",
|
526
|
-
"adjust-color(blue, $hue: foo)")
|
527
|
-
assert_error_message("$saturation: \"foo\" is not a number for `adjust-color'",
|
528
|
-
"adjust-color(blue, $saturation: foo)")
|
529
|
-
assert_error_message("$lightness: \"foo\" is not a number for `adjust-color'",
|
530
|
-
"adjust-color(blue, $lightness: foo)")
|
531
|
-
# RGB
|
532
|
-
assert_error_message("$red: \"foo\" is not a number for `adjust-color'",
|
533
|
-
"adjust-color(blue, $red: foo)")
|
534
|
-
assert_error_message("$green: \"foo\" is not a number for `adjust-color'",
|
535
|
-
"adjust-color(blue, $green: foo)")
|
536
|
-
assert_error_message("$blue: \"foo\" is not a number for `adjust-color'",
|
537
|
-
"adjust-color(blue, $blue: foo)")
|
538
|
-
# Alpha
|
539
|
-
assert_error_message("$alpha: \"foo\" is not a number for `adjust-color'",
|
540
|
-
"adjust-color(blue, $alpha: foo)")
|
541
|
-
end
|
542
|
-
|
543
|
-
def test_adjust_color_tests_arg_range
|
544
|
-
# HSL
|
545
|
-
assert_error_message("$saturation: Amount 101% must be between -100% and 100% for `adjust-color'",
|
546
|
-
"adjust-color(blue, $saturation: 101%)")
|
547
|
-
assert_error_message("$saturation: Amount -101% must be between -100% and 100% for `adjust-color'",
|
548
|
-
"adjust-color(blue, $saturation: -101%)")
|
549
|
-
assert_error_message("$lightness: Amount 101% must be between -100% and 100% for `adjust-color'",
|
550
|
-
"adjust-color(blue, $lightness: 101%)")
|
551
|
-
assert_error_message("$lightness: Amount -101% must be between -100% and 100% for `adjust-color'",
|
552
|
-
"adjust-color(blue, $lightness: -101%)")
|
553
|
-
# RGB
|
554
|
-
assert_error_message("$red: Amount 256 must be between -255 and 255 for `adjust-color'",
|
555
|
-
"adjust-color(blue, $red: 256)")
|
556
|
-
assert_error_message("$red: Amount -256 must be between -255 and 255 for `adjust-color'",
|
557
|
-
"adjust-color(blue, $red: -256)")
|
558
|
-
assert_error_message("$green: Amount 256 must be between -255 and 255 for `adjust-color'",
|
559
|
-
"adjust-color(blue, $green: 256)")
|
560
|
-
assert_error_message("$green: Amount -256 must be between -255 and 255 for `adjust-color'",
|
561
|
-
"adjust-color(blue, $green: -256)")
|
562
|
-
assert_error_message("$blue: Amount 256 must be between -255 and 255 for `adjust-color'",
|
563
|
-
"adjust-color(blue, $blue: 256)")
|
564
|
-
assert_error_message("$blue: Amount -256 must be between -255 and 255 for `adjust-color'",
|
565
|
-
"adjust-color(blue, $blue: -256)")
|
566
|
-
# Alpha
|
567
|
-
assert_error_message("$alpha: Amount 1.1 must be between -1 and 1 for `adjust-color'",
|
568
|
-
"adjust-color(blue, $alpha: 1.1)")
|
569
|
-
assert_error_message("$alpha: Amount -1.1 must be between -1 and 1 for `adjust-color'",
|
570
|
-
"adjust-color(blue, $alpha: -1.1)")
|
571
|
-
end
|
572
|
-
|
573
|
-
def test_adjust_color_argument_errors
|
574
|
-
assert_error_message("Unknown argument $hoo (260deg) for `adjust-color'",
|
575
|
-
"adjust-color(blue, $hoo: 260deg)")
|
576
|
-
assert_error_message("Cannot specify HSL and RGB values for a color at the same time for `adjust-color'",
|
577
|
-
"adjust-color(blue, $hue: 120deg, $red: 10)");
|
578
|
-
assert_error_message("10px is not a keyword argument for `adjust_color'",
|
579
|
-
"adjust-color(blue, 10px)")
|
580
|
-
assert_error_message("10px is not a keyword argument for `adjust_color'",
|
581
|
-
"adjust-color(blue, 10px, 20px)")
|
582
|
-
assert_error_message("10px is not a keyword argument for `adjust_color'",
|
583
|
-
"adjust-color(blue, 10px, $hue: 180deg)")
|
584
|
-
end
|
585
|
-
|
586
|
-
def test_scale_color
|
587
|
-
# HSL
|
588
|
-
assert_equal(evaluate("hsl(120, 51, 90)"),
|
589
|
-
evaluate("scale-color(hsl(120, 30, 90), $saturation: 30%)"))
|
590
|
-
assert_equal(evaluate("hsl(120, 30, 76.5)"),
|
591
|
-
evaluate("scale-color(hsl(120, 30, 90), $lightness: -15%)"))
|
592
|
-
# RGB
|
593
|
-
assert_equal(evaluate("rgb(157, 20, 30)"),
|
594
|
-
evaluate("scale-color(rgb(10, 20, 30), $red: 60%)"))
|
595
|
-
assert_equal(evaluate("rgb(10, 38.8, 30)"),
|
596
|
-
evaluate("scale-color(rgb(10, 20, 30), $green: 8%)"))
|
597
|
-
assert_equal(evaluate("rgb(10, 20, 20)"),
|
598
|
-
evaluate("scale-color(rgb(10, 20, 30), $blue: -(1/3)*100%)"))
|
599
|
-
# Alpha
|
600
|
-
assert_equal(evaluate("hsla(120, 30, 90, 0.86)"),
|
601
|
-
evaluate("scale-color(hsl(120, 30, 90), $alpha: -14%)"))
|
602
|
-
assert_equal(evaluate("rgba(10, 20, 30, 0.82)"),
|
603
|
-
evaluate("scale-color(rgba(10, 20, 30, 0.8), $alpha: 10%)"))
|
604
|
-
|
605
|
-
# HSL composability
|
606
|
-
assert_equal(evaluate("hsl(120, 51, 76.5)"),
|
607
|
-
evaluate("scale-color(hsl(120, 30, 90), $saturation: 30%, $lightness: -15%)"))
|
608
|
-
assert_equal(evaluate("hsla(120, 51, 90, 0.2)"),
|
609
|
-
evaluate("scale-color(hsl(120, 30, 90), $saturation: 30%, $alpha: -80%)"))
|
610
|
-
|
611
|
-
# RGB composability
|
612
|
-
assert_equal(evaluate("rgb(157, 38.8, 30)"),
|
613
|
-
evaluate("scale-color(rgb(10, 20, 30), $red: 60%, $green: 8%)"))
|
614
|
-
assert_equal(evaluate("rgb(157, 38.8, 20)"),
|
615
|
-
evaluate("scale-color(rgb(10, 20, 30), $red: 60%, $green: 8%, $blue: -(1/3)*100%)"))
|
616
|
-
assert_equal(evaluate("rgba(10, 38.8, 20, 0.55)"),
|
617
|
-
evaluate("scale-color(rgba(10, 20, 30, 0.5), $green: 8%, $blue: -(1/3)*100%, $alpha: 10%)"))
|
618
|
-
|
619
|
-
# Extremes
|
620
|
-
assert_equal(evaluate("hsl(120, 100, 90)"),
|
621
|
-
evaluate("scale-color(hsl(120, 30, 90), $saturation: 100%)"))
|
622
|
-
assert_equal(evaluate("hsl(120, 30, 90)"),
|
623
|
-
evaluate("scale-color(hsl(120, 30, 90), $saturation: 0%)"))
|
624
|
-
assert_equal(evaluate("hsl(120, 0, 90)"),
|
625
|
-
evaluate("scale-color(hsl(120, 30, 90), $saturation: -100%)"))
|
626
|
-
end
|
627
|
-
|
628
|
-
def test_scale_color_tests_types
|
629
|
-
assert_error_message("\"foo\" is not a color for `scale-color'", "scale-color(foo, $red: 10%)")
|
630
|
-
# HSL
|
631
|
-
assert_error_message("$saturation: \"foo\" is not a number for `scale-color'",
|
632
|
-
"scale-color(blue, $saturation: foo)")
|
633
|
-
assert_error_message("$lightness: \"foo\" is not a number for `scale-color'",
|
634
|
-
"scale-color(blue, $lightness: foo)")
|
635
|
-
# RGB
|
636
|
-
assert_error_message("$red: \"foo\" is not a number for `scale-color'",
|
637
|
-
"scale-color(blue, $red: foo)")
|
638
|
-
assert_error_message("$green: \"foo\" is not a number for `scale-color'",
|
639
|
-
"scale-color(blue, $green: foo)")
|
640
|
-
assert_error_message("$blue: \"foo\" is not a number for `scale-color'",
|
641
|
-
"scale-color(blue, $blue: foo)")
|
642
|
-
# Alpha
|
643
|
-
assert_error_message("$alpha: \"foo\" is not a number for `scale-color'",
|
644
|
-
"scale-color(blue, $alpha: foo)")
|
645
|
-
end
|
646
|
-
|
647
|
-
def test_scale_color_argument_errors
|
648
|
-
# Range
|
649
|
-
assert_error_message("$saturation: Amount 101% must be between -100% and 100% for `scale-color'",
|
650
|
-
"scale-color(blue, $saturation: 101%)")
|
651
|
-
assert_error_message("$red: Amount -101% must be between -100% and 100% for `scale-color'",
|
652
|
-
"scale-color(blue, $red: -101%)")
|
653
|
-
assert_error_message("$alpha: Amount -101% must be between -100% and 100% for `scale-color'",
|
654
|
-
"scale-color(blue, $alpha: -101%)")
|
655
|
-
|
656
|
-
# Unit
|
657
|
-
assert_error_message("$saturation: Amount 80 must be a % (e.g. 80%) for `scale-color'",
|
658
|
-
"scale-color(blue, $saturation: 80)")
|
659
|
-
assert_error_message("$alpha: Amount 0.5 must be a % (e.g. 0.5%) for `scale-color'",
|
660
|
-
"scale-color(blue, $alpha: 0.5)")
|
661
|
-
|
662
|
-
# Unknown argument
|
663
|
-
assert_error_message("Unknown argument $hue (80%) for `scale-color'", "scale-color(blue, $hue: 80%)")
|
664
|
-
|
665
|
-
# Non-keyword arg
|
666
|
-
assert_error_message("10px is not a keyword argument for `scale_color'", "scale-color(blue, 10px)")
|
667
|
-
|
668
|
-
# HSL/RGB
|
669
|
-
assert_error_message("Cannot specify HSL and RGB values for a color at the same time for `scale-color'",
|
670
|
-
"scale-color(blue, $lightness: 10%, $red: 20%)");
|
671
|
-
end
|
672
|
-
|
673
|
-
def test_change_color
|
674
|
-
# HSL
|
675
|
-
assert_equal(evaluate("hsl(195, 30, 90)"),
|
676
|
-
evaluate("change-color(hsl(120, 30, 90), $hue: 195deg)"))
|
677
|
-
assert_equal(evaluate("hsl(120, 50, 90)"),
|
678
|
-
evaluate("change-color(hsl(120, 30, 90), $saturation: 50%)"))
|
679
|
-
assert_equal(evaluate("hsl(120, 30, 40)"),
|
680
|
-
evaluate("change-color(hsl(120, 30, 90), $lightness: 40%)"))
|
681
|
-
# RGB
|
682
|
-
assert_equal(evaluate("rgb(123, 20, 30)"),
|
683
|
-
evaluate("change-color(rgb(10, 20, 30), $red: 123)"))
|
684
|
-
assert_equal(evaluate("rgb(10, 234, 30)"),
|
685
|
-
evaluate("change-color(rgb(10, 20, 30), $green: 234)"))
|
686
|
-
assert_equal(evaluate("rgb(10, 20, 198)"),
|
687
|
-
evaluate("change-color(rgb(10, 20, 30), $blue: 198)"))
|
688
|
-
# Alpha
|
689
|
-
assert_equal(evaluate("rgba(10, 20, 30, 0.76)"),
|
690
|
-
evaluate("change-color(rgb(10, 20, 30), $alpha: 0.76)"))
|
691
|
-
|
692
|
-
# HSL composability
|
693
|
-
assert_equal(evaluate("hsl(56, 30, 47)"),
|
694
|
-
evaluate("change-color(hsl(120, 30, 90), $hue: 56deg, $lightness: 47%)"))
|
695
|
-
assert_equal(evaluate("hsla(56, 30, 47, 0.9)"),
|
696
|
-
evaluate("change-color(hsl(120, 30, 90), $hue: 56deg, $lightness: 47%, $alpha: 0.9)"))
|
697
|
-
end
|
698
|
-
|
699
|
-
def test_change_color_tests_types
|
700
|
-
assert_error_message("\"foo\" is not a color for `change-color'", "change-color(foo, $red: 10%)")
|
701
|
-
# HSL
|
702
|
-
assert_error_message("$saturation: \"foo\" is not a number for `change-color'",
|
703
|
-
"change-color(blue, $saturation: foo)")
|
704
|
-
assert_error_message("$lightness: \"foo\" is not a number for `change-color'",
|
705
|
-
"change-color(blue, $lightness: foo)")
|
706
|
-
# RGB
|
707
|
-
assert_error_message("$red: \"foo\" is not a number for `change-color'", "change-color(blue, $red: foo)")
|
708
|
-
assert_error_message("$green: \"foo\" is not a number for `change-color'", "change-color(blue, $green: foo)")
|
709
|
-
assert_error_message("$blue: \"foo\" is not a number for `change-color'", "change-color(blue, $blue: foo)")
|
710
|
-
# Alpha
|
711
|
-
assert_error_message("$alpha: \"foo\" is not a number for `change-color'", "change-color(blue, $alpha: foo)")
|
712
|
-
end
|
713
|
-
|
714
|
-
def test_change_color_argument_errors
|
715
|
-
# Range
|
716
|
-
assert_error_message("Saturation must be between 0 and 100 for `change-color'",
|
717
|
-
"change-color(blue, $saturation: 101%)")
|
718
|
-
assert_error_message("Lightness must be between 0 and 100 for `change-color'",
|
719
|
-
"change-color(blue, $lightness: 101%)")
|
720
|
-
assert_error_message("Red value must be between 0 and 255 for `change-color'",
|
721
|
-
"change-color(blue, $red: -1)")
|
722
|
-
assert_error_message("Green value must be between 0 and 255 for `change-color'",
|
723
|
-
"change-color(blue, $green: 256)")
|
724
|
-
assert_error_message("Blue value must be between 0 and 255 for `change-color'",
|
725
|
-
"change-color(blue, $blue: 500)")
|
726
|
-
|
727
|
-
# Unknown argument
|
728
|
-
assert_error_message("Unknown argument $hoo (80%) for `change-color'", "change-color(blue, $hoo: 80%)")
|
729
|
-
|
730
|
-
# Non-keyword arg
|
731
|
-
assert_error_message("10px is not a keyword argument for `change_color'", "change-color(blue, 10px)")
|
732
|
-
|
733
|
-
# HSL/RGB
|
734
|
-
assert_error_message("Cannot specify HSL and RGB values for a color at the same time for `change-color'",
|
735
|
-
"change-color(blue, $lightness: 10%, $red: 120)");
|
736
|
-
end
|
737
|
-
|
738
|
-
def test_mix
|
739
|
-
assert_equal("#7f007f", evaluate("mix(#f00, #00f)"))
|
740
|
-
assert_equal("#7f7f7f", evaluate("mix(#f00, #0ff)"))
|
741
|
-
assert_equal("#7f9055", evaluate("mix(#f70, #0aa)"))
|
742
|
-
assert_equal("#3f00bf", evaluate("mix(#f00, #00f, 25%)"))
|
743
|
-
assert_equal("rgba(63, 0, 191, 0.75)", evaluate("mix(rgba(255, 0, 0, 0.5), #00f)"))
|
744
|
-
assert_equal("red", evaluate("mix(#f00, #00f, 100%)"))
|
745
|
-
assert_equal("blue", evaluate("mix(#f00, #00f, 0%)"))
|
746
|
-
assert_equal("rgba(255, 0, 0, 0.5)", evaluate("mix(#f00, transparentize(#00f, 1))"))
|
747
|
-
assert_equal("rgba(0, 0, 255, 0.5)", evaluate("mix(transparentize(#f00, 1), #00f)"))
|
748
|
-
assert_equal("red", evaluate("mix(#f00, transparentize(#00f, 1), 100%)"))
|
749
|
-
assert_equal("blue", evaluate("mix(transparentize(#f00, 1), #00f, 0%)"))
|
750
|
-
assert_equal("rgba(0, 0, 255, 0)", evaluate("mix(#f00, transparentize(#00f, 1), 0%)"))
|
751
|
-
assert_equal("rgba(255, 0, 0, 0)", evaluate("mix(transparentize(#f00, 1), #00f, 100%)"))
|
752
|
-
assert_equal("rgba(255, 0, 0, 0)", evaluate("mix($color-1: transparentize(#f00, 1), $color-2: #00f, $weight: 100%)"))
|
753
|
-
end
|
754
|
-
|
755
|
-
def test_mix_tests_types
|
756
|
-
assert_error_message("\"foo\" is not a color for `mix'", "mix(\"foo\", #f00, 10%)")
|
757
|
-
assert_error_message("\"foo\" is not a color for `mix'", "mix(#f00, \"foo\", 10%)")
|
758
|
-
assert_error_message("\"foo\" is not a number for `mix'", "mix(#f00, #baf, \"foo\")")
|
759
|
-
end
|
760
|
-
|
761
|
-
def test_mix_tests_bounds
|
762
|
-
assert_error_message("Weight -0.001 must be between 0% and 100% for `mix'",
|
763
|
-
"mix(#123, #456, -0.001)")
|
764
|
-
assert_error_message("Weight 100.001 must be between 0% and 100% for `mix'",
|
765
|
-
"mix(#123, #456, 100.001)")
|
766
|
-
end
|
767
|
-
|
768
|
-
def test_grayscale
|
769
|
-
assert_equal("#bbbbbb", evaluate("grayscale(#abc)"))
|
770
|
-
assert_equal("gray", evaluate("grayscale(#f00)"))
|
771
|
-
assert_equal("gray", evaluate("grayscale(#00f)"))
|
772
|
-
assert_equal("white", evaluate("grayscale(white)"))
|
773
|
-
assert_equal("black", evaluate("grayscale(black)"))
|
774
|
-
assert_equal("black", evaluate("grayscale($color: black)"))
|
775
|
-
end
|
776
|
-
|
777
|
-
def tets_grayscale_tests_types
|
778
|
-
assert_error_message("\"foo\" is not a color for `grayscale'", "grayscale(\"foo\")")
|
779
|
-
end
|
780
|
-
|
781
|
-
def test_complement
|
782
|
-
assert_equal("#ccbbaa", evaluate("complement(#abc)"))
|
783
|
-
assert_equal("aqua", evaluate("complement(red)"))
|
784
|
-
assert_equal("red", evaluate("complement(aqua)"))
|
785
|
-
assert_equal("white", evaluate("complement(white)"))
|
786
|
-
assert_equal("black", evaluate("complement(black)"))
|
787
|
-
assert_equal("black", evaluate("complement($color: black)"))
|
788
|
-
end
|
789
|
-
|
790
|
-
def tets_complement_tests_types
|
791
|
-
assert_error_message("\"foo\" is not a color for `complement'", "complement(\"foo\")")
|
792
|
-
end
|
793
|
-
|
794
|
-
def test_invert
|
795
|
-
assert_equal("#112233", evaluate("invert(#edc)"))
|
796
|
-
assert_equal("rgba(245, 235, 225, 0.5)", evaluate("invert(rgba(10, 20, 30, 0.5))"))
|
797
|
-
end
|
798
|
-
|
799
|
-
def test_invert_tests_types
|
800
|
-
assert_error_message("\"foo\" is not a color for `invert'", "invert(\"foo\")")
|
801
|
-
end
|
802
|
-
|
803
|
-
def test_unquote
|
804
|
-
assert_equal('foo', evaluate('unquote("foo")'))
|
805
|
-
assert_equal('foo', evaluate('unquote(foo)'))
|
806
|
-
assert_equal('foo', evaluate('unquote($string: foo)'))
|
807
|
-
end
|
808
|
-
|
809
|
-
def test_quote
|
810
|
-
assert_equal('"foo"', evaluate('quote(foo)'))
|
811
|
-
assert_equal('"foo"', evaluate('quote("foo")'))
|
812
|
-
assert_equal('"foo"', evaluate('quote($string: "foo")'))
|
813
|
-
end
|
814
|
-
|
815
|
-
def test_quote_tests_type
|
816
|
-
assert_error_message("#ff0000 is not a string for `quote'", "quote(#f00)")
|
817
|
-
end
|
818
|
-
|
819
|
-
def test_user_defined_function
|
820
|
-
assert_equal("I'm a user-defined string!", evaluate("user_defined()"))
|
821
|
-
end
|
822
|
-
|
823
|
-
def test_user_defined_function_with_preceding_underscore
|
824
|
-
assert_equal("I'm another user-defined string!", evaluate("_preceding_underscore()"))
|
825
|
-
assert_equal("I'm another user-defined string!", evaluate("-preceding-underscore()"))
|
826
|
-
end
|
827
|
-
|
828
|
-
def test_options_on_new_literals_fails
|
829
|
-
assert_error_message(<<MSG, "call-options-on-new-literal()")
|
830
|
-
The #options attribute is not set on this Sass::Script::String.
|
831
|
-
This error is probably occurring because #to_s was called
|
832
|
-
on this literal within a custom Sass function without first
|
833
|
-
setting the #option attribute.
|
834
|
-
MSG
|
835
|
-
end
|
836
|
-
|
837
|
-
def test_type_of
|
838
|
-
assert_equal("string", evaluate("type-of(\"asdf\")"))
|
839
|
-
assert_equal("string", evaluate("type-of(asdf)"))
|
840
|
-
assert_equal("number", evaluate("type-of(1px)"))
|
841
|
-
assert_equal("bool", evaluate("type-of(true)"))
|
842
|
-
assert_equal("color", evaluate("type-of(#fff)"))
|
843
|
-
assert_equal("color", evaluate("type-of($value: #fff)"))
|
844
|
-
end
|
845
|
-
|
846
|
-
def test_unit
|
847
|
-
assert_equal(%Q{""}, evaluate("unit(100)"))
|
848
|
-
assert_equal(%Q{"px"}, evaluate("unit(100px)"))
|
849
|
-
assert_equal(%Q{"em*px"}, evaluate("unit(10px * 5em)"))
|
850
|
-
assert_equal(%Q{"em*px"}, evaluate("unit(5em * 10px)"))
|
851
|
-
assert_equal(%Q{"em*px/cm*rem"}, evaluate("unit(10px * 5em / 30cm / 1rem)"))
|
852
|
-
assert_equal(%Q{"px"}, evaluate("unit($number: 100px)"))
|
853
|
-
assert_error_message("#ff0000 is not a number for `unit'", "unit(#f00)")
|
854
|
-
end
|
855
|
-
|
856
|
-
def test_unitless
|
857
|
-
assert_equal(%Q{true}, evaluate("unitless(100)"))
|
858
|
-
assert_equal(%Q{false}, evaluate("unitless(100px)"))
|
859
|
-
assert_equal(%Q{false}, evaluate("unitless($number: 100px)"))
|
860
|
-
assert_error_message("#ff0000 is not a number for `unitless'", "unitless(#f00)")
|
861
|
-
end
|
862
|
-
|
863
|
-
def test_comparable
|
864
|
-
assert_equal(%Q{true}, evaluate("comparable(2px, 1px)"))
|
865
|
-
assert_equal(%Q{true}, evaluate("comparable(10cm, 3mm)"))
|
866
|
-
assert_equal(%Q{false}, evaluate("comparable(100px, 3em)"))
|
867
|
-
assert_equal(%Q{false}, evaluate("comparable($number-1: 100px, $number-2: 3em)"))
|
868
|
-
assert_error_message("#ff0000 is not a number for `comparable'", "comparable(#f00, 1px)")
|
869
|
-
assert_error_message("#ff0000 is not a number for `comparable'", "comparable(1px, #f00)")
|
870
|
-
end
|
871
|
-
|
872
|
-
def test_length
|
873
|
-
assert_equal("5", evaluate("length(1 2 3 4 5)"))
|
874
|
-
assert_equal("4", evaluate("length((foo, bar, baz, bip))"))
|
875
|
-
assert_equal("3", evaluate("length((foo, bar, baz bip))"))
|
876
|
-
assert_equal("3", evaluate("length((foo, bar, (baz, bip)))"))
|
877
|
-
assert_equal("1", evaluate("length(#f00)"))
|
878
|
-
assert_equal("0", evaluate("length(())"))
|
879
|
-
assert_equal("4", evaluate("length(1 2 () 3)"))
|
880
|
-
end
|
881
|
-
|
882
|
-
def test_nth
|
883
|
-
assert_equal("1", evaluate("nth(1 2 3, 1)"))
|
884
|
-
assert_equal("2", evaluate("nth(1 2 3, 2)"))
|
885
|
-
assert_equal("3", evaluate("nth((1, 2, 3), 3)"))
|
886
|
-
assert_equal("foo", evaluate("nth(foo, 1)"))
|
887
|
-
assert_equal("bar baz", evaluate("nth(foo (bar baz) bang, 2)"))
|
888
|
-
assert_error_message("List index 0 must be greater than or equal to 1 for `nth'", "nth(foo, 0)")
|
889
|
-
assert_error_message("List index -10 must be greater than or equal to 1 for `nth'", "nth(foo, -10)")
|
890
|
-
assert_error_message("List index 1.5 must be an integer for `nth'", "nth(foo, 1.5)")
|
891
|
-
assert_error_message("List index is 5 but list is only 4 items long for `nth'", "nth(1 2 3 4, 5)")
|
892
|
-
assert_error_message("List index is 2 but list is only 1 item long for `nth'", "nth(foo, 2)")
|
893
|
-
assert_error_message("List index is 1 but list has no items for `nth'", "nth((), 1)")
|
894
|
-
end
|
895
|
-
|
896
|
-
def test_join
|
897
|
-
assert_equal("1 2 3", evaluate("join(1 2, 3)"))
|
898
|
-
assert_equal("1 2 3", evaluate("join(1, 2 3)"))
|
899
|
-
assert_equal("1 2 3 4", evaluate("join(1 2, 3 4)"))
|
900
|
-
assert_equal("true", evaluate("(1 2 3 4) == join(1 2, 3 4)"))
|
901
|
-
assert_equal("false", evaluate("(1 2 (3 4)) == join(1 2, 3 4)"))
|
902
|
-
assert_equal("1, 2, 3", evaluate("join((1, 2), 3)"))
|
903
|
-
assert_equal("1, 2, 3", evaluate("join(1, (2, 3))"))
|
904
|
-
assert_equal("1, 2, 3, 4", evaluate("join((1, 2), (3, 4))"))
|
905
|
-
assert_equal("true", evaluate("(1, 2, 3, 4) == join((1, 2), (3, 4))"))
|
906
|
-
assert_equal("false", evaluate("(1, 2, (3, 4)) == join((1, 2), (3, 4))"))
|
907
|
-
|
908
|
-
assert_equal("1 2", evaluate("join(1, 2)"))
|
909
|
-
assert_equal("1 2 3 4", evaluate("join(1 2, (3, 4))"))
|
910
|
-
assert_equal("1, 2, 3, 4", evaluate("join((1, 2), 3 4)"))
|
911
|
-
|
912
|
-
assert_equal("1 2", evaluate("join(1, 2, auto)"))
|
913
|
-
assert_equal("1, 2, 3, 4", evaluate("join(1 2, 3 4, comma)"))
|
914
|
-
assert_equal("1 2 3 4", evaluate("join((1, 2), (3, 4), space)"))
|
915
|
-
assert_equal("1, 2", evaluate("join(1, 2, comma)"))
|
916
|
-
|
917
|
-
assert_equal("1 2", evaluate("join(1 2, ())"))
|
918
|
-
assert_equal("1, 2", evaluate("join((1, 2), ())"))
|
919
|
-
assert_equal("true", evaluate("(1 2) == join(1 2, ())"))
|
920
|
-
assert_equal("true", evaluate("(1, 2) == join((1, 2), ())"))
|
921
|
-
assert_equal("false", evaluate("(1 2 ()) == join(1 2, ())"))
|
922
|
-
assert_equal("false", evaluate("(1, 2, ()) == join((1, 2), ())"))
|
923
|
-
|
924
|
-
assert_equal("1 2", evaluate("join((), 1 2)"))
|
925
|
-
assert_equal("1, 2", evaluate("join((), (1, 2))"))
|
926
|
-
assert_equal("true", evaluate("(1 2) == join((), 1 2)"))
|
927
|
-
assert_equal("true", evaluate("(1, 2) == join((), (1, 2))"))
|
928
|
-
assert_equal("false", evaluate("(1 2 ()) == join((), 1 2)"))
|
929
|
-
assert_equal("false", evaluate("(1, 2, ()) == join((), (1, 2))"))
|
930
|
-
|
931
|
-
assert_error_message("Separator name must be space, comma, or auto for `join'", "join(1, 2, baboon)")
|
932
|
-
end
|
933
|
-
|
934
|
-
def test_append
|
935
|
-
assert_equal("1 2 3", evaluate("append(1 2, 3)"))
|
936
|
-
assert_equal("1 2 3 4", evaluate("append(1 2, 3 4)"))
|
937
|
-
assert_equal("false", evaluate("(1 2 3 4) == append(1 2, 3 4)"))
|
938
|
-
assert_equal("true", evaluate("(1 2 (3 4)) == append(1 2, 3 4)"))
|
939
|
-
assert_equal("1, 2, 3", evaluate("append((1, 2), 3)"))
|
940
|
-
assert_equal("1, 2, 3, 4", evaluate("append((1, 2), (3, 4))"))
|
941
|
-
assert_equal("false", evaluate("(1, 2, 3, 4) == append((1, 2), (3, 4))"))
|
942
|
-
assert_equal("true", evaluate("(1, 2, (3, 4)) == append((1, 2), (3, 4))"))
|
943
|
-
|
944
|
-
assert_equal("1 2", evaluate("append(1, 2)"))
|
945
|
-
assert_equal("1 2 3, 4", evaluate("append(1 2, (3, 4))"))
|
946
|
-
assert_equal("true", evaluate("(1 2 (3, 4)) == append(1 2, (3, 4))"))
|
947
|
-
assert_equal("1, 2, 3 4", evaluate("append((1, 2), 3 4)"))
|
948
|
-
assert_equal("true", evaluate("(1, 2, 3 4) == append((1, 2), 3 4)"))
|
949
|
-
|
950
|
-
assert_equal("1 2", evaluate("append(1, 2, auto)"))
|
951
|
-
assert_equal("1, 2, 3 4", evaluate("append(1 2, 3 4, comma)"))
|
952
|
-
assert_equal("1 2 3, 4", evaluate("append((1, 2), (3, 4), space)"))
|
953
|
-
assert_equal("1, 2", evaluate("append(1, 2, comma)"))
|
954
|
-
|
955
|
-
assert_equal("1 2", evaluate("append(1 2, ())"))
|
956
|
-
assert_equal("1, 2", evaluate("append((1, 2), ())"))
|
957
|
-
assert_equal("true", evaluate("(1 2 ()) == append(1 2, ())"))
|
958
|
-
assert_equal("true", evaluate("(1, 2, ()) == append((1, 2), ())"))
|
959
|
-
|
960
|
-
assert_equal("1 2", evaluate("append((), 1 2)"))
|
961
|
-
assert_equal("1, 2", evaluate("append((), (1, 2))"))
|
962
|
-
assert_equal("false", evaluate("(1 2) == append((), 1 2)"))
|
963
|
-
assert_equal("true", evaluate("(1 2) == nth(append((), 1 2), 1)"))
|
964
|
-
|
965
|
-
assert_error_message("Separator name must be space, comma, or auto for `append'", "append(1, 2, baboon)")
|
966
|
-
end
|
967
|
-
|
968
|
-
def test_zip
|
969
|
-
assert_equal("1 3 5, 2 4 6", evaluate("zip(1 2, 3 4, 5 6)"))
|
970
|
-
assert_equal("1 4 7, 2 5 8", evaluate("zip(1 2 3, 4 5 6, 7 8)"))
|
971
|
-
end
|
972
|
-
|
973
|
-
def test_index
|
974
|
-
assert_equal("1", evaluate("index(1px solid blue, 1px)"))
|
975
|
-
assert_equal("2", evaluate("index(1px solid blue, solid)"))
|
976
|
-
assert_equal("3", evaluate("index(1px solid blue, #00f)"))
|
977
|
-
assert_equal("false", evaluate("index(1px solid blue, 1em)"))
|
978
|
-
assert_equal("false", evaluate("index(1px solid blue, notfound)"))
|
979
|
-
end
|
980
|
-
|
981
|
-
def test_if
|
982
|
-
assert_equal("1px", evaluate("if(true, 1px, 2px)"))
|
983
|
-
assert_equal("2px", evaluate("if(false, 1px, 2px)"))
|
984
|
-
end
|
985
|
-
|
986
|
-
def test_keyword_args_rgb
|
987
|
-
assert_equal(%Q{white}, evaluate("rgb($red: 255, $green: 255, $blue: 255)"))
|
988
|
-
end
|
989
|
-
|
990
|
-
def test_keyword_args_rgba
|
991
|
-
assert_equal(%Q{rgba(255, 255, 255, 0.5)}, evaluate("rgba($red: 255, $green: 255, $blue: 255, $alpha: 0.5)"))
|
992
|
-
assert_equal(%Q{rgba(255, 255, 255, 0.5)}, evaluate("rgba($color: #fff, $alpha: 0.5)"))
|
993
|
-
end
|
994
|
-
|
995
|
-
def test_keyword_args_rgba_with_extra_args
|
996
|
-
assert_equal(%Q{rgba(255, 255, 255, 0.5)}, evaluate("rgba($red: 255, $green: 255, $blue: 255, $alpha: 0.5, $extra: error)"))
|
997
|
-
rescue Sass::SyntaxError => e
|
998
|
-
assert_equal("Function rgba doesn't take an argument named $extra", e.message)
|
999
|
-
end
|
1000
|
-
|
1001
|
-
def test_keyword_args_must_have_signature
|
1002
|
-
evaluate("no-kw-args($fake: value)")
|
1003
|
-
rescue Sass::SyntaxError => e
|
1004
|
-
assert_equal("Function no_kw_args doesn't support keyword arguments", e.message)
|
1005
|
-
end
|
1006
|
-
|
1007
|
-
def test_keyword_args_with_missing_argument
|
1008
|
-
evaluate("rgb($red: 255, $green: 255)")
|
1009
|
-
rescue Sass::SyntaxError => e
|
1010
|
-
assert_equal("Function rgb requires an argument named $blue", e.message)
|
1011
|
-
end
|
1012
|
-
|
1013
|
-
def test_only_var_args
|
1014
|
-
assert_equal "only-var-args(2px, 3px, 4px)", evaluate("only-var-args(1px, 2px, 3px)")
|
1015
|
-
end
|
1016
|
-
|
1017
|
-
def test_only_kw_args
|
1018
|
-
assert_equal "only-kw-args(a, b, c)", evaluate("only-kw-args($a: 1, $b: 2, $c: 3)")
|
1019
|
-
end
|
1020
|
-
|
1021
|
-
private
|
1022
|
-
|
1023
|
-
def evaluate(value)
|
1024
|
-
Sass::Script::Parser.parse(value, 0, 0).perform(Sass::Environment.new).to_s
|
1025
|
-
end
|
1026
|
-
|
1027
|
-
def perform(value)
|
1028
|
-
Sass::Script::Parser.parse(value, 0, 0).perform(Sass::Environment.new)
|
1029
|
-
end
|
1030
|
-
|
1031
|
-
def assert_error_message(message, value)
|
1032
|
-
evaluate(value)
|
1033
|
-
flunk("Error message expected but not raised: #{message}")
|
1034
|
-
rescue Sass::SyntaxError => e
|
1035
|
-
assert_equal(message, e.message)
|
1036
|
-
end
|
1037
|
-
|
1038
|
-
end
|