diff --git a/lib/oga/xml/lexer.rb b/lib/oga/xml/lexer.rb index 655d36e..8021bdc 100644 --- a/lib/oga/xml/lexer.rb +++ b/lib/oga/xml/lexer.rb @@ -347,7 +347,7 @@ module Oga # Called on the closing `>` of the open tag of an element. # 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) @elements.pop end diff --git a/spec/oga/xml/parser/html_void_elements_spec.rb b/spec/oga/xml/parser/html_void_elements_spec.rb index 9166746..674fe4f 100644 --- a/spec/oga/xml/parser/html_void_elements_spec.rb +++ b/spec/oga/xml/parser/html_void_elements_spec.rb @@ -29,6 +29,24 @@ describe Oga::XML::Parser do end end + context 'void elements with different casing' do + before :all do + @node_lc = parse('
', html: true).children[0] + @node_uc = parse('
', 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 before :all do @node = parse('', :html => true).children[0]