sass 3.4.24 → 3.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CODE_OF_CONDUCT.md +1 -1
- data/CONTRIBUTING.md +3 -3
- data/README.md +17 -9
- data/VERSION +1 -1
- data/VERSION_DATE +1 -1
- data/VERSION_NAME +1 -1
- data/extra/sass-spec-ref.sh +9 -1
- data/lib/sass/cache_stores/filesystem.rb +1 -1
- data/lib/sass/css.rb +2 -3
- data/lib/sass/deprecation.rb +55 -0
- data/lib/sass/engine.rb +52 -34
- data/lib/sass/environment.rb +27 -6
- data/lib/sass/error.rb +2 -2
- data/lib/sass/exec/base.rb +2 -13
- data/lib/sass/exec/sass_scss.rb +1 -5
- data/lib/sass/features.rb +1 -0
- data/lib/sass/importers/filesystem.rb +6 -4
- data/lib/sass/logger/base.rb +11 -0
- data/lib/sass/plugin/compiler.rb +21 -51
- data/lib/sass/plugin/configuration.rb +2 -2
- data/lib/sass/plugin/rack.rb +2 -2
- data/lib/sass/plugin/staleness_checker.rb +1 -1
- data/lib/sass/plugin.rb +1 -1
- data/lib/sass/railtie.rb +1 -1
- data/lib/sass/script/css_parser.rb +4 -1
- data/lib/sass/script/functions.rb +310 -83
- data/lib/sass/script/lexer.rb +64 -10
- data/lib/sass/script/parser.rb +291 -121
- data/lib/sass/script/tree/funcall.rb +35 -34
- data/lib/sass/script/tree/interpolation.rb +0 -3
- data/lib/sass/script/tree/list_literal.rb +23 -8
- data/lib/sass/script/tree/map_literal.rb +2 -2
- data/lib/sass/script/tree/node.rb +1 -9
- data/lib/sass/script/tree/operation.rb +43 -23
- data/lib/sass/script/value/arg_list.rb +1 -1
- data/lib/sass/script/value/base.rb +18 -1
- data/lib/sass/script/value/callable.rb +25 -0
- data/lib/sass/script/value/color.rb +8 -2
- data/lib/sass/script/value/function.rb +19 -0
- data/lib/sass/script/value/helpers.rb +37 -11
- data/lib/sass/script/value/list.rb +35 -14
- data/lib/sass/script/value/map.rb +2 -2
- data/lib/sass/script/value/number.rb +3 -2
- data/lib/sass/script/value/string.rb +5 -12
- data/lib/sass/script/value.rb +2 -0
- data/lib/sass/script.rb +1 -1
- data/lib/sass/scss/css_parser.rb +6 -1
- data/lib/sass/scss/parser.rb +145 -56
- data/lib/sass/scss/rx.rb +5 -11
- data/lib/sass/scss/static_parser.rb +27 -42
- data/lib/sass/selector/abstract_sequence.rb +7 -6
- data/lib/sass/selector/comma_sequence.rb +21 -5
- data/lib/sass/selector/pseudo.rb +20 -3
- data/lib/sass/selector/sequence.rb +35 -10
- data/lib/sass/selector/simple.rb +10 -2
- data/lib/sass/selector/simple_sequence.rb +8 -4
- data/lib/sass/selector.rb +4 -0
- data/lib/sass/source/map.rb +2 -6
- data/lib/sass/stack.rb +21 -1
- data/lib/sass/tree/charset_node.rb +1 -1
- data/lib/sass/tree/node.rb +2 -2
- data/lib/sass/tree/prop_node.rb +45 -53
- data/lib/sass/tree/rule_node.rb +13 -6
- data/lib/sass/tree/visitors/check_nesting.rb +1 -1
- data/lib/sass/tree/visitors/convert.rb +2 -3
- data/lib/sass/tree/visitors/cssize.rb +4 -15
- data/lib/sass/tree/visitors/deep_copy.rb +2 -2
- data/lib/sass/tree/visitors/extend.rb +2 -8
- data/lib/sass/tree/visitors/perform.rb +26 -17
- data/lib/sass/tree/visitors/set_options.rb +1 -1
- data/lib/sass/tree/visitors/to_css.rb +49 -22
- data/lib/sass/util/multibyte_string_scanner.rb +127 -131
- data/lib/sass/util/normalized_map.rb +1 -8
- data/lib/sass/util.rb +72 -310
- data/lib/sass/version.rb +0 -4
- data/lib/sass.rb +3 -10
- metadata +60 -206
- data/Rakefile +0 -424
- data/lib/sass/script/css_variable_warning.rb +0 -52
- data/lib/sass/util/cross_platform_random.rb +0 -19
- data/lib/sass/util/ordered_hash.rb +0 -192
- data/test/sass/cache_test.rb +0 -131
- data/test/sass/callbacks_test.rb +0 -61
- data/test/sass/compiler_test.rb +0 -236
- data/test/sass/conversion_test.rb +0 -2188
- data/test/sass/css2sass_test.rb +0 -526
- data/test/sass/css_variable_test.rb +0 -132
- data/test/sass/data/hsl-rgb.txt +0 -319
- data/test/sass/encoding_test.rb +0 -219
- data/test/sass/engine_test.rb +0 -3441
- data/test/sass/exec_test.rb +0 -96
- data/test/sass/extend_test.rb +0 -1727
- data/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
- data/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
- data/test/sass/functions_test.rb +0 -1974
- data/test/sass/importer_test.rb +0 -421
- data/test/sass/logger_test.rb +0 -58
- data/test/sass/mock_importer.rb +0 -49
- data/test/sass/more_results/more1.css +0 -9
- data/test/sass/more_results/more1_with_line_comments.css +0 -26
- data/test/sass/more_results/more_import.css +0 -29
- data/test/sass/more_templates/_more_partial.sass +0 -2
- data/test/sass/more_templates/more1.sass +0 -23
- data/test/sass/more_templates/more_import.sass +0 -11
- data/test/sass/plugin_test.rb +0 -556
- data/test/sass/results/alt.css +0 -4
- data/test/sass/results/basic.css +0 -9
- data/test/sass/results/cached_import_option.css +0 -3
- data/test/sass/results/compact.css +0 -5
- data/test/sass/results/complex.css +0 -86
- data/test/sass/results/compressed.css +0 -1
- data/test/sass/results/expanded.css +0 -19
- data/test/sass/results/filename_fn.css +0 -3
- data/test/sass/results/if.css +0 -3
- data/test/sass/results/import.css +0 -31
- data/test/sass/results/import_charset.css +0 -5
- data/test/sass/results/import_charset_1_8.css +0 -5
- data/test/sass/results/import_charset_ibm866.css +0 -5
- data/test/sass/results/import_content.css +0 -1
- data/test/sass/results/line_numbers.css +0 -49
- data/test/sass/results/mixins.css +0 -95
- data/test/sass/results/multiline.css +0 -24
- data/test/sass/results/nested.css +0 -22
- data/test/sass/results/options.css +0 -1
- data/test/sass/results/parent_ref.css +0 -13
- data/test/sass/results/script.css +0 -16
- data/test/sass/results/scss_import.css +0 -31
- data/test/sass/results/scss_importee.css +0 -2
- data/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
- data/test/sass/results/subdir/subdir.css +0 -3
- data/test/sass/results/units.css +0 -11
- data/test/sass/results/warn.css +0 -0
- data/test/sass/results/warn_imported.css +0 -0
- data/test/sass/script_conversion_test.rb +0 -357
- data/test/sass/script_test.rb +0 -1422
- data/test/sass/scss/css_test.rb +0 -1281
- data/test/sass/scss/rx_test.rb +0 -160
- data/test/sass/scss/scss_test.rb +0 -4190
- data/test/sass/scss/test_helper.rb +0 -37
- data/test/sass/source_map_test.rb +0 -1055
- data/test/sass/superselector_test.rb +0 -210
- data/test/sass/templates/_cached_import_option_partial.scss +0 -1
- data/test/sass/templates/_double_import_loop2.sass +0 -1
- data/test/sass/templates/_filename_fn_import.scss +0 -11
- data/test/sass/templates/_imported_charset_ibm866.sass +0 -4
- data/test/sass/templates/_imported_charset_utf8.sass +0 -4
- data/test/sass/templates/_imported_content.sass +0 -3
- data/test/sass/templates/_partial.sass +0 -2
- data/test/sass/templates/_same_name_different_partiality.scss +0 -1
- data/test/sass/templates/alt.sass +0 -16
- data/test/sass/templates/basic.sass +0 -23
- data/test/sass/templates/bork1.sass +0 -2
- data/test/sass/templates/bork2.sass +0 -2
- data/test/sass/templates/bork3.sass +0 -2
- data/test/sass/templates/bork4.sass +0 -2
- data/test/sass/templates/bork5.sass +0 -3
- data/test/sass/templates/cached_import_option.scss +0 -3
- data/test/sass/templates/compact.sass +0 -17
- data/test/sass/templates/complex.sass +0 -305
- data/test/sass/templates/compressed.sass +0 -15
- data/test/sass/templates/double_import_loop1.sass +0 -1
- data/test/sass/templates/expanded.sass +0 -17
- data/test/sass/templates/filename_fn.scss +0 -18
- data/test/sass/templates/if.sass +0 -11
- data/test/sass/templates/import.sass +0 -12
- data/test/sass/templates/import_charset.sass +0 -9
- data/test/sass/templates/import_charset_1_8.sass +0 -6
- data/test/sass/templates/import_charset_ibm866.sass +0 -11
- data/test/sass/templates/import_content.sass +0 -4
- data/test/sass/templates/importee.less +0 -2
- data/test/sass/templates/importee.sass +0 -19
- data/test/sass/templates/line_numbers.sass +0 -13
- data/test/sass/templates/mixin_bork.sass +0 -5
- data/test/sass/templates/mixins.sass +0 -76
- data/test/sass/templates/multiline.sass +0 -20
- data/test/sass/templates/nested.sass +0 -25
- data/test/sass/templates/nested_bork1.sass +0 -2
- data/test/sass/templates/nested_bork2.sass +0 -2
- data/test/sass/templates/nested_bork3.sass +0 -2
- data/test/sass/templates/nested_bork4.sass +0 -2
- data/test/sass/templates/nested_import.sass +0 -2
- data/test/sass/templates/nested_mixin_bork.sass +0 -6
- data/test/sass/templates/options.sass +0 -2
- data/test/sass/templates/parent_ref.sass +0 -25
- data/test/sass/templates/same_name_different_ext.sass +0 -2
- data/test/sass/templates/same_name_different_ext.scss +0 -1
- data/test/sass/templates/same_name_different_partiality.scss +0 -1
- data/test/sass/templates/script.sass +0 -101
- data/test/sass/templates/scss_import.scss +0 -12
- data/test/sass/templates/scss_importee.scss +0 -1
- data/test/sass/templates/single_import_loop.sass +0 -1
- data/test/sass/templates/subdir/import_up1.scss +0 -1
- data/test/sass/templates/subdir/import_up2.scss +0 -1
- data/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
- data/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
- data/test/sass/templates/subdir/subdir.sass +0 -6
- data/test/sass/templates/units.sass +0 -11
- data/test/sass/templates/warn.sass +0 -3
- data/test/sass/templates/warn_imported.sass +0 -4
- data/test/sass/test_helper.rb +0 -8
- data/test/sass/util/multibyte_string_scanner_test.rb +0 -147
- data/test/sass/util/normalized_map_test.rb +0 -51
- data/test/sass/util/subset_map_test.rb +0 -91
- data/test/sass/util_test.rb +0 -438
- data/test/sass/value_helpers_test.rb +0 -179
- data/test/sass-spec.yml +0 -3
- data/test/test_helper.rb +0 -110
- data/vendor/listen/CHANGELOG.md +0 -1
- data/vendor/listen/CONTRIBUTING.md +0 -38
- data/vendor/listen/Gemfile +0 -20
- data/vendor/listen/Guardfile +0 -8
- data/vendor/listen/LICENSE +0 -20
- data/vendor/listen/README.md +0 -349
- data/vendor/listen/Rakefile +0 -5
- data/vendor/listen/Vagrantfile +0 -96
- data/vendor/listen/lib/listen/adapter.rb +0 -327
- data/vendor/listen/lib/listen/adapters/bsd.rb +0 -75
- data/vendor/listen/lib/listen/adapters/darwin.rb +0 -48
- data/vendor/listen/lib/listen/adapters/linux.rb +0 -81
- data/vendor/listen/lib/listen/adapters/polling.rb +0 -58
- data/vendor/listen/lib/listen/adapters/windows.rb +0 -91
- data/vendor/listen/lib/listen/directory_record.rb +0 -406
- data/vendor/listen/lib/listen/listener.rb +0 -323
- data/vendor/listen/lib/listen/turnstile.rb +0 -32
- data/vendor/listen/lib/listen/version.rb +0 -3
- data/vendor/listen/lib/listen.rb +0 -54
- data/vendor/listen/listen.gemspec +0 -28
- data/vendor/listen/spec/listen/adapter_spec.rb +0 -149
- data/vendor/listen/spec/listen/adapters/bsd_spec.rb +0 -36
- data/vendor/listen/spec/listen/adapters/darwin_spec.rb +0 -37
- data/vendor/listen/spec/listen/adapters/linux_spec.rb +0 -47
- data/vendor/listen/spec/listen/adapters/polling_spec.rb +0 -68
- data/vendor/listen/spec/listen/adapters/windows_spec.rb +0 -30
- data/vendor/listen/spec/listen/directory_record_spec.rb +0 -1250
- data/vendor/listen/spec/listen/listener_spec.rb +0 -258
- data/vendor/listen/spec/listen/turnstile_spec.rb +0 -56
- data/vendor/listen/spec/listen_spec.rb +0 -67
- data/vendor/listen/spec/spec_helper.rb +0 -25
- data/vendor/listen/spec/support/adapter_helper.rb +0 -666
- data/vendor/listen/spec/support/directory_record_helper.rb +0 -57
- data/vendor/listen/spec/support/fixtures_helper.rb +0 -29
- data/vendor/listen/spec/support/listeners_helper.rb +0 -179
- data/vendor/listen/spec/support/platform_helper.rb +0 -15
@@ -1,155 +1,151 @@
|
|
1
1
|
require 'strscan'
|
2
2
|
|
3
|
-
if Sass::Util.
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@mb_pos = 0
|
15
|
-
@mb_matched_size = nil
|
16
|
-
@mb_last_pos = nil
|
17
|
-
end
|
18
|
-
|
19
|
-
def is_a?(klass)
|
20
|
-
__getobj__.is_a?(klass) || super
|
21
|
-
end
|
3
|
+
if Sass::Util.rbx?
|
4
|
+
# Rubinius's StringScanner class implements some of its methods in terms of
|
5
|
+
# others, which causes us to double-count bytes in some cases if we do
|
6
|
+
# straightforward inheritance. To work around this, we use a delegate class.
|
7
|
+
require 'delegate'
|
8
|
+
class Sass::Util::MultibyteStringScanner < DelegateClass(StringScanner)
|
9
|
+
def initialize(str)
|
10
|
+
super(StringScanner.new(str))
|
11
|
+
@mb_pos = 0
|
12
|
+
@mb_matched_size = nil
|
13
|
+
@mb_last_pos = nil
|
22
14
|
end
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
super
|
27
|
-
@mb_pos = 0
|
28
|
-
@mb_matched_size = nil
|
29
|
-
@mb_last_pos = nil
|
30
|
-
end
|
15
|
+
|
16
|
+
def is_a?(klass)
|
17
|
+
__getobj__.is_a?(klass) || super
|
31
18
|
end
|
32
19
|
end
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
# characters, for methods like [#pos] and [#matched_size]. This class deals
|
37
|
-
# only in characters, instead.
|
38
|
-
class Sass::Util::MultibyteStringScanner
|
39
|
-
def self.new(str)
|
40
|
-
return StringScanner.new(str) if str.ascii_only?
|
20
|
+
else
|
21
|
+
class Sass::Util::MultibyteStringScanner < StringScanner
|
22
|
+
def initialize(str)
|
41
23
|
super
|
24
|
+
@mb_pos = 0
|
25
|
+
@mb_matched_size = nil
|
26
|
+
@mb_last_pos = nil
|
42
27
|
end
|
28
|
+
end
|
29
|
+
end
|
43
30
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
alias_method :peep, :peek
|
54
|
-
def pos; @mb_pos; end
|
55
|
-
alias_method :pointer, :pos
|
56
|
-
def rest_size; rest.size; end
|
57
|
-
def scan(pattern); _forward _match super; end
|
58
|
-
def scan_until(pattern); _forward _matched super; end
|
59
|
-
def skip(pattern); _size scan(pattern); end
|
60
|
-
def skip_until(pattern); _matched _size scan_until(pattern); end
|
61
|
-
|
62
|
-
def get_byte
|
63
|
-
raise "MultibyteStringScanner doesn't support #get_byte."
|
64
|
-
end
|
31
|
+
# A wrapper of the native StringScanner class that works correctly with
|
32
|
+
# multibyte character encodings. The native class deals only in bytes, not
|
33
|
+
# characters, for methods like [#pos] and [#matched_size]. This class deals
|
34
|
+
# only in characters, instead.
|
35
|
+
class Sass::Util::MultibyteStringScanner
|
36
|
+
def self.new(str)
|
37
|
+
return StringScanner.new(str) if str.ascii_only?
|
38
|
+
super
|
39
|
+
end
|
65
40
|
|
66
|
-
|
67
|
-
|
68
|
-
|
41
|
+
alias_method :byte_pos, :pos
|
42
|
+
alias_method :byte_matched_size, :matched_size
|
43
|
+
|
44
|
+
def check(pattern); _match super; end
|
45
|
+
def check_until(pattern); _matched super; end
|
46
|
+
def getch; _forward _match super; end
|
47
|
+
def match?(pattern); _size check(pattern); end
|
48
|
+
def matched_size; @mb_matched_size; end
|
49
|
+
def peek(len); string[@mb_pos, len]; end
|
50
|
+
alias_method :peep, :peek
|
51
|
+
def pos; @mb_pos; end
|
52
|
+
alias_method :pointer, :pos
|
53
|
+
def rest_size; rest.size; end
|
54
|
+
def scan(pattern); _forward _match super; end
|
55
|
+
def scan_until(pattern); _forward _matched super; end
|
56
|
+
def skip(pattern); _size scan(pattern); end
|
57
|
+
def skip_until(pattern); _matched _size scan_until(pattern); end
|
58
|
+
|
59
|
+
def get_byte
|
60
|
+
raise "MultibyteStringScanner doesn't support #get_byte."
|
61
|
+
end
|
69
62
|
|
70
|
-
|
71
|
-
|
63
|
+
def getbyte
|
64
|
+
raise "MultibyteStringScanner doesn't support #getbyte."
|
65
|
+
end
|
72
66
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
67
|
+
def pos=(n)
|
68
|
+
@mb_last_pos = nil
|
69
|
+
|
70
|
+
# We set position kind of a lot during parsing, so we want it to be as
|
71
|
+
# efficient as possible. This is complicated by the fact that UTF-8 is a
|
72
|
+
# variable-length encoding, so it's difficult to find the byte length that
|
73
|
+
# corresponds to a given character length.
|
74
|
+
#
|
75
|
+
# Our heuristic here is to try to count the fewest possible characters. So
|
76
|
+
# if the new position is close to the current one, just count the
|
77
|
+
# characters between the two; if the new position is closer to the
|
78
|
+
# beginning of the string, just count the characters from there.
|
79
|
+
if @mb_pos - n < @mb_pos / 2
|
80
|
+
# New position is close to old position
|
81
|
+
byte_delta = @mb_pos > n ? -string[n...@mb_pos].bytesize : string[@mb_pos...n].bytesize
|
82
|
+
super(byte_pos + byte_delta)
|
83
|
+
else
|
84
|
+
# New position is close to BOS
|
85
|
+
super(string[0...n].bytesize)
|
86
|
+
end
|
87
|
+
@mb_pos = n
|
88
|
+
end
|
92
89
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
90
|
+
def reset
|
91
|
+
@mb_pos = 0
|
92
|
+
@mb_matched_size = nil
|
93
|
+
@mb_last_pos = nil
|
94
|
+
super
|
95
|
+
end
|
99
96
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
97
|
+
def scan_full(pattern, advance_pointer_p, return_string_p)
|
98
|
+
res = _match super(pattern, advance_pointer_p, true)
|
99
|
+
_forward res if advance_pointer_p
|
100
|
+
return res if return_string_p
|
101
|
+
end
|
105
102
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
103
|
+
def search_full(pattern, advance_pointer_p, return_string_p)
|
104
|
+
res = super(pattern, advance_pointer_p, true)
|
105
|
+
_forward res if advance_pointer_p
|
106
|
+
_matched((res if return_string_p))
|
107
|
+
end
|
111
108
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
109
|
+
def string=(str)
|
110
|
+
@mb_pos = 0
|
111
|
+
@mb_matched_size = nil
|
112
|
+
@mb_last_pos = nil
|
113
|
+
super
|
114
|
+
end
|
118
115
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
116
|
+
def terminate
|
117
|
+
@mb_pos = string.size
|
118
|
+
@mb_matched_size = nil
|
119
|
+
@mb_last_pos = nil
|
120
|
+
super
|
121
|
+
end
|
122
|
+
alias_method :clear, :terminate
|
126
123
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
124
|
+
def unscan
|
125
|
+
super
|
126
|
+
@mb_pos = @mb_last_pos
|
127
|
+
@mb_last_pos = @mb_matched_size = nil
|
128
|
+
end
|
132
129
|
|
133
|
-
|
130
|
+
private
|
134
131
|
|
135
|
-
|
136
|
-
|
137
|
-
|
132
|
+
def _size(str)
|
133
|
+
str && str.size
|
134
|
+
end
|
138
135
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
136
|
+
def _match(str)
|
137
|
+
@mb_matched_size = str && str.size
|
138
|
+
str
|
139
|
+
end
|
143
140
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
141
|
+
def _matched(res)
|
142
|
+
_match matched
|
143
|
+
res
|
144
|
+
end
|
148
145
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
end
|
146
|
+
def _forward(str)
|
147
|
+
@mb_last_pos = @mb_pos
|
148
|
+
@mb_pos += str.size if str
|
149
|
+
str
|
154
150
|
end
|
155
151
|
end
|
@@ -5,12 +5,11 @@ module Sass
|
|
5
5
|
# A hash that normalizes its string keys while still allowing you to get back
|
6
6
|
# to the original keys that were stored. If several different values normalize
|
7
7
|
# to the same value, whichever is stored last wins.
|
8
|
-
require 'sass/util/ordered_hash' if ruby1_8?
|
9
8
|
class NormalizedMap
|
10
9
|
# Create a normalized map
|
11
10
|
def initialize(map = nil)
|
12
11
|
@key_strings = {}
|
13
|
-
@map =
|
12
|
+
@map = {}
|
14
13
|
|
15
14
|
map.each {|key, value| self[key] = value} if map
|
16
15
|
end
|
@@ -115,12 +114,6 @@ module Sass
|
|
115
114
|
@map.send(method, *args, &block)
|
116
115
|
end
|
117
116
|
|
118
|
-
if Sass::Util.ruby1_8?
|
119
|
-
def respond_to?(method, include_private = false)
|
120
|
-
super || @map.respond_to?(method, include_private)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
117
|
def respond_to_missing?(method, include_private = false)
|
125
118
|
@map.respond_to?(method, include_private)
|
126
119
|
end
|