diff calc.tcl @ 72:fd300fe87f59

Renamed laske.tcl to calc.tcl
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 11 Sep 2011 17:54:12 +0300
parents laske.tcl@50cbd24feadf
children fccfbcbb06e4
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calc.tcl	Sun Sep 11 17:54:12 2011 +0300
@@ -0,0 +1,79 @@
+##########################################################################
+#
+# Calc v0.4 by ccr/TNSP <ccr@tnsp.org>
+# (C) Copyright 2008-2011 Tecnic Software productions (TNSP) 
+#
+# A simple calculator for Eggdrop.
+#
+# This script is freely distributable under GNU GPL (version 2) license.
+#
+##########################################################################
+
+# Error message for when no arguments given to the command
+set calc_err_noargs "Laalis?"
+
+set calc_preferredmsg "PRIVMSG"
+
+
+##########################################################################
+# No need to look below this line
+##########################################################################
+set calc_message "Laske v0.4 by ccr/TNSP"
+#set calc_reps [split "\$|| ||^|**|pi|3.14159265|e|2.71828183" "|"]
+set calc_reps [split "\$||\;||^|**|pi|3.141592653589793238|PI|3.141592653589793238|e|2.71828183" "|"]
+
+putlog "$calc_message"
+bind pub - !laske calc_pubmsg
+bind msg - laske calc_msg
+
+
+# ------------------------------------------------------------------------
+proc calc_smsg {udest umsg} {
+  global calc_preferredmsg
+  putserv "$calc_preferredmsg $udest :$umsg"
+}
+
+# ------------------------------------------------------------------------
+proc calc_do {args} {
+  global calc_reps
+
+  # This is something rather perverse
+  set lasku [join [join [string map $calc_reps $args] ""] ""]
+
+  # Use 'expr' to calculate the result, but catch any exceptions / errors
+  if {[catch { set res [expr $lasku] } errmsg]} {
+    return $errmsg
+  } else {
+    return "$lasku = $res"
+  }
+}
+
+# ------------------------------------------------------------------------
+proc calc_pubmsg {nick uhost hand chan args} {
+  global calc_err_noargs
+
+  if {$args == {} || $args == ""} {
+    calc_smsg $chan "$calc_err_noargs"
+    return 1
+  }
+
+  set result [calc_do $args]
+  calc_smsg $chan "$nick, $result"
+  return 1
+}
+
+# -------------------------------------------------------------------------  
+proc calc_msg {nick uhost hand args} {
+  global calc_err_noargs
+
+  if {$args == {} || $args == ""} {
+    calc_smsg $nick "$calc_err_noargs"
+    return 1
+  }
+  
+  set result [calc_do $args]
+  calc_smsg $nick "$result"
+  return 1
+}
+
+# -------------------------------------------------------------------------