W3C Validators Gem README
W3C Validators is a Ruby wrapper for the World Wide Web Consortium’s online validation services.
It supports the markup validator, the feed validator and the CSS validator.
Installation
bash
gem install w3c_validators
Usage
There are three main validator classes available, the W3CValidators::MarkupValidator
(used for HTML), the W3CValidators::FeedValidator
and the W3CValidators::CSSValidator
.
Each validator has offers three different validation methods.
validate_text
methods take a stringvalidate_file
methods take a path to a file or an IO objectvalidate_uri
methods take a published URL
In addition, the W3CValidators::MarkupValidator
has a validate_uri_quickly
method, which
performs a HEAD request against the markup validation service. The Results
of this call give an error count but no error details.
Using a local validator
Each of the three validators allows you to specify a custom path to the validator. You can set your own validator like this:
ruby
validator = MarkupValidator.new(:validator_uri => 'http://localhost/check')
Using a proxy server
You can use a proxy server by passing in its information in the contructor.
ruby
validator = MarkupValidator.new(:proxy_host => 'proxy.example.com',
:proxy_port => 80,
:proxy_user => 'optional',
:proxy_pass => 'optional')
Examples
Example #1: Markup validator, local file
```ruby require ‘w3c_validators’
include W3CValidators
@validator = MarkupValidator.new
# override the DOCTYPE @validator.set_doctype!(:html32)
# turn on debugging messages @validator.set_debug!(true)
file = File.dirname(FILE) + ‘/fixtures/markup.html’ results = @validator.validate_file(fp)
if results.errors.length > 0 results.errors.each do |err| puts err.to_s end else puts ‘Valid!’ end
puts ‘Debugging messages’
results.debug_messages.each do |key, value| puts “#key: #value” end ```
Example #2: Feed validator, remote file
```ruby require ‘w3c_validators’
include W3CValidators
@validator = FeedValidator.new
results = @validator.validate_uri(‘http://example.com/feed.xml’)
if results.errors.length > 0 results.errors.each do |err| puts err.to_s end else puts ‘Valid!’ end ```
Example #3: CSS validator, text fragment
```ruby require ‘w3c_validators’
include W3CValidators
@validator = CSSValidator.new
results = @validator.validate_text(‘body { margin: 0px; }’)
if results.errors.length > 0 results.errors.each do |err| puts err.to_s end else puts ‘Valid!’ end ```
Tests
Run unit tests using rake test. Note that there is a one second delay between each call to the W3C’s validators per their request.
Credits and code
Documentation is available at http://code.dunae.ca/w3c_validators.
Source is available on GitHub
Written by Alex Dunae (dunae.ca, e-mail ‘code’ at the same domain), 2007.
Thanks to Ryan King for creating the 0.9.2 update.
Thanks to Ryan King, Jonathan Julian and Sylvain LaFleur for creating the 0.9.3 update.
Thanks to James Rosen and Roman Shterenzon for creating the 1.0.1 update.