Sha256: 237a0a27632a8f6505a64df9fb7b8e933f426a0ef110a591b9ef839213fe5ee7

Contents?: true

Size: 1.68 KB

Versions: 2

Compression:

Stored size: 1.68 KB

Contents

# -*- encoding: utf-8 -*-

require 'w3c_validators'
include W3CValidators

module W3Clove
  ##
  # A page has an URL to be validated, and a collection of errors
  # In case of an exception happens when validating, it is tracked
  #
  class Page
    attr_accessor :url, :exception

    def initialize(url)
      @url = url
    end

    ##
    # Checks for errors and returns true if none found, false otherwise
    # warnings are not considered as validation errors so a page with
    # warnings but without errors will return true
    # If the validation goes well, errors should be an array. Otherwise
    # it will still be nil, which will not be considered validated
    def valid?
      !errors.nil? && errors.empty?
    end

    def errors
      @errors ||= validations.errors.map {|e|
                                          W3Clove::Message.new(e.message_id,
                                                               e.line,
                                                               e.message,
                                                               :error)}
    rescue Exception => e
      @exception = e.to_s
      nil
    end

    def warnings
      @warnings ||= validations.warnings.map {|w|
                                              W3Clove::Message.new(w.message_id,
                                                                   w.line,
                                                                   w.message,
                                                                   :warning)}
    rescue Exception => e
      @exception = e.to_s
      nil
    end

    private

    def validations
      @validations ||= MarkupValidator.new.validate_uri(url)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
w3clove-0.2.1 lib/w3clove/page.rb
w3clove-0.0.2 lib/w3clove/page.rb