Class FeedParser::FeedItem
In: lib/feedparser/text-output.rb
lib/feedparser/feedparser.rb
lib/feedparser/html-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/html-output.rb lib/feedparser/sgml-parser.rb lib/feedparser/html2text-parser.rb FeedParser dot/m_6_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 133
133:     def initialize(item = nil, feed = nil)
134:       @xml = item
135:       @feed = feed
136:       @title, @link, @content, @date, @creator, @subject, @category = nil
137:       @enclosures = []
138:       parse(item) if item
139:     end

Public Instance methods

[Source]

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

[Source]

     # File lib/feedparser/html-output.rb, line 66
 66:     def to_html(localtime = true)
 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 += "\n<hr width=\"100%\"/>\n"
106:       s += '<table width="100%" cellpadding="0" cellspacing="0">' + "\n"
107:       l = '<tr><td align="right"><font color="#ababab">%s</font>&nbsp;&nbsp;</td><td><font color="#ababab">%s</font></td></tr>' + "\n"
108:       if @date
109:         if localtime
110:           s += l % [ 'Date:', @date.to_s ]
111:         else
112:           s += l % [ 'Date:', @date.getutc.to_s ]
113:         end
114:       end
115:       s += l % [ 'Author:', @creator.escape_html ] if @creator
116:       s += l % [ 'Subject:', @subject.escape_html ] if @subject
117:       s += l % [ 'Category:', @category.escape_html ] if @category
118:       s += "</table>\n"
119:       s
120:     end

[Source]

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

[Source]

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

[Source]

    # File lib/feedparser/text-output.rb, line 59
59:     def to_text(localtime = true, wrapto = false)
60:       s = ""
61:       s += "Feed: "
62:       s += @feed.title + ' ' if @feed.title
63:       s += "<#{@feed.link}>" if @feed.link
64:       s += "\n"
65:       s += "Item: "
66:       s += @title + ' ' if @title
67:       s += "<#{@link}>" if @link
68:       s += "\n"
69:       if @date
70:         if localtime
71:           s += "\nDate: #{@date.to_s}"
72:         else
73:           s += "\nDate: #{@date.getutc.to_s}"
74:         end
75:       end
76:       s += "\nAuthor: #{@creator}" if @creator
77:       s += "\nSubject: #{@subject}" if @subject
78:       s += "\nCategory: #{@category}" if @category
79:       s += "\n\n"
80:       s += "#{@content.html2text(wrapto)}\n" if @content
81:       if @enclosures and @enclosures.length > 0
82:         s += "Files:\n"
83:         @enclosures.each do |e|
84:           s += " #{e[0]} (#{e[1].to_i.to_human_readable}, #{e[2]})\n"
85:         end
86:       end
87:       s 
88:     end

[Validate]