Mercurial > hg > egg-tcls
view calc.tcl @ 430:8efbb045d44d
weather: Implement searching for nearest of measurement stations based on given lat/long coordinates.
The distance calculation is naive pythagoraean one, should be changed to "Great circle distance"
https://en.wikipedia.org/wiki/Great-circle_distance. (C implementation already done, just needs TCL-ization.)
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Sun, 08 Jan 2017 05:08:38 +0200 |
parents | 825cac46b1cb |
children | b45fc205f425 |
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 external binary to calculate the result, but catch any exceptions / errors if {[catch {set res [exec -- "/usr/local/bin/mfcalc" "$equ"]} uerrmsg]} { return $uerrmsg } else { return "$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 } # -------------------------------------------------------------------------