diff options
Diffstat (limited to 'data/rbot/plugins/bash.rb')
-rw-r--r-- | data/rbot/plugins/bash.rb | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/data/rbot/plugins/bash.rb b/data/rbot/plugins/bash.rb index 93d9c3f2..d2c3c469 100644 --- a/data/rbot/plugins/bash.rb +++ b/data/rbot/plugins/bash.rb @@ -19,18 +19,40 @@ require 'rexml/document' class ::BashQuote - attr_accessor :num, :text, :vote + attr_accessor :num, :text, :irc_text, :vote def initialize(num, text, vote) @num = num.to_i @text = text @vote = vote + @irc_text = mk_irc_text end def url "http://www.bash.org/?#{@num}" end + private + def mk_irc_text + cur_nick = nil + last_nick = nil + text = String.new + @text.each_line { |l| + debug "line: #{l.inspect}" + cur_nick = l.match(/^\s*(<.*?>|.*?:)/)[1] rescue nil + debug "nick: #{cur_nick.inspect}; last: #{last_nick.inspect}" + if cur_nick and cur_nick == last_nick + text << l.sub(cur_nick,"") + else + last_nick = cur_nick.dup if cur_nick + text << l + end + } + debug text + # TODO: the gsub of br tags to | should be an ircify_html option + text.gsub(/(?:<br \/>\s*)+/, ' | ').ircify_html + end + end class BashPlugin < Plugin @@ -98,8 +120,7 @@ class BashPlugin < Plugin # may want to echo more than one for latest/random quote = quotes.first end - # TODO: the gsub of br tags to | should be an ircify_html option - m.reply "#%d (%d): %s" % [quote.num, quote.vote, quote.text.gsub(/(?:<br \/>\s*)+/, ' | ').ircify_html] + m.reply "#%d (%d): %s" % [quote.num, quote.vote, quote.irc_text] end def xml_bash(m, id=nil) |