oreorenasass 3.4.4 → 3.4.5

Sign up to get free protection for your applications and to get access to all the features.
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,77 +0,0 @@
1
- module Sass::Script::Tree
2
- # A parse tree node representing a list literal. When resolved, this returns a
3
- # {Sass::Tree::Value::List}.
4
- class ListLiteral < Node
5
- # The parse nodes for members of this list.
6
- #
7
- # @return [Array<Node>]
8
- attr_reader :elements
9
-
10
- # The operator separating the values of the list. Either `:comma` or
11
- # `:space`.
12
- #
13
- # @return [Symbol]
14
- attr_reader :separator
15
-
16
- # Creates a new list literal.
17
- #
18
- # @param elements [Array<Node>] See \{#elements}
19
- # @param separator [Symbol] See \{#separator}
20
- def initialize(elements, separator)
21
- @elements = elements
22
- @separator = separator
23
- end
24
-
25
- # @see Node#children
26
- def children; elements; end
27
-
28
- # @see Value#to_sass
29
- def to_sass(opts = {})
30
- return "()" if elements.empty?
31
- precedence = Sass::Script::Parser.precedence_of(separator)
32
- members = elements.map do |v|
33
- if v.is_a?(ListLiteral) && Sass::Script::Parser.precedence_of(v.separator) <= precedence ||
34
- separator == :space && v.is_a?(UnaryOperation) &&
35
- (v.operator == :minus || v.operator == :plus)
36
- "(#{v.to_sass(opts)})"
37
- else
38
- v.to_sass(opts)
39
- end
40
- end
41
-
42
- return "(#{members.first},)" if separator == :comma && members.length == 1
43
-
44
- members.join(sep_str(nil))
45
- end
46
-
47
- # @see Node#deep_copy
48
- def deep_copy
49
- node = dup
50
- node.instance_variable_set('@elements', elements.map {|e| e.deep_copy})
51
- node
52
- end
53
-
54
- def inspect
55
- "(#{elements.map {|e| e.inspect}.join(separator == :space ? ' ' : ', ')})"
56
- end
57
-
58
- protected
59
-
60
- def _perform(environment)
61
- list = Sass::Script::Value::List.new(
62
- elements.map {|e| e.perform(environment)},
63
- separator)
64
- list.source_range = source_range
65
- list.options = options
66
- list
67
- end
68
-
69
- private
70
-
71
- def sep_str(opts = options)
72
- return ' ' if separator == :space
73
- return ',' if opts && opts[:style] == :compressed
74
- ', '
75
- end
76
- end
77
- end
@@ -1,45 +0,0 @@
1
- module Sass::Script::Tree
2
- # The parse tree node for a literal scalar value. This wraps an instance of
3
- # {Sass::Script::Value::Base}.
4
- #
5
- # List literals should use {ListLiteral} instead.
6
- class Literal < Node
7
- # The wrapped value.
8
- #
9
- # @return [Sass::Script::Value::Base]
10
- attr_reader :value
11
-
12
- # Creates a new literal value.
13
- #
14
- # @param value [Sass::Script::Value::Base]
15
- # @see #value
16
- def initialize(value)
17
- @value = value
18
- end
19
-
20
- # @see Node#children
21
- def children; []; end
22
-
23
- # @see Node#to_sass
24
- def to_sass(opts = {}); value.to_sass(opts); end
25
-
26
- # @see Node#deep_copy
27
- def deep_copy; dup; end
28
-
29
- # @see Node#options=
30
- def options=(options)
31
- value.options = options
32
- end
33
-
34
- def inspect
35
- value.inspect
36
- end
37
-
38
- protected
39
-
40
- def _perform(environment)
41
- value.source_range = source_range
42
- value
43
- end
44
- end
45
- end
@@ -1,64 +0,0 @@
1
- module Sass::Script::Tree
2
- # A class representing a map literal. When resolved, this returns a
3
- # {Sass::Script::Node::Map}.
4
- class MapLiteral < Node
5
- # The key/value pairs that make up this map node. This isn't a Hash so that
6
- # we can detect key collisions once all the keys have been performed.
7
- #
8
- # @return [Array<(Node, Node)>]
9
- attr_reader :pairs
10
-
11
- # Creates a new map literal.
12
- #
13
- # @param pairs [Array<(Node, Node)>] See \{#pairs}
14
- def initialize(pairs)
15
- @pairs = pairs
16
- end
17
-
18
- # @see Node#children
19
- def children
20
- @pairs.flatten
21
- end
22
-
23
- # @see Node#to_sass
24
- def to_sass(opts = {})
25
- return "()" if pairs.empty?
26
-
27
- to_sass = lambda do |value|
28
- if value.is_a?(ListLiteral) && value.separator == :comma
29
- "(#{value.to_sass(opts)})"
30
- else
31
- value.to_sass(opts)
32
- end
33
- end
34
-
35
- "(" + pairs.map {|(k, v)| "#{to_sass[k]}: #{to_sass[v]}"}.join(', ') + ")"
36
- end
37
- alias_method :inspect, :to_sass
38
-
39
- # @see Node#deep_copy
40
- def deep_copy
41
- node = dup
42
- node.instance_variable_set('@pairs',
43
- pairs.map {|(k, v)| [k.deep_copy, v.deep_copy]})
44
- node
45
- end
46
-
47
- protected
48
-
49
- # @see Node#_perform
50
- def _perform(environment)
51
- keys = Set.new
52
- map = Sass::Script::Value::Map.new(Sass::Util.to_hash(pairs.map do |(k, v)|
53
- k, v = k.perform(environment), v.perform(environment)
54
- if keys.include?(k)
55
- raise Sass::SyntaxError.new("Duplicate key #{k.inspect} in map #{to_sass}.")
56
- end
57
- keys << k
58
- [k, v]
59
- end))
60
- map.options = options
61
- map
62
- end
63
- end
64
- end
@@ -1,26 +0,0 @@
1
- module Sass::Script::Tree
2
- # A SassScript node that will resolve to the current selector.
3
- class Selector < Node
4
- def initialize; end
5
-
6
- def children
7
- []
8
- end
9
-
10
- def to_sass(opts = {})
11
- '&'
12
- end
13
-
14
- def deep_copy
15
- dup
16
- end
17
-
18
- protected
19
-
20
- def _perform(environment)
21
- selector = environment.selector
22
- return opts(Sass::Script::Value::Null.new) unless selector
23
- opts(selector.to_sass_script)
24
- end
25
- end
26
- end
@@ -1,57 +0,0 @@
1
- module Sass::Script::Tree
2
- # A SassScript parse node representing a variable.
3
- class Variable < Node
4
- # The name of the variable.
5
- #
6
- # @return [String]
7
- attr_reader :name
8
-
9
- # The underscored name of the variable.
10
- #
11
- # @return [String]
12
- attr_reader :underscored_name
13
-
14
- # @param name [String] See \{#name}
15
- def initialize(name)
16
- @name = name
17
- @underscored_name = name.gsub(/-/, "_")
18
- super()
19
- end
20
-
21
- # @return [String] A string representation of the variable
22
- def inspect(opts = {})
23
- "$#{dasherize(name, opts)}"
24
- end
25
- alias_method :to_sass, :inspect
26
-
27
- # Returns an empty array.
28
- #
29
- # @return [Array<Node>] empty
30
- # @see Node#children
31
- def children
32
- []
33
- end
34
-
35
- # @see Node#deep_copy
36
- def deep_copy
37
- dup
38
- end
39
-
40
- protected
41
-
42
- # Evaluates the variable.
43
- #
44
- # @param environment [Sass::Environment] The environment in which to evaluate the SassScript
45
- # @return [Sass::Script::Value] The SassScript object that is the value of the variable
46
- # @raise [Sass::SyntaxError] if the variable is undefined
47
- def _perform(environment)
48
- val = environment.var(name)
49
- raise Sass::SyntaxError.new("Undefined variable: \"$#{name}\".") unless val
50
- if val.is_a?(Sass::Script::Value::Number) && val.original
51
- val = val.dup
52
- val.original = nil
53
- end
54
- val
55
- end
56
- end
57
- end
@@ -1,11 +0,0 @@
1
- module Sass::Script::Value; end
2
-
3
- require 'sass/script/value/base'
4
- require 'sass/script/value/string'
5
- require 'sass/script/value/number'
6
- require 'sass/script/value/color'
7
- require 'sass/script/value/bool'
8
- require 'sass/script/value/null'
9
- require 'sass/script/value/list'
10
- require 'sass/script/value/arg_list'
11
- require 'sass/script/value/map'
@@ -1,240 +0,0 @@
1
- module Sass::Script::Value
2
- # The abstract superclass for SassScript objects.
3
- #
4
- # Many of these methods, especially the ones that correspond to SassScript operations,
5
- # are designed to be overridden by subclasses which may change the semantics somewhat.
6
- # The operations listed here are just the defaults.
7
- class Base
8
- # Returns the Ruby value of the value.
9
- # The type of this value varies based on the subclass.
10
- #
11
- # @return [Object]
12
- attr_reader :value
13
-
14
- # The source range in the document on which this node appeared.
15
- #
16
- # @return [Sass::Source::Range]
17
- attr_accessor :source_range
18
-
19
- # Creates a new value.
20
- #
21
- # @param value [Object] The object for \{#value}
22
- def initialize(value = nil)
23
- value.freeze unless value.nil? || value == true || value == false
24
- @value = value
25
- end
26
-
27
- # Sets the options hash for this node,
28
- # as well as for all child nodes.
29
- # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.
30
- #
31
- # @param options [{Symbol => Object}] The options
32
- attr_writer :options
33
-
34
- # Returns the options hash for this node.
35
- #
36
- # @return [{Symbol => Object}]
37
- # @raise [Sass::SyntaxError] if the options hash hasn't been set.
38
- # This should only happen when the value was created
39
- # outside of the parser and \{#to\_s} was called on it
40
- def options
41
- return @options if @options
42
- raise Sass::SyntaxError.new(<<MSG)
43
- The #options attribute is not set on this #{self.class}.
44
- This error is probably occurring because #to_s was called
45
- on this value within a custom Sass function without first
46
- setting the #options attribute.
47
- MSG
48
- end
49
-
50
- # The SassScript `==` operation.
51
- # **Note that this returns a {Sass::Script::Value::Bool} object,
52
- # not a Ruby boolean**.
53
- #
54
- # @param other [Value] The right-hand side of the operator
55
- # @return [Sass::Script::Value::Bool] True if this value is the same as the other,
56
- # false otherwise
57
- def eq(other)
58
- Sass::Script::Value::Bool.new(self.class == other.class && value == other.value)
59
- end
60
-
61
- # The SassScript `!=` operation.
62
- # **Note that this returns a {Sass::Script::Value::Bool} object,
63
- # not a Ruby boolean**.
64
- #
65
- # @param other [Value] The right-hand side of the operator
66
- # @return [Sass::Script::Value::Bool] False if this value is the same as the other,
67
- # true otherwise
68
- def neq(other)
69
- Sass::Script::Value::Bool.new(!eq(other).to_bool)
70
- end
71
-
72
- # The SassScript `==` operation.
73
- # **Note that this returns a {Sass::Script::Value::Bool} object,
74
- # not a Ruby boolean**.
75
- #
76
- # @param other [Value] The right-hand side of the operator
77
- # @return [Sass::Script::Value::Bool] True if this value is the same as the other,
78
- # false otherwise
79
- def unary_not
80
- Sass::Script::Value::Bool.new(!to_bool)
81
- end
82
-
83
- # The SassScript `=` operation
84
- # (used for proprietary MS syntax like `alpha(opacity=20)`).
85
- #
86
- # @param other [Value] The right-hand side of the operator
87
- # @return [Script::Value::String] A string containing both values
88
- # separated by `"="`
89
- def single_eq(other)
90
- Sass::Script::Value::String.new("#{to_s}=#{other.to_s}")
91
- end
92
-
93
- # The SassScript `+` operation.
94
- #
95
- # @param other [Value] The right-hand side of the operator
96
- # @return [Script::Value::String] A string containing both values
97
- # without any separation
98
- def plus(other)
99
- type = other.is_a?(Sass::Script::Value::String) ? other.type : :identifier
100
- Sass::Script::Value::String.new(to_s(:quote => :none) + other.to_s(:quote => :none), type)
101
- end
102
-
103
- # The SassScript `-` operation.
104
- #
105
- # @param other [Value] The right-hand side of the operator
106
- # @return [Script::Value::String] A string containing both values
107
- # separated by `"-"`
108
- def minus(other)
109
- Sass::Script::Value::String.new("#{to_s}-#{other.to_s}")
110
- end
111
-
112
- # The SassScript `/` operation.
113
- #
114
- # @param other [Value] The right-hand side of the operator
115
- # @return [Script::Value::String] A string containing both values
116
- # separated by `"/"`
117
- def div(other)
118
- Sass::Script::Value::String.new("#{to_s}/#{other.to_s}")
119
- end
120
-
121
- # The SassScript unary `+` operation (e.g. `+$a`).
122
- #
123
- # @param other [Value] The right-hand side of the operator
124
- # @return [Script::Value::String] A string containing the value
125
- # preceded by `"+"`
126
- def unary_plus
127
- Sass::Script::Value::String.new("+#{to_s}")
128
- end
129
-
130
- # The SassScript unary `-` operation (e.g. `-$a`).
131
- #
132
- # @param other [Value] The right-hand side of the operator
133
- # @return [Script::Value::String] A string containing the value
134
- # preceded by `"-"`
135
- def unary_minus
136
- Sass::Script::Value::String.new("-#{to_s}")
137
- end
138
-
139
- # The SassScript unary `/` operation (e.g. `/$a`).
140
- #
141
- # @param other [Value] The right-hand side of the operator
142
- # @return [Script::Value::String] A string containing the value
143
- # preceded by `"/"`
144
- def unary_div
145
- Sass::Script::Value::String.new("/#{to_s}")
146
- end
147
-
148
- # Returns the hash code of this value. Two objects' hash codes should be
149
- # equal if the objects are equal.
150
- #
151
- # @return [Fixnum] The hash code.
152
- def hash
153
- value.hash
154
- end
155
-
156
- def eql?(other)
157
- self == other
158
- end
159
-
160
- # @return [String] A readable representation of the value
161
- def inspect
162
- value.inspect
163
- end
164
-
165
- # @return [Boolean] `true` (the Ruby boolean value)
166
- def to_bool
167
- true
168
- end
169
-
170
- # Compares this object with another.
171
- #
172
- # @param other [Object] The object to compare with
173
- # @return [Boolean] Whether or not this value is equivalent to `other`
174
- def ==(other)
175
- eq(other).to_bool
176
- end
177
-
178
- # @return [Fixnum] The integer value of this value
179
- # @raise [Sass::SyntaxError] if this value isn't an integer
180
- def to_i
181
- raise Sass::SyntaxError.new("#{inspect} is not an integer.")
182
- end
183
-
184
- # @raise [Sass::SyntaxError] if this value isn't an integer
185
- def assert_int!; to_i; end
186
-
187
- # Returns the separator for this value. For non-list-like values or the
188
- # empty list, this will be `nil`. For lists or maps, it will be `:space` or
189
- # `:comma`.
190
- #
191
- # @return [Symbol]
192
- def separator; nil; end
193
-
194
- # Returns the value of this value as a list.
195
- # Single values are considered the same as single-element lists.
196
- #
197
- # @return [Array<Value>] This value as a list
198
- def to_a
199
- [self]
200
- end
201
-
202
- # Returns the value of this value as a hash. Most values don't have hash
203
- # representations, but [Map]s and empty [List]s do.
204
- #
205
- # @return [Hash<Value, Value>] This value as a hash
206
- # @raise [Sass::SyntaxError] if this value doesn't have a hash representation
207
- def to_h
208
- raise Sass::SyntaxError.new("#{inspect} is not a map.")
209
- end
210
-
211
- # Returns the string representation of this value
212
- # as it would be output to the CSS document.
213
- #
214
- # @options opts :quote [String]
215
- # The preferred quote style for quoted strings. If `:none`, strings are
216
- # always emitted unquoted.
217
- # @return [String]
218
- def to_s(opts = {})
219
- Sass::Util.abstract(self)
220
- end
221
- alias_method :to_sass, :to_s
222
-
223
- # Returns whether or not this object is null.
224
- #
225
- # @return [Boolean] `false`
226
- def null?
227
- false
228
- end
229
-
230
- protected
231
-
232
- # Evaluates the value.
233
- #
234
- # @param environment [Sass::Environment] The environment in which to evaluate the SassScript
235
- # @return [Value] This value
236
- def _perform(environment)
237
- self
238
- end
239
- end
240
- end