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,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