def parse(item)
if ((e = item.elements['title'] || item.elements['rss:title']) &&
e.text) ||
((e = item.elements['pubDate'] || item.elements['rss:pubDate']) &&
e.text)
@title = e.text.unescape_html.toUTF8(@feed.encoding).html2text.rmWhiteSpace!
end
if ((e = item.elements['link'] || item.elements['rss:link']) && e.text)||
(e = item.elements['guid'] || item.elements['rss:guid'] and
not (e.attribute('isPermaLink') and
e.attribute('isPermaLink').value == 'false'))
@link = e.text.rmWhiteSpace!
end
if (e = item.elements['content:encoded']) ||
(e = item.elements['description'] || item.elements['rss:description'])
@content = FeedParser::getcontent(e, @feed)
end
if e = item.elements['dc:date'] || item.elements['pubDate'] ||
item.elements['rss:pubDate']
begin
@date = Time::xmlschema(e.text)
rescue
begin
@date = Time::rfc2822(e.text)
rescue
begin
@date = Time::parse(e.text)
rescue
@date = nil
end
end
end
end
if (e = item.elements['dc:creator'] || item.elements['author'] ||
item.elements['rss:author']) && e.text
@creators << e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
end
@creators << @feed.creator if @creators.empty? and @feed.creator
if (e = item.elements['dc:subject']) && e.text
@subject = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
end
cat_elts = []
item.each_element('dc:category') { |e| cat_elts << e if e.text }
item.each_element('category') { |e| cat_elts << e if e.text }
item.each_element('rss:category') { |e| cat_elts << e if e.text }
cat_elts.each do |e|
@categories << e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
end
item.each_element('enclosure') do |e|
url = e.attribute('url').value if e.attribute('url')
length = e.attribute('length').value if e.attribute('length')
type = e.attribute('type').value if e.attribute('type')
@enclosures << [ url, length, type ] if url
end
end