Add aliases for accessing attributes via [] and []=

This also fixes accessing attributes via symbol name and tests to ensure
that such does not break in the future.
This commit is contained in:
Scott Wheeler 2016-09-12 13:05:02 +03:00
parent b8fd8670df
commit d40baf0c72
2 changed files with 27 additions and 5 deletions

View File

@ -91,6 +91,8 @@ module Oga
found ? found.value : nil
end
alias_method :[], :get
# Adds a new attribute to the element.
#
# @param [Oga::XML::Attribute] attribute
@ -113,11 +115,7 @@ module Oga
if found
found.value = value
else
if name.include?(':')
ns, name = name.split(':')
else
ns = nil
end
name, ns = split_name(name)
attr = Attribute.new(
:name => name,
@ -129,6 +127,8 @@ module Oga
end
end
alias_method :[]=, :set
# Removes an attribute from the element.
#
# @param [String] name The name (optionally including namespace prefix)

View File

@ -129,6 +129,13 @@ describe Oga::XML::Element do
end
end
describe '#[]' do
it 'is an alias to get' do
described_class.instance_method(:[]).should ==
described_class.instance_method(:get)
end
end
describe '#add_attribute' do
before do
@element = described_class.new
@ -161,6 +168,14 @@ describe Oga::XML::Element do
@element.get('class').should == 'foo'
end
it 'supports the use of Symbols for attribute names' do
@element.set(:foo, 'foo')
@element.get('foo').should == 'foo'
@element.set('bar', 'bar')
@element.get(:bar).should == 'bar'
end
it 'adds a new attribute with a namespace' do
@element.set('x:bar', 'foo')
@ -186,6 +201,13 @@ describe Oga::XML::Element do
end
end
describe '#[]=' do
it 'is an alias to set' do
described_class.instance_method(:[]=).should ==
described_class.instance_method(:set)
end
end
describe '#unset' do
before do
@element = described_class.new