class Descartes::RPN
Public Instance Methods
help(m)
click to toggle source
# File lib/descartes/modules/rpn.rb, line 39 def help(m) m.reply '!rpn n1 n2 (...) n3 [+|-|*|/|^]' end
rpn(m)
click to toggle source
# File lib/descartes/modules/rpn.rb, line 20 def rpn(m) query = m.params[1].split('!rpn ')[1] m.reply [].tap { |res| query.split.each { |i| case i when /\d/ res << i.to_f when ?+, ?-, ?*, ?/, ?^ i = '**' if i == ?^ res << [].tap { |a| a << res.pop while res.last.class == Float }.inject(i) end } }.last end