From 8c6a4041aca39bb887dada70caa6b6f6d6c27054 Mon Sep 17 00:00:00 2001 From: Marco Roth Date: Sat, 27 Apr 2024 16:09:34 +0200 Subject: [PATCH 1/3] Use `Nokogiri::HTML5::Inference` for parsing HTML fragments --- Gemfile.lock | 3 + gem/Gemfile.lock | 3 + gem/lib/phlexing/parser.rb | 21 +---- gem/phlexing.gemspec | 1 + .../phlexing/converter/uppercase_tags_test.rb | 1 - gem/test/phlexing/parser_test.rb | 76 +++++++++---------- 6 files changed, 47 insertions(+), 58 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index f49d987..760dbc2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -21,6 +21,7 @@ PATH deface (~> 1.9) html_press (~> 0.8.2) nokogiri (~> 1.0) + nokogiri-html5-inference (~> 0.2) phlex (~> 1.6) phlex-rails (>= 0.9, < 2.0) syntax_tree (~> 6.0) @@ -180,6 +181,8 @@ GEM racc (~> 1.4) nokogiri (1.16.4-x86_64-linux) racc (~> 1.4) + nokogiri-html5-inference (0.2.0) + nokogiri (~> 1.14) parallel (1.22.1) parser (3.1.2.1) ast (~> 2.4.1) diff --git a/gem/Gemfile.lock b/gem/Gemfile.lock index 77ed5ce..9f1ea4e 100644 --- a/gem/Gemfile.lock +++ b/gem/Gemfile.lock @@ -21,6 +21,7 @@ PATH deface (~> 1.9) html_press (~> 0.8.2) nokogiri (~> 1.0) + nokogiri-html5-inference (~> 0.2) phlex (~> 1.6) phlex-rails (>= 0.9, < 2.0) syntax_tree (~> 6.0) @@ -105,6 +106,8 @@ GEM racc (~> 1.4) nokogiri (1.16.2-x86_64-linux) racc (~> 1.4) + nokogiri-html5-inference (0.2.0) + nokogiri (~> 1.14) parallel (1.22.1) parser (3.2.0.0) ast (~> 2.4.1) diff --git a/gem/lib/phlexing/parser.rb b/gem/lib/phlexing/parser.rb index 346223d..8cfca48 100644 --- a/gem/lib/phlexing/parser.rb +++ b/gem/lib/phlexing/parser.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true require "nokogiri" +require "nokogiri/html5/inference" module Phlexing class Parser @@ -8,25 +9,7 @@ def self.call(source) source = ERBTransformer.call(source) source = Minifier.call(source) - # Credit: - # https://github.com/spree/deface/blob/6bf18df76715ee3eb3d0cd1b6eda822817ace91c/lib/deface/parser.rb#L105-L111 - # - - html_tag = /)[\s\S])*>)|>)/i - head_tag = /)[\s\S])*>)|>)/i - body_tag = /)[\s\S])*>)|>)/i - - if source =~ html_tag - Nokogiri::HTML::Document.parse(source) - elsif source =~ head_tag && source =~ body_tag - Nokogiri::HTML::Document.parse(source).css("html").first - elsif source =~ head_tag - Nokogiri::HTML::Document.parse(source).css("head").first - elsif source =~ body_tag - Nokogiri::HTML::Document.parse(source).css("body").first - else - Nokogiri::HTML::DocumentFragment.parse(source) - end + Nokogiri::HTML5::Inference.parse(source) end end end diff --git a/gem/phlexing.gemspec b/gem/phlexing.gemspec index 60cab99..3f32c69 100644 --- a/gem/phlexing.gemspec +++ b/gem/phlexing.gemspec @@ -32,6 +32,7 @@ Gem::Specification.new do |spec| spec.add_dependency "deface", "~> 1.9" spec.add_dependency "html_press", "~> 0.8.2" spec.add_dependency "nokogiri", "~> 1.0" + spec.add_dependency "nokogiri-html5-inference", "~> 0.2" spec.add_dependency "phlex", "~> 1.6" spec.add_dependency "phlex-rails", ">= 0.9", "< 2.0" spec.add_dependency "syntax_tree", "~> 6.0" diff --git a/gem/test/phlexing/converter/uppercase_tags_test.rb b/gem/test/phlexing/converter/uppercase_tags_test.rb index b6f706e..28e61ee 100644 --- a/gem/test/phlexing/converter/uppercase_tags_test.rb +++ b/gem/test/phlexing/converter/uppercase_tags_test.rb @@ -76,7 +76,6 @@ class Phlexing::Converter::UppercaseTagsTest < Minitest::Spec expected = <<~PHLEX.strip html do - whitespace head whitespace body diff --git a/gem/test/phlexing/parser_test.rb b/gem/test/phlexing/parser_test.rb index 59ff496..38756be 100644 --- a/gem/test/phlexing/parser_test.rb +++ b/gem/test/phlexing/parser_test.rb @@ -2,10 +2,6 @@ require_relative "../test_helper" -def assert_dom_equal(expected, actual) - assert_equal expected, actual.gsub(%(), "").squish -end - module Phlexing class ParserTest < Minitest::Spec before(:each) do @@ -13,9 +9,13 @@ class ParserTest < Minitest::Spec end def extract_children(node) - @nodes << node.name + @nodes << node.name if node.respond_to?(:name) - if node&.children + if node.is_a?(Nokogiri::XML::NodeSet) + node.each do |n| + extract_children(n) + end + elsif node&.children node.children.each do |node| extract_children(node) end @@ -28,88 +28,88 @@ def extract_children(node) parser = Parser.call(nil) assert_equal "#document-fragment", extract_children(parser).join(",") - assert_dom_equal "", parser.to_xml + assert_equal "", parser.to_html assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML4::DocumentFragment, parser.class + assert_equal Nokogiri::HTML5::DocumentFragment, parser.class end it "should handle empty string" do parser = Parser.call("") assert_equal "#document-fragment", extract_children(parser).join(",") - assert_dom_equal "", parser.to_xml + assert_equal "", parser.to_html assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML4::DocumentFragment, parser.class + assert_equal Nokogiri::HTML5::DocumentFragment, parser.class end it "should handle simple div" do parser = Parser.call("
") assert_equal "#document-fragment,div", extract_children(parser).join(",") - assert_dom_equal %(
), parser.to_html + assert_equal %(
), parser.to_html assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML4::DocumentFragment, parser.class + assert_equal Nokogiri::HTML5::DocumentFragment, parser.class end it "should handle ERB" do parser = Parser.call("
<%= some_method %>
") assert_equal "#document-fragment,div,erb,text", extract_children(parser).join(",") - assert_dom_equal %(
some_method
), parser.to_xml + assert_equal %(
some_method
), parser.to_html assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML4::DocumentFragment, parser.class + assert_equal Nokogiri::HTML5::DocumentFragment, parser.class end it "should handle html" do parser = Parser.call("") - assert_equal "document,html,html", extract_children(parser).join(",") - assert_dom_equal %(), parser.to_xml + assert_equal "document,html,head,body", extract_children(parser).join(",") + assert_equal %(), parser.to_html assert_equal "document", parser.name - assert_equal Nokogiri::HTML4::Document, parser.class + assert_equal Nokogiri::HTML5::DocumentFragment, parser.class end it "should handle html, head and body" do parser = Parser.call("Title

Hello

") - assert_equal "document,html,html,head,title,text,body,h1,text", extract_children(parser).join(",") - assert_dom_equal %( Title

Hello

), parser.to_xml + assert_equal "document,html,head,title,text,body,h1,text", extract_children(parser).join(",") + assert_equal %(Title

Hello

), parser.to_html assert_equal "document", parser.name - assert_equal Nokogiri::HTML4::Document, parser.class + assert_equal Nokogiri::HTML5::Document, parser.class end it "should handle html and head" do parser = Parser.call("Title") - assert_equal "document,html,html,head,title,text", extract_children(parser).join(",") - assert_dom_equal %( Title ), parser.to_xml + assert_equal "document,html,head,title,text,body", extract_children(parser).join(",") + assert_equal %(Title), parser.to_html assert_equal "document", parser.name - assert_equal Nokogiri::HTML4::Document, parser.class + assert_equal Nokogiri::HTML5::Document, parser.class end it "should handle html and body" do parser = Parser.call("

Hello

") - assert_equal "document,html,html,body,h1,text", extract_children(parser).join(",") - assert_dom_equal %(

Hello

), parser.to_xml + assert_equal "document,html,body,h1,text", extract_children(parser).join(",") + assert_equal %(

Hello

), parser.to_html assert_equal "document", parser.name - assert_equal Nokogiri::HTML4::Document, parser.class + assert_equal Nokogiri::HTML5::Document, parser.class end it "should handle head and body" do parser = Parser.call("Title

Hello

") - assert_equal "html,head,title,text,body,h1,text", extract_children(parser).join(",") - assert_dom_equal %( Title

Hello

), parser.to_xml - assert_equal "html", parser.name - assert_equal Nokogiri::XML::Element, parser.class + assert_equal "head,title,text,body,h1,text", extract_children(parser).join(",") + assert_equal %(Title

Hello

), parser.to_html + assert_equal false, parser.respond_to?(:name) + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle head with title" do parser = Parser.call("Title") assert_equal "head,title,text", extract_children(parser).join(",") - assert_dom_equal %( Title ), parser.to_xml + assert_equal %(Title), parser.to_html assert_equal "head", parser.name assert_equal Nokogiri::XML::Element, parser.class end @@ -118,7 +118,7 @@ def extract_children(node) parser = Parser.call("") assert_equal "head", extract_children(parser).join(",") - assert_dom_equal %(), parser.to_html + assert_equal %(), parser.to_html assert_equal "head", parser.name assert_equal Nokogiri::XML::Element, parser.class end @@ -127,18 +127,18 @@ def extract_children(node) parser = Parser.call("

