require 'w3c_validators' class W3CValidator include W3CValidators def description () "Evaluating CSS files against W3C CSS2 Validator" end def initialize(env) @env = env end def should_exclude (filename) @styles_excluded.each do |stylename| if filename.strip == stylename.strip @env.log("Excluding filename #{filename}", :info) return true end end return false end def execute () @validator = CSSValidator.new @errors = false @styles_folder = File.expand_path (@env.dev_root + "site/web/styles") @styles_excluded = File.readlines @styles_folder + "/exclude.txt" Dir[@styles_folder + "/*.css"].each do |path| if should_exclude File.basename(path) next end results = @validator.validate_file path if results.errors.length > 0 results.errors.each do |error| @env.log(error.message.strip + " (#{path})\n", :warn) end @errors = true end end raise "CSS failed validation" if @errors end end