validate_xml_xsi 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/lib/validate_xml_xsi.rb +15 -16
- data/validate_xml_xsi.gemspec +5 -5
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4fa9e060212c9992fc22333d6858d9005c0f0be545a1f921c2324fda0071a634
|
4
|
+
data.tar.gz: 880b5e1af35f7cfb1f7c71f09b7fd676632bf921c3ecd5af657c6ce0e4b36df6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63187e958fc288c4722444b0b73464a8af4f94776516dd619feb33bc9cbafbdc69dfca7c72fe7184a95c7014a838fbf10245db6d126d4beea1f04049573ef7f8
|
7
|
+
data.tar.gz: '0975b1be594880e516af4b8a0e758c50eec6c1d4d92621d4e3c870cfcdddde2c1f32973812f3ff4167832958d62f8bb2afb1563db462557904e2b8471c12e3e4'
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## v0.2.0
|
2
|
+
|
3
|
+
* Change namespace to XML_XSI and rename/promote Validation::Error to Schema::ValidationError < StandardError.
|
4
|
+
|
5
|
+
## v0.1.4
|
6
|
+
|
7
|
+
* Change module XML, Validation, & Schema to be classes instead.
|
8
|
+
|
9
|
+
## v0.1.3
|
10
|
+
|
11
|
+
* Rev Nokogiri requirement to >= 1.13.2 for CVE-2021-30560 & CVE-2022-23308
|
12
|
+
|
1
13
|
## v0.1.1
|
2
14
|
|
3
15
|
* Rev Nokogiri requirement to ~> 1.12.5 for CVE-2021-41098
|
data/lib/validate_xml_xsi.rb
CHANGED
@@ -1,18 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
|
-
|
5
|
-
module Validation
|
6
|
-
class Error
|
7
|
-
Params = [:type, :file, :line, :column, :message, :err]
|
8
|
-
attr_reader *Params, :description
|
9
|
-
def initialize(*args)
|
10
|
-
Params.each.with_index { |param, idx| instance_variable_set("@#{param.to_s}", args[idx]) }
|
11
|
-
@description = "#{@type.to_s} ERROR [#{@file}:#{@line}:#{@column}]: #{@message}".freeze
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
4
|
+
class XML_XSI
|
16
5
|
def self.parse(obj)
|
17
6
|
filename = nil
|
18
7
|
obj = File::read(filename = obj) if obj.is_a?(String) && File::exist?(obj)
|
@@ -22,9 +11,19 @@ module XML
|
|
22
11
|
xml_doc
|
23
12
|
end
|
24
13
|
|
25
|
-
|
14
|
+
class Schema
|
15
|
+
class ValidationError < StandardError
|
16
|
+
Params = [:type, :file, :line, :column, :message, :err]
|
17
|
+
attr_reader *Params, :description
|
18
|
+
def initialize(*args)
|
19
|
+
Params.each.with_index { |param, idx| instance_variable_set("@#{param.to_s}", args[idx]) }
|
20
|
+
@description = "#{@type.to_s} ERROR [#{@file}:#{@line}:#{@column}]: #{@message}".freeze
|
21
|
+
super(@description)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
26
25
|
def self.validate(xml_doc)
|
27
|
-
xml_doc =
|
26
|
+
xml_doc = XML_XSI::parse(xml_doc) unless xml_doc.is_a?(Nokogiri::XML::Document)
|
28
27
|
errors = []
|
29
28
|
## Build an all-in-one XSD document that imports all of the separate schema locations
|
30
29
|
xsd_doc = "<?xml version=\"1.0\"?>\n"
|
@@ -52,13 +51,13 @@ module XML
|
|
52
51
|
xsd = Nokogiri::XML.Schema(xsd_doc)
|
53
52
|
xsd.errors.each do |err|
|
54
53
|
err_msg = (/ERROR: /.match(err.message)) ? $' : err.message
|
55
|
-
errors <<
|
54
|
+
errors << ValidationError.new(:XSD, err.file, err.line, err.column, err_msg, err)
|
56
55
|
end
|
57
56
|
errs = xsd.validate(xml_doc)
|
58
57
|
errs.each do |err|
|
59
58
|
err_msg = (/ERROR: /.match(err.message)) ? $' : err.message
|
60
59
|
fname = (err.file.nil?) ? xml_doc.filename : err.file
|
61
|
-
errors <<
|
60
|
+
errors << ValidationError.new(:XML, fname, err.line, err.column, err_msg, err)
|
62
61
|
end
|
63
62
|
errors
|
64
63
|
end
|
data/validate_xml_xsi.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "validate_xml_xsi"
|
3
|
-
spec.version = "0.
|
3
|
+
spec.version = "0.2.0"
|
4
4
|
spec.authors = ["David Hansen"]
|
5
5
|
spec.email = ["david@hansen4.net"]
|
6
6
|
|
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
|
|
11
11
|
|
12
12
|
spec.metadata["homepage_uri"] = spec.homepage
|
13
13
|
spec.metadata["source_code_uri"] = "https://github.com/d-hansen/validate_xml_xsi"
|
14
|
-
spec.metadata["changelog_uri"] = "https://github.com/d-hansen/validate_xml_xsi/CHANGELOG.md"
|
14
|
+
spec.metadata["changelog_uri"] = "https://github.com/d-hansen/validate_xml_xsi/blob/master/CHANGELOG.md"
|
15
15
|
|
16
16
|
# Specify which files should be added to the gem when it is released.
|
17
17
|
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
@@ -22,8 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler", "
|
26
|
-
spec.add_development_dependency "rake", "
|
25
|
+
spec.add_development_dependency "bundler", ">= 2.1"
|
26
|
+
spec.add_development_dependency "rake", ">= 13.0"
|
27
27
|
|
28
|
-
spec.add_dependency "nokogiri", "
|
28
|
+
spec.add_dependency "nokogiri", ">= 1.13.2"
|
29
29
|
end
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validate_xml_xsi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Hansen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-03-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.13.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.13.2
|
55
55
|
description:
|
56
56
|
email:
|
57
57
|
- david@hansen4.net
|
@@ -75,7 +75,7 @@ licenses:
|
|
75
75
|
metadata:
|
76
76
|
homepage_uri: https://github.com/d-hansen/validate_xml_xsi
|
77
77
|
source_code_uri: https://github.com/d-hansen/validate_xml_xsi
|
78
|
-
changelog_uri: https://github.com/d-hansen/validate_xml_xsi/CHANGELOG.md
|
78
|
+
changelog_uri: https://github.com/d-hansen/validate_xml_xsi/blob/master/CHANGELOG.md
|
79
79
|
post_install_message:
|
80
80
|
rdoc_options: []
|
81
81
|
require_paths:
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '0'
|
93
93
|
requirements: []
|
94
|
-
rubygems_version: 3.
|
94
|
+
rubygems_version: 3.3.8
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Validate XML against it's embedded XSI elements that define the XSD's.
|