Mercurial > hg > egg-tcls
changeset 287:748c6b44f572
weather: Fix translation routine.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Fri, 23 Jan 2015 17:21:42 +0200 |
parents | 899128d7c408 |
children | 135e6c628164 |
files | weather.tcl |
diffstat | 1 files changed, 26 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/weather.tcl Fri Jan 23 17:07:21 2015 +0200 +++ b/weather.tcl Fri Jan 23 17:21:42 2015 +0200 @@ -137,48 +137,43 @@ #------------------------------------------------------------------------- -proc weather_translate_msg {amsg aargs} { - set aresult "" - foreach aitem $amsg { - set atmp $aitem - foreach {akey aval} [array get aargs] { - set atmp [string map [list "@${akey}@" $aval] $atmp] - } - if {$atmp != $aitem} { - append aresult $atmp - } - } - return $amsg -} - - # Produce one location of weather data as a string proc weather_get_data {udata ukey} { global weather_msg_result + # Set data to array array unset uvals - array set uvals { - station [lindex udata 0] - vtime [lindex udata 2] - ctime [weather_ctime [lindex udata 2]] - temp [lindex udata 3] - } + set uvals(station) [lindex $udata 0] + set uvals(type) [lindex $udata 1] + set uvals(vtime) [lindex $udata 2] + set uvals(ctime) [weather_ctime [lindex $udata 2]] + set uvals(temp) [lindex $udata 3] if {[lindex $udata 1] == 0} { - array set uvals { - weather1 [lindex udata 5] - weather2 [lindex udata 6] - road_temp [lindex udata 4] + set uvals(weather1) [lindex $udata 5] + set uvals(weather2) [lindex $udata 6] + set uvals(road_temp) [lindex $udata 4] + } else { + set uvals(humidity) [lindex $udata 4] + set uvals(wind_speed) [lindex $udata 5] + set uvals(cloud_cover) [lindex $udata 6] + } + + # Transform the format list + set astr "" + foreach aitem $weather_msg_result { + set atmp $aitem + foreach {akey aval} [array get uvals] { + if {$aval != ""} { + set atmp [string map [list "@${akey}@" $aval] $atmp] + } } - } else { - array set uvals { - humidity [lindex udata 4] - wind_speed [lindex udata 5] - cloud_cover [lindex udata 6] + if {$atmp != $aitem} { + append astr $atmp } } - return "[weather_translate_msg $weather_msg_result $uvals]." + return "$astr." }