Class: Red::AssignmentNode::OperatorNode

Inherits:
Object
  • Object
show all
Defined in:
lib/red/assignment_nodes.rb

Overview

:nodoc:

Direct Known Subclasses

AndNode, BracketNode, DotNode, OrNode

Defined Under Namespace

Classes: AndNode, BracketNode, DotNode, OrNode

Instance Method Summary collapse

Instance Method Details

#call_to_increment?Boolean

Returns:

  • (Boolean)


100
101
102
# File 'lib/red/assignment_nodes.rb', line 100

def call_to_increment?
  return ['+', '-'].include?(@operation.compile_node) && @expression.compile_node == '1'
end

#compile_increment(options = {}) ⇒ Object



84
85
86
87
88
89
# File 'lib/red/assignment_nodes.rb', line 84

def compile_increment(options = {})
  receiver, operation = [@receiver, @operation].compile_nodes
  slot = @slot.compile_node(:quotes => '')
  original = self.compile_receiver(receiver, slot)
  return "%s%s" % [original, operation * 2]
end

#compile_internals(options = {}) ⇒ Object



91
92
93
94
95
96
97
98
# File 'lib/red/assignment_nodes.rb', line 91

def compile_internals(options = {})
  receiver, operation = [@receiver, @operation].compile_nodes
  expression = @expression.compile_node(:as_argument => true)
  slot       = @slot.compile_node(:quotes => '')
  original   = self.compile_receiver(receiver, slot)
  var        = (self.var? rescue nil)
  return [var, original, original, operation, expression]
end

#compile_node(options = {}) ⇒ Object



79
80
81
82
# File 'lib/red/assignment_nodes.rb', line 79

def compile_node(options = {})
  return self.compile_increment if self.call_to_increment?
  return "%s%s = %s %s %s" % self.compile_internals
end