From 25a834d62139b1be63e94974a9a6fe94b8cd7006 Mon Sep 17 00:00:00 2001 From: Giuseppe Bilotta Date: Wed, 22 Aug 2007 19:57:59 +0000 Subject: bash plugin: collapse consecutive lines from the same nick --- data/rbot/plugins/bash.rb | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) (limited to 'data/rbot') 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(/(?:
\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(/(?:
\s*)+/, ' | ').ircify_html] + m.reply "#%d (%d): %s" % [quote.num, quote.vote, quote.irc_text] end def xml_bash(m, id=nil) -- cgit v1.2.3