xass 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.yardopts +11 -0
- data/CONTRIBUTING +3 -0
- data/MIT-LICENSE +20 -0
- data/README.md +201 -0
- data/Rakefile +349 -0
- data/VERSION +1 -0
- data/VERSION_NAME +1 -0
- data/bin/push +13 -0
- data/bin/sass +13 -0
- data/bin/sass-convert +12 -0
- data/bin/scss +13 -0
- data/extra/update_watch.rb +13 -0
- data/init.rb +18 -0
- data/lib/sass/cache_stores/base.rb +88 -0
- data/lib/sass/cache_stores/chain.rb +33 -0
- data/lib/sass/cache_stores/filesystem.rb +64 -0
- data/lib/sass/cache_stores/memory.rb +47 -0
- data/lib/sass/cache_stores/null.rb +25 -0
- data/lib/sass/cache_stores.rb +15 -0
- data/lib/sass/callbacks.rb +66 -0
- data/lib/sass/css.rb +409 -0
- data/lib/sass/engine.rb +930 -0
- data/lib/sass/environment.rb +101 -0
- data/lib/sass/error.rb +201 -0
- data/lib/sass/exec.rb +707 -0
- data/lib/sass/importers/base.rb +139 -0
- data/lib/sass/importers/filesystem.rb +186 -0
- data/lib/sass/importers.rb +22 -0
- data/lib/sass/logger/base.rb +32 -0
- data/lib/sass/logger/log_level.rb +49 -0
- data/lib/sass/logger.rb +15 -0
- data/lib/sass/media.rb +213 -0
- data/lib/sass/plugin/compiler.rb +406 -0
- data/lib/sass/plugin/configuration.rb +123 -0
- data/lib/sass/plugin/generic.rb +15 -0
- data/lib/sass/plugin/merb.rb +48 -0
- data/lib/sass/plugin/rack.rb +60 -0
- data/lib/sass/plugin/rails.rb +47 -0
- data/lib/sass/plugin/staleness_checker.rb +199 -0
- data/lib/sass/plugin.rb +133 -0
- data/lib/sass/railtie.rb +10 -0
- data/lib/sass/repl.rb +57 -0
- data/lib/sass/root.rb +7 -0
- data/lib/sass/script/arg_list.rb +52 -0
- data/lib/sass/script/bool.rb +18 -0
- data/lib/sass/script/color.rb +606 -0
- data/lib/sass/script/css_lexer.rb +29 -0
- data/lib/sass/script/css_parser.rb +31 -0
- data/lib/sass/script/funcall.rb +245 -0
- data/lib/sass/script/functions.rb +1543 -0
- data/lib/sass/script/interpolation.rb +79 -0
- data/lib/sass/script/lexer.rb +345 -0
- data/lib/sass/script/list.rb +85 -0
- data/lib/sass/script/literal.rb +221 -0
- data/lib/sass/script/node.rb +99 -0
- data/lib/sass/script/null.rb +37 -0
- data/lib/sass/script/number.rb +453 -0
- data/lib/sass/script/operation.rb +110 -0
- data/lib/sass/script/parser.rb +502 -0
- data/lib/sass/script/string.rb +51 -0
- data/lib/sass/script/string_interpolation.rb +103 -0
- data/lib/sass/script/unary_operation.rb +69 -0
- data/lib/sass/script/variable.rb +58 -0
- data/lib/sass/script.rb +39 -0
- data/lib/sass/scss/css_parser.rb +36 -0
- data/lib/sass/scss/parser.rb +1180 -0
- data/lib/sass/scss/rx.rb +133 -0
- data/lib/sass/scss/script_lexer.rb +15 -0
- data/lib/sass/scss/script_parser.rb +25 -0
- data/lib/sass/scss/static_parser.rb +54 -0
- data/lib/sass/scss.rb +16 -0
- data/lib/sass/selector/abstract_sequence.rb +94 -0
- data/lib/sass/selector/comma_sequence.rb +92 -0
- data/lib/sass/selector/sequence.rb +507 -0
- data/lib/sass/selector/simple.rb +119 -0
- data/lib/sass/selector/simple_sequence.rb +215 -0
- data/lib/sass/selector.rb +452 -0
- data/lib/sass/shared.rb +76 -0
- data/lib/sass/supports.rb +229 -0
- data/lib/sass/tree/charset_node.rb +22 -0
- data/lib/sass/tree/comment_node.rb +82 -0
- data/lib/sass/tree/content_node.rb +9 -0
- data/lib/sass/tree/css_import_node.rb +60 -0
- data/lib/sass/tree/debug_node.rb +18 -0
- data/lib/sass/tree/directive_node.rb +42 -0
- data/lib/sass/tree/each_node.rb +24 -0
- data/lib/sass/tree/extend_node.rb +36 -0
- data/lib/sass/tree/for_node.rb +36 -0
- data/lib/sass/tree/function_node.rb +34 -0
- data/lib/sass/tree/if_node.rb +52 -0
- data/lib/sass/tree/import_node.rb +75 -0
- data/lib/sass/tree/media_node.rb +58 -0
- data/lib/sass/tree/mixin_def_node.rb +38 -0
- data/lib/sass/tree/mixin_node.rb +39 -0
- data/lib/sass/tree/node.rb +196 -0
- data/lib/sass/tree/prop_node.rb +152 -0
- data/lib/sass/tree/return_node.rb +18 -0
- data/lib/sass/tree/root_node.rb +78 -0
- data/lib/sass/tree/rule_node.rb +132 -0
- data/lib/sass/tree/supports_node.rb +51 -0
- data/lib/sass/tree/trace_node.rb +32 -0
- data/lib/sass/tree/variable_node.rb +30 -0
- data/lib/sass/tree/visitors/base.rb +75 -0
- data/lib/sass/tree/visitors/check_nesting.rb +147 -0
- data/lib/sass/tree/visitors/convert.rb +316 -0
- data/lib/sass/tree/visitors/cssize.rb +241 -0
- data/lib/sass/tree/visitors/deep_copy.rb +102 -0
- data/lib/sass/tree/visitors/extend.rb +68 -0
- data/lib/sass/tree/visitors/perform.rb +446 -0
- data/lib/sass/tree/visitors/set_options.rb +125 -0
- data/lib/sass/tree/visitors/to_css.rb +228 -0
- data/lib/sass/tree/warn_node.rb +18 -0
- data/lib/sass/tree/while_node.rb +18 -0
- data/lib/sass/util/multibyte_string_scanner.rb +155 -0
- data/lib/sass/util/subset_map.rb +109 -0
- data/lib/sass/util/test.rb +10 -0
- data/lib/sass/util.rb +948 -0
- data/lib/sass/version.rb +126 -0
- data/lib/sass.rb +95 -0
- data/rails/init.rb +1 -0
- data/test/Gemfile +3 -0
- data/test/Gemfile.lock +10 -0
- data/test/sass/cache_test.rb +89 -0
- data/test/sass/callbacks_test.rb +61 -0
- data/test/sass/conversion_test.rb +1760 -0
- data/test/sass/css2sass_test.rb +458 -0
- data/test/sass/data/hsl-rgb.txt +319 -0
- data/test/sass/engine_test.rb +3244 -0
- data/test/sass/exec_test.rb +86 -0
- data/test/sass/extend_test.rb +1482 -0
- data/test/sass/fixtures/test_staleness_check_across_importers.css +1 -0
- data/test/sass/fixtures/test_staleness_check_across_importers.scss +1 -0
- data/test/sass/functions_test.rb +1139 -0
- data/test/sass/importer_test.rb +192 -0
- data/test/sass/logger_test.rb +58 -0
- data/test/sass/mock_importer.rb +49 -0
- data/test/sass/more_results/more1.css +9 -0
- data/test/sass/more_results/more1_with_line_comments.css +26 -0
- data/test/sass/more_results/more_import.css +29 -0
- data/test/sass/more_templates/_more_partial.sass +2 -0
- data/test/sass/more_templates/more1.sass +23 -0
- data/test/sass/more_templates/more_import.sass +11 -0
- data/test/sass/plugin_test.rb +564 -0
- data/test/sass/results/alt.css +4 -0
- data/test/sass/results/basic.css +9 -0
- data/test/sass/results/cached_import_option.css +3 -0
- data/test/sass/results/compact.css +5 -0
- data/test/sass/results/complex.css +86 -0
- data/test/sass/results/compressed.css +1 -0
- data/test/sass/results/expanded.css +19 -0
- data/test/sass/results/filename_fn.css +3 -0
- data/test/sass/results/if.css +3 -0
- data/test/sass/results/import.css +31 -0
- data/test/sass/results/import_charset.css +5 -0
- data/test/sass/results/import_charset_1_8.css +5 -0
- data/test/sass/results/import_charset_ibm866.css +5 -0
- data/test/sass/results/import_content.css +1 -0
- data/test/sass/results/line_numbers.css +49 -0
- data/test/sass/results/mixins.css +95 -0
- data/test/sass/results/multiline.css +24 -0
- data/test/sass/results/nested.css +22 -0
- data/test/sass/results/options.css +1 -0
- data/test/sass/results/parent_ref.css +13 -0
- data/test/sass/results/script.css +16 -0
- data/test/sass/results/scss_import.css +31 -0
- data/test/sass/results/scss_importee.css +2 -0
- data/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
- data/test/sass/results/subdir/subdir.css +3 -0
- data/test/sass/results/units.css +11 -0
- data/test/sass/results/warn.css +0 -0
- data/test/sass/results/warn_imported.css +0 -0
- data/test/sass/script_conversion_test.rb +299 -0
- data/test/sass/script_test.rb +622 -0
- data/test/sass/scss/css_test.rb +1100 -0
- data/test/sass/scss/rx_test.rb +156 -0
- data/test/sass/scss/scss_test.rb +2106 -0
- data/test/sass/scss/test_helper.rb +37 -0
- data/test/sass/templates/_cached_import_option_partial.scss +1 -0
- data/test/sass/templates/_double_import_loop2.sass +1 -0
- data/test/sass/templates/_filename_fn_import.scss +11 -0
- data/test/sass/templates/_imported_charset_ibm866.sass +4 -0
- data/test/sass/templates/_imported_charset_utf8.sass +4 -0
- data/test/sass/templates/_imported_content.sass +3 -0
- data/test/sass/templates/_partial.sass +2 -0
- data/test/sass/templates/_same_name_different_partiality.scss +1 -0
- data/test/sass/templates/alt.sass +16 -0
- data/test/sass/templates/basic.sass +23 -0
- data/test/sass/templates/bork1.sass +2 -0
- data/test/sass/templates/bork2.sass +2 -0
- data/test/sass/templates/bork3.sass +2 -0
- data/test/sass/templates/bork4.sass +2 -0
- data/test/sass/templates/bork5.sass +3 -0
- data/test/sass/templates/cached_import_option.scss +3 -0
- data/test/sass/templates/compact.sass +17 -0
- data/test/sass/templates/complex.sass +305 -0
- data/test/sass/templates/compressed.sass +15 -0
- data/test/sass/templates/double_import_loop1.sass +1 -0
- data/test/sass/templates/expanded.sass +17 -0
- data/test/sass/templates/filename_fn.scss +18 -0
- data/test/sass/templates/if.sass +11 -0
- data/test/sass/templates/import.sass +12 -0
- data/test/sass/templates/import_charset.sass +9 -0
- data/test/sass/templates/import_charset_1_8.sass +6 -0
- data/test/sass/templates/import_charset_ibm866.sass +11 -0
- data/test/sass/templates/import_content.sass +4 -0
- data/test/sass/templates/importee.less +2 -0
- data/test/sass/templates/importee.sass +19 -0
- data/test/sass/templates/line_numbers.sass +13 -0
- data/test/sass/templates/mixin_bork.sass +5 -0
- data/test/sass/templates/mixins.sass +76 -0
- data/test/sass/templates/multiline.sass +20 -0
- data/test/sass/templates/nested.sass +25 -0
- data/test/sass/templates/nested_bork1.sass +2 -0
- data/test/sass/templates/nested_bork2.sass +2 -0
- data/test/sass/templates/nested_bork3.sass +2 -0
- data/test/sass/templates/nested_bork4.sass +2 -0
- data/test/sass/templates/nested_import.sass +2 -0
- data/test/sass/templates/nested_mixin_bork.sass +6 -0
- data/test/sass/templates/options.sass +2 -0
- data/test/sass/templates/parent_ref.sass +25 -0
- data/test/sass/templates/same_name_different_ext.sass +2 -0
- data/test/sass/templates/same_name_different_ext.scss +1 -0
- data/test/sass/templates/same_name_different_partiality.scss +1 -0
- data/test/sass/templates/script.sass +101 -0
- data/test/sass/templates/scss_import.scss +11 -0
- data/test/sass/templates/scss_importee.scss +1 -0
- data/test/sass/templates/single_import_loop.sass +1 -0
- data/test/sass/templates/subdir/import_up1.scss +1 -0
- data/test/sass/templates/subdir/import_up2.scss +1 -0
- data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
- data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
- data/test/sass/templates/subdir/subdir.sass +6 -0
- data/test/sass/templates/units.sass +11 -0
- data/test/sass/templates/warn.sass +3 -0
- data/test/sass/templates/warn_imported.sass +4 -0
- data/test/sass/test_helper.rb +8 -0
- data/test/sass/util/multibyte_string_scanner_test.rb +147 -0
- data/test/sass/util/subset_map_test.rb +91 -0
- data/test/sass/util_test.rb +382 -0
- data/test/test_helper.rb +80 -0
- metadata +354 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
require File.dirname(__FILE__) + '/../../test_helper'
|
|
4
|
+
require 'sass/engine'
|
|
5
|
+
|
|
6
|
+
class ScssRxTest < Test::Unit::TestCase
|
|
7
|
+
include Sass::SCSS::RX
|
|
8
|
+
|
|
9
|
+
def test_identifiers
|
|
10
|
+
assert_match IDENT, "foo"
|
|
11
|
+
assert_match IDENT, "\xC3\xBFoo" # Initial char can be nonascii
|
|
12
|
+
assert_match IDENT, "\\123abcoo" # Initial char can be unicode escape
|
|
13
|
+
assert_match IDENT, "\\f oo" # Unicode escapes can be followed by whitespace
|
|
14
|
+
assert_match IDENT, "\\fa\too"
|
|
15
|
+
assert_match IDENT, "\\ff2\roo"
|
|
16
|
+
assert_match IDENT, "\\f13a\foo"
|
|
17
|
+
assert_match IDENT, "\\f13abcoo"
|
|
18
|
+
assert_match IDENT, "\\ oo" # Initial char can be a plain escape as well
|
|
19
|
+
assert_match IDENT, "\\~oo"
|
|
20
|
+
assert_match IDENT, "\\\\oo"
|
|
21
|
+
assert_match IDENT, "\\{oo"
|
|
22
|
+
assert_match IDENT, "\\\xC3\xBFoo"
|
|
23
|
+
assert_match IDENT, "-foo" # Can put a - before anything
|
|
24
|
+
assert_match IDENT, "-\xC3\xBFoo"
|
|
25
|
+
assert_match IDENT, "-\\f oo"
|
|
26
|
+
assert_match IDENT, "_foo" # Can put a _ before anything
|
|
27
|
+
assert_match IDENT, "_\xC3\xBFoo"
|
|
28
|
+
assert_match IDENT, "_\\f oo"
|
|
29
|
+
|
|
30
|
+
assert_match IDENT, "foo-bar"
|
|
31
|
+
assert_match IDENT, "f012-23"
|
|
32
|
+
assert_match IDENT, "foo_-_bar"
|
|
33
|
+
assert_match IDENT, "f012_23"
|
|
34
|
+
|
|
35
|
+
# http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/escapes-003.xht
|
|
36
|
+
assert_match IDENT, "c\\lass"
|
|
37
|
+
# http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/escapes-004.xht
|
|
38
|
+
assert_match IDENT, "c\\00006Cas\\000073"
|
|
39
|
+
# http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/ident-001.xht
|
|
40
|
+
assert_match IDENT, "IdE6n-3t0_6"
|
|
41
|
+
# http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/ident-006.xht
|
|
42
|
+
assert_match IDENT, "\\6000ident"
|
|
43
|
+
# http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/ident-007.xht
|
|
44
|
+
assert_match IDENT, "iden\\6000t\\6000"
|
|
45
|
+
# http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/ident-013.xht
|
|
46
|
+
assert_match IDENT, "\\-ident"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_underscores_in_identifiers
|
|
50
|
+
assert_match IDENT, "foo_bar"
|
|
51
|
+
assert_match IDENT, "_\xC3\xBFfoo"
|
|
52
|
+
assert_match IDENT, "__foo"
|
|
53
|
+
assert_match IDENT, "_1foo"
|
|
54
|
+
assert_match IDENT, "-_foo"
|
|
55
|
+
assert_match IDENT, "_-foo"
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def test_invalid_identifiers
|
|
59
|
+
assert_no_match IDENT, ""
|
|
60
|
+
assert_no_match IDENT, "1foo"
|
|
61
|
+
assert_no_match IDENT, "-1foo"
|
|
62
|
+
assert_no_match IDENT, "--foo"
|
|
63
|
+
assert_no_match IDENT, "foo bar"
|
|
64
|
+
assert_no_match IDENT, "foo~bar"
|
|
65
|
+
|
|
66
|
+
# http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/escapes-008.xht
|
|
67
|
+
assert_no_match IDENT, "c\\06C ass"
|
|
68
|
+
assert_no_match IDENT, "back\\67\n round"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def test_double_quote_strings
|
|
72
|
+
assert_match STRING, '"foo bar"'
|
|
73
|
+
assert_match STRING, '"foo\\\nbar"'
|
|
74
|
+
assert_match STRING, "\"\\\"\""
|
|
75
|
+
assert_match STRING, '"\t !#$%&(-~()*+,-./0123456789~"'
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_single_quote_strings
|
|
79
|
+
assert_match STRING, "'foo bar'"
|
|
80
|
+
assert_match STRING, "'foo\\\nbar'"
|
|
81
|
+
assert_match STRING, "'\\''"
|
|
82
|
+
assert_match STRING, "'\t !#\$%&(-~()*+,-./0123456789~'"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_invalid_strings
|
|
86
|
+
assert_no_match STRING, "\"foo\nbar\""
|
|
87
|
+
assert_no_match STRING, "\"foo\"bar\""
|
|
88
|
+
assert_no_match STRING, "'foo\nbar'"
|
|
89
|
+
assert_no_match STRING, "'foo'bar'"
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_uri
|
|
93
|
+
assert_match URI, 'url("foo bar)")'
|
|
94
|
+
assert_match URI, "url('foo bar)')"
|
|
95
|
+
assert_match URI, 'url( "foo bar)" )'
|
|
96
|
+
assert_match URI, "url(#\\%&**+,-./0123456789~)"
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def test_invalid_uri
|
|
100
|
+
assert_no_match URI, 'url(foo)bar)'
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_unicode_range
|
|
104
|
+
assert_match UNICODERANGE, 'U+00-Ff'
|
|
105
|
+
assert_match UNICODERANGE, 'u+980-9FF'
|
|
106
|
+
assert_match UNICODERANGE, 'U+9aF??'
|
|
107
|
+
assert_match UNICODERANGE, 'U+??'
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def test_escape_empty_ident
|
|
111
|
+
assert_equal "", Sass::SCSS::RX.escape_ident("")
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def test_escape_just_prefix_ident
|
|
115
|
+
assert_equal "\\-", Sass::SCSS::RX.escape_ident("-")
|
|
116
|
+
assert_equal "\\_", Sass::SCSS::RX.escape_ident("_")
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def test_escape_plain_ident
|
|
120
|
+
assert_equal "foo", Sass::SCSS::RX.escape_ident("foo")
|
|
121
|
+
assert_equal "foo-1bar", Sass::SCSS::RX.escape_ident("foo-1bar")
|
|
122
|
+
assert_equal "-foo-bar", Sass::SCSS::RX.escape_ident("-foo-bar")
|
|
123
|
+
assert_equal "f2oo_bar", Sass::SCSS::RX.escape_ident("f2oo_bar")
|
|
124
|
+
assert_equal "_foo_bar", Sass::SCSS::RX.escape_ident("_foo_bar")
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def test_escape_initial_funky_ident
|
|
128
|
+
assert_equal "\\000035foo", Sass::SCSS::RX.escape_ident("5foo")
|
|
129
|
+
assert_equal "-\\000035foo", Sass::SCSS::RX.escape_ident("-5foo")
|
|
130
|
+
assert_equal "_\\000035foo", Sass::SCSS::RX.escape_ident("_5foo")
|
|
131
|
+
|
|
132
|
+
assert_equal "\\&foo", Sass::SCSS::RX.escape_ident("&foo")
|
|
133
|
+
assert_equal "-\\&foo", Sass::SCSS::RX.escape_ident("-&foo")
|
|
134
|
+
|
|
135
|
+
assert_equal "-\\ foo", Sass::SCSS::RX.escape_ident("- foo")
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def test_escape_mid_funky_ident
|
|
139
|
+
assert_equal "foo\\&bar", Sass::SCSS::RX.escape_ident("foo&bar")
|
|
140
|
+
assert_equal "foo\\ \\ bar", Sass::SCSS::RX.escape_ident("foo bar")
|
|
141
|
+
assert_equal "foo\\00007fbar", Sass::SCSS::RX.escape_ident("foo\177bar")
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
private
|
|
145
|
+
|
|
146
|
+
def assert_match(rx, str)
|
|
147
|
+
assert_not_nil(match = rx.match(str))
|
|
148
|
+
assert_equal str.size, match[0].size
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def assert_no_match(rx, str)
|
|
152
|
+
match = rx.match(str)
|
|
153
|
+
assert_not_equal str.size, match && match[0].size
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
end
|