# module RSS::RootElementMixin

### Attributes

encoding[RW]
feed_subtype[R]
feed_type[R]
feed_version[R]
output_encoding[R]
standalone[RW]
version[RW]

### Public Class Methods

new(feed_version, version=nil, encoding=nil, standalone=nil) click to toggle source
Calls superclass method `RSS::XMLStyleSheetMixin::new`

    # File lib/rss/rss.rb, line 1250
    def initialize(feed_version, version=nil, encoding=nil, standalone=nil)
      super()
      @feed_type = nil
      @feed_subtype = nil
      @feed_version = feed_version
      @version = version || '1.0'
      @encoding = encoding
      @standalone = standalone
      @output_encoding = nil
    end

### Public Instance Methods

feed_info() click to toggle source

    # File lib/rss/rss.rb, line 1261
    def feed_info
      [@feed_type, @feed_version, @feed_subtype]
    end

output_encoding=(enc) click to toggle source

    # File lib/rss/rss.rb, line 1265
    def output_encoding=(enc)
      @output_encoding = enc
      self.converter = Converter.new(@output_encoding, @encoding)
    end

setup_maker(maker) click to toggle source
Calls superclass method

    # File lib/rss/rss.rb, line 1270
    def setup_maker(maker)
      maker.version = version
      maker.encoding = encoding
      maker.standalone = standalone

      xml_stylesheets.each do |xss|
        xss.setup_maker(maker)
      end

      super
    end

to_atom(type, &block) click to toggle source

    # File lib/rss/rss.rb, line 1293
    def to_atom(type, &block)
      to_feed("atom:#{type}", &block)
    end

to_feed(type, &block) click to toggle source

    # File lib/rss/rss.rb, line 1282
    def to_feed(type, &block)
      Maker.make(type) do |maker|
        setup_maker(maker)
        block.call(maker) if block
      end
    end

to_rss(type, &block) click to toggle source

    # File lib/rss/rss.rb, line 1289
    def to_rss(type, &block)
      to_feed("rss#{type}", &block)
    end

to_xml(type=nil, &block) click to toggle source

    # File lib/rss/rss.rb, line 1297
    def to_xml(type=nil, &block)
      if type.nil? or same_feed_type?(type)
        to_s
      else
        to_feed(type, &block).to_s
      end
    end

### Private Instance Methods

maker_target(target) click to toggle source

    # File lib/rss/rss.rb, line 1342
    def maker_target(target)
      target
    end

ns_declarations() click to toggle source

    # File lib/rss/rss.rb, line 1333
    def ns_declarations
      decls = {}
      self.class::NSPOOL.collect do |prefix, uri|
        prefix = ":#{prefix}" unless prefix.empty?
        decls["xmlns#{prefix}"] = uri
      end
      decls
    end

same_feed_type?(type) click to toggle source

    # File lib/rss/rss.rb, line 1306
    def same_feed_type?(type)
      if /^(atom|rss)?(\d+\.\d+)?(?::(.+))?$/i =~ type
        feed_type = ($1 || @feed_type).downcase
        feed_version = $2 || @feed_version
        feed_subtype = $3 || @feed_subtype
        [feed_type, feed_version, feed_subtype] == feed_info
      else
        false
      end
    end

tag(indent, attrs={}, &block) click to toggle source
Calls superclass method

    # File lib/rss/rss.rb, line 1317
    def tag(indent, attrs={}, &block)
      rv = super(indent, ns_declarations.merge(attrs), &block)
      return rv if rv.empty?
      "#{xmldecl}#{xml_stylesheet_pi}#{rv}"
    end

xmldecl() click to toggle source

    # File lib/rss/rss.rb, line 1323
    def xmldecl
      rv = %Q[<?xml version="#{@version}"]
      if @output_encoding or @encoding
        rv << %Q[ encoding="#{@output_encoding or @encoding}"]
      end
      rv << %Q[ standalone="yes"] if @standalone
      rv << "?>\n"
      rv
    end