]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/commitdiff
Fix date sorting for rss plugins
authorGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Fri, 28 Jul 2006 13:44:06 +0000 (13:44 +0000)
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>
Fri, 28 Jul 2006 13:44:06 +0000 (13:44 +0000)
data/rbot/plugins/rss.rb

index fcea9197b67a77d04091ba797dfb3c94038ba851..8f5420c5ea73d228ee759fcb17f6bb62cc0388a0 100644 (file)
@@ -210,9 +210,17 @@ class RSSFeedsPlugin < Plugin
     end\r
   end\r
 \r
+  def itemDate(item,ex=nil)\r
+    return item.pubDate if item.respond_to?(:pubDate)\r
+    return item.date if item.respond_to?(:date)\r
+    return ex\r
+  end\r
+\r
   def freshness_sort(items)\r
     notime = Time.at(0)\r
-    items.sort { |a, b| (b.pubDate || notime) <=> (a.pubDate || notime) }\r
+    items.sort { |a, b|\r
+      itemDate(b, notime) <=> itemDate(a, notime)\r
+    }\r
   end\r
 \r
   def list_rss(m, params)\r
@@ -430,7 +438,24 @@ class RSSFeedsPlugin < Plugin
     if opts\r
       places = opts[:places] if opts.key?(:places)\r
       handle = opts[:handle].to_s if opts.key?(:handle)\r
-      date = item.pubDate.strftime("%Y/%m/%d %H.%M.%S") + " :: " if (opts.key?(:date) && opts[:date] && item.pubDate)\r
+      if opts.key?(:date) && opts[:date]\r
+        if item.respond_to?(:pubDate) \r
+          if item.pubDate.class <= Time\r
+            date = item.pubDate.strftime("%Y/%m/%d %H.%M.%S")\r
+          else\r
+            date = item.pubDate.to_s\r
+          end\r
+        elsif  item.respond_to?(:date)\r
+          if item.date.class <= Time\r
+            date = item.date.strftime("%Y/%m/%d %H.%M.%S")\r
+          else\r
+            date = item.date.to_s\r
+          end\r
+        else\r
+          date = "(no date)"\r
+        end\r
+        date += " :: "\r
+      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