diff options
author | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-03-17 10:13:25 +0000 |
---|---|---|
committer | kou <kou@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-03-17 10:13:25 +0000 |
commit | c3adb681b3e5281044d5bebd91851fd9afea0b8a (patch) | |
tree | 847090e856c9901ab2cc19251c179b9b0985e65b /lib/rss/xml.rb | |
parent | 8c9c2f26929b0f077188546492d38dddaa966b9a (diff) | |
download | ruby-c3adb681b3e5281044d5bebd91851fd9afea0b8a.tar.gz ruby-c3adb681b3e5281044d5bebd91851fd9afea0b8a.tar.xz ruby-c3adb681b3e5281044d5bebd91851fd9afea0b8a.zip |
* lib/rss, test/rss:
- supported Atom.
- bumped version 0.1.6 to 0.1.7.
* sample/rss/convert.rb: added new sample.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rss/xml.rb')
-rw-r--r-- | lib/rss/xml.rb | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/lib/rss/xml.rb b/lib/rss/xml.rb new file mode 100644 index 000000000..1ae878b77 --- /dev/null +++ b/lib/rss/xml.rb @@ -0,0 +1,71 @@ +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 |