Class: Sass::Script::Value::Base
- Inherits:
-
Object
- Object
- Sass::Script::Value::Base
- Defined in:
- lib/sass/script/value/base.rb
Overview
The abstract superclass for SassScript objects.
Many of these methods, especially the ones that correspond to SassScript operations, are designed to be overridden by subclasses which may change the semantics somewhat. The operations listed here are just the defaults.
Instance Attribute Summary collapse
-
#options ⇒ {Symbol => Object}
Returns the options hash for this node.
-
#source_range ⇒ Sass::Source::Range
The source range in the document on which this node appeared.
-
#value ⇒ Object
readonly
Returns the Ruby value of the value.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Compares this object with another.
-
#_perform(environment) ⇒ Value
protected
Evaluates the value.
- #assert_int!
-
#bracketed ⇒ Boolean
Whether the value is surrounded by square brackets.
-
#div(other) ⇒ Script::Value::String
The SassScript
/operation. -
#eq(other) ⇒ Sass::Script::Value::Bool
The SassScript
==operation. - #eql?(other) ⇒ Boolean
-
#hash ⇒ Integer for Ruby 2.4.0+, Fixnum for earlier Ruby versions
Returns the hash code of this value.
-
#initialize(value = nil) ⇒ Base
constructor
Creates a new value.
-
#inspect ⇒ String
A readable representation of the value.
-
#is_special_number? ⇒ Boolean
Returns whether this value is a "special number" that CSS may treat as a number.
-
#is_var? ⇒ Boolean
Returns whether this value is a
var()call. -
#minus(other) ⇒ Script::Value::String
The SassScript
-operation. -
#neq(other) ⇒ Sass::Script::Value::Bool
The SassScript
!=operation. -
#null? ⇒ Boolean
Returns whether or not this object is null.
-
#plus(other) ⇒ Script::Value::String
The SassScript
+operation. -
#separator ⇒ Symbol
Returns the separator for this value.
-
#single_eq(other) ⇒ Script::Value::String
The SassScript
=operation (used for proprietary MS syntax likealpha(opacity=20)). -
#to_a ⇒ Array<Value>
Returns the value of this value as a list.
-
#to_bool ⇒ Boolean
true(the Ruby boolean value). -
#to_h ⇒ Hash<Value, Value>
Returns the value of this value as a hash.
-
#to_i ⇒ Integer
The integer value of this value.
-
#to_s(opts = {}) ⇒ String
(also: #to_sass)
Returns the string representation of this value as it would be output to the CSS document.
-
#unary_div ⇒ Script::Value::String
The SassScript unary
/operation (e.g./$a). -
#unary_minus ⇒ Script::Value::String
The SassScript unary
-operation (e.g.-$a). -
#unary_not ⇒ Sass::Script::Value::Bool
The SassScript
==operation. -
#unary_plus ⇒ Script::Value::String
The SassScript unary
+operation (e.g.+$a). -
#with_contents(contents, separator: self.separator, bracketed: self.bracketed) ⇒ Sass::Script::Value::List
Creates a new list containing
contentsbut with the same brackets and separators as this object, when interpreted as a list.
Constructor Details
#initialize(value = nil) ⇒ Base
Creates a new value.
22 23 24 25 26 |
# File 'lib/sass/script/value/base.rb', line 22
def initialize(value = nil)
value.freeze unless value.nil? || value == true || value == false
@value = value
@options = nil
end
|
Instance Attribute Details
#options ⇒ {Symbol => Object}
Returns the options hash for this node.
41 42 43 44 45 46 47 48 49 |
# File 'lib/sass/script/value/base.rb', line 41
def options
return @options if @options
raise Sass::SyntaxError.new(<<MSG)
The #options attribute is not set on this #{self.class}.
This error is probably occurring because #to_s was called
on this value within a custom Sass function without first
setting the #options attribute.
MSG
end
|
#source_range ⇒ Sass::Source::Range
The source range in the document on which this node appeared.
17 18 19 |
# File 'lib/sass/script/value/base.rb', line 17
def source_range
@source_range
end
|
#value ⇒ Object (readonly)
Returns the Ruby value of the value. The type of this value varies based on the subclass.
12 13 14 |
# File 'lib/sass/script/value/base.rb', line 12
def value
@value
end
|
Instance Method Details
#==(other) ⇒ Boolean
Compares this object with another.
193 194 195 |
# File 'lib/sass/script/value/base.rb', line 193
def ==(other)
eq(other).to_bool
end
|
#_perform(environment) ⇒ Value (protected)
Evaluates the value.
272 273 274 |
# File 'lib/sass/script/value/base.rb', line 272
def _perform(environment)
self
end
|
#assert_int!
204 |
# File 'lib/sass/script/value/base.rb', line 204
def assert_int!; to_i; end
|
#bracketed ⇒ Boolean
Whether the value is surrounded by square brackets. For non-list values,
this will be false.
217 |
# File 'lib/sass/script/value/base.rb', line 217
def bracketed; false; end
|
#div(other) ⇒ Script::Value::String
The SassScript / operation.
118 119 120 |
# File 'lib/sass/script/value/base.rb', line 118
def div(other)
Sass::Script::Value::String.new("#{self}/#{other}")
end
|
#eq(other) ⇒ Sass::Script::Value::Bool
The SassScript == operation.
Note that this returns a Sass::Script::Value::Bool object,
not a Ruby boolean.
58 59 60 |
# File 'lib/sass/script/value/base.rb', line 58
def eq(other)
Sass::Script::Value::Bool.new(self.class == other.class && value == other.value)
end
|
#eql?(other) ⇒ Boolean
157 158 159 |
# File 'lib/sass/script/value/base.rb', line 157
def eql?(other)
self == other
end
|
#hash ⇒ Integer for Ruby 2.4.0+, Fixnum for earlier Ruby versions
Returns the hash code of this value. Two objects' hash codes should be equal if the objects are equal.
153 154 155 |
# File 'lib/sass/script/value/base.rb', line 153
def hash
value.hash
end
|
#inspect ⇒ String
Returns A readable representation of the value.
162 163 164 |
# File 'lib/sass/script/value/base.rb', line 162
def inspect
value.inspect
end
|
#is_special_number? ⇒ Boolean
Returns whether this value is a "special number" that CSS may treat as a number.
This includes functions like calc(), var(), env(), etc.
According to CSS Color Level 4 and CSS Values Level 4 specs, these functions should be passed through to CSS without evaluation.
178 179 180 |
# File 'lib/sass/script/value/base.rb', line 178
def is_special_number?
false
end
|
#is_var? ⇒ Boolean
Returns whether this value is a var() call.
185 186 187 |
# File 'lib/sass/script/value/base.rb', line 185
def is_var?
false
end
|
#minus(other) ⇒ Script::Value::String
The SassScript - operation.
109 110 111 |
# File 'lib/sass/script/value/base.rb', line 109
def minus(other)
Sass::Script::Value::String.new("#{self}-#{other}")
end
|
#neq(other) ⇒ Sass::Script::Value::Bool
The SassScript != operation.
Note that this returns a Sass::Script::Value::Bool object,
not a Ruby boolean.
69 70 71 |
# File 'lib/sass/script/value/base.rb', line 69
def neq(other)
Sass::Script::Value::Bool.new(!eq(other).to_bool)
end
|
#null? ⇒ Boolean
Returns whether or not this object is null.
251 252 253 |
# File 'lib/sass/script/value/base.rb', line 251
def null?
false
end
|
#plus(other) ⇒ Script::Value::String
The SassScript + operation.
99 100 101 102 |
# File 'lib/sass/script/value/base.rb', line 99
def plus(other)
type = other.is_a?(Sass::Script::Value::String) ? other.type : :identifier
Sass::Script::Value::String.new(to_s(:quote => :none) + other.to_s(:quote => :none), type)
end
|
#separator ⇒ Symbol
Returns the separator for this value. For non-list-like values or the
empty list, this will be nil. For lists or maps, it will be :space or
:comma.
211 |
# File 'lib/sass/script/value/base.rb', line 211
def separator; nil; end
|
#single_eq(other) ⇒ Script::Value::String
The SassScript = operation
(used for proprietary MS syntax like alpha(opacity=20)).
90 91 92 |
# File 'lib/sass/script/value/base.rb', line 90
def single_eq(other)
Sass::Script::Value::String.new("#{self}=#{other}")
end
|
#to_a ⇒ Array<Value>
Returns the value of this value as a list. Single values are considered the same as single-element lists.
223 224 225 |
# File 'lib/sass/script/value/base.rb', line 223
def to_a
[self]
end
|
#to_bool ⇒ Boolean
Returns true (the Ruby boolean value).
167 168 169 |
# File 'lib/sass/script/value/base.rb', line 167
def to_bool
true
end
|
#to_h ⇒ Hash<Value, Value>
Returns the value of this value as a hash. Most values don't have hash representations, but [Map]s and empty [List]s do.
232 233 234 |
# File 'lib/sass/script/value/base.rb', line 232
def to_h
raise Sass::SyntaxError.new("#{inspect} is not a map.")
end
|
#to_i ⇒ Integer
Returns The integer value of this value.
199 200 201 |
# File 'lib/sass/script/value/base.rb', line 199
def to_i
raise Sass::SyntaxError.new("#{inspect} is not an integer.")
end
|
#to_s(opts = {}) ⇒ String Also known as: to_sass
Returns the string representation of this value as it would be output to the CSS document.
243 244 245 |
# File 'lib/sass/script/value/base.rb', line 243
def to_s(opts = {})
Sass::Util.abstract(self)
end
|
#unary_div ⇒ Script::Value::String
The SassScript unary / operation (e.g. /$a).
145 146 147 |
# File 'lib/sass/script/value/base.rb', line 145
def unary_div
Sass::Script::Value::String.new("/#{self}")
end
|
#unary_minus ⇒ Script::Value::String
The SassScript unary - operation (e.g. -$a).
136 137 138 |
# File 'lib/sass/script/value/base.rb', line 136
def unary_minus
Sass::Script::Value::String.new("-#{self}")
end
|
#unary_not ⇒ Sass::Script::Value::Bool
The SassScript == operation.
Note that this returns a Sass::Script::Value::Bool object,
not a Ruby boolean.
80 81 82 |
# File 'lib/sass/script/value/base.rb', line 80
def unary_not
Sass::Script::Value::Bool.new(!to_bool)
end
|
#unary_plus ⇒ Script::Value::String
The SassScript unary + operation (e.g. +$a).
127 128 129 |
# File 'lib/sass/script/value/base.rb', line 127
def unary_plus
Sass::Script::Value::String.new("+#{self}")
end
|
#with_contents(contents, separator: self.separator, bracketed: self.bracketed) ⇒ Sass::Script::Value::List
Creates a new list containing contents but with the same brackets and
separators as this object, when interpreted as a list.
262 263 264 |
# File 'lib/sass/script/value/base.rb', line 262
def with_contents(contents, separator: self.separator, bracketed: self.bracketed)
Sass::Script::Value::List.new(contents, separator: separator, bracketed: bracketed)
end
|