Module RSS::RootElementMixin
In: lib/rss/rss.rb

Methods

Included Modules

XMLStyleSheetMixin

Attributes

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

Public Class methods

[Source]

      # File lib/rss/rss.rb, line 1238
1238:     def initialize(feed_version, version=nil, encoding=nil, standalone=nil)
1239:       super()
1240:       @feed_type = nil
1241:       @feed_subtype = nil
1242:       @feed_version = feed_version
1243:       @version = version || '1.0'
1244:       @encoding = encoding
1245:       @standalone = standalone
1246:       @output_encoding = nil
1247:     end

Public Instance methods

[Source]

      # File lib/rss/rss.rb, line 1249
1249:     def feed_info
1250:       [@feed_type, @feed_version, @feed_subtype]
1251:     end

[Source]

      # File lib/rss/rss.rb, line 1253
1253:     def output_encoding=(enc)
1254:       @output_encoding = enc
1255:       self.converter = Converter.new(@output_encoding, @encoding)
1256:     end

[Source]

      # File lib/rss/rss.rb, line 1258
1258:     def setup_maker(maker)
1259:       maker.version = version
1260:       maker.encoding = encoding
1261:       maker.standalone = standalone
1262: 
1263:       xml_stylesheets.each do |xss|
1264:         xss.setup_maker(maker)
1265:       end
1266: 
1267:       super
1268:     end

[Source]

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

[Source]

      # File lib/rss/rss.rb, line 1270
1270:     def to_feed(type, &block)
1271:       Maker.make(type) do |maker|
1272:         setup_maker(maker)
1273:         block.call(maker) if block
1274:       end
1275:     end

[Source]

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

[Source]

      # File lib/rss/rss.rb, line 1285
1285:     def to_xml(type=nil, &block)
1286:       if type.nil? or same_feed_type?(type)
1287:         to_s
1288:       else
1289:         to_feed(type, &block).to_s
1290:       end
1291:     end

Private Instance methods

[Source]

      # File lib/rss/rss.rb, line 1330
1330:     def maker_target(target)
1331:       target
1332:     end

[Source]

      # File lib/rss/rss.rb, line 1321
1321:     def ns_declarations
1322:       decls = {}
1323:       self.class::NSPOOL.collect do |prefix, uri|
1324:         prefix = ":#{prefix}" unless prefix.empty?
1325:         decls["xmlns#{prefix}"] = uri
1326:       end
1327:       decls
1328:     end

[Source]

      # File lib/rss/rss.rb, line 1294
1294:     def same_feed_type?(type)
1295:       if /^(atom|rss)?(\d+\.\d+)?(?::(.+))?$/i =~ type
1296:         feed_type = ($1 || @feed_type).downcase
1297:         feed_version = $2 || @feed_version
1298:         feed_subtype = $3 || @feed_subtype
1299:         [feed_type, feed_version, feed_subtype] == feed_info
1300:       else
1301:         false
1302:       end
1303:     end

[Source]

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

[Source]

      # File lib/rss/rss.rb, line 1311
1311:     def xmldecl
1312:       rv = %Q[<?xml version="#{@version}"]
1313:       if @output_encoding or @encoding
1314:         rv << %Q[ encoding="#{@output_encoding or @encoding}"]
1315:       end
1316:       rv << %Q[ standalone="yes"] if @standalone
1317:       rv << "?>\n"
1318:       rv
1319:     end

[Validate]