class Sass::Script::Value::Base - sass-3.4.14 Documentation

# 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 %x`"/"`

    # 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 %x`"-"`

    # 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 %x`"="`

    # 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 %x`"/"`

    # 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 %x`"-"`

    # 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 %x`"+"`

    # 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