diff weather.tcl @ 287:748c6b44f572

weather: Fix translation routine.
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 23 Jan 2015 17:21:42 +0200
parents 899128d7c408
children 088bb2621595
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."
 }