From: Aaron Patterson Date: 2009-06-16T02:19:27+09:00 Subject: Re: [ANN] markup_validity 1.0.0 Released On Mon, Jun 15, 2009 at 11:04:00PM +0900, Rob Sanheim wrote: > On Fri, Jun 12, 2009 at 8:29 PM, Aaron > Patterson wrote: > > markup_validity version 1.0.0 has been released! > > > > * > > > > MarkupValidity provides test/unit and rspec helpers for checking the validity > > of your documents. �Shortcuts for verifying xhtml-transitional and > > xhtml-strict documents are provided as well. �MarkupValidity will not only > > tell you when your document is invalid, but it will tell you what it *should* > > be. > > > > Changes: > > > > ### 1.0.0 / 2009-06-11 > > > > * 1 major enhancement > > > > �* Birthday! > > > > ## FEATURES/PROBLEMS: > > > > * Make sure that markup_validity is required *after* test/unit, or mix > > �MarkupValidity::Assertions in to your test class yourself. > > * Currently AWESOME! > > > > ## SYNOPSIS: > > > > �### > > �# test/unit example > > �require 'test/unit' > > �require 'rubygems' > > �require 'markup_validity' > > > > �class ValidHTML < Test::Unit::TestCase > > � �def test_i_can_has_valid_xhtml > > � � �assert_xhtml_transitional xhtml_document > > � �end > > �end > > > > �### > > �# rspec example > > �require 'rubygems' > > �require 'markup_validity' > > > > �describe "my XHTML document" do > > � �it "can has transitional xhtml" do > > � � �xhtml_document.should be_xhtml_transitional > > � �end > > �end > > > > �### > > �# Rails controller test example > > �require 'test_helper' > > �require 'markup_validity' > > > > �class AwesomeControllerTest < ActionController::TestCase > > � �test "valid markup" do > > � � �get :new > > � � �assert_xhtml_transitional @response.body > > � �end > > �end > > > > �### > > �# Here is an example error report > > > > �Error on line: 7: > > �Element 'p': This element is not expected. Expected is one of ( a, br, span, bdo, object, applet, img, map, iframe, tt ). > > > > �6: � �

> > �7: � � �

> > �8: � � � � Yo dawg, I heard you like p-tags > > �9: � � �

> > �10: � �

> > �. > > � is not true. > > > > ## REQUIREMENTS: > > > > * depends on nokogiri > > > > ## INSTALL: > > > > * gem install markup_validity > > > > * > > > > -- > > Aaron Patterson > > http://tenderlovemaking.com/ > > This is very cool, I'd like to integrate support for this into > Tarantula (http://github.com/relevance/tarantula/tree/master). How > does this compare to tidy or the w3c validator? I encourage you to do a comparison, but this is what I found in my small tests: MarkupValidity does not complain about missing doctypes (I should probably make it do that). MarkupValidity reports the same errors that the w3c validator does, but (IMHO) MarkupValidity's error messages are slightly better. Plus you don't need to hit the network when using MarkupValidity. Tidy actually corrects your document, and I think sometimes the errors and warnings reported are unclear. For example, this document:

Hello

Give you these errors from tidy: line 1 column 1 - Warning: missing declaration line 9 column 5 - Warning: inserting implicit

line 2 column 3 - Warning: inserting missing 'title' element line 5 column 5 - Warning: trimming empty

line 9 column 5 - Warning: trimming empty

5 warnings, 0 errors were found! MarkupValidity says this: Error on line: 2: Element 'head': Missing child element(s). Expected is one of ( script, style, meta, link, object, isindex, title, base ). 1: 2: 3: 4: 5:

Error on line: 6: Element 'p': This element is not expected. Expected is one of ( a, br, span, bdo, object, applet, img, map, iframe, tt ). 5:

6:

7: Hello 8:

9:

When I'm testing my documents, I don't want them corrected. *I* want to do the corrections. If the document needs to be corrected, then something is wrong. I'm not sure about speed. I suspect that MarkupValidity will be faster since it is not doing any document corrections. But that doesn't really matter to me. The error messages are what make my life easy. -- Aaron Patterson http://tenderlovemaking.com/