From 823d77033ed2c8cac31b6eae9b194b6e6c6c15b0 Mon Sep 17 00:00:00 2001 From: Will Green Date: Thu, 3 Apr 2014 23:33:30 -0400 Subject: [PATCH] Switch to Nokogiri::HTML for html writer By switching to the HTML parser from the XML parser, we can better handle malformed html documents and save out something that at least marginally resembles the input HTML. --- lib/approvals/writers/html_writer.rb | 2 +- spec/approvals_spec.rb | 11 +++++++++++ ...s_verifies_a_malformed_html_fragment.approved.html | 11 +++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/approvals/approvals_verifies_a_malformed_html_fragment.approved.html diff --git a/lib/approvals/writers/html_writer.rb b/lib/approvals/writers/html_writer.rb index 42ecf2a..429575a 100644 --- a/lib/approvals/writers/html_writer.rb +++ b/lib/approvals/writers/html_writer.rb @@ -7,7 +7,7 @@ def extension end def format(data) - Nokogiri::XML(data.to_s.strip,&:noblanks).to_xhtml(:indent => 2, :encoding => 'UTF-8') + Nokogiri::HTML(data.to_s.strip,&:noblanks).to_xhtml(:indent => 2, :encoding => 'UTF-8') end end diff --git a/spec/approvals_spec.rb b/spec/approvals_spec.rb index bf271d2..0715c55 100644 --- a/spec/approvals_spec.rb +++ b/spec/approvals_spec.rb @@ -57,6 +57,17 @@ def hello.inspect Approvals.verify html, :format => :html, :namer => namer end + it "verifies a malformed html fragment" do + html = <<-HTML + + +Hoi + +

yo

+ HTML + Approvals.verify html, :format => :html, :namer => namer + end + it "verifies xml" do xml = "" Approvals.verify xml, :format => :xml, :namer => namer diff --git a/spec/fixtures/approvals/approvals_verifies_a_malformed_html_fragment.approved.html b/spec/fixtures/approvals/approvals_verifies_a_malformed_html_fragment.approved.html new file mode 100644 index 0000000..fd48dcc --- /dev/null +++ b/spec/fixtures/approvals/approvals_verifies_a_malformed_html_fragment.approved.html @@ -0,0 +1,11 @@ + + + + + Hoi + + + +

yo

+ +