Class: Sass::Script::Literal

Inherits:
Node
  • Object
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, List, Null, Number, String

Instance Attribute Summary collapse

Attributes inherited from Node

#line

Instance Method Summary collapse

Methods inherited from Node

#dasherize, #opts, #perform

Constructor Details

#initialize(value = nil) ⇒ Literal

Creates a new literal.



25
26
27
28
# File 'lib/sass/script/literal.rb', line 25

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

Instance Attribute Details

#valueObject (readonly)

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



20
21
22
# File 'lib/sass/script/literal.rb', line 20

def value
  @value
end

Instance Method Details

#==(other) ⇒ Boolean

Compares this object with another.



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

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

#_perform(environment) ⇒ Literal (protected)

Evaluates the literal.



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

def _perform(environment)
  self
end

#assert_int!

Raises:



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

def assert_int!; to_i; end

#childrenArray<Node>

Returns an empty array.

See Also:



34
35
36
# File 'lib/sass/script/literal.rb', line 34

def children
  []
end

#deep_copy

See Also:



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

def deep_copy
  dup
end

#div(other) ⇒ Script::String

The SassScript / operation.



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

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.



67
68
69
# File 'lib/sass/script/literal.rb', line 67

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

#inspectString



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

def inspect
  value.inspect
end

#minus(other) ⇒ Script::String

The SassScript - operation.



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

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.



78
79
80
# File 'lib/sass/script/literal.rb', line 78

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

#null?Boolean

Returns whether or not this object is null.



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

def null?
  false
end

#options{Symbol => Object}

Returns the options hash for this node.

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



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

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

#plus(other) ⇒ Script::String

The SassScript + operation.



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

def plus(other)
  if other.is_a?(Sass::Script::String)
    return Sass::Script::String.new(self.to_s + other.value, other.type)
  end
  Sass::Script::String.new(self.to_s + other.to_s)
end

#single_eq(other) ⇒ Script::String

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



99
100
101
# File 'lib/sass/script/literal.rb', line 99

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

#to_aArray<Literal>

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



191
192
193
# File 'lib/sass/script/literal.rb', line 191

def to_a
  [self]
end

#to_boolBoolean



166
167
168
# File 'lib/sass/script/literal.rb', line 166

def to_bool
  true
end

#to_iFixnum

Returns The integer value of this literal.

Raises:



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

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

#to_s(opts = {}) ⇒ String Also known as: to_sass

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

Raises:



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

def to_s(opts = {})
  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).



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

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

#unary_minusScript::String

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



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

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.



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

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

#unary_plusScript::String

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



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

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