Added the XML::Attribute class.
This class will replace the use of raw Hash/String values for attributes in upcoming commits.
This commit is contained in:
parent
d09ab26680
commit
ce86785da6
|
@ -24,6 +24,7 @@ require_relative 'oga/xml/comment'
|
||||||
require_relative 'oga/xml/cdata'
|
require_relative 'oga/xml/cdata'
|
||||||
require_relative 'oga/xml/xml_declaration'
|
require_relative 'oga/xml/xml_declaration'
|
||||||
require_relative 'oga/xml/doctype'
|
require_relative 'oga/xml/doctype'
|
||||||
|
require_relative 'oga/xml/attribute'
|
||||||
require_relative 'oga/xml/node_set'
|
require_relative 'oga/xml/node_set'
|
||||||
|
|
||||||
require_relative 'oga/html/parser'
|
require_relative 'oga/html/parser'
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
module Oga
|
||||||
|
module XML
|
||||||
|
##
|
||||||
|
# Class for storing information about a single XML attribute.
|
||||||
|
#
|
||||||
|
# @!attribute [rw] name
|
||||||
|
# The name of the attribute.
|
||||||
|
# @return [String]
|
||||||
|
#
|
||||||
|
# @!attribute [rw] namespace
|
||||||
|
# The namespace of the attribute.
|
||||||
|
# @return [String]
|
||||||
|
#
|
||||||
|
# @!attribute [rw] value
|
||||||
|
# The value of the attribute.
|
||||||
|
# @return [String]
|
||||||
|
#
|
||||||
|
class Attribute
|
||||||
|
attr_accessor :name, :namespace, :value
|
||||||
|
|
||||||
|
##
|
||||||
|
# @param [Hash] options
|
||||||
|
#
|
||||||
|
# @option options [String] :name
|
||||||
|
# @option options [String] :namespace
|
||||||
|
# @option options [String] :value
|
||||||
|
#
|
||||||
|
def initialize(options = {})
|
||||||
|
@name = options[:name]
|
||||||
|
@namespace = options[:namespace]
|
||||||
|
@value = options[:value]
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# @return [String]
|
||||||
|
#
|
||||||
|
def to_s
|
||||||
|
return value.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# @return [String]
|
||||||
|
#
|
||||||
|
def inspect
|
||||||
|
return "Attribute(name: #{name.inspect} " \
|
||||||
|
"namespace: #{namespace.inspect} value: #{value.inspect})"
|
||||||
|
end
|
||||||
|
end # Attribute
|
||||||
|
end # XML
|
||||||
|
end # Oga
|
|
@ -0,0 +1,35 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Oga::XML::Attribute do
|
||||||
|
context '#initialize' do
|
||||||
|
example 'set the name' do
|
||||||
|
described_class.new(:name => 'a').name.should == 'a'
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'set the namespace' do
|
||||||
|
described_class.new(:namespace => 'a').namespace.should == 'a'
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'set the value' do
|
||||||
|
described_class.new(:value => 'a').value.should == 'a'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context '#to_s' do
|
||||||
|
example 'return an empty String when there is no value' do
|
||||||
|
described_class.new.to_s.should == ''
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'return the value if it is present' do
|
||||||
|
described_class.new(:value => 'a').to_s.should == 'a'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context '#inspect' do
|
||||||
|
example 'return the inspect value' do
|
||||||
|
obj = described_class.new(:name => 'a', :namespace => 'b', :value => 'c')
|
||||||
|
|
||||||
|
obj.inspect.should == 'Attribute(name: "a" namespace: "b" value: "c")'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue