view calc.tcl @ 178:9b8ec700ede4

Clean up the weather data parser backend a bit.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 03 Jun 2014 15:10:47 +0300
parents 50bf17f1ba39
children 44593f1fb916
line wrap: on
line source

##########################################################################
#
# Calc v0.4 by Matti 'ccr' Hamalainen <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 "Calc v0.4 by ccr/TNSP"

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} {

  # This is something rather perverse
  set equ [join [join $args ""] ""]

  # Use 'expr' to calculate the result, but catch any exceptions / errors
  if {[catch {set res [exec -- "/usr/local/bin/mfcalc" "$equ"]} uerrmsg]} {
    return $uerrmsg
  } else {
    return "$equ = $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
}

# -------------------------------------------------------------------------