require 'html_validation' module Headhunter class HtmlValidator attr_reader :responses def initialize @responses = [] end def validate(url, html) # Docs for Tidy: http://tidy.sourceforge.net/docs/quickref.html @responses << PageValidations::HTMLValidation.new.validation(html, url) @responses.last end def valid_responses @responses.select(&:valid?) end def invalid_responses @responses.reject(&:valid?) end def statistics lines = [] lines << "Validated #{responses.size} pages.".yellow lines << "All pages are valid.".green if invalid_responses.size == 0 lines << "#{x_pages_be(invalid_responses.size)} invalid.".red if invalid_responses.size > 0 invalid_responses.each do |response| lines << " #{response.resource}:".red ([response.exceptions].flatten).each do |exception| lines << " - #{exception.strip}".red end end lines.join("\n") end def x_pages_be(size) if size <= 1 "#{size} page is" else "#{size} pages are" end end end end