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