mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	- supported Atom. - bumped version 0.1.6 to 0.1.7. * sample/rss/convert.rb: added new sample. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require "rss/utils"
 | 
						|
 | 
						|
module RSS
 | 
						|
  module XML
 | 
						|
    class Element
 | 
						|
      include Enumerable
 | 
						|
 | 
						|
      attr_reader :name, :prefix, :uri, :attributes, :children
 | 
						|
      def initialize(name, prefix=nil, uri=nil, attributes={}, children=[])
 | 
						|
        @name = name
 | 
						|
        @prefix = prefix
 | 
						|
        @uri = uri
 | 
						|
        @attributes = attributes
 | 
						|
        if children.is_a?(String) or !children.respond_to?(:each)
 | 
						|
          @children = [children]
 | 
						|
        else
 | 
						|
          @children = children
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      def [](name)
 | 
						|
        @attributes[name]
 | 
						|
      end
 | 
						|
 | 
						|
      def []=(name, value)
 | 
						|
        @attributes[name] = value
 | 
						|
      end
 | 
						|
 | 
						|
      def <<(child)
 | 
						|
        @children << child
 | 
						|
      end
 | 
						|
 | 
						|
      def each(&block)
 | 
						|
        @children.each(&block)
 | 
						|
      end
 | 
						|
 | 
						|
      def ==(other)
 | 
						|
        other.kind_of?(self.class) and
 | 
						|
          @name == other.name and
 | 
						|
          @uri == other.uri and
 | 
						|
          @attributes == other.attributes and
 | 
						|
          @children == other.children
 | 
						|
      end
 | 
						|
 | 
						|
      def to_s
 | 
						|
        rv = "<#{full_name}"
 | 
						|
        attributes.each do |key, value|
 | 
						|
          rv << " #{Utils.html_escape(key)}=\"#{Utils.html_escape(value)}\""
 | 
						|
        end
 | 
						|
        if children.empty?
 | 
						|
          rv << "/>"
 | 
						|
        else
 | 
						|
          rv << ">"
 | 
						|
          children.each do |child|
 | 
						|
            rv << child.to_s
 | 
						|
          end
 | 
						|
          rv << "</#{full_name}>"
 | 
						|
        end
 | 
						|
        rv
 | 
						|
      end
 | 
						|
 | 
						|
      def full_name
 | 
						|
        if @prefix
 | 
						|
          "#{@prefix}:#{@name}"
 | 
						|
        else
 | 
						|
          @name
 | 
						|
        end
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |