Parent

Class/Module Index [+]

Quicksearch

Sass::Script::UnaryOperation

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

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

Public Class Methods

new(operand, operator) click to toggle source

@param operand [Script::Node] The parse-tree node

for the object of the operator

@param operator [Symbol] The operator to perform

# File lib/sass/script/unary_operation.rb, line 10
def initialize(operand, operator)
  @operand = operand
  @operator = operator
  super()
end

Public Instance Methods

children() click to toggle source

Returns the operand of the operation.

@return [Array<Node>] @see Node#children

# File lib/sass/script/unary_operation.rb, line 37
def children
  [@operand]
end
deep_copy() click to toggle source

@see Node#deep_copy

# File lib/sass/script/unary_operation.rb, line 42
def deep_copy
  node = dup
  node.instance_variable_set('@operand', @operand.deep_copy)
  node
end
inspect() click to toggle source

@return [String] A human-readable s-expression representation of the operation

# File lib/sass/script/unary_operation.rb, line 17
def inspect
  "(#{@operator.inspect} #{@operand.inspect})"
end
to_sass(opts = {}) click to toggle source

@see Node#to_sass

# File lib/sass/script/unary_operation.rb, line 22
def to_sass(opts = {})
  operand = @operand.to_sass(opts)
  if @operand.is_a?(Operation) ||
      (@operator == :minus &&
       (operand =~ Sass::SCSS::RX::IDENT) == 0)
    operand = "(#{@operand.to_sass(opts)})"
  end
  op = Lexer::OPERATORS_REVERSE[@operator]
  op + (op =~ /[a-z]/ ? " " : "") + operand
end

Protected Instance Methods

_perform(environment) click to toggle source

Evaluates the operation.

@param environment [Sass::Environment] The environment in which to evaluate the SassScript @return [Literal] The SassScript object that is the value of the operation @raise [Sass::SyntaxError] if the operation is undefined for the operand

# File lib/sass/script/unary_operation.rb, line 55
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

[Validate]

Generated with the Darkfish Rdoc Generator 2.