X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fweather.rb;h=5da949e4d8787e6532ad3dd91bbd67451d0cfea2;hb=22e6cefa54de681b131ecb97fc9383ff5e990dfe;hp=ff5f053757562e5c9db84f031c89860265b83b4b;hpb=03a565c6f6a11e950f66b7aa159de86c2119efee;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git
diff --git a/data/rbot/plugins/weather.rb b/data/rbot/plugins/weather.rb
index ff5f0537..5da949e4 100644
--- a/data/rbot/plugins/weather.rb
+++ b/data/rbot/plugins/weather.rb
@@ -67,6 +67,10 @@ private
end
class WeatherPlugin < Plugin
+
+ Config.register Config::BooleanValue.new('weather.advisory',
+ :default => true,
+ :desc => "Should the bot report special weather advisories when any is present?")
def help(plugin, topic="")
case topic
@@ -173,8 +177,9 @@ class WeatherPlugin < Plugin
m.reply "no such station found (#{where})"
return
when /
(.*?)<\/table>/m
- data = $1
+ data = $1.dup
m.reply wu_weather_filter(data)
+ wu_out_special(m, xml)
else
debug xml
m.reply "something went wrong with the data for #{where}..."
@@ -202,6 +207,7 @@ class WeatherPlugin < Plugin
else
m.reply "couldn't parse weather data from #{where}"
end
+ wu_out_special(m, xml)
when /]*>([^<]+)}) do
+ special = {
+ :url => "http://mobile.wunderground.com"+$1,
+ :type => $2.dup,
+ :special => $3.dup
+ }
+ spec_rx = Regexp.new("(?:.+?)\\s+(.+?)\\s+ | \\s+\\s+
", Regexp::MULTILINE)
+ spec_xml = @bot.httputil.get(special[:url])
+ if spec_xml and spec_td = spec_xml.match(spec_rx)
+ special.merge!(:text => spec_td.captures.first.ircify_html)
+ end
+ specials << special
+ end
+ return specials
+ end
+
+ def wu_out_special(m, xml)
+ return unless @bot.config['weather.advisory']
+ specials = wu_check_special(xml)
+ debug specials
+ specials.each do |special|
+ special.merge!(:underline => Underline)
+ if special[:text]
+ m.reply("%{underline}%{special}%{underline}: %{text}" % special)
+ else
+ m.reply("%{underline}%{special}%{underline} @ %{url}" % special)
+ end
+ end
+ end
+
def wu_weather_filter(stuff)
txt = wu_clean(stuff)