diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-01 05:43:50 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-01-01 05:43:50 +0000 |
| commit | 7222bec296a3356a13472454f1f1ff8b208fc881 (patch) | |
| tree | 550af4707b22d099f4d8393e29ef6da424aca813 /lib/rexml/element.rb | |
| parent | cd7b5c2d6c664e589062f3f400bd0498225a56cb (diff) | |
| download | ruby-7222bec296a3356a13472454f1f1ff8b208fc881.tar.gz ruby-7222bec296a3356a13472454f1f1ff8b208fc881.tar.xz ruby-7222bec296a3356a13472454f1f1ff8b208fc881.zip | |
* lib/rexml: 1.9 patch from Sam Ruby mentioned in his blog:
<http://intertwingly.net/blog/2007/12/31/Porting-REXML-to-Ruby-1-9>
[ruby-core:14639]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rexml/element.rb')
| -rw-r--r-- | lib/rexml/element.rb | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/rexml/element.rb b/lib/rexml/element.rb index 345e1734e..55094111e 100644 --- a/lib/rexml/element.rb +++ b/lib/rexml/element.rb @@ -296,7 +296,7 @@ module REXML raise "First argument must be either an element name, or an Element object" if element.nil? el = @elements.add(element) attrs.each do |key, value| - el.attributes[key]=Attribute.new(key,value,self) + el.attributes[key]=value end if attrs.kind_of? Hash el end @@ -552,7 +552,11 @@ module REXML def attribute( name, namespace=nil ) prefix = nil - prefix = namespaces.index(namespace) if namespace + if namespaces.respond_to? :key + prefix = namespaces.key(namespace) if namespace + else + prefix = namespaces.index(namespace) if namespace + end prefix = nil if prefix == 'xmlns' attributes.get_attribute( "#{prefix ? prefix + ':' : ''}#{name}" ) end @@ -704,7 +708,6 @@ module REXML # A private helper method def each_with_something( test, max=0, name=nil ) num = 0 - child=nil @elements.each( name ){ |child| yield child if test.call(child) and num += 1 return if max>0 and num == max @@ -754,7 +757,6 @@ module REXML raise "index (#{index}) must be >= 1" if index < 1 name = literalize(name) if name num = 0 - child = nil @element.find { |child| child.kind_of? Element and (name.nil? ? true : child.has_name?( name )) and @@ -1217,7 +1219,8 @@ module REXML def get_attribute_ns(namespace, name) each_attribute() { |attribute| if name == attribute.name && - namespace == attribute.namespace() + namespace == attribute.namespace() && + ( !namespace.empty? || !attribute.fully_expanded_name.index(':') ) return attribute end } |
