lib/feed_tools/feed_item.rb in feedtools-0.2.15 vs lib/feed_tools/feed_item.rb in feedtools-0.2.16
- old
+ new
@@ -1264,23 +1264,56 @@
end
if time_string == ""
time_string = XPath.first(root_node, "time/text()").to_s
end
end
- if time_string != nil && time_string != ""
- @time = Time.parse(time_string) rescue Time.now
- elsif time_string == nil
+ begin
+ time_string = "" if time_string.nil?
+ if time_string != ""
+ @time = Time.parse(time_string)
+ else
+ @time = succ_time
+ end
+ rescue
+ @time = succ_time
+ end
+ if @time.nil?
@time = Time.now
end
end
return @time
end
# Sets the feed item time
def time=(new_time)
@time = new_time
end
+
+ # Returns 1 second after the previous item's time.
+ def succ_time #:nodoc:
+ begin
+ if feed.nil?
+ return nil
+ end
+ if feed.instance_variable_get("@items").nil?
+ feed.items
+ end
+ unsorted_items = feed.instance_variable_get("@items")
+ item_index = unsorted_items.index(self)
+ if item_index.nil?
+ return nil
+ end
+ if item_index <= 0
+ return Time.now
+ end
+ previous_item = unsorted_items[item_index - 1]
+ return previous_item.time.succ
+ rescue
+ return nil
+ end
+ end
+ private :succ_time
# Returns the feed item updated time
def updated
if @updated.nil?
unless root_node.nil?
@@ -1460,11 +1493,11 @@
def build_xml(feed_type=(self.feed.feed_type or "rss"), version=nil,
xml_builder=Builder::XmlMarkup.new(:indent => 2))
if feed_type == "rss" && (version == nil || version == 0.0)
version = 1.0
elsif feed_type == "atom" && (version == nil || version == 0.0)
- version = 0.3
+ version = 1.0
end
if feed_type == "rss" && (version == 0.9 || version == 1.0 || version == 1.1)
# RDF-based rss format
if link.nil?
raise "Cannot generate an rdf-based feed item with a nil link field."
@@ -1661,6 +1694,6 @@
def inspect
return "#<FeedTools::FeedItem:0x#{self.object_id.to_s(16)} " +
"LINK:#{self.link}>"
end
end
-end
\ No newline at end of file
+end