Hello

") assert_equal "body,h1,text", extract_children(parser).join(",") - assert_dom_equal %(

Hello

), parser.to_xml - assert_equal "body", parser.name - assert_equal Nokogiri::XML::Element, parser.class + assert_equal %(

Hello

), parser.to_html + # assert_equal "body", parser.name + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle body" do parser = Parser.call("") assert_equal "body", extract_children(parser).join(",") - assert_dom_equal %(), parser.to_html - assert_equal "body", parser.name - assert_equal Nokogiri::XML::Element, parser.class + assert_equal %(), parser.to_html + # assert_equal "body", parser.name + assert_equal Nokogiri::XML::NodeSet, parser.class end end end From 88f27d75a7728c17e65226fe118b5f6cb3e0a12c Mon Sep 17 00:00:00 2001 From: Marco Roth Date: Tue, 30 Apr 2024 21:53:55 +0200 Subject: [PATCH 2/3] Adapt test assertions --- gem/lib/phlexing/template_generator.rb | 2 ++ gem/test/phlexing/converter/tags_test.rb | 25 ++++++++++--------- .../phlexing/converter/uppercase_tags_test.rb | 22 ++++++++++------ gem/test/phlexing/parser_test.rb | 24 ++++++++---------- 4 files changed, 40 insertions(+), 33 deletions(-) diff --git a/gem/lib/phlexing/template_generator.rb b/gem/lib/phlexing/template_generator.rb index 5acc61d..238fceb 100644 --- a/gem/lib/phlexing/template_generator.rb +++ b/gem/lib/phlexing/template_generator.rb @@ -231,6 +231,8 @@ def handle_node(node, level = 0) handle_document_node(node, level) in Nokogiri::XML::Comment handle_html_comment_node(node) + in Nokogiri::XML::NodeSet + node.each { |n| handle_element_node(n, level) } end end end diff --git a/gem/test/phlexing/converter/tags_test.rb b/gem/test/phlexing/converter/tags_test.rb index 6d4f7c3..0f4ca52 100644 --- a/gem/test/phlexing/converter/tags_test.rb +++ b/gem/test/phlexing/converter/tags_test.rb @@ -8,10 +8,15 @@ class Phlexing::Converter::TagsTest < Minitest::Spec assert_phlex_template "span", %() assert_phlex_template "p", %(

) assert_phlex_template "template_tag", %() - assert_phlex_template "html", %() - assert_phlex_template "head", %() + assert_phlex_template "head\nbody", %() assert_phlex_template "header", %(
) assert_phlex_template "body", %() + assert_phlex_template <<~PHLEX.strip, %() + html do + head + body + end + PHLEX end it "basic self closing tag" do @@ -133,11 +138,8 @@ class Phlexing::Converter::TagsTest < Minitest::Spec HTML expected = <<~PHLEX.strip - html do - head - - body - end + head + body PHLEX assert_phlex_template expected, html @@ -150,11 +152,8 @@ class Phlexing::Converter::TagsTest < Minitest::Spec HTML expected = <<~PHLEX.strip - html do - head - - body - end + head + body PHLEX assert_phlex_template expected, html @@ -167,6 +166,7 @@ class Phlexing::Converter::TagsTest < Minitest::Spec expected = <<~PHLEX.strip head + body PHLEX assert_phlex_template expected, html @@ -179,6 +179,7 @@ class Phlexing::Converter::TagsTest < Minitest::Spec expected = <<~PHLEX.strip head(id: "123") + body PHLEX assert_phlex_template expected, html diff --git a/gem/test/phlexing/converter/uppercase_tags_test.rb b/gem/test/phlexing/converter/uppercase_tags_test.rb index 28e61ee..556731a 100644 --- a/gem/test/phlexing/converter/uppercase_tags_test.rb +++ b/gem/test/phlexing/converter/uppercase_tags_test.rb @@ -8,9 +8,14 @@ class Phlexing::Converter::UppercaseTagsTest < Minitest::Spec assert_phlex_template "span", %() assert_phlex_template "p", %(

) assert_phlex_template "template_tag", %() - assert_phlex_template "html", %() - assert_phlex_template "head", %() + assert_phlex_template "head\nbody", %() assert_phlex_template "body", %() + assert_phlex_template <<~PHLEX.strip, %() + html do + head + body + end + PHLEX end it "standlone uppercase body tag" do @@ -32,6 +37,7 @@ class Phlexing::Converter::UppercaseTagsTest < Minitest::Spec expected = <<~PHLEX.strip head + body PHLEX assert_phlex_template expected, html @@ -43,7 +49,10 @@ class Phlexing::Converter::UppercaseTagsTest < Minitest::Spec HTML expected = <<~PHLEX.strip - html + html do + head + body + end PHLEX assert_phlex_template expected, html @@ -56,11 +65,8 @@ class Phlexing::Converter::UppercaseTagsTest < Minitest::Spec HTML expected = <<~PHLEX.strip - html do - head - - body - end + head + body PHLEX assert_phlex_template expected, html diff --git a/gem/test/phlexing/parser_test.rb b/gem/test/phlexing/parser_test.rb index 38756be..6d05733 100644 --- a/gem/test/phlexing/parser_test.rb +++ b/gem/test/phlexing/parser_test.rb @@ -64,9 +64,9 @@ def extract_children(node) parser = Parser.call("") assert_equal "document,html,head,body", extract_children(parser).join(",") - assert_equal %(), parser.to_html + assert_equal %(), parser.to_html assert_equal "document", parser.name - assert_equal Nokogiri::HTML5::DocumentFragment, parser.class + assert_equal Nokogiri::HTML5::Document, parser.class end it "should handle html, head and body" do @@ -82,7 +82,7 @@ def extract_children(node) parser = Parser.call("Title") assert_equal "document,html,head,title,text,body", extract_children(parser).join(",") - assert_equal %(Title), parser.to_html + assert_equal %(Title), parser.to_html assert_equal "document", parser.name assert_equal Nokogiri::HTML5::Document, parser.class end @@ -90,8 +90,8 @@ def extract_children(node) it "should handle html and body" do parser = Parser.call("

Hello

") - assert_equal "document,html,body,h1,text", extract_children(parser).join(",") - assert_equal %(

Hello

), parser.to_html + assert_equal "document,html,head,body,h1,text", extract_children(parser).join(",") + assert_equal %(

Hello

), parser.to_html assert_equal "document", parser.name assert_equal Nokogiri::HTML5::Document, parser.class end @@ -108,19 +108,17 @@ def extract_children(node) it "should handle head with title" do parser = Parser.call("Title") - assert_equal "head,title,text", extract_children(parser).join(",") - assert_equal %(Title), parser.to_html - assert_equal "head", parser.name - assert_equal Nokogiri::XML::Element, parser.class + assert_equal "head,title,text,body", extract_children(parser).join(",") + assert_equal %(Title), parser.to_html + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle head" do parser = Parser.call("") - assert_equal "head", extract_children(parser).join(",") - assert_equal %(), parser.to_html - assert_equal "head", parser.name - assert_equal Nokogiri::XML::Element, parser.class + assert_equal "head,body", extract_children(parser).join(",") + assert_equal %(), parser.to_html + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle body with h1" do From 0127008ec6256b2d8de457ff80235759a609ab5e Mon Sep 17 00:00:00 2001 From: Marco Roth Date: Thu, 2 May 2024 17:26:28 -0400 Subject: [PATCH 3/3] Update `nokogiri-html5-inference` to latest PR branch --- gem/Gemfile | 3 +++ gem/Gemfile.lock | 11 ++++++-- gem/lib/phlexing/name_suggestor.rb | 2 +- gem/lib/phlexing/template_generator.rb | 2 +- gem/test/phlexing/converter/tags_test.rb | 6 ++++- .../phlexing/converter/uppercase_tags_test.rb | 3 ++- gem/test/phlexing/parser_test.rb | 26 ++++++------------- 7 files changed, 29 insertions(+), 24 deletions(-) diff --git a/gem/Gemfile b/gem/Gemfile index 0fe4dc7..8117724 100644 --- a/gem/Gemfile +++ b/gem/Gemfile @@ -8,3 +8,6 @@ gem "maxitest", "~> 4.4" gem "minitest", "~> 5.0" gem "rake", "~> 13.0" gem "rubocop", require: false, github: "joeldrapper/rubocop", branch: "rubocop-user-agent" +# gem "nokogiri-html5-inference", github: "flavorjones/nokogiri-html5-inference", branch: "2-use-template-context-node" + +gem "nokogiri-html5-inference", github: "flavorjones/nokogiri-html5-inference", branch: "flavorjones-always-return-nodeset" diff --git a/gem/Gemfile.lock b/gem/Gemfile.lock index 9f1ea4e..cbb27bb 100644 --- a/gem/Gemfile.lock +++ b/gem/Gemfile.lock @@ -1,3 +1,11 @@ +GIT + remote: https://github.com/flavorjones/nokogiri-html5-inference.git + revision: 7426a3601d30bf6cb9794d6b5c2e767151a0fa6f + branch: flavorjones-always-return-nodeset + specs: + nokogiri-html5-inference (0.2.0) + nokogiri (~> 1.14) + GIT remote: https://github.com/joeldrapper/rubocop.git revision: 8d3c1a7dd04a0dee701e26ee506b28af0ffe3b98 @@ -106,8 +114,6 @@ GEM racc (~> 1.4) nokogiri (1.16.2-x86_64-linux) racc (~> 1.4) - nokogiri-html5-inference (0.2.0) - nokogiri (~> 1.14) parallel (1.22.1) parser (3.2.0.0) ast (~> 2.4.1) @@ -181,6 +187,7 @@ PLATFORMS DEPENDENCIES maxitest (~> 4.4) minitest (~> 5.0) + nokogiri-html5-inference! phlexing! rake (~> 13.0) rubocop! diff --git a/gem/lib/phlexing/name_suggestor.rb b/gem/lib/phlexing/name_suggestor.rb index 3003711..a2f4dd8 100644 --- a/gem/lib/phlexing/name_suggestor.rb +++ b/gem/lib/phlexing/name_suggestor.rb @@ -33,7 +33,7 @@ def self.wrap(name) def self.extract(document, method) return [] unless document - document.children.map { |element| send(method, element) }.compact + document.map { |element| send(method, element) }.compact end def self.extract_id_from_element(element) diff --git a/gem/lib/phlexing/template_generator.rb b/gem/lib/phlexing/template_generator.rb index 238fceb..974e1b5 100644 --- a/gem/lib/phlexing/template_generator.rb +++ b/gem/lib/phlexing/template_generator.rb @@ -232,7 +232,7 @@ def handle_node(node, level = 0) in Nokogiri::XML::Comment handle_html_comment_node(node) in Nokogiri::XML::NodeSet - node.each { |n| handle_element_node(n, level) } + node.each { |n| handle_node(n, level + 1) } end end end diff --git a/gem/test/phlexing/converter/tags_test.rb b/gem/test/phlexing/converter/tags_test.rb index 0f4ca52..ae5be4b 100644 --- a/gem/test/phlexing/converter/tags_test.rb +++ b/gem/test/phlexing/converter/tags_test.rb @@ -8,7 +8,7 @@ class Phlexing::Converter::TagsTest < Minitest::Spec assert_phlex_template "span", %() assert_phlex_template "p", %(

) assert_phlex_template "template_tag", %() - assert_phlex_template "head\nbody", %() + assert_phlex_template "head\n\nbody", %() assert_phlex_template "header", %(
) assert_phlex_template "body", %() assert_phlex_template <<~PHLEX.strip, %() @@ -139,6 +139,7 @@ class Phlexing::Converter::TagsTest < Minitest::Spec expected = <<~PHLEX.strip head + body PHLEX @@ -153,6 +154,7 @@ class Phlexing::Converter::TagsTest < Minitest::Spec expected = <<~PHLEX.strip head + body PHLEX @@ -166,6 +168,7 @@ class Phlexing::Converter::TagsTest < Minitest::Spec expected = <<~PHLEX.strip head + body PHLEX @@ -179,6 +182,7 @@ class Phlexing::Converter::TagsTest < Minitest::Spec expected = <<~PHLEX.strip head(id: "123") + body PHLEX diff --git a/gem/test/phlexing/converter/uppercase_tags_test.rb b/gem/test/phlexing/converter/uppercase_tags_test.rb index 556731a..8472bb3 100644 --- a/gem/test/phlexing/converter/uppercase_tags_test.rb +++ b/gem/test/phlexing/converter/uppercase_tags_test.rb @@ -8,7 +8,7 @@ class Phlexing::Converter::UppercaseTagsTest < Minitest::Spec assert_phlex_template "span", %() assert_phlex_template "p", %(

) assert_phlex_template "template_tag", %() - assert_phlex_template "head\nbody", %() + assert_phlex_template "head\n\nbody", %() assert_phlex_template "body", %() assert_phlex_template <<~PHLEX.strip, %() html do @@ -37,6 +37,7 @@ class Phlexing::Converter::UppercaseTagsTest < Minitest::Spec expected = <<~PHLEX.strip head + body PHLEX diff --git a/gem/test/phlexing/parser_test.rb b/gem/test/phlexing/parser_test.rb index 6d05733..5025af6 100644 --- a/gem/test/phlexing/parser_test.rb +++ b/gem/test/phlexing/parser_test.rb @@ -27,37 +27,33 @@ def extract_children(node) it "should handle nil" do parser = Parser.call(nil) - assert_equal "#document-fragment", extract_children(parser).join(",") + assert_equal "", extract_children(parser).join(",") assert_equal "", parser.to_html - assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML5::DocumentFragment, parser.class + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle empty string" do parser = Parser.call("") - assert_equal "#document-fragment", extract_children(parser).join(",") + assert_equal "", extract_children(parser).join(",") assert_equal "", parser.to_html - assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML5::DocumentFragment, parser.class + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle simple div" do parser = Parser.call("
") - assert_equal "#document-fragment,div", extract_children(parser).join(",") + assert_equal "div", extract_children(parser).join(",") assert_equal %(
), parser.to_html - assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML5::DocumentFragment, parser.class + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle ERB" do parser = Parser.call("
<%= some_method %>
") - assert_equal "#document-fragment,div,erb,text", extract_children(parser).join(",") + assert_equal "div,erb,text", extract_children(parser).join(",") assert_equal %(
some_method
), parser.to_html - assert_equal "#document-fragment", parser.name - assert_equal Nokogiri::HTML5::DocumentFragment, parser.class + assert_equal Nokogiri::XML::NodeSet, parser.class end it "should handle html" do @@ -74,7 +70,6 @@ def extract_children(node) assert_equal "document,html,head,title,text,body,h1,text", extract_children(parser).join(",") assert_equal %(Title

Hello

), parser.to_html - assert_equal "document", parser.name assert_equal Nokogiri::HTML5::Document, parser.class end @@ -83,7 +78,6 @@ def extract_children(node) assert_equal "document,html,head,title,text,body", extract_children(parser).join(",") assert_equal %(Title), parser.to_html - assert_equal "document", parser.name assert_equal Nokogiri::HTML5::Document, parser.class end @@ -92,7 +86,6 @@ def extract_children(node) assert_equal "document,html,head,body,h1,text", extract_children(parser).join(",") assert_equal %(

Hello

), parser.to_html - assert_equal "document", parser.name assert_equal Nokogiri::HTML5::Document, parser.class end @@ -101,7 +94,6 @@ def extract_children(node) assert_equal "head,title,text,body,h1,text", extract_children(parser).join(",") assert_equal %(Title

Hello

), parser.to_html - assert_equal false, parser.respond_to?(:name) assert_equal Nokogiri::XML::NodeSet, parser.class end @@ -126,7 +118,6 @@ def extract_children(node) assert_equal "body,h1,text", extract_children(parser).join(",") assert_equal %(

Hello

), parser.to_html - # assert_equal "body", parser.name assert_equal Nokogiri::XML::NodeSet, parser.class end @@ -135,7 +126,6 @@ def extract_children(node) assert_equal "body", extract_children(parser).join(",") assert_equal %(), parser.to_html - # assert_equal "body", parser.name assert_equal Nokogiri::XML::NodeSet, parser.class end end