aboutsummaryrefslogtreecommitdiffstats
path: root/railties/guides/w3c_validator.rb
diff options
context:
space:
mode:
authorJaime Iniesta <jaimeiniesta@gmail.com>2010-05-24 18:07:08 +0200
committerJaime Iniesta <jaimeiniesta@gmail.com>2010-05-24 18:07:08 +0200
commit7db557f1520b2c2c60958e67c049ff424f61cbf1 (patch)
treee81ccd27b5fad98000a21c5a8d846c4ba4f51083 /railties/guides/w3c_validator.rb
parent0244b43ecdf1aee9dac328b0e828156b579d9ada (diff)
downloadrails-7db557f1520b2c2c60958e67c049ff424f61cbf1.tar.gz
rails-7db557f1520b2c2c60958e67c049ff424f61cbf1.tar.bz2
rails-7db557f1520b2c2c60958e67c049ff424f61cbf1.zip
New rake validate_guides task to validate output/*.html against the W3C Validator
Diffstat (limited to 'railties/guides/w3c_validator.rb')
-rw-r--r--railties/guides/w3c_validator.rb67
1 files changed, 67 insertions, 0 deletions
diff --git a/railties/guides/w3c_validator.rb b/railties/guides/w3c_validator.rb
new file mode 100644
index 0000000000..b55645a7a9
--- /dev/null
+++ b/railties/guides/w3c_validator.rb
@@ -0,0 +1,67 @@
+# ---------------------------------------------------------------------------
+#
+# This script validates the generated guides against the W3C Validator.
+#
+# Guides are taken from the output directory, from where all .html files are
+# submitted to the validator.
+#
+# This script is prepared to be launched from the railties directory as a rake task:
+#
+# rake validate_guides
+#
+# If nothing is specified, all files will be validated, but you can check just
+# some of them using this environment variable:
+#
+# ONLY
+# Use ONLY if you want to validate only one or a set of guides. Prefixes are
+# enough:
+#
+# # validates only association_basics.html
+# ONLY=assoc rake validate_guides
+#
+# Separate many using commas:
+#
+# # validates only
+# ONLY=assoc,migrations rake validate_guides
+#
+# ---------------------------------------------------------------------------
+
+require 'rubygems'
+require 'w3c_validators'
+include W3CValidators
+
+module RailsGuides
+ class Validator
+
+ def validate
+ validator = MarkupValidator.new
+
+ guides_to_validate.each do |f|
+ puts "Validating #{f}"
+ results = validator.validate_file(f)
+
+ if !results.validity
+ puts "#{f} FAILED W3C validation with #{results.errors.size} error(s):"
+ results.errors.each do |error|
+ puts error.to_s
+ end
+ end
+ end
+ end
+
+ private
+ def guides_to_validate
+ guides = Dir["./guides/output/*.html"]
+ ENV.key?('ONLY') ? select_only(guides) : guides
+ end
+
+ def select_only(guides)
+ prefixes = ENV['ONLY'].split(",").map(&:strip)
+ guides.select do |guide|
+ prefixes.any? {|p| guide.start_with?("./guides/output/#{p}")}
+ end
+ end
+ end
+end
+
+RailsGuides::Validator.new.validate \ No newline at end of file