summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2007-11-08 23:59:26 +0000
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2007-11-08 23:59:26 +0000
commit7c5c0101174090565bc079863fe3980e9f7752ee (patch)
tree29a65c7ed4f8fdbcfdc0fb58d1cb661e18925623 /data
parent249166efbb959b92011b3b0ef55ca071983f68db (diff)
weather plugin: properly support multiple US and non-US stations
Diffstat (limited to 'data')
-rw-r--r--data/rbot/plugins/weather.rb18
1 files changed, 15 insertions, 3 deletions
diff --git a/data/rbot/plugins/weather.rb b/data/rbot/plugins/weather.rb
index c241daa8..b5835447 100644
--- a/data/rbot/plugins/weather.rb
+++ b/data/rbot/plugins/weather.rb
@@ -202,9 +202,8 @@ class WeatherPlugin < Plugin
else
m.reply "couldn't parse weather data from #{where}"
end
- when /<a href="\/global\/stations\//
- stations = xml.scan(/<a href="\/global\/stations\/(.*?)\.html">/)
- m.reply "multiple stations available, use 'weather station <code>' where code is one of " + stations.join(", ")
+ when /<a href="\/(?:global\/stations|US\/\w\w)\//
+ wu_weather_multi(m, xml)
else
debug xml
m.reply "something went wrong with the data from #{where}..."
@@ -226,6 +225,19 @@ class WeatherPlugin < Plugin
txt
end
+ def wu_weather_multi(m, xml)
+ stations = xml.scan(/<td>\s*<a href="\/(?:global\/stations|US\/(\w\w))\/(.*?)\.html">(.*?)<\/a>\s*:\s*(.*?)<\/td>/m)
+ m.reply "multiple stations available, use 'weather station <code>' or 'weather <city, state>' as appropriate, for one of the following (current temp shown):"
+ stations.map! { |ar|
+ if ar.first # US state
+ "%s, %s (%s): %s" % [ar[1], ar[0], ar[2], wu_clean(ar[3])]
+ else # non-US station
+ "station %s (%s): %s" % [ar[1], ar[2], wu_clean(ar[3])]
+ end
+ }
+ m.reply stations.join("; ")
+ end
+
def wu_weather_filter(stuff)
txt = wu_clean(stuff)