Class: Red::AssignmentNode::OperatorNode
- Inherits:
-
Object
- Object
- Red::AssignmentNode::OperatorNode
show all
- Defined in:
- lib/red/assignment_nodes.rb
Overview
Defined Under Namespace
Classes: AndNode, BracketNode, DotNode, OrNode
Instance Method Summary
collapse
Instance Method Details
#call_to_increment? ⇒ 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
|