Class FeedParser::RSSItem
In: lib/feedparser/feedparser.rb
Parent: FeedItem
RuntimeError UnknownFeedTypeException FeedItem\n[lib/feedparser/feedparser.rb\nlib/feedparser/html-output.rb\nlib/feedparser/text-output.rb] AtomItem RSSItem SGMLParser HTML2TextParser Feed\n[lib/feedparser/feedparser.rb\nlib/feedparser/html-output.rb\nlib/feedparser/text-output.rb] lib/feedparser/feedparser.rb lib/feedparser/sgml-parser.rb lib/feedparser/text-output.rb lib/feedparser/html2text-parser.rb FeedParser dot/m_7_0.png

Methods

parse  

Public Instance methods

[Source]

     # File lib/feedparser/feedparser.rb, line 189
189:     def parse(item)
190:       # Title. If no title, use the pubDate as fallback.
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:       # Link
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:       # Content
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:       # Date
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:       # Creator
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:       # Subject
234:       if (e = item.elements['dc:subject']) && e.text
235:         @subject = e.text.unescape_html.toUTF8(@feed.encoding).rmWhiteSpace!
236:       end
237:       # Categories
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:       # Enclosures
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

[Validate]