# frozen_string_literal: false
# RSS has three different versions. This module contains support for version
# 2.0[http://www.rssboard.org/rss-specification]
# Producing our own RSS feeds is easy as well. Let's make a very basic feed:
# rss = RSS::Maker.make("2.0") do |maker|
# maker.channel.language = "en"
# maker.channel.author = "matz"
# maker.channel.updated = Time.now.to_s
# maker.channel.link = "http://www.ruby-lang.org/en/feeds/news.rss"
# maker.channel.title = "Example Feed"
# maker.channel.description = "A longer description of my feed."
# maker.items.new_item do |item|
# item.link = "http://www.ruby-lang.org/en/news/2010/12/25/ruby-1-9-2-p136-is-released/"
# item.title = "Ruby 1.9.2-p136 is released"
# item.updated = Time.now.to_s
# As you can see, this is a very Builder-like DSL. This code will spit out an
# RSS 2.0 feed with one item. If we needed a second item, we'd make another
# block with maker.items.new_item and build a second one.
install_text_element(name, "", "?", name, type)
].each do |name, plural_name|
install_have_children_element(name, "", "*", name, plural_name)
install_model(name, "", occurs)
Category = Item::Category
install_text_element(name, "", occurs)
install_date_element(name, "", occurs, name, 'rfc822')
install_have_child_element(name, "", occurs)
alias _setup_maker_element setup_maker_element
def setup_maker_element(item)
_setup_maker_element(item)
@guid.setup_maker(item) if @guid
["isPermaLink", "", false, :boolean]
].each do |name, uri, required, type|
install_get_attribute(name, uri, required, type)
if Utils.element_initialize_arguments?(args)
self.isPermaLink = args[0]
alias_method :_PermaLink?, :PermaLink?
def setup_maker_attributes(guid)
guid.isPermaLink = isPermaLink
RSS09::ELEMENTS.each do |name|
BaseListener.install_get_text_element("", name, name)