diff --git a/lib/oga/parser.y b/lib/oga/parser.y index 8c03af9..aefa1a1 100644 --- a/lib/oga/parser.y +++ b/lib/oga/parser.y @@ -95,13 +95,14 @@ rule ; element_body + : element_body element_body_ { val } + | element_body_ + | /* none */ { nil } + ; + + element_body_ : texts - | texts elements { val } - | texts elements texts { val } | elements - | elements texts { val } - | elements texts elements { val } - | /* none */ { nil } ; # Attributes diff --git a/spec/oga/parser/documents_spec.rb b/spec/oga/parser/documents_spec.rb index cfc5b4e..90e0c3c 100644 --- a/spec/oga/parser/documents_spec.rb +++ b/spec/oga/parser/documents_spec.rb @@ -16,6 +16,7 @@ describe Oga::Parser do parse_html(html).should == s( :document, s(:doctype), + s(:text, "\n"), # s( @@ -24,6 +25,8 @@ describe Oga::Parser do 'html', nil, + s(:text, "\n"), + # s( :element, @@ -31,6 +34,8 @@ describe Oga::Parser do 'head', nil, + s(:text, "\n"), + # s( :element, @@ -38,11 +43,15 @@ describe Oga::Parser do 'title', nil, s(:text, 'Title') - ) + ), + + s(:text, "\n") ), # <body> - s(:element, nil, 'body', nil, nil) + s(:text, "\n"), + s(:element, nil, 'body', nil, nil), + s(:text, "\n") ), s(:text, "\n") )