Class: RNV::Validator

Inherits:
Object
  • Object
show all
Defined in:
lib/rnv/validator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeValidator

Returns a new instance of Validator.



50
51
52
# File 'lib/rnv/validator.rb', line 50

def initialize
  @document = RNV::Document.new
end

Instance Attribute Details

#documentRNV::Document

Returns:



48
49
50
# File 'lib/rnv/validator.rb', line 48

def document
  @document
end

Instance Method Details

#errorsArray<RNV::Error>

errors from document

Returns:



56
57
58
# File 'lib/rnv/validator.rb', line 56

def errors
  @document.errors
end

#load_schema_from_file(file) ⇒ Boolean

Returns true if schema loaded successfuly.

Parameters:

  • file (String)

    RNC schema filename

Returns:

  • (Boolean)

    true if schema loaded successfuly



68
69
70
# File 'lib/rnv/validator.rb', line 68

def load_schema_from_file(file)
  @document.load_file(file)
end

#load_schema_from_string(str) ⇒ Boolean

Returns true if schema loaded successfuly.

Parameters:

  • str (String)

    RNC schema buffer

Returns:

  • (Boolean)

    true if schema loaded successfuly



62
63
64
# File 'lib/rnv/validator.rb', line 62

def load_schema_from_string(str)
  @document.load_string(str)
end

#parse_file(xml, pre_processor = PreProcessor.new) ⇒ Boolean

parse and validate file

Parameters:

  • xml (String, File)

    XML file to parse

  • pre_processor (RNV::PreProcessor) (defaults to: PreProcessor.new)

    an optional pre-processor for tag and attributes data

Returns:

  • (Boolean)

    true if valid



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/rnv/validator.rb', line 94

def parse_file(xml, pre_processor = PreProcessor.new)
  @document.start_document
  rnv_doc = NokogiriSaxDocument.new(@document)
  rnv_doc.pre_processor = pre_processor

  file = xml.is_a?(File) ? xml : File.open(xml)

  parser = Nokogiri::XML::SAX::Parser.new(rnv_doc)
  parser.parse(file) do |ctx|
    ctx.replace_entities = true
    rnv_doc.ctx = ctx
  end

  @document.valid?
end

#parse_string(str, pre_processor = PreProcessor.new) ⇒ Boolean

parse and validate buffer

Parameters:

  • str (String)

    XML buffer to parse

  • pre_processor (RNV::PreProcessor) (defaults to: PreProcessor.new)

    an optional pre-processor for tag and attributes data

Returns:

  • (Boolean)

    true if valid



76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/rnv/validator.rb', line 76

def parse_string(str, pre_processor = PreProcessor.new)
  @document.start_document
  rnv_doc = NokogiriSaxDocument.new(@document)
  rnv_doc.pre_processor = pre_processor

  parser = Nokogiri::XML::SAX::Parser.new(rnv_doc)
  parser.parse_memory(str) do |ctx|
    ctx.replace_entities = true
    rnv_doc.ctx = ctx
  end

  @document.valid?
end