]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/math.rb
uno plugin: fix playability check for Reverse vs +x
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / math.rb
index 4a207389b02bc8dad44f6d8f22c42f732ba0a709..f54733b33c0435e3e6a0d2ebd32a5e70f422b407 100644 (file)
@@ -22,6 +22,9 @@ class MathPlugin < Plugin
      "ten" => "10"
   };
 
+  def name
+    "math"
+  end
   def help(plugin, topic="")
     "math <expression>, evaluate mathematical expression"
   end
@@ -77,19 +80,20 @@ class MathPlugin < Plugin
     expr.gsub!(/\bover /, "/ ")
     expr.gsub!(/\bsquared/, "**2 ")
     expr.gsub!(/\bcubed/, "**3 ")
-    expr.gsub!(/\bto\s+(\d+)(r?st|nd|rd|th)?( power)?/, "**\1 ")
+    expr.gsub!(/\bto\s+(\d+)(r?st|nd|rd|th)?( power)?/, '**\1 ')
     expr.gsub!(/\bpercent of/, "*0.01*")
     expr.gsub!(/\bpercent/, "*0.01")
     expr.gsub!(/\% of\b/, "*0.01*")
     expr.gsub!(/\%/, "*0.01")
-    expr.gsub!(/\bsquare root of (\d+)/, "\1 ** 0.5 ")
-    expr.gsub!(/\bcubed? root of (\d+)/, "\1 **(1.0/3.0) ")
+    expr.gsub!(/\bsquare root of (\d+(\.\d+)?)/, '\1 ** 0.5 ')
+    expr.gsub!(/\bcubed? root of (\d+(\.\d+)?)/, '\1 **(1.0/3.0) ')
     expr.gsub!(/ of /, " * ")
     expr.gsub!(/(bit(-| )?)?xor(\'?e?d( with))?/, "^")
     expr.gsub!(/(bit(-| )?)?or(\'?e?d( with))?/, "|")
     expr.gsub!(/bit(-| )?and(\'?e?d( with))?/, "& ")
     expr.gsub!(/(plus|and)/, "+")
 
+    debug expr
     if (expr =~ /^\s*[-\d*+\s()\/^\.\|\&\*\!]+\s*$/ &&
        expr !~ /^\s*\(?\d+\.?\d*\)?\s*$/ &&
        expr !~ /^\s*$/ &&
@@ -108,7 +112,7 @@ class MathPlugin < Plugin
          end
          m.reply answer
        rescue Exception => e
-         puts "couldn't evaluate expression \"#{m.params}\": #{e}"
+         error "couldn't evaluate expression \"#{m.params}\": #{e.inspect}"
          m.reply "illegal expression \"#{m.params}\""
          return
        end
@@ -120,3 +124,4 @@ class MathPlugin < Plugin
 end
 plugin = MathPlugin.new
 plugin.register("math")
+plugin.register("maths")