Class: Sass::Script::UnaryOperation

Inherits:
Node show all
Defined in:
lib/sass/script/unary_operation.rb

Overview

A SassScript parse node representing a unary operation, such as -!b or not true.

Currently only -, /, and not are unary operators.

Instance Method Summary collapse

Constructor Details

#initialize(operand, operator) ⇒ UnaryOperation

Returns a new instance of UnaryOperation.

Parameters:

  • operand (Script::Node)

    The parse-tree node for the object of the operator

  • operator (Symbol)

    The operator to perform



10
11
12
13
# File 'lib/sass/script/unary_operation.rb', line 10

def initialize(operand, operator)
  @operand = operand
  @operator = operator
end

Instance Method Details

#inspectString

Returns A human-readable s-expression representation of the operation.

Returns:

  • (String)

    A human-readable s-expression representation of the operation



16
17
18
# File 'lib/sass/script/unary_operation.rb', line 16

def inspect
  "(#{@operator.inspect} #{@operand.inspect})"
end

#perform(environment) ⇒ Literal

Evaluates the operation.

Parameters:

  • environment (Sass::Environment)

    The environment in which to evaluate the SassScript

Returns:

  • (Literal)

    The SassScript object that is the value of the operation

Raises:



25
26
27
28
29
30
31
32
# File 'lib/sass/script/unary_operation.rb', line 25

def perform(environment)
  operator = "unary_#{@operator}"
  literal = @operand.perform(environment)
  literal.send(operator)
rescue NoMethodError => e
  raise e unless e.name.to_s == operator.to_s
  raise Sass::SyntaxError.new("Undefined unary operation: \"#{@operator} #{literal}\".")
end