Class: Sass::Script::Value::Base

Inherits:
Object
  • Object
show all
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.

Direct Known Subclasses

Bool, Callable, Color, List, Map, Null, Number, String

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value = nil) ⇒ Base

Creates a new value.

Parameters:

  • value (Object) (defaults to: nil)

    The object for #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.

Returns:

  • ({Symbol => Object})

Raises:

  • (Sass::SyntaxError)

    if the options hash hasn't been set. This should only happen when the value was created outside of the parser and #to_s was called on it



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_rangeSass::Source::Range

The source range in the document on which this node appeared.

Returns:



17
18
19
# File 'lib/sass/script/value/base.rb', line 17

def source_range
  @source_range
end

#valueObject (readonly)

Returns the Ruby value of the value. The type of this value varies based on the subclass.

Returns:

  • (Object)


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.

Parameters:

  • other (Object)

    The object to compare with

Returns:

  • (Boolean)

    Whether or not this value is equivalent to other



175
176
177
# File 'lib/sass/script/value/base.rb', line 175

def ==(other)
  eq(other).to_bool
end

#_perform(environment) ⇒ Value (protected)

Evaluates the value.

Parameters:

  • environment (Sass::Environment)

    The environment in which to evaluate the SassScript

Returns:



254
255
256
# File 'lib/sass/script/value/base.rb', line 254

def _perform(environment)
  self
end

#assert_int!

Raises:



186
# File 'lib/sass/script/value/base.rb', line 186

def assert_int!; to_i; end

#bracketedBoolean

Whether the value is surrounded by square brackets. For non-list values, this will be false.

Returns:

  • (Boolean)


199
# File 'lib/sass/script/value/base.rb', line 199

def bracketed; false; end

#div(other) ⇒ Script::Value::String

The SassScript / operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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

Returns:

  • (Boolean)


157
158
159
# File 'lib/sass/script/value/base.rb', line 157

def eql?(other)
  self == other
end

#hashInteger 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.

Returns:

  • (Integer for Ruby 2.4.0+, Fixnum for earlier Ruby versions)

    The hash code.



153
154
155
# File 'lib/sass/script/value/base.rb', line 153

def hash
  value.hash
end

#inspectString

Returns A readable representation of the value.

Returns:

  • (String)

    A readable representation of the value



162
163
164
# File 'lib/sass/script/value/base.rb', line 162

def inspect
  value.inspect
end

#minus(other) ⇒ Script::Value::String

The SassScript - operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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.

Returns:

  • (Boolean)

    false



233
234
235
# File 'lib/sass/script/value/base.rb', line 233

def null?
  false
end

#plus(other) ⇒ Script::Value::String

The SassScript + operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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

#separatorSymbol

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.

Returns:

  • (Symbol)


193
# File 'lib/sass/script/value/base.rb', line 193

def separator; nil; end

#single_eq(other) ⇒ Script::Value::String

The SassScript = operation (used for proprietary MS syntax like alpha(opacity=20)).

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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_aArray<Value>

Returns the value of this value as a list. Single values are considered the same as single-element lists.

Returns:

  • (Array<Value>)

    This value as a list



205
206
207
# File 'lib/sass/script/value/base.rb', line 205

def to_a
  [self]
end

#to_boolBoolean

Returns true (the Ruby boolean value).

Returns:

  • (Boolean)

    true (the Ruby boolean value)



167
168
169
# File 'lib/sass/script/value/base.rb', line 167

def to_bool
  true
end

#to_hHash<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.

Returns:

Raises:



214
215
216
# File 'lib/sass/script/value/base.rb', line 214

def to_h
  raise Sass::SyntaxError.new("#{inspect} is not a map.")
end

#to_iInteger

Returns The integer value of this value.

Returns:

  • (Integer)

    The integer value of this value

Raises:



181
182
183
# File 'lib/sass/script/value/base.rb', line 181

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.

Returns:



225
226
227
# File 'lib/sass/script/value/base.rb', line 225

def to_s(opts = {})
  Sass::Util.abstract(self)
end

#unary_divScript::Value::String

The SassScript unary / operation (e.g. /$a).

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



145
146
147
# File 'lib/sass/script/value/base.rb', line 145

def unary_div
  Sass::Script::Value::String.new("/#{self}")
end

#unary_minusScript::Value::String

The SassScript unary - operation (e.g. -$a).

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



136
137
138
# File 'lib/sass/script/value/base.rb', line 136

def unary_minus
  Sass::Script::Value::String.new("-#{self}")
end

#unary_notSass::Script::Value::Bool

The SassScript == operation. Note that this returns a Sass::Script::Value::Bool object, not a Ruby boolean.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



80
81
82
# File 'lib/sass/script/value/base.rb', line 80

def unary_not
  Sass::Script::Value::Bool.new(!to_bool)
end

#unary_plusScript::Value::String

The SassScript unary + operation (e.g. +$a).

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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.

Parameters:

  • contents (Array<Value>)

    The contents of the new list.

  • separator (Symbol) (defaults to: self.separator)

    The separator of the new list. Defaults to #separator.

  • bracketed (Boolean) (defaults to: self.bracketed)

    Whether the new list is bracketed. Defaults to #bracketed.

Returns:



244
245
246
# File 'lib/sass/script/value/base.rb', line 244

def with_contents(contents, separator: self.separator, bracketed: self.bracketed)
  Sass::Script::Value::List.new(contents, separator: separator, bracketed: bracketed)
end