Sha256: 8c91626c9f847a6374869a89e7761de6531bf4fc7bca272f124e6f286254ffdb

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

module MarkupValidity
  class Validator # :nodoc:
    Dir.chdir(File.dirname(__FILE__)) do
      XHTML1_TRANSITIONAL = Nokogiri::XML::Schema(
        File.read('xhtml1-transitional.xsd')
      )
      XHTML1_STRICT = Nokogiri::XML::Schema(File.read('xhtml1-strict.xsd'))
    end

    attr_reader :errors
    def initialize xml, reference = XHTML1_TRANSITIONAL
      doc         = Nokogiri::XML xml
      @reference  = reference
      @xml        = xml
      @errors     = reference.validate(doc)
    end

    def valid?; @errors.length == 0; end

    def inspect
      lines = @xml.split("\n")
      strings = []
      errors.each do |error|

        start = error.line - [2, error.line].min

        error_line = error.line == 0 ? 1 : error.line

        strings << "Error on line: #{error_line}:"
        strings << error.message.gsub(/\{[^\}]*\}/, '')
        Range.new(start, error.line + 2).each { |number|
          strings << "#{number + 1}: #{lines[number]}"
        }
        strings << ""
      end
      strings.join("\n")
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
markup_validity-1.0.0 lib/markup_validity/validator.rb