Class FeedParser::FeedItem
In: lib/feedparser/feedparser.rb
lib/feedparser/html-output.rb
lib/feedparser/text-output.rb
Parent: Object
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/text-output.rb lib/feedparser/sgml-parser.rb lib/feedparser/html2text-parser.rb FeedParser dot/m_7_0.png

an Item from a feed

Methods

new   parse   to_html   to_html_with_headers   to_s   to_text  

Attributes

cacheditem  [RW] 
category  [RW] 
content  [RW] 
creator  [RW] 
date  [RW] 
enclosures  [RW]  The item‘s enclosures childs. An array of (url, length, type) triplets.
feed  [R] 
link  [RW] 
subject  [RW] 
title  [RW] 
xml  [R]  REXML::Element for this item

Public Class methods

[Source]

     # File lib/feedparser/feedparser.rb, line 132
132:     def initialize(item = nil, feed = nil)
133:       @xml = item
134:       @feed = feed
135:       @title, @link, @content, @date, @creator, @subject, @category = nil
136:       @enclosures = []
137:       parse(item) if item
138:     end

Public Instance methods

[Source]

     # File lib/feedparser/feedparser.rb, line 140
140:     def parse(item)
141:       raise "parse() should be implemented by subclasses!"
142:     end

[Source]

     # File lib/feedparser/html-output.rb, line 66
 66:     def to_html
 67:       s = "<table border=\"1\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" borderspacing=\"0\"><tr><td>\n<table width=\"100%\" bgcolor=\"#EDEDED\" cellpadding=\"4\" cellspacing=\"2\">\n"
 68:       r = ""
 69:       r += "<a href=\"#{@feed.link}\">\n" if @feed.link
 70:       if @feed.title
 71:         r += "<b>#{@feed.title.escape_html}</b>\n"
 72:       elsif @feed.link
 73:         r += "<b>#{@feed.link.escape_html}</b>\n"
 74:       else
 75:         r += "<b>Unnamed feed</b>\n"
 76:       end
 77:       r += "</a>\n" if @feed.link
 78:       headline = "<tr><td align=\"right\"><b>%s</b></td>\n<td width=\"100%%\">%s</td></tr>"
 79:       s += (headline % ["Feed:", r])
 80: 
 81:       r = ""
 82:       r += "<a href=\"#{@link}\">" if @link
 83:       if @title
 84:         r += "<b>#{@title.escape_html}</b>\n"
 85:       elsif @link
 86:         r += "<b>#{@link.escape_html}</b>\n"
 87:       end
 88:       r += "</a>\n" if @link
 89:       s += (headline % ["Item:", r])
 90:       s += "</table></td></tr></table>\n"
 91:       s += "\n"
 92:       if @content and @content !~ /\A\s*</m
 93:         s += "<br/>\n"
 94:       end
 95:       s += "#{@content}" if @content
 96:       if @enclosures and @enclosures.length > 0
 97:         s += "<table border=\"1\" width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" borderspacing=\"0\"><tr><td>\n<table width=\"100%\" bgcolor=\"#EDEDED\" cellpadding=\"2\" cellspacing=\"2\">\n"
 98:         s += '<tr><td width="100%"><b>Files:</b></td></tr>'
 99:         s += "\n"
100:         @enclosures.each do |e|
101:           s += "<tr><td>&nbsp;&nbsp;&nbsp;<a href=\"#{e[0]}\">#{e[0].split('/')[-1]}</a> (#{e[1].to_i.to_human_readable}, #{e[2]})</td></tr>\n"
102:         end
103:         s += "</table></td></tr></table>\n"
104:       end
105:       s += "<hr width=\"100%\"/>"
106:       s += '<table width="100%" cellpadding="0" cellspacing="0">'
107:       l = '<tr><td align="right"><font color="#ababab">%s</font>&nbsp;&nbsp;</td><td><font color="#ababab">%s</font></td></tr>' + "\n"
108:       s += l % [ 'Date:', @date.to_s ] if @date # TODO improve date rendering ?
109:       s += l % [ 'Author:', @creator.escape_html ] if @creator
110:       s += l % [ 'Subject:', @subject.escape_html ] if @subject
111:       s += l % [ 'Category:', @category.escape_html ] if @category
112:       s += "</table>\n"
113:       s
114:     end

[Source]

    # File lib/feedparser/html-output.rb, line 54
54:     def to_html_with_headers
55:       s = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n<html>\n<body>\n"
56:       s += to_html
57:       s += "\n</body>\n</html>"
58:       s
59:     end

[Source]

     # File lib/feedparser/feedparser.rb, line 144
144:     def to_s
145:       s = "--------------------------------\n" +
146:         "Title: #{@title}\nLink: #{@link}\n" +
147:         "Date: #{@date.to_s}\nCreator: #{@creator}\n" +
148:         "Subject: #{@subject}\nCategory: #{@category}\nContent:\n#{content}\n"
149:       if defined?(@enclosures) and @enclosures.length > 0
150:         s2 = "Enclosures:\n"
151:         @enclosures.each do |e|
152:           s2 += e.join(' ') + "\n"
153:         end
154:         s += s2
155:       end
156:       return s
157:     end

[Source]

    # File lib/feedparser/text-output.rb, line 50
50:     def to_text
51:       s = ""
52:       s += "Feed: "
53:       s += @feed.title + ' ' if @feed.title
54:       s += "<#{@feed.link}>" if @feed.link
55:       s += "\n"
56:       s += "Item: "
57:       s += @title + ' ' if @title
58:       s += "<#{@link}>" if @link
59:       s += "\n"
60:       # TODO improve date rendering ?
61:       s += "\nDate: #{@date.to_s}" if @date 
62:       s += "\nAuthor: #{@creator}" if @creator
63:       s += "\nSubject: #{@subject}" if @subject
64:       s += "\nCategory: #{@category}" if @category
65:       s += "\n\n"
66:       s += "#{@content.html2text}\n" if @content
67:       if @enclosures and @enclosures.length > 0
68:         s += "Files:\n"
69:         @enclosures.each do |e|
70:           s += " #{e[0]} (#{e[1].to_i.to_human_readable}, #{e[2]})\n"
71:         end
72:       end
73:       s 
74:     end

[Validate]