diff options
author | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-21 11:02:04 +0000 |
---|---|---|
committer | Tom Gilbert <tom@linuxbrit.co.uk> | 2005-07-21 11:02:04 +0000 |
commit | e3c4d9ad30b8548c09dd7d26abdfeef223c23f40 (patch) | |
tree | 9a22304ff2b491827ac52d62f1d897eeebad6696 | |
parent | 73eb00417fdeff67e7bc46d806b16ab34cf74f09 (diff) |
rework the tube plugin's html parser a bit, to enable it to work properly
with tricky station names, such as hammersmity & city.
-rw-r--r-- | rbot/plugins/tube.rb | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/rbot/plugins/tube.rb b/rbot/plugins/tube.rb index 98b90c6c..77ca5227 100644 --- a/rbot/plugins/tube.rb +++ b/rbot/plugins/tube.rb @@ -29,26 +29,27 @@ class TubePlugin < Plugin m.reply "Cannot contact Tube Service Status page" return end + next_line = false tube_page.each_line {|l| - if (l =~ /class="#{line}"/i) - tube_page.each_line { |l2| - if (l2 =~ /^<tr valign=top> <td>\s*(.*#{line}.*)<\/td><\/tr>/i) - problem_message = Array.new - problem_message = $1.split(/<[^>]+>| /i) - m.reply problem_message.join(" ") - return - end - } + next if l == "\r\n" + next if l == "\n" + if (next_line) + if (l =~ /^<tr valign=top> <td>\s*(.*)<\/td><\/tr>/i) + m.reply $1.split(/<[^>]+>| /i).join(" ") + return + else m.reply "There are problems on the #{line} line, but I didn't understand the page format. You should check out http://www.tfl.gov.uk/tfl/service_rt_tube.shtml for more details." return end - } + end + next_line = true if (l =~ /class="#{line}"/i) + } m.reply "No Problems on the #{line} line." end def check_stations(m) begin - tube_page = Utils.http_get("http://www.tfl.gov.uk/tfl/service_rt_tube.shtml") + tube_page = @bot.httputil.get(URI.parse("http://www.tfl.gov.uk/tfl/service_rt_tube.shtml")) rescue URI::InvalidURIError, URI::BadURIError => e m.reply "Cannot contact Tube Service Status page" return |