oreorenasass 3.4.4 → 3.4.5

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.
Files changed (176) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +50 -70
  4. data/Rakefile +5 -26
  5. data/VERSION +1 -1
  6. data/VERSION_NAME +1 -1
  7. data/bin/sass +1 -1
  8. data/bin/scss +1 -1
  9. data/lib/sass.rb +12 -19
  10. data/lib/sass/cache_stores/base.rb +2 -2
  11. data/lib/sass/cache_stores/chain.rb +1 -2
  12. data/lib/sass/cache_stores/filesystem.rb +5 -1
  13. data/lib/sass/cache_stores/memory.rb +1 -1
  14. data/lib/sass/cache_stores/null.rb +2 -2
  15. data/lib/sass/callbacks.rb +0 -1
  16. data/lib/sass/css.rb +13 -11
  17. data/lib/sass/engine.rb +173 -424
  18. data/lib/sass/environment.rb +58 -148
  19. data/lib/sass/error.rb +14 -11
  20. data/lib/sass/exec.rb +703 -5
  21. data/lib/sass/importers/base.rb +6 -49
  22. data/lib/sass/importers/filesystem.rb +19 -44
  23. data/lib/sass/logger.rb +4 -1
  24. data/lib/sass/logger/base.rb +4 -2
  25. data/lib/sass/logger/log_level.rb +7 -3
  26. data/lib/sass/media.rb +23 -20
  27. data/lib/sass/plugin.rb +7 -7
  28. data/lib/sass/plugin/compiler.rb +145 -304
  29. data/lib/sass/plugin/configuration.rb +23 -18
  30. data/lib/sass/plugin/merb.rb +1 -1
  31. data/lib/sass/plugin/staleness_checker.rb +3 -3
  32. data/lib/sass/repl.rb +3 -3
  33. data/lib/sass/script.rb +8 -35
  34. data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
  35. data/lib/sass/script/bool.rb +18 -0
  36. data/lib/sass/script/color.rb +606 -0
  37. data/lib/sass/script/css_lexer.rb +4 -8
  38. data/lib/sass/script/css_parser.rb +2 -5
  39. data/lib/sass/script/funcall.rb +245 -0
  40. data/lib/sass/script/functions.rb +408 -1491
  41. data/lib/sass/script/interpolation.rb +79 -0
  42. data/lib/sass/script/lexer.rb +68 -172
  43. data/lib/sass/script/list.rb +85 -0
  44. data/lib/sass/script/literal.rb +221 -0
  45. data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
  46. data/lib/sass/script/{value/null.rb → null.rb} +7 -14
  47. data/lib/sass/script/{value/number.rb → number.rb} +75 -152
  48. data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
  49. data/lib/sass/script/parser.rb +110 -245
  50. data/lib/sass/script/string.rb +51 -0
  51. data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
  52. data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
  53. data/lib/sass/script/variable.rb +58 -0
  54. data/lib/sass/scss/css_parser.rb +3 -9
  55. data/lib/sass/scss/parser.rb +421 -450
  56. data/lib/sass/scss/rx.rb +11 -19
  57. data/lib/sass/scss/static_parser.rb +7 -321
  58. data/lib/sass/selector.rb +194 -68
  59. data/lib/sass/selector/abstract_sequence.rb +14 -29
  60. data/lib/sass/selector/comma_sequence.rb +25 -108
  61. data/lib/sass/selector/sequence.rb +66 -159
  62. data/lib/sass/selector/simple.rb +25 -23
  63. data/lib/sass/selector/simple_sequence.rb +63 -173
  64. data/lib/sass/shared.rb +1 -1
  65. data/lib/sass/supports.rb +15 -13
  66. data/lib/sass/tree/charset_node.rb +1 -1
  67. data/lib/sass/tree/comment_node.rb +3 -3
  68. data/lib/sass/tree/css_import_node.rb +11 -11
  69. data/lib/sass/tree/debug_node.rb +2 -2
  70. data/lib/sass/tree/directive_node.rb +4 -21
  71. data/lib/sass/tree/each_node.rb +8 -8
  72. data/lib/sass/tree/extend_node.rb +7 -14
  73. data/lib/sass/tree/for_node.rb +4 -4
  74. data/lib/sass/tree/function_node.rb +4 -9
  75. data/lib/sass/tree/if_node.rb +1 -1
  76. data/lib/sass/tree/import_node.rb +5 -4
  77. data/lib/sass/tree/media_node.rb +14 -4
  78. data/lib/sass/tree/mixin_def_node.rb +4 -4
  79. data/lib/sass/tree/mixin_node.rb +8 -21
  80. data/lib/sass/tree/node.rb +12 -54
  81. data/lib/sass/tree/prop_node.rb +20 -39
  82. data/lib/sass/tree/return_node.rb +2 -3
  83. data/lib/sass/tree/root_node.rb +3 -19
  84. data/lib/sass/tree/rule_node.rb +22 -35
  85. data/lib/sass/tree/supports_node.rb +13 -0
  86. data/lib/sass/tree/trace_node.rb +1 -2
  87. data/lib/sass/tree/variable_node.rb +3 -9
  88. data/lib/sass/tree/visitors/base.rb +8 -5
  89. data/lib/sass/tree/visitors/check_nesting.rb +19 -49
  90. data/lib/sass/tree/visitors/convert.rb +56 -74
  91. data/lib/sass/tree/visitors/cssize.rb +74 -202
  92. data/lib/sass/tree/visitors/deep_copy.rb +5 -10
  93. data/lib/sass/tree/visitors/extend.rb +7 -7
  94. data/lib/sass/tree/visitors/perform.rb +185 -278
  95. data/lib/sass/tree/visitors/set_options.rb +6 -20
  96. data/lib/sass/tree/visitors/to_css.rb +81 -234
  97. data/lib/sass/tree/warn_node.rb +2 -2
  98. data/lib/sass/tree/while_node.rb +2 -2
  99. data/lib/sass/util.rb +152 -522
  100. data/lib/sass/util/multibyte_string_scanner.rb +0 -2
  101. data/lib/sass/util/subset_map.rb +3 -4
  102. data/lib/sass/util/test.rb +1 -0
  103. data/lib/sass/version.rb +22 -20
  104. data/test/Gemfile +3 -0
  105. data/test/Gemfile.lock +10 -0
  106. data/test/sass/cache_test.rb +20 -62
  107. data/test/sass/callbacks_test.rb +1 -1
  108. data/test/sass/conversion_test.rb +2 -296
  109. data/test/sass/css2sass_test.rb +4 -23
  110. data/test/sass/engine_test.rb +354 -411
  111. data/test/sass/exec_test.rb +2 -2
  112. data/test/sass/extend_test.rb +145 -324
  113. data/test/sass/functions_test.rb +86 -873
  114. data/test/sass/importer_test.rb +21 -241
  115. data/test/sass/logger_test.rb +1 -1
  116. data/test/sass/more_results/more_import.css +1 -1
  117. data/test/sass/plugin_test.rb +26 -16
  118. data/test/sass/results/compact.css +1 -1
  119. data/test/sass/results/complex.css +4 -4
  120. data/test/sass/results/expanded.css +1 -1
  121. data/test/sass/results/import.css +1 -1
  122. data/test/sass/results/import_charset_ibm866.css +2 -2
  123. data/test/sass/results/mixins.css +17 -17
  124. data/test/sass/results/nested.css +1 -1
  125. data/test/sass/results/parent_ref.css +2 -2
  126. data/test/sass/results/script.css +3 -3
  127. data/test/sass/results/scss_import.css +1 -1
  128. data/test/sass/script_conversion_test.rb +7 -36
  129. data/test/sass/script_test.rb +53 -485
  130. data/test/sass/scss/css_test.rb +28 -143
  131. data/test/sass/scss/rx_test.rb +4 -4
  132. data/test/sass/scss/scss_test.rb +325 -2119
  133. data/test/sass/templates/scss_import.scss +1 -2
  134. data/test/sass/test_helper.rb +1 -1
  135. data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
  136. data/test/sass/util/subset_map_test.rb +2 -2
  137. data/test/sass/util_test.rb +1 -86
  138. data/test/test_helper.rb +8 -37
  139. metadata +19 -66
  140. data/lib/sass/exec/base.rb +0 -187
  141. data/lib/sass/exec/sass_convert.rb +0 -264
  142. data/lib/sass/exec/sass_scss.rb +0 -424
  143. data/lib/sass/features.rb +0 -47
  144. data/lib/sass/script/tree.rb +0 -16
  145. data/lib/sass/script/tree/funcall.rb +0 -306
  146. data/lib/sass/script/tree/interpolation.rb +0 -118
  147. data/lib/sass/script/tree/list_literal.rb +0 -77
  148. data/lib/sass/script/tree/literal.rb +0 -45
  149. data/lib/sass/script/tree/map_literal.rb +0 -64
  150. data/lib/sass/script/tree/selector.rb +0 -26
  151. data/lib/sass/script/tree/variable.rb +0 -57
  152. data/lib/sass/script/value.rb +0 -11
  153. data/lib/sass/script/value/base.rb +0 -240
  154. data/lib/sass/script/value/bool.rb +0 -35
  155. data/lib/sass/script/value/color.rb +0 -680
  156. data/lib/sass/script/value/helpers.rb +0 -262
  157. data/lib/sass/script/value/list.rb +0 -113
  158. data/lib/sass/script/value/map.rb +0 -70
  159. data/lib/sass/script/value/string.rb +0 -97
  160. data/lib/sass/selector/pseudo.rb +0 -256
  161. data/lib/sass/source/map.rb +0 -210
  162. data/lib/sass/source/position.rb +0 -39
  163. data/lib/sass/source/range.rb +0 -41
  164. data/lib/sass/stack.rb +0 -120
  165. data/lib/sass/tree/at_root_node.rb +0 -83
  166. data/lib/sass/tree/error_node.rb +0 -18
  167. data/lib/sass/tree/keyframe_rule_node.rb +0 -15
  168. data/lib/sass/util/cross_platform_random.rb +0 -19
  169. data/lib/sass/util/normalized_map.rb +0 -130
  170. data/lib/sass/util/ordered_hash.rb +0 -192
  171. data/test/sass/compiler_test.rb +0 -232
  172. data/test/sass/encoding_test.rb +0 -219
  173. data/test/sass/source_map_test.rb +0 -977
  174. data/test/sass/superselector_test.rb +0 -191
  175. data/test/sass/util/normalized_map_test.rb +0 -51
  176. data/test/sass/value_helpers_test.rb +0 -179
