]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
rss plugin: performance enhancements when outputting formatted rss to multiple locati...
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Mon, 5 Feb 2007 10:56:41 +0000 (10:56 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Mon, 5 Feb 2007 10:56:41 +0000 (10:56 +0000)
data/rbot/plugins/rss.rb

index 13689bf14efdfeb63136de3a437ecbd64a71a6a3..3607f8c50d7c31879e92a9c488af5a92d754ced0 100644 (file)
@@ -20,14 +20,6 @@ require 'rss/dublincore'
 # end\r
 \r
 class ::String\r
-  def shorten(limit)\r
-    if self.length > limit\r
-      self+". " =~ /^(.{#{limit}}[^.!;?]*[.!;?])/mi\r
-      return $1\r
-    end\r
-    self\r
-  end\r
-\r
   def riphtml\r
     self.gsub(/<[^>]+>/, '').gsub(/&amp;/,'&').gsub(/&quot;/,'"').gsub(/&lt;/,'<').gsub(/&gt;/,'>').gsub(/&ellip;/,'...').gsub(/&apos;/, "'").gsub("\n",'')\r
   end\r
@@ -467,27 +459,32 @@ class RSSFeedsPlugin < Plugin
       end\r
     end\r
     title = "#{Bold}#{item.title.chomp.riphtml}#{Bold}" if item.title\r
-    desc = item.description.gsub(/\s+/,' ').strip.riphtml.shorten(@bot.config['rss.text_max']) if item.description\r
+    desc = item.description.gsub(/\s+/,' ').strip.riphtml if item.description\r
     link = item.link.chomp if item.link\r
-    places.each { |loc|\r
-      case feed.type\r
-      when 'blog'\r
-        @bot.say loc, "#{handle}#{date}#{item.category.content} blogged at #{link}"\r
-        @bot.say loc, "#{handle}#{title} - #{desc}"\r
-      when 'forum'\r
-        @bot.say loc, "#{handle}#{date}#{title}#{' @ ' if item.title && item.link}#{link}"\r
-      when 'wiki'\r
-        @bot.say loc, "#{handle}#{date}#{item.title} has been edited by #{item.dc_creator}. #{desc} #{link}"\r
-      when 'gmame'\r
-        @bot.say loc, "#{handle}#{date}Message #{title} sent by #{item.dc_creator}. #{desc}"\r
-      when 'trac'\r
-        @bot.say loc, "#{handle}#{date}#{title} @ #{link}"\r
-        unless item.title =~ /^Changeset \[(\d+)\]/\r
-          @bot.say loc, "#{handle}#{date}#{desc}"\r
-        end\r
-      else\r
-        @bot.say loc, "#{handle}#{date}#{title}#{' @ ' if item.title && item.link}#{link}"\r
+    line1 = nil\r
+    line2 = nil\r
+    case feed.type\r
+    when 'blog'\r
+      line1 = "#{handle}#{date}#{item.category.content} blogged at #{link}"\r
+      line2 = "#{handle}#{title} - #{desc}"\r
+    when 'forum'\r
+      line1 = "#{handle}#{date}#{title}#{' @ ' if item.title && item.link}#{link}"\r
+    when 'wiki'\r
+      line1 = "#{handle}#{date}#{title}#{' @ ' if item.title && item.link}#{link} has been edited by #{item.dc_creator}. #{desc}"\r
+    when 'gmame'\r
+      line1 = "#{handle}#{date}Message #{title} sent by #{item.dc_creator}. #{desc}"\r
+    when 'trac'\r
+      line1 = "#{handle}#{date}#{title} @ #{link}"\r
+      unless item.title =~ /^Changeset \[(\d+)\]/\r
+        line2 = "#{handle}#{date}#{desc}"\r
       end\r
+    else\r
+      line1 = "#{handle}#{date}#{title}#{' @ ' if item.title && item.link}#{link}"\r
+    end\r
+    places.each { |loc|\r
+      @bot.say loc, line1, :overlong => :truncate\r
+      next unless line2\r
+      @bot.say loc, line2, :overlong => :truncate\r
     }\r
   end\r
 \r