189: def parse(item)
190:
191: if ((e = item.elements['title'] || item.elements['rss:title']) &&
192: e.text) ||
193: ((e = item.elements['pubDate'] || item.elements['rss:pubDate']) &&
194: e.text)
195: @title = e.text.unescape_html.toUTF8(@feed.encoding).html2text.rmWhiteSpace!
196: end
197:
198: if ((e = item.elements['link'] || item.elements['rss:link']) && e.text)||
199: (e = item.elements['guid'] || item.elements['rss:guid'] and
200: not (e.attribute('isPermaLink') and
201: e.attribute('isPermaLink').value == 'false'))
202: @link = e.text.rmWhiteSpace!
203: end
204:
205: if (e = item.elements['content:encoded']) ||
206: (e = item.elements['description'] || item.elements['rss:description'])
207: @content = FeedParser::getcontent(e, @feed)
208: end
209:
210: if e = item.elements['dc:date'] || item.elements['pubDate'] ||
211: item.elements['rss:pubDate']
212: begin
213: @date = Time::xmlschema(e.text)
214: rescue
215: begin
216: @date = Time::rfc2822(e.text)
217: rescue
218: begin
219: @date = Time::parse(e.text)
220: rescue
221: @date = nil
222: end
223: end
224: end
225: end
226:
227: if (e = item.elements['dc:creator'] || item.elements['author'] ||
228: item.elements['rss:author']) && e.text
229: @creators << e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
230: end
231: @creators << @feed.creator if @creators.empty? and @feed.creator
232:
233:
234: if (e = item.elements['dc:subject']) && e.text
235: @subject = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
236: end
237:
238: cat_elts = []
239: item.each_element('dc:category') { |e| cat_elts << e if e.text }
240: item.each_element('category') { |e| cat_elts << e if e.text }
241: item.each_element('rss:category') { |e| cat_elts << e if e.text }
242:
243: cat_elts.each do |e|
244: @categories << e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
245: end
246:
247: item.each_element('enclosure') do |e|
248: url = e.attribute('url').value if e.attribute('url')
249: length = e.attribute('length').value if e.attribute('length')
250: type = e.attribute('type').value if e.attribute('type')
251: @enclosures << [ url, length, type ] if url
252: end
253: end