| Module | RSS::RootElementMixin |
| In: |
lib/rss/rss.rb
|
| encoding | [RW] | |
| feed_subtype | [R] | |
| feed_type | [R] | |
| feed_version | [R] | |
| output_encoding | [R] | |
| standalone | [RW] | |
| version | [RW] |
# 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
# File lib/rss/rss.rb, line 1249
1249: def feed_info
1250: [@feed_type, @feed_version, @feed_subtype]
1251: end
# 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
# 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
# File lib/rss/rss.rb, line 1281
1281: def to_atom(type, &block)
1282: to_feed("atom:#{type}", &block)
1283: end
# 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
# File lib/rss/rss.rb, line 1277
1277: def to_rss(type, &block)
1278: to_feed("rss#{type}", &block)
1279: end
# 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
# 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
# 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
# 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