Class FeedParser::RSSItem
In: lib/feedparser/feedparser.rb
Parent: FeedItem
dot/m_8_0.png

Methods

parse  

Public Instance methods

[Source]

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

[Validate]