def receive_last
sign = tree.first.to_sym
rets = @node['rets']
rets << node_payload_ret \
if rets.empty? && node_payload_ret.is_a?(Array)
rets = rets[0] \
if rets.size == 1 && rets[0].is_a?(Array)
fail Flor::FlorError.new('modulo % requires at least 2 arguments', self) \
if sign == :% && rets.size < 2
if j = att('join')
max = rets.size - 1
rets = rets.each_with_index.inject([]) { |a, (e, i)|
a << e
a << j if i < max
a }
rets[0] = stringify(rets[0]) \
if rets.any? && j.is_a?(String)
end
ret =
if rets.compact.empty?
DEFAULTS[sign]
elsif sign == :+
rets.reduce { |r, e|
r + (r.is_a?(String) ? stringify(e) : e) }
else
rets = rets.collect(&:to_f) \
if sign == :/ || rets.find { |r| r.is_a?(Float) }
rets.reduce(&sign)
end
unless ret.is_a?(String)
round = ret.round
ret = round if round.to_f.to_s == ret.to_f.to_s
end
wrap_reply('ret' => ret)
end