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

Inherits:
Object
  • Object
show all
Defined in:
/home/nweiz/code/sass-site/.sass/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

- (Base) initialize(value = nil)

Creates a new value.

Parameters:

  • value (Object) (defaults to: nil)

    The object for #value



22
23
24
25
26
# File '/home/nweiz/code/sass-site/.sass/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

- ({Symbol => Object}) options

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 '/home/nweiz/code/sass-site/.sass/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

- (Sass::Source::Range) source_range

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

Returns:



17
18
19
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 17

def source_range
  @source_range
end

- (Object) value (readonly)

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

Returns:

  • (Object)


12
13
14
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 12

def value
  @value
end

Instance Method Details

- (Boolean) ==(other)

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 175

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

- (Value) _perform(environment) (protected)

Evaluates the value.

Parameters:

  • environment (Sass::Environment)

    The environment in which to evaluate the SassScript

Returns:



254
255
256
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 254

def _perform(environment)
  self
end

- assert_int!

Raises:



186
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 186

def assert_int!; to_i; end

- (Boolean) bracketed

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

Returns:

  • (Boolean)


199
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 199

def bracketed; false; end

- (Script::Value::String) div(other)

The SassScript / operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



118
119
120
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 118

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

- (Sass::Script::Value::Bool) eq(other)

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 58

def eq(other)
  Sass::Script::Value::Bool.new(self.class == other.class && value == other.value)
end

- (Boolean) eql?(other)

Returns:

  • (Boolean)


157
158
159
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 157

def eql?(other)
  self == other
end

- (Integer for Ruby 2.4.0+, Fixnum for earlier Ruby versions) hash

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 153

def hash
  value.hash
end

- (String) inspect

Returns A readable representation of the value

Returns:

  • (String)

    A readable representation of the value



162
163
164
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 162

def inspect
  value.inspect
end

- (Script::Value::String) minus(other)

The SassScript - operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



109
110
111
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 109

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

- (Sass::Script::Value::Bool) neq(other)

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 69

def neq(other)
  Sass::Script::Value::Bool.new(!eq(other).to_bool)
end

- (Boolean) null?

Returns whether or not this object is null.

Returns:

  • (Boolean)

    false



233
234
235
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 233

def null?
  false
end

- (Script::Value::String) plus(other)

The SassScript + operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



99
100
101
102
# File '/home/nweiz/code/sass-site/.sass/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

- (Symbol) separator

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 193

def separator; nil; end

- (Script::Value::String) single_eq(other)

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 90

def single_eq(other)
  Sass::Script::Value::String.new("#{self}=#{other}")
end

- (Array<Value>) to_a

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 205

def to_a
  [self]
end

- (Boolean) to_bool

Returns true (the Ruby boolean value)

Returns:

  • (Boolean)

    true (the Ruby boolean value)



167
168
169
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 167

def to_bool
  true
end

- (Hash<Value, Value>) to_h

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 214

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

- (Integer) to_i

Returns The integer value of this value

Returns:

  • (Integer)

    The integer value of this value

Raises:



181
182
183
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 181

def to_i
  raise Sass::SyntaxError.new("#{inspect} is not an integer.")
end

- (String) to_s(opts = {}) 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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 225

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

- (Script::Value::String) unary_div

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

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



145
146
147
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 145

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

- (Script::Value::String) unary_minus

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

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



136
137
138
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 136

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

- (Sass::Script::Value::Bool) unary_not

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 '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 80

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

- (Script::Value::String) unary_plus

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

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



127
128
129
# File '/home/nweiz/code/sass-site/.sass/lib/sass/script/value/base.rb', line 127

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

- (Sass::Script::Value::List) with_contents(contents, separator: self.separator, bracketed: self.bracketed)

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)

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

  • bracketed (Boolean)

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

Returns:



244
245
246
# File '/home/nweiz/code/sass-site/.sass/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