From b23eac6958ee2792d6fe60a31e8c636363e184d9 Mon Sep 17 00:00:00 2001 From: kou Date: Tue, 6 Dec 2016 13:57:56 +0000 Subject: rexml: REXML::Element#[] accepts String or Symbol as attribute name git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57003 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/rexml/element.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'lib') diff --git a/lib/rexml/element.rb b/lib/rexml/element.rb index f725d5a2be..a9811bcba3 100644 --- a/lib/rexml/element.rb +++ b/lib/rexml/element.rb @@ -551,6 +551,30 @@ module REXML # Attributes # ################################################# + # Fetches an attribute value or a child. + # + # If String or Symbol is specified, it's treated as attribute + # name. Attribute value as String or +nil+ is returned. This case + # is shortcut of +attributes[name]+. + # + # If Integer is specified, it's treated as the index of + # child. It returns Nth child. + # + # doc = REXML::Document.new("") + # doc.root["attr"] # => "1" + # doc.root.attributes["attr"] # => "1" + # doc.root[1] # => + def [](name_or_index) + case name_or_index + when String + attributes[name_or_index] + when Symbol + attributes[name_or_index.to_s] + else + super + end + end + def attribute( name, namespace=nil ) prefix = nil if namespaces.respond_to? :key -- cgit v1.2.3