class Sass::Script::Value::Base

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.

Attributes

options[W]

Sets the options hash for this node, as well as for all child nodes. See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}.

@param options [{Symbol => Object}] The options

source_range[RW]

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

@return [Sass::Source::Range]

value[R]

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

@return [Object]

Public Class Methods

new(value = nil) click to toggle source

Creates a new value.

@param value [Object] The object for {#value}

# 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

Public Instance Methods

==(other) click to toggle source

Compares this object with another.

@param other [Object] The object to compare with @return [Boolean] Whether or not this value is equivalent to `other`

# File lib/sass/script/value/base.rb, line 174
def ==(other)
  eq(other).to_bool
end
assert_int!() click to toggle source

@raise [Sass::SyntaxError] if this value isn't an integer

# File lib/sass/script/value/base.rb, line 185
def assert_int!; to_i; end
div(other) click to toggle source

The SassScript `/` operation.

@param other [Value] The right-hand side of the operator @return [Script::Value::String] A string containing both values

separated by `"/"`
# File lib/sass/script/value/base.rb, line 117
def div(other)
  Sass::Script::Value::String.new("#{to_s}/#{other.to_s}")
end
eq(other) click to toggle source

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

@param other [Value] The right-hand side of the operator @return [Sass::Script::Value::Bool] True if this value is the same as the other,

false otherwise
# 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) click to toggle source
# File lib/sass/script/value/base.rb, line 156
def eql?(other)
  self == other
end
hash() click to toggle source

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

@return [Fixnum] The hash code.

# File lib/sass/script/value/base.rb, line 152
def hash
  value.hash
end
inspect() click to toggle source

@return [String] A readable representation of the value

# File lib/sass/script/value/base.rb, line 161
def inspect
  value.inspect
end
minus(other) click to toggle source

The SassScript `-` operation.

@param other [Value] The right-hand side of the operator @return [Script::Value::String] A string containing both values

separated by `"-"`
# File lib/sass/script/value/base.rb, line 108
def minus(other)
  Sass::Script::Value::String.new("#{to_s}-#{other.to_s}")
end
neq(other) click to toggle source

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

@param other [Value] The right-hand side of the operator @return [Sass::Script::Value::Bool] False if this value is the same as the other,

true otherwise
# File lib/sass/script/value/base.rb, line 68
def neq(other)
  Sass::Script::Value::Bool.new(!eq(other).to_bool)
end
null?() click to toggle source

Returns whether or not this object is null.

@return [Boolean] `false`

# File lib/sass/script/value/base.rb, line 226
def null?
  false
end
options() click to toggle source

Returns the options hash for this node.

@return [{Symbol => Object}] @raise [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
# File lib/sass/script/value/base.rb, line 40
    def options
      return @options if @options
      raise Sass::SyntaxError.new("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.
")
    end
plus(other) click to toggle source

The SassScript `+` operation.

@param other [Value] The right-hand side of the operator @return [Script::Value::String] A string containing both values

without any separation
# File lib/sass/script/value/base.rb, line 98
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() click to toggle source

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`.

@return [Symbol]

# File lib/sass/script/value/base.rb, line 192
def separator; nil; end
single_eq(other) click to toggle source

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

@param other [Value] The right-hand side of the operator @return [Script::Value::String] A string containing both values

separated by `"="`
# 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_a() click to toggle source

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

@return [Array<Value>] This value as a list

# File lib/sass/script/value/base.rb, line 198
def to_a
  [self]
end
to_bool() click to toggle source

@return [Boolean] `true` (the Ruby boolean value)

# File lib/sass/script/value/base.rb, line 166
def to_bool
  true
end
to_h() click to toggle source

Returns the value of this value as a hash. Most values don't have hash representations, but [Map]s and empty [List]s do.

@return [Hash<Value, Value>] This value as a hash @raise [Sass::SyntaxError] if this value doesn't have a hash representation

# File lib/sass/script/value/base.rb, line 207
def to_h
  raise Sass::SyntaxError.new("#{inspect} is not a map.")
end
to_i() click to toggle source

@return [Fixnum] The integer value of this value @raise [Sass::SyntaxError] if this value isn't an integer

# File lib/sass/script/value/base.rb, line 180
def to_i
  raise Sass::SyntaxError.new("#{inspect} is not an integer.")
end
to_s(opts = {}) click to toggle source

Returns the string representation of this value as it would be output to the CSS document.

@options opts :quote [String]

The preferred quote style for quoted strings. If `:none`, strings are
always emitted unquoted.

@return [String]

# File lib/sass/script/value/base.rb, line 218
def to_s(opts = {})
  Sass::Util.abstract(self)
end
Also aliased as: to_sass
to_sass(opts = {})
Alias for: to_s
unary_div() click to toggle source

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

@param other [Value] The right-hand side of the operator @return [Script::Value::String] A string containing the value

preceded by `"/"`
# File lib/sass/script/value/base.rb, line 144
def unary_div
  Sass::Script::Value::String.new("/#{to_s}")
end
unary_minus() click to toggle source

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

@param other [Value] The right-hand side of the operator @return [Script::Value::String] A string containing the value

preceded by `"-"`
# File lib/sass/script/value/base.rb, line 135
def unary_minus
  Sass::Script::Value::String.new("-#{to_s}")
end
unary_not() click to toggle source

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

@param other [Value] The right-hand side of the operator @return [Sass::Script::Value::Bool] True if this value is the same as the other,

false otherwise
# File lib/sass/script/value/base.rb, line 79
def unary_not
  Sass::Script::Value::Bool.new(!to_bool)
end
unary_plus() click to toggle source

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

@param other [Value] The right-hand side of the operator @return [Script::Value::String] A string containing the value

preceded by `"+"`
# File lib/sass/script/value/base.rb, line 126
def unary_plus
  Sass::Script::Value::String.new("+#{to_s}")
end

Protected Instance Methods

_perform(environment) click to toggle source

Evaluates the value.

@param environment [Sass::Environment] The environment in which to evaluate the SassScript @return [Value] This value

# File lib/sass/script/value/base.rb, line 236
def _perform(environment)
  self
end