X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fbash.rb;h=0524204a4f2ef549fe7d06d6b0090647f2e341b8;hb=24bb60775741d3731400f1e430ef6bf3a2e1b933;hp=93d9c3f2af77f54844bb77b2edd7b79f3dbd4f79;hpb=109fa2a5b63af113df2c6b21d44135efa0d94d70;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/bash.rb b/data/rbot/plugins/bash.rb index 93d9c3f2..0524204a 100644 --- a/data/rbot/plugins/bash.rb +++ b/data/rbot/plugins/bash.rb @@ -19,23 +19,45 @@ 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*(<.*?>|\(.*?\)|.*?:)\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 - BotConfig.register BotConfigEnumValue.new('bash.access', + Config.register Config::EnumValue.new('bash.access', :values => ['xml', 'html'], :default => 'html', :desc => "Which method the bot should use to access bash.org quotes: xml files or standard webpages") @@ -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)