Mercurial > hg > egg-tcls
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 +} + +# -------------------------------------------------------------------------