Ignore casing when testing for html void elements

Fixes #36
This commit is contained in:
Tero Tasanen 2014-09-14 12:02:02 +03:00
parent ee538ddcc2
commit 9f71b1ec7b
2 changed files with 19 additions and 1 deletions

View File

@ -347,7 +347,7 @@ module Oga
# Called on the closing `>` of the open tag of an element. # Called on the closing `>` of the open tag of an element.
# #
def on_element_open_end def on_element_open_end
if html? and HTML_VOID_ELEMENTS.include?(current_element) if html? and HTML_VOID_ELEMENTS.include?(current_element.downcase)
add_token(:T_ELEM_END) add_token(:T_ELEM_END)
@elements.pop @elements.pop
end end

View File

@ -29,6 +29,24 @@ describe Oga::XML::Parser do
end end
end end
context 'void elements with different casing' do
before :all do
@node_lc = parse('<br>', html: true).children[0]
@node_uc = parse('<BR>', html: true).children[0]
end
example 'parse void elements with different casing' do
@node_lc.is_a?(Oga::XML::Element).should == true
@node_uc.is_a?(Oga::XML::Element).should == true
end
example 'set the name of the void element to match casing' do
@node_lc.name.should == 'br'
@node_uc.name.should == 'BR'
end
end
context 'void elements with attributes' do context 'void elements with attributes' do
before :all do before :all do
@node = parse('<link href="foo">', :html => true).children[0] @node = parse('<link href="foo">', :html => true).children[0]