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