| Class | FeedParser::FeedItem |
| In: |
lib/feedparser/html-output.rb
lib/feedparser/feedparser.rb lib/feedparser/text-output.rb |
| Parent: | Object |
| cacheditem | [RW] | |
| categories | [RW] | The item‘s categories/tags. An array of strings. |
| content | [RW] | |
| creators | [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 |
# File lib/feedparser/feedparser.rb, line 136
136: def initialize(item = nil, feed = nil)
137: @xml = item
138: @feed = feed
139: @title, @link, @content, @date, @subject = nil
140: @creators = []
141: @categories = []
142: @enclosures = []
143: parse(item) if item
144: end
# File lib/feedparser/feedparser.rb, line 150
150: def creator
151: case @creators.length
152: when 0
153: return nil
154: when 1
155: return creators[0]
156: else
157: return creators[0...-1].join(", ")+" and "+creators[-1]
158: end
159: end
# File lib/feedparser/feedparser.rb, line 146
146: def parse(item)
147: raise "parse() should be implemented by subclasses!"
148: end
# 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> <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> </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 % [ 'Filed under:', @categories.join(', ').escape_html ] unless @categories.empty?
118: s += "</table>\n"
119: s
120: end
# 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
# File lib/feedparser/feedparser.rb, line 161
161: def to_s(localtime = true)
162: s = "--------------------------------\n" +
163: "Title: #{@title}\nLink: #{@link}\n"
164: if localtime or @date.nil?
165: s += "Date: #{@date.to_s}\n"
166: else
167: s += "Date: #{@date.getutc.to_s}\n"
168: end
169: s += "Creator: #{creator}\n" +
170: "Subject: #{@subject}\n"
171: if defined?(@categories) and @categories.length > 0
172: s += "Filed under: " + @categories.join(', ') + "\n"
173: end
174: s += "Content:\n#{content}\n"
175: if defined?(@enclosures) and @enclosures.length > 0
176: s2 = "Enclosures:\n"
177: @enclosures.each do |e|
178: s2 += e.join(' ') + "\n"
179: end
180: s += s2
181: end
182: return s
183: end
# File lib/feedparser/text-output.rb, line 59
59: def to_text(localtime = true, wrapto = false, header = true)
60: s = ""
61: if header
62: s += "Item: "
63: s += @title if @title
64: s += "\n<#{@link}>" if @link
65: if @date
66: if localtime
67: s += "\nDate: #{@date.to_s}"
68: else
69: s += "\nDate: #{@date.getutc.to_s}"
70: end
71: end
72: s += "\n"
73: else
74: s += "<#{@link}>\n\n" if @link
75: end
76: s += "#{@content.html2text(wrapto).chomp}\n" if @content
77: if @enclosures and @enclosures.length > 0
78: s += "\nFiles:"
79: @enclosures.each do |e|
80: s += "\n #{e[0]} (#{e[1].to_i.to_human_readable}, #{e[2]})"
81: end
82: end
83: if not header
84: s += "-- "
85: end
86: s += "\nFeed: "
87: s += @feed.title if @feed.title
88: s += "\n<#{@feed.link}>" if @feed.link
89: if not header
90: s += "\nItem: "
91: s += @title if @title
92: s += "\n<#{@link}>" if @link
93: if @date
94: if localtime
95: s += "\nDate: #{@date.to_s}"
96: else
97: s += "\nDate: #{@date.getutc.to_s}"
98: end
99: end
100: end
101: s += "\nAuthor: #{creator}" if creator
102: s += "\nSubject: #{@subject}" if @subject
103: s += "\nFiled under: #{@categories.join(', ')}" unless @categories.empty?
104: s += "\n" # final newline, for compat with history
105: s
106: end