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



164
165
166
# File 'lib/sass/script/literal.rb', line 164

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



40
41
42
# File 'lib/sass/script/literal.rb', line 40

def and(other)
  to_bool ? other : self
end

#assert_int!Object

Raises:



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

def assert_int!; to_i; 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 ", "



101
102
103
# File 'lib/sass/script/literal.rb', line 101

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



92
93
94
# File 'lib/sass/script/literal.rb', line 92

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 "/"



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

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



61
62
63
# File 'lib/sass/script/literal.rb', line 61

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



151
152
153
# File 'lib/sass/script/literal.rb', line 151

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 "-"



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

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



72
73
74
# File 'lib/sass/script/literal.rb', line 72

def neq(other)
  Sass::Script::Bool.new(!eq(other).to_bool)
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



50
51
52
# File 'lib/sass/script/literal.rb', line 50

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



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

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)



156
157
158
# File 'lib/sass/script/literal.rb', line 156

def to_bool
  true
end

#to_iFixnum

Returns The integer value of this literal.

Returns:

  • (Fixnum)

    The integer value of this literal

Raises:



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

def to_i
  raise Sass::SyntaxError.new("#{self.inspect} is not an integer.")
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 "/"



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

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 "-"



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

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



83
84
85
# File 'lib/sass/script/literal.rb', line 83

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