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, 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
# File 'lib/sass/script/value/base.rb', line 22

def initialize(value = nil)
  value.freeze unless value.nil? || value == true || value == false
  @value = value
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



40
41
42
43
44
45
46
47
48
# File 'lib/sass/script/value/base.rb', line 40

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



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

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:



235
236
237
# File 'lib/sass/script/value/base.rb', line 235

def _perform(environment)
  self
end

#assert_int!

Raises:



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

def assert_int!; to_i; end

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

The SassScript / operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



119
120
121
# File 'lib/sass/script/value/base.rb', line 119

def div(other)
  Sass::Script::Value::String.new("#{to_s}/#{other.to_s}")
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:



57
58
59
# File 'lib/sass/script/value/base.rb', line 57

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

#eql?(other) ⇒ Boolean

Returns:

  • (Boolean)


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

def eql?(other)
  self == other
end

#hashFixnum

Returns the hash code of this value. Two objects' hash codes should be equal if the objects are equal.

Returns:

  • (Fixnum)

    The hash code.



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

def hash
  value.hash
end

#inspectString

Returns A readable representation of the value.

Returns:

  • (String)

    A readable representation of the value



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

def inspect
  value.inspect
end

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

The SassScript - operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



110
111
112
# File 'lib/sass/script/value/base.rb', line 110

def minus(other)
  Sass::Script::Value::String.new("#{to_s}-#{other.to_s}")
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:



68
69
70
# File 'lib/sass/script/value/base.rb', line 68

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



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

def null?
  false
end

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

The SassScript + operation.

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



98
99
100
101
102
103
# File 'lib/sass/script/value/base.rb', line 98

def plus(other)
  if other.is_a?(Sass::Script::Value::String)
    return Sass::Script::Value::String.new(to_s + other.value, other.type)
  end
  Sass::Script::Value::String.new(to_s + other.to_s)
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)


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

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:



89
90
91
# File 'lib/sass/script/value/base.rb', line 89

def single_eq(other)
  Sass::Script::Value::String.new("#{to_s}=#{other.to_s}")
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



200
201
202
# File 'lib/sass/script/value/base.rb', line 200

def to_a
  [self]
end

#to_boolBoolean

Returns true (the Ruby boolean value).

Returns:

  • (Boolean)

    true (the Ruby boolean value)



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

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:



209
210
211
# File 'lib/sass/script/value/base.rb', line 209

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

#to_iFixnum

Returns The integer value of this value.

Returns:

  • (Fixnum)

    The integer value of this value

Raises:



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

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:



217
218
219
# File 'lib/sass/script/value/base.rb', line 217

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:



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

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

#unary_minusScript::Value::String

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

Parameters:

  • other (Value)

    The right-hand side of the operator

Returns:



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

def unary_minus
  Sass::Script::Value::String.new("-#{to_s}")
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:



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

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:



128
129
130
# File 'lib/sass/script/value/base.rb', line 128

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