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.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +50 -70
- data/Rakefile +5 -26
- data/VERSION +1 -1
- data/VERSION_NAME +1 -1
- data/bin/sass +1 -1
- data/bin/scss +1 -1
- data/lib/sass.rb +12 -19
- data/lib/sass/cache_stores/base.rb +2 -2
- data/lib/sass/cache_stores/chain.rb +1 -2
- data/lib/sass/cache_stores/filesystem.rb +5 -1
- data/lib/sass/cache_stores/memory.rb +1 -1
- data/lib/sass/cache_stores/null.rb +2 -2
- data/lib/sass/callbacks.rb +0 -1
- data/lib/sass/css.rb +13 -11
- data/lib/sass/engine.rb +173 -424
- data/lib/sass/environment.rb +58 -148
- data/lib/sass/error.rb +14 -11
- data/lib/sass/exec.rb +703 -5
- data/lib/sass/importers/base.rb +6 -49
- data/lib/sass/importers/filesystem.rb +19 -44
- data/lib/sass/logger.rb +4 -1
- data/lib/sass/logger/base.rb +4 -2
- data/lib/sass/logger/log_level.rb +7 -3
- data/lib/sass/media.rb +23 -20
- data/lib/sass/plugin.rb +7 -7
- data/lib/sass/plugin/compiler.rb +145 -304
- data/lib/sass/plugin/configuration.rb +23 -18
- data/lib/sass/plugin/merb.rb +1 -1
- data/lib/sass/plugin/staleness_checker.rb +3 -3
- data/lib/sass/repl.rb +3 -3
- data/lib/sass/script.rb +8 -35
- data/lib/sass/script/{value/arg_list.rb → arg_list.rb} +25 -9
- data/lib/sass/script/bool.rb +18 -0
- data/lib/sass/script/color.rb +606 -0
- data/lib/sass/script/css_lexer.rb +4 -8
- data/lib/sass/script/css_parser.rb +2 -5
- data/lib/sass/script/funcall.rb +245 -0
- data/lib/sass/script/functions.rb +408 -1491
- data/lib/sass/script/interpolation.rb +79 -0
- data/lib/sass/script/lexer.rb +68 -172
- data/lib/sass/script/list.rb +85 -0
- data/lib/sass/script/literal.rb +221 -0
- data/lib/sass/script/{tree/node.rb → node.rb} +12 -22
- data/lib/sass/script/{value/null.rb → null.rb} +7 -14
- data/lib/sass/script/{value/number.rb → number.rb} +75 -152
- data/lib/sass/script/{tree/operation.rb → operation.rb} +24 -17
- data/lib/sass/script/parser.rb +110 -245
- data/lib/sass/script/string.rb +51 -0
- data/lib/sass/script/{tree/string_interpolation.rb → string_interpolation.rb} +4 -5
- data/lib/sass/script/{tree/unary_operation.rb → unary_operation.rb} +6 -6
- data/lib/sass/script/variable.rb +58 -0
- data/lib/sass/scss/css_parser.rb +3 -9
- data/lib/sass/scss/parser.rb +421 -450
- data/lib/sass/scss/rx.rb +11 -19
- data/lib/sass/scss/static_parser.rb +7 -321
- data/lib/sass/selector.rb +194 -68
- data/lib/sass/selector/abstract_sequence.rb +14 -29
- data/lib/sass/selector/comma_sequence.rb +25 -108
- data/lib/sass/selector/sequence.rb +66 -159
- data/lib/sass/selector/simple.rb +25 -23
- data/lib/sass/selector/simple_sequence.rb +63 -173
- data/lib/sass/shared.rb +1 -1
- data/lib/sass/supports.rb +15 -13
- data/lib/sass/tree/charset_node.rb +1 -1
- data/lib/sass/tree/comment_node.rb +3 -3
- data/lib/sass/tree/css_import_node.rb +11 -11
- data/lib/sass/tree/debug_node.rb +2 -2
- data/lib/sass/tree/directive_node.rb +4 -21
- data/lib/sass/tree/each_node.rb +8 -8
- data/lib/sass/tree/extend_node.rb +7 -14
- data/lib/sass/tree/for_node.rb +4 -4
- data/lib/sass/tree/function_node.rb +4 -9
- data/lib/sass/tree/if_node.rb +1 -1
- data/lib/sass/tree/import_node.rb +5 -4
- data/lib/sass/tree/media_node.rb +14 -4
- data/lib/sass/tree/mixin_def_node.rb +4 -4
- data/lib/sass/tree/mixin_node.rb +8 -21
- data/lib/sass/tree/node.rb +12 -54
- data/lib/sass/tree/prop_node.rb +20 -39
- data/lib/sass/tree/return_node.rb +2 -3
- data/lib/sass/tree/root_node.rb +3 -19
- data/lib/sass/tree/rule_node.rb +22 -35
- data/lib/sass/tree/supports_node.rb +13 -0
- data/lib/sass/tree/trace_node.rb +1 -2
- data/lib/sass/tree/variable_node.rb +3 -9
- data/lib/sass/tree/visitors/base.rb +8 -5
- data/lib/sass/tree/visitors/check_nesting.rb +19 -49
- data/lib/sass/tree/visitors/convert.rb +56 -74
- data/lib/sass/tree/visitors/cssize.rb +74 -202
- data/lib/sass/tree/visitors/deep_copy.rb +5 -10
- data/lib/sass/tree/visitors/extend.rb +7 -7
- data/lib/sass/tree/visitors/perform.rb +185 -278
- data/lib/sass/tree/visitors/set_options.rb +6 -20
- data/lib/sass/tree/visitors/to_css.rb +81 -234
- data/lib/sass/tree/warn_node.rb +2 -2
- data/lib/sass/tree/while_node.rb +2 -2
- data/lib/sass/util.rb +152 -522
- data/lib/sass/util/multibyte_string_scanner.rb +0 -2
- data/lib/sass/util/subset_map.rb +3 -4
- data/lib/sass/util/test.rb +1 -0
- data/lib/sass/version.rb +22 -20
- data/test/Gemfile +3 -0
- data/test/Gemfile.lock +10 -0
- data/test/sass/cache_test.rb +20 -62
- data/test/sass/callbacks_test.rb +1 -1
- data/test/sass/conversion_test.rb +2 -296
- data/test/sass/css2sass_test.rb +4 -23
- data/test/sass/engine_test.rb +354 -411
- data/test/sass/exec_test.rb +2 -2
- data/test/sass/extend_test.rb +145 -324
- data/test/sass/functions_test.rb +86 -873
- data/test/sass/importer_test.rb +21 -241
- data/test/sass/logger_test.rb +1 -1
- data/test/sass/more_results/more_import.css +1 -1
- data/test/sass/plugin_test.rb +26 -16
- data/test/sass/results/compact.css +1 -1
- data/test/sass/results/complex.css +4 -4
- data/test/sass/results/expanded.css +1 -1
- data/test/sass/results/import.css +1 -1
- data/test/sass/results/import_charset_ibm866.css +2 -2
- data/test/sass/results/mixins.css +17 -17
- data/test/sass/results/nested.css +1 -1
- data/test/sass/results/parent_ref.css +2 -2
- data/test/sass/results/script.css +3 -3
- data/test/sass/results/scss_import.css +1 -1
- data/test/sass/script_conversion_test.rb +7 -36
- data/test/sass/script_test.rb +53 -485
- data/test/sass/scss/css_test.rb +28 -143
- data/test/sass/scss/rx_test.rb +4 -4
- data/test/sass/scss/scss_test.rb +325 -2119
- data/test/sass/templates/scss_import.scss +1 -2
- data/test/sass/test_helper.rb +1 -1
- data/test/sass/util/multibyte_string_scanner_test.rb +1 -1
- data/test/sass/util/subset_map_test.rb +2 -2
- data/test/sass/util_test.rb +1 -86
- data/test/test_helper.rb +8 -37
- metadata +19 -66
- data/lib/sass/exec/base.rb +0 -187
- data/lib/sass/exec/sass_convert.rb +0 -264
- data/lib/sass/exec/sass_scss.rb +0 -424
- data/lib/sass/features.rb +0 -47
- data/lib/sass/script/tree.rb +0 -16
- data/lib/sass/script/tree/funcall.rb +0 -306
- data/lib/sass/script/tree/interpolation.rb +0 -118
- data/lib/sass/script/tree/list_literal.rb +0 -77
- data/lib/sass/script/tree/literal.rb +0 -45
- data/lib/sass/script/tree/map_literal.rb +0 -64
- data/lib/sass/script/tree/selector.rb +0 -26
- data/lib/sass/script/tree/variable.rb +0 -57
- data/lib/sass/script/value.rb +0 -11
- data/lib/sass/script/value/base.rb +0 -240
- data/lib/sass/script/value/bool.rb +0 -35
- data/lib/sass/script/value/color.rb +0 -680
- data/lib/sass/script/value/helpers.rb +0 -262
- data/lib/sass/script/value/list.rb +0 -113
- data/lib/sass/script/value/map.rb +0 -70
- data/lib/sass/script/value/string.rb +0 -97
- data/lib/sass/selector/pseudo.rb +0 -256
- data/lib/sass/source/map.rb +0 -210
- data/lib/sass/source/position.rb +0 -39
- data/lib/sass/source/range.rb +0 -41
- data/lib/sass/stack.rb +0 -120
- data/lib/sass/tree/at_root_node.rb +0 -83
- data/lib/sass/tree/error_node.rb +0 -18
- data/lib/sass/tree/keyframe_rule_node.rb +0 -15
- data/lib/sass/util/cross_platform_random.rb +0 -19
- data/lib/sass/util/normalized_map.rb +0 -130
- data/lib/sass/util/ordered_hash.rb +0 -192
- data/test/sass/compiler_test.rb +0 -232
- data/test/sass/encoding_test.rb +0 -219
- data/test/sass/source_map_test.rb +0 -977
- data/test/sass/superselector_test.rb +0 -191
- data/test/sass/util/normalized_map_test.rb +0 -51
- 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
|
data/lib/sass/script/value.rb
DELETED
@@ -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
|