Module: Middleman::Xmlvalidator

Defined in:
lib/middleman/xmlvalidator/version.rb,
lib/middleman/xmlvalidator/extension.rb

Constant Summary collapse

VERSION =
"0.2.0"
PACKAGE =
"middleman-xmlvalidator"

Class Method Summary collapse

Class Method Details

.files_to_validateObject



27
28
29
# File 'lib/middleman/xmlvalidator/extension.rb', line 27

def files_to_validate
  Dir.glob("build/**/*.{xml,rss}")
end

.registered(app) ⇒ Object Also known as: included



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/middleman/xmlvalidator/extension.rb', line 4

def registered(app)
  require 'nokogiri'

  app.after_build do |builder|
    puts "", "Validating with NokoGiri", ""
    p Xmlvalidator.files_to_validate

    Xmlvalidator.files_to_validate.each do |full_path|
      file_name = full_path.split('/').last
      validator_file = file_name.gsub(/\.\w*/, '.xsd')
      validator_filepath = File.join(File.dirname(__FILE__), '/schema/' + validator_file)
      validator = File.exists?(validator_filepath) ? validator_file : (file_name.end_with?('.rss') ? "RSSSchema.xsd" : "XMLSchema.xsd")

      puts "  validating".blue + "  #{full_path}....." + (Xmlvalidator.valid(full_path, validator) == true ? "COMPLETE".green : "ERRORS FOUND".red)
      Xmlvalidator.validate(full_path, validator).each do |error|
        puts "     " + error.message
      end
    end

    puts "", "Validation with NokoGiri " + "Complete".green, ""
  end
end

.valid(document_path, schema_path) ⇒ Object



40
41
42
43
44
# File 'lib/middleman/xmlvalidator/extension.rb', line 40

def self.valid(document_path, schema_path)
  schema = Nokogiri::XML::Schema(File.read(File.join(File.dirname(File.expand_path(__FILE__)), "./schema/" + schema_path)))
  document = Nokogiri::XML(File.read(document_path))
  schema.valid?(document)
end

.validate(document_path, schema_path) ⇒ Object



34
35
36
37
38
# File 'lib/middleman/xmlvalidator/extension.rb', line 34

def self.validate(document_path, schema_path)
  schema = Nokogiri::XML::Schema(File.read(File.join(File.dirname(File.expand_path(__FILE__)), "./schema/" + schema_path)))
  document = Nokogiri::XML(File.read(document_path))
  schema.validate(document)
end