168: def parse(item)
169:
170: if ((e = item.elements['title'] || item.elements['rss:title']) &&
171: e.text) ||
172: ((e = item.elements['pubDate'] || item.elements['rss:pubDate']) &&
173: e.text)
174: @title = e.text.unescape_html.toUTF8(@feed.encoding).html2text.rmWhiteSpace!
175: end
176:
177: if ((e = item.elements['link'] || item.elements['rss:link']) && e.text)||
178: (e = item.elements['guid'] || item.elements['rss:guid'] and
179: not (e.attribute('isPermaLink') and
180: e.attribute('isPermaLink').value == 'false'))
181: @link = e.text.rmWhiteSpace!
182: end
183:
184: if (e = item.elements['content:encoded']) ||
185: (e = item.elements['description'] || item.elements['rss:description'])
186: @content = FeedParser::getcontent(e, @feed)
187: end
188:
189: if e = item.elements['dc:date'] || item.elements['pubDate'] ||
190: item.elements['rss:pubDate']
191: begin
192: @date = Time::xmlschema(e.text)
193: rescue
194: begin
195: @date = Time::rfc2822(e.text)
196: rescue
197: begin
198: @date = Time::parse(e.text)
199: rescue
200: @date = nil
201: end
202: end
203: end
204: end
205:
206: @creator = @feed.creator
207: if (e = item.elements['dc:creator'] || item.elements['author'] ||
208: item.elements['rss:author']) && e.text
209: @creator = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
210: end
211:
212: if (e = item.elements['dc:subject']) && e.text
213: @subject = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
214: end
215:
216: if (e = item.elements['dc:category'] || item.elements['category'] ||
217: item.elements['rss:category']) && e.text
218: @category = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
219: end
220:
221: item.each_element('enclosure') do |e|
222: url = e.attribute('url').value if e.attribute('url')
223: length = e.attribute('length').value if e.attribute('length')
224: type = e.attribute('type').value if e.attribute('type')
225: @enclosures << [ url, length, type ] if url
226: end
227: end