96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# File 'lib/red/nodes/assignment_nodes.rb', line 96
def initialize(receiver_sexp, writer_sexp, method_sexp, expression_sexp, options)
receiver = receiver_sexp.red!(:as_receiver => true)
reader = writer_sexp.to_s.gsub(/=/,'').to_sym.red!
writer = writer_sexp.red!
method = (METHOD_ESCAPE[method_sexp] || method_sexp).red!
expression = expression_sexp.red!(:as_argument => true)
object = "%s.m$%s()" % [receiver, reader]
unless string = ((method == '||' && LogicNode::Conjunction::Or::STRING) || (method == '&&' && LogicNode::Conjunction::And::STRING))
operation = "%s.m$%s(%s)" % [object, method, expression]
else
operation = string % [object, expression]
end
self << "%s.m$%s(%s)" % [receiver, writer, operation]
end
|