@@ -1,39 +0,0 @@
1
- module Sass::Source
2
- class Position
3
- # The one-based line of the document associated with the position.
4
- #
5
- # @return [Fixnum]
6
- attr_accessor :line
7
-
8
- # The one-based offset in the line of the document associated with the
9
- # position.
10
- #
11
- # @return [Fixnum]
12
- attr_accessor :offset
13
-
14
- # @param line [Fixnum] The source line
15
- # @param offset [Fixnum] The source offset
16
- def initialize(line, offset)
17
- @line = line
18
- @offset = offset
19
- end
20
-
21
- # @return [String] A string representation of the source position.
22
- def inspect
23
- "#{line.inspect}:#{offset.inspect}"
24
- end
25
-
26
- # @param str [String] The string to move through.
27
- # @return [Position] The source position after proceeding forward through
28
- # `str`.
29
- def after(str)
30
- newlines = str.count("\n")
31
- Position.new(line + newlines,
32
- if newlines == 0
33
- offset + str.length
34
- else
35
- str.length - str.rindex("\n") - 1
36
- end)
37
- end
38
- end
39
- end
@@ -1,41 +0,0 @@
1
- module Sass::Source
2
- class Range
3
- # The starting position of the range in the document (inclusive).
4
- #
5
- # @return [Sass::Source::Position]
6
- attr_accessor :start_pos
7
-
8
- # The ending position of the range in the document (exclusive).
9
- #
10
- # @return [Sass::Source::Position]
11
- attr_accessor :end_pos
12
-
13
- # The file in which this source range appears. This can be nil if the file
14
- # is unknown or not yet generated.
15
- #
16
- # @return [String]
17
- attr_accessor :file
18
-
19
- # The importer that imported the file in which this source range appears.
20
- # This is nil for target ranges.
21
- #
22
- # @return [Sass::Importers::Base]
23
- attr_accessor :importer
24
-
25
- # @param start_pos [Sass::Source::Position] See \{#start_pos}
26
- # @param end_pos [Sass::Source::Position] See \{#end_pos}
27
- # @param file [String] See \{#file}
28
- # @param importer [Sass::Importers::Base] See \{#importer}
29
- def initialize(start_pos, end_pos, file, importer = nil)
30
- @start_pos = start_pos
31
- @end_pos = end_pos
32
- @file = file
33
- @importer = importer
34
- end
35
-
36
- # @return [String] A string representation of the source range.
37
- def inspect
38
- "(#{start_pos.inspect} to #{end_pos.inspect}#{" in #{@file}" if @file})"
39
- end
40
- end
41
- end
data/lib/sass/stack.rb DELETED
@@ -1,120 +0,0 @@
1
- module Sass
2
- # A class representing the stack when compiling a Sass file.
3
- class Stack
4
- # TODO: use this to generate stack information for Sass::SyntaxErrors.
5
-
6
- # A single stack frame.
7
- class Frame
8
- # The filename of the file in which this stack frame was created.
9
- #
10
- # @return [String]
11
- attr_reader :filename
12
-
13
- # The line number on which this stack frame was created.
14
- #
15
- # @return [String]
16
- attr_reader :line
17
-
18
- # The type of this stack frame. This can be `:import`, `:mixin`, or
19
- # `:base`.
20
- #
21
- # `:base` indicates that this is the bottom-most frame, meaning that it
22
- # represents a single line of code rather than a nested context. The stack
23
- # will only ever have one base frame, and it will always be the most
24
- # deeply-nested frame.
25
- #
26
- # @return [Symbol?]
27
- attr_reader :type
28
-
29
- # The name of the stack frame. For mixin frames, this is the mixin name;
30
- # otherwise, it's `nil`.
31
- #
32
- # @return [String?]
33
- attr_reader :name
34
-
35
- def initialize(filename, line, type, name = nil)
36
- @filename = filename
37
- @line = line
38
- @type = type
39
- @name = name
40
- end
41
-
42
- # Whether this frame represents an import.
43
- #
44
- # @return [Boolean]
45
- def is_import?
46
- type == :import
47
- end
48
-
49
- # Whether this frame represents a mixin.
50
- #
51
- # @return [Boolean]
52
- def is_mixin?
53
- type == :mixin
54
- end
55
-
56
- # Whether this is the base frame.
57
- #
58
- # @return [Boolean]
59
- def is_base?
60
- type == :base
61
- end
62
- end
63
-
64
- # The stack frames. The last frame is the most deeply-nested.
65
- #
66
- # @return [Array<Frame>]
67
- attr_reader :frames
68
-
69
- def initialize
70
- @frames = []
71
- end
72
-
73
- # Pushes a base frame onto the stack.
74
- #
75
- # @param filename [String] See \{Frame#filename}.
76
- # @param line [String] See \{Frame#line}.
77
- # @yield [] A block in which the new frame is on the stack.
78
- def with_base(filename, line)
79
- with_frame(filename, line, :base) {yield}
80
- end
81
-
82
- # Pushes an import frame onto the stack.
83
- #
84
- # @param filename [String] See \{Frame#filename}.
85
- # @param line [String] See \{Frame#line}.
86
- # @yield [] A block in which the new frame is on the stack.
87
- def with_import(filename, line)
88
- with_frame(filename, line, :import) {yield}
89
- end
90
-
91
- # Pushes a mixin frame onto the stack.
92
- #
93
- # @param filename [String] See \{Frame#filename}.
94
- # @param line [String] See \{Frame#line}.
95
- # @param name [String] See \{Frame#name}.
96
- # @yield [] A block in which the new frame is on the stack.
97
- def with_mixin(filename, line, name)
98
- with_frame(filename, line, :mixin, name) {yield}
99
- end
100
-
101
- def to_s
102
- Sass::Util.enum_with_index(Sass::Util.enum_cons(frames.reverse + [nil], 2)).
103
- map do |(frame, caller), i|
104
- "#{i == 0 ? "on" : "from"} line #{frame.line}" +
105
- " of #{frame.filename || "an unknown file"}" +
106
- (caller && caller.name ? ", in `#{caller.name}'" : "")
107
- end.join("\n")
108
- end
109
-
110
- private
111
-
112
- def with_frame(filename, line, type, name = nil)
113
- @frames.pop if @frames.last && @frames.last.type == :base
114
- @frames.push(Frame.new(filename, line, type, name))
115
- yield
116
- ensure
117
- @frames.pop unless type == :base && @frames.last && @frames.last.type != :base
118
- end
119
- end
120
- end
@@ -1,83 +0,0 @@
1
- module Sass
2
- module Tree
3
- # A dynamic node representing an `@at-root` directive.
4
- #
5
- # An `@at-root` directive with a selector is converted to an \{AtRootNode}
6
- # containing a \{RuleNode} at parse time.
7
- #
8
- # @see Sass::Tree
9
- class AtRootNode < Node
10
- # The query for this node (e.g. `(without: media)`),
11
- # interspersed with {Sass::Script::Tree::Node}s representing
12
- # `#{}`-interpolation. Any adjacent strings will be merged
13
- # together.
14
- #
15
- # This will be nil if the directive didn't have a query. In this
16
- # case, {#resolved\_type} will automatically be set to
17
- # `:without` and {#resolved\_rule} will automatically be set to `["rule"]`.
18
- #
19
- # @return [Array<String, Sass::Script::Tree::Node>]
20
- attr_accessor :query
21
-
22
- # The resolved type of this directive. `:with` or `:without`.
23
- #
24
- # @return [Symbol]
25
- attr_accessor :resolved_type
26
-
27
- # The resolved value of this directive -- a list of directives
28
- # to either include or exclude.
29
- #
30
- # @return [Array<String>]
31
- attr_accessor :resolved_value
32
-
33
- # The number of additional tabs that the contents of this node
34
- # should be indented.
35
- #
36
- # @return [Number]
37
- attr_accessor :tabs
38
-
39
- # Whether the last child of this node should be considered the
40
- # end of a group.
41
- #
42
- # @return [Boolean]
43
- attr_accessor :group_end
44
-
45
- def initialize(query = nil)
46
- super()
47
- @query = Sass::Util.strip_string_array(Sass::Util.merge_adjacent_strings(query)) if query
48
- @tabs = 0
49
- end
50
-
51
- # Returns whether or not the given directive is excluded by this
52
- # node. `directive` may be "rule", which indicates whether
53
- # normal CSS rules should be excluded.
54
- #
55
- # @param directive [String]
56
- # @return [Boolean]
57
- def exclude?(directive)
58
- if resolved_type == :with
59
- return false if resolved_value.include?('all')
60
- !resolved_value.include?(directive)
61
- else # resolved_type == :without
62
- return true if resolved_value.include?('all')
63
- resolved_value.include?(directive)
64
- end
65
- end
66
-
67
- # Returns whether the given node is excluded by this node.
68
- #
69
- # @param node [Sass::Tree::Node]
70
- # @return [Boolean]
71
- def exclude_node?(node)
72
- return exclude?(node.name.gsub(/^@/, '')) if node.is_a?(Sass::Tree::DirectiveNode)
73
- return exclude?('keyframes') if node.is_a?(Sass::Tree::KeyframeRuleNode)
74
- exclude?('rule') && node.is_a?(Sass::Tree::RuleNode)
75
- end
76
-
77
- # @see Node#bubbles?
78
- def bubbles?
79
- true
80
- end
81
- end
82
- end
83
- end
@@ -1,18 +0,0 @@
1
- module Sass
2
- module Tree
3
- # A dynamic node representing a Sass `@error` statement.
4
- #
5
- # @see Sass::Tree
6
- class ErrorNode < Node
7
- # The expression to print.
8
- # @return [Script::Tree::Node]
9
- attr_accessor :expr
10
-
11
- # @param expr [Script::Tree::Node] The expression to print
12
- def initialize(expr)
13
- @expr = expr
14
- super()
15
- end
16
- end
17
- end
18
- end
@@ -1,15 +0,0 @@
1
- module Sass::Tree
2
- class KeyframeRuleNode < Node
3
- # The text of the directive after any interpolated SassScript has been resolved.
4
- # Since this is only a static node, this is the only value property.
5
- #
6
- # @return [String]
7
- attr_accessor :resolved_value
8
-
9
- # @param resolved_value [String] See \{#resolved_value}
10
- def initialize(resolved_value)
11
- @resolved_value = resolved_value
12
- super()
13
- end
14
- end
15
- end
@@ -1,19 +0,0 @@
1
- module Sass
2
- module Util
3
- # Ruby 1.8 doesn't support an actual Random class with a settable seed.
4
- class CrossPlatformRandom
5
- def initialize(seed = nil)
6
- if Sass::Util.ruby1_8?
7
- srand(seed) if seed
8
- else
9
- @random = seed ? ::Random.new(seed) : ::Random.new
10
- end
11
- end
12
-
13
- def rand(*args)
14
- return @random.rand(*args) if @random
15
- Kernel.rand(*args)
16
- end
17
- end
18
- end
19
- end
@@ -1,130 +0,0 @@
1
- require 'delegate'
2
- require 'sass/util'
3
-
4
- module Sass
5
- module Util
6
- # A hash that normalizes its string keys while still allowing you to get back
7
- # to the original keys that were stored. If several different values normalize
8
- # to the same value, whichever is stored last wins.
9
- require 'sass/util/ordered_hash' if ruby1_8?
10
- class NormalizedMap
11
- # Create a normalized map
12
- def initialize(map = nil)
13
- @key_strings = {}
14
- @map = Util.ruby1_8? ? OrderedHash.new : {}
15
-
16
- map.each {|key, value| self[key] = value} if map
17
- end
18
-
19
- # Specifies how to transform the key.
20
- #
21
- # This can be overridden to create other normalization behaviors.
22
- def normalize(key)
23
- key.tr("-", "_")
24
- end
25
-
26
- # Returns the version of `key` as it was stored before
27
- # normalization. If `key` isn't in the map, returns it as it was
28
- # passed in.
29
- #
30
- # @return [String]
31
- def denormalize(key)
32
- @key_strings[normalize(key)] || key
33
- end
34
-
35
- # @private
36
- def []=(k, v)
37
- normalized = normalize(k)
38
- @map[normalized] = v
39
- @key_strings[normalized] = k
40
- v
41
- end
42
-
43
- # @private
44
- def [](k)
45
- @map[normalize(k)]
46
- end
47
-
48
- # @private
49
- def has_key?(k)
50
- @map.has_key?(normalize(k))
51
- end
52
-
53
- # @private
54
- def delete(k)
55
- normalized = normalize(k)
56
- @key_strings.delete(normalized)
57
- @map.delete(normalized)
58
- end
59
-
60
- # @return [Hash] Hash with the keys as they were stored (before normalization).
61
- def as_stored
62
- Sass::Util.map_keys(@map) {|k| @key_strings[k]}
63
- end
64
-
65
- def empty?
66
- @map.empty?
67
- end
68
-
69
- def values
70
- @map.values
71
- end
72
-
73
- def keys
74
- @map.keys
75
- end
76
-
77
- def each
78
- @map.each {|k, v| yield(k, v)}
79
- end
80
-
81
- def size
82
- @map.size
83
- end
84
-
85
- def to_hash
86
- @map.dup
87
- end
88
-
89
- def to_a
90
- @map.to_a
91
- end
92
-
93
- def map
94
- @map.map {|k, v| yield(k, v)}
95
- end
96
-
97
- def dup
98
- d = super
99
- d.send(:instance_variable_set, "@map", @map.dup)
100
- d
101
- end
102
-
103
- def sort_by
104
- @map.sort_by {|k, v| yield k, v}
105
- end
106
-
107
- def update(map)
108
- map = map.as_stored if map.is_a?(NormalizedMap)
109
- map.each {|k, v| self[k] = v}
110
- end
111
-
112
- def method_missing(method, *args, &block)
113
- if Sass.tests_running
114
- raise ArgumentError.new("The method #{method} must be implemented explicitly")
115
- end
116
- @map.send(method, *args, &block)
117
- end
118
-
119
- if Sass::Util.ruby1_8?
120
- def respond_to?(method, include_private = false)
121
- super || @map.respond_to?(method, include_private)
122
- end
123
- end
124
-
125
- def respond_to_missing?(method, include_private = false)
126
- @map.respond_to?(method, include_private)
127
- end
128
- end
129
- end
130
- end