mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
9be1ed43c8
* lib/rss: #to_s used #tag. * test/rss/test_to_s.rb: added. * lib/rss/maker.rb (RSS::Maker.make): changed API. It's not received modules which is used as the second argument. * lib/rss/xml-stylesheet.rb (RSS::XMLStyleSheet#alternate): changed return value type which is not String but Boolean. * lib/rss/2.0.rb (RSS::Rss::Channel#ttl): changed return value type which is not String but Integer. * lib/rss/0.9.rb (RSS::Rss::Channel): <skipDays> has <day>s and <skipHours> has <hour>s. * lib/rss/maker/0.9.rb (RSS::Maker::RSS09::Channel): ditto. * lib/rss/0.9.rb (RSS::Rss::Channel::Item): <item> has <category>s. * lib/rss/maker/2.0.rb (RSS::Maker::Rss20::Channel::Item): ditto. * lib/rss/2.0.rb (RSS::Rss::Channel): <channel> has <category>s. * lib/rss/maker/2.0.rb (RSS::Maker::RSS20::Channel): ditto. * lib/rss/trackback.rb: parent element has <trackback:about>s. * lib/rss/maker/trackback.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7319 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
226 lines
5.1 KiB
Ruby
226 lines
5.1 KiB
Ruby
require "rss/0.9"
|
|
|
|
require "rss/maker/base"
|
|
|
|
module RSS
|
|
module Maker
|
|
|
|
class RSS09 < RSSBase
|
|
|
|
def initialize(rss_version="0.91")
|
|
super
|
|
end
|
|
|
|
def to_rss
|
|
rss = Rss.new(@rss_version, @version, @encoding, @standalone)
|
|
setup_xml_stylesheets(rss)
|
|
setup_channel(rss)
|
|
setup_other_elements(rss)
|
|
if rss.channel
|
|
rss
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
private
|
|
def setup_channel(rss)
|
|
@channel.to_rss(rss)
|
|
end
|
|
|
|
class Channel < ChannelBase
|
|
|
|
def to_rss(rss)
|
|
channel = Rss::Channel.new
|
|
set = setup_values(channel)
|
|
if set
|
|
rss.channel = channel
|
|
setup_items(rss)
|
|
setup_image(rss)
|
|
setup_textinput(rss)
|
|
setup_other_elements(rss)
|
|
if rss.channel.image
|
|
rss
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
|
|
def have_required_values?
|
|
@title and @link and @description and @language and
|
|
@maker.image.have_required_values?
|
|
end
|
|
|
|
private
|
|
def setup_items(rss)
|
|
@maker.items.to_rss(rss)
|
|
end
|
|
|
|
def setup_image(rss)
|
|
@maker.image.to_rss(rss)
|
|
end
|
|
|
|
def setup_textinput(rss)
|
|
@maker.textinput.to_rss(rss)
|
|
end
|
|
|
|
def variables
|
|
super + ["pubDate"]
|
|
end
|
|
|
|
class SkipDays < SkipDaysBase
|
|
def to_rss(rss, channel)
|
|
unless @days.empty?
|
|
skipDays = Rss::Channel::SkipDays.new
|
|
channel.skipDays = skipDays
|
|
@days.each do |day|
|
|
day.to_rss(rss, skipDays.days)
|
|
end
|
|
end
|
|
end
|
|
|
|
class Day < DayBase
|
|
def to_rss(rss, days)
|
|
day = Rss::Channel::SkipDays::Day.new
|
|
set = setup_values(day)
|
|
if set
|
|
days << day
|
|
setup_other_elements(rss)
|
|
end
|
|
end
|
|
|
|
def have_required_values?
|
|
@content
|
|
end
|
|
end
|
|
end
|
|
|
|
class SkipHours < SkipHoursBase
|
|
def to_rss(rss, channel)
|
|
unless @hours.empty?
|
|
skipHours = Rss::Channel::SkipHours.new
|
|
channel.skipHours = skipHours
|
|
@hours.each do |hour|
|
|
hour.to_rss(rss, skipHours.hours)
|
|
end
|
|
end
|
|
end
|
|
|
|
class Hour < HourBase
|
|
def to_rss(rss, hours)
|
|
hour = Rss::Channel::SkipHours::Hour.new
|
|
set = setup_values(hour)
|
|
if set
|
|
hours << hour
|
|
setup_other_elements(rss)
|
|
end
|
|
end
|
|
|
|
def have_required_values?
|
|
@content
|
|
end
|
|
end
|
|
end
|
|
|
|
class Cloud < CloudBase
|
|
def to_rss(*args)
|
|
end
|
|
end
|
|
|
|
class Categories < CategoriesBase
|
|
def to_rss(*args)
|
|
end
|
|
|
|
class Category < CategoryBase
|
|
end
|
|
end
|
|
end
|
|
|
|
class Image < ImageBase
|
|
def to_rss(rss)
|
|
image = Rss::Channel::Image.new
|
|
set = setup_values(image)
|
|
if set
|
|
image.link = link
|
|
rss.channel.image = image
|
|
setup_other_elements(rss)
|
|
end
|
|
end
|
|
|
|
def have_required_values?
|
|
@url and @title and link
|
|
end
|
|
end
|
|
|
|
class Items < ItemsBase
|
|
def to_rss(rss)
|
|
if rss.channel
|
|
normalize.each do |item|
|
|
item.to_rss(rss)
|
|
end
|
|
setup_other_elements(rss)
|
|
end
|
|
end
|
|
|
|
class Item < ItemBase
|
|
def to_rss(rss)
|
|
item = Rss::Channel::Item.new
|
|
set = setup_values(item)
|
|
if set
|
|
rss.items << item
|
|
setup_other_elements(rss)
|
|
end
|
|
end
|
|
|
|
private
|
|
def have_required_values?
|
|
@title and @link
|
|
end
|
|
|
|
class Guid < GuidBase
|
|
def to_rss(*args)
|
|
end
|
|
end
|
|
|
|
class Enclosure < EnclosureBase
|
|
def to_rss(*args)
|
|
end
|
|
end
|
|
|
|
class Source < SourceBase
|
|
def to_rss(*args)
|
|
end
|
|
end
|
|
|
|
class Categories < CategoriesBase
|
|
def to_rss(*args)
|
|
end
|
|
|
|
class Category < CategoryBase
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
class Textinput < TextinputBase
|
|
def to_rss(rss)
|
|
textInput = Rss::Channel::TextInput.new
|
|
set = setup_values(textInput)
|
|
if set
|
|
rss.channel.textInput = textInput
|
|
setup_other_elements(rss)
|
|
end
|
|
end
|
|
|
|
private
|
|
def have_required_values?
|
|
@title and @description and @name and @link
|
|
end
|
|
end
|
|
end
|
|
|
|
add_maker(filename_to_version(__FILE__), RSS09)
|
|
end
|
|
end
|