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