Class: Sass::Script::Literal

Inherits:
Node show all
Defined in:
lib/sass/script/literal.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, Number, String

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value = nil) ⇒ Literal

Creates a new literal.

Parameters:

  • value (Object) (defaults to: nil)

    The object for #value



22
23
24
# File 'lib/sass/script/literal.rb', line 22

def initialize(value = nil)
  @value = value
end

Instance Attribute Details

#valueObject (readonly)

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

Returns:



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

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 literal is equivalent to other



189
190
191
# File 'lib/sass/script/literal.rb', line 189

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

#and(other) ⇒ Literal

The SassScript and operation.

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Literal)

    The result of a logical and: other if this literal isn't a false Bool, and this literal otherwise



65
66
67
# File 'lib/sass/script/literal.rb', line 65

def and(other)
  to_bool ? other : self
end

#assert_int!

Raises:



200
# File 'lib/sass/script/literal.rb', line 200

def assert_int!; to_i; end

#childrenArray<Node>

Returns an empty array.

Returns:

  • (Array<Node>)

    empty

See Also:



38
39
40
# File 'lib/sass/script/literal.rb', line 38

def children
  []
end

#comma(other) ⇒ Script::String

The SassScript , operation (e.g. !a, !b, "foo", "bar").

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Script::String)

    A string containing both literals separated by ", "



126
127
128
# File 'lib/sass/script/literal.rb', line 126

def comma(other)
  Sass::Script::String.new("#{self.to_s}, #{other.to_s}")
end

#concat(other) ⇒ Script::String

The SassScript default operation (e.g. !a !b, "foo" "bar").

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Script::String)

    A string containing both literals separated by a space



117
118
119
# File 'lib/sass/script/literal.rb', line 117

def concat(other)
  Sass::Script::String.new("#{self.to_s} #{other.to_s}")
end

#div(other) ⇒ Script::String

The SassScript / operation.

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Script::String)

    A string containing both literals separated by "/"



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

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

#eq(other) ⇒ Bool

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

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Bool)

    True if this literal is the same as the other, false otherwise



86
87
88
# File 'lib/sass/script/literal.rb', line 86

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

#inspectString

Returns A readable representation of the literal.

Returns:

  • (String)

    A readable representation of the literal



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

def inspect
  value.inspect
end

#minus(other) ⇒ Script::String

The SassScript - operation.

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Script::String)

    A string containing both literals separated by "-"



144
145
146
# File 'lib/sass/script/literal.rb', line 144

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

#neq(other) ⇒ Bool

The SassScript != operation. Note that this returns a Bool object, not a Ruby boolean.

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Bool)

    False if this literal is the same as the other, true otherwise



97
98
99
# File 'lib/sass/script/literal.rb', line 97

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

#options{Symbol => Object}

Returns the options hash for this node.

Returns:

Raises:

  • (Sass::SyntaxError)

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



48
49
50
51
52
53
54
55
56
57
# File 'lib/sass/script/literal.rb', line 48

def options
  opts = super
  return opts if opts
  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 literal within a custom Sass function without first
  setting the #option attribute.
MSG
end

#or(other) ⇒ Literal

The SassScript or operation.

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Literal)

    The result of the logical or: this literal if it isn't a false Bool, and other otherwise



75
76
77
# File 'lib/sass/script/literal.rb', line 75

def or(other)
  to_bool ? self : other
end

#perform(environment) ⇒ Literal

Evaluates the literal.

Parameters:

  • environment (Sass::Environment)

    The environment in which to evaluate the SassScript

Returns:



30
31
32
# File 'lib/sass/script/literal.rb', line 30

def perform(environment)
  self
end

#plus(other) ⇒ Script::String

The SassScript + operation.

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Script::String)

    A string containing both literals without any separation



135
136
137
# File 'lib/sass/script/literal.rb', line 135

def plus(other)
  Sass::Script::String.new(self.to_s + other.to_s)
end

#to_boolBoolean

Returns true (the Ruby boolean value).

Returns:

  • (Boolean)

    true (the Ruby boolean value)



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

def to_bool
  true
end

#to_iFixnum

Returns The integer value of this literal.

Returns:

  • (Fixnum)

    The integer value of this literal

Raises:



195
196
197
# File 'lib/sass/script/literal.rb', line 195

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

#to_sString

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

Returns:

Raises:



206
207
208
# File 'lib/sass/script/literal.rb', line 206

def to_s
  raise Sass::SyntaxError.new("[BUG] All subclasses of Sass::Literal must implement #to_s.")
end

#unary_divScript::String

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

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Script::String)

    A string containing the literal preceded by "/"



171
172
173
# File 'lib/sass/script/literal.rb', line 171

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

#unary_minusScript::String

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

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Script::String)

    A string containing the literal preceded by "-"



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

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

#unary_notBool

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

Parameters:

  • other (Literal)

    The right-hand side of the operator

Returns:

  • (Bool)

    True if this literal is the same as the other, false otherwise



108
109
110
# File 'lib/sass/script/literal.rb', line 108

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