json_schemer 0.2.23 → 0.2.24
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/Gemfile.lock +2 -2
- data/lib/json_schemer/schema/base.rb +17 -6
- data/lib/json_schemer/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24ab3d7f62a2ca93d0dcd3fb33191de983006b504d7bdae60066268fabf7eb50
|
4
|
+
data.tar.gz: 5f695dffd93a834e81491d5a5b328e6b193d56886666533e6ec0c5e7ba5b5be0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0bd588c8b88bd813c52a13bb997cdd3f668f9b36570bc15a0780aa35b80fdaa49cc2862f6749be1cea9c5708169cbee990385799907a3957c7ceac32ce9ff5cf
|
7
|
+
data.tar.gz: 6c835337e619f60ae9a72a4036dbcbeb06519e9c3c6f47216ab4650f0c15955a45be0ae2ace13a0a2c92f6066e106fa6073b6c795ff808cc90854f85a1ad9e76
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
json_schemer (0.2.
|
4
|
+
json_schemer (0.2.24)
|
5
5
|
ecma-re-validator (~> 0.3)
|
6
6
|
hana (~> 1.3)
|
7
7
|
regexp_parser (~> 2.0)
|
@@ -15,7 +15,7 @@ GEM
|
|
15
15
|
hana (1.3.7)
|
16
16
|
minitest (5.15.0)
|
17
17
|
rake (13.0.6)
|
18
|
-
regexp_parser (2.6.
|
18
|
+
regexp_parser (2.6.1)
|
19
19
|
uri_template (0.7.0)
|
20
20
|
|
21
21
|
PLATFORMS
|
@@ -44,6 +44,9 @@ module JSONSchemer
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
JSON_POINTER_TOKEN_ESCAPE_CHARS = { '~' => '~0', '/' => '~1' }
|
48
|
+
JSON_POINTER_TOKEN_ESCAPE_REGEXP = Regexp.union(JSON_POINTER_TOKEN_ESCAPE_CHARS.keys)
|
49
|
+
|
47
50
|
def initialize(
|
48
51
|
schema,
|
49
52
|
format: true,
|
@@ -531,7 +534,8 @@ module JSONSchemer
|
|
531
534
|
dependencies.each do |key, value|
|
532
535
|
next unless data.key?(key)
|
533
536
|
subschema = value.is_a?(Array) ? { 'required' => value } : value
|
534
|
-
|
537
|
+
escaped_key = escape_json_pointer_token(key)
|
538
|
+
subinstance = instance.merge(schema: subschema, schema_pointer: "#{instance.schema_pointer}/dependencies/#{escaped_key}")
|
535
539
|
validate_instance(subinstance, &block)
|
536
540
|
end
|
537
541
|
end
|
@@ -545,6 +549,8 @@ module JSONSchemer
|
|
545
549
|
|
546
550
|
regex_pattern_properties = nil
|
547
551
|
data.each do |key, value|
|
552
|
+
escaped_key = escape_json_pointer_token(key)
|
553
|
+
|
548
554
|
unless property_names.nil?
|
549
555
|
subinstance = instance.merge(
|
550
556
|
data: key,
|
@@ -559,9 +565,9 @@ module JSONSchemer
|
|
559
565
|
if properties && properties.key?(key)
|
560
566
|
subinstance = instance.merge(
|
561
567
|
data: value,
|
562
|
-
data_pointer: "#{instance.data_pointer}/#{
|
568
|
+
data_pointer: "#{instance.data_pointer}/#{escaped_key}",
|
563
569
|
schema: properties[key],
|
564
|
-
schema_pointer: "#{instance.schema_pointer}/properties/#{
|
570
|
+
schema_pointer: "#{instance.schema_pointer}/properties/#{escaped_key}"
|
565
571
|
)
|
566
572
|
validate_instance(subinstance, &block)
|
567
573
|
matched_key = true
|
@@ -572,12 +578,13 @@ module JSONSchemer
|
|
572
578
|
[pattern, resolve_regexp(pattern), property_schema]
|
573
579
|
end
|
574
580
|
regex_pattern_properties.each do |pattern, regex, property_schema|
|
581
|
+
escaped_pattern = escape_json_pointer_token(pattern)
|
575
582
|
if regex.match?(key)
|
576
583
|
subinstance = instance.merge(
|
577
584
|
data: value,
|
578
|
-
data_pointer: "#{instance.data_pointer}/#{
|
585
|
+
data_pointer: "#{instance.data_pointer}/#{escaped_key}",
|
579
586
|
schema: property_schema,
|
580
|
-
schema_pointer: "#{instance.schema_pointer}/patternProperties/#{
|
587
|
+
schema_pointer: "#{instance.schema_pointer}/patternProperties/#{escaped_pattern}"
|
581
588
|
)
|
582
589
|
validate_instance(subinstance, &block)
|
583
590
|
matched_key = true
|
@@ -590,7 +597,7 @@ module JSONSchemer
|
|
590
597
|
unless additional_properties.nil?
|
591
598
|
subinstance = instance.merge(
|
592
599
|
data: value,
|
593
|
-
data_pointer: "#{instance.data_pointer}/#{
|
600
|
+
data_pointer: "#{instance.data_pointer}/#{escaped_key}",
|
594
601
|
schema: additional_properties,
|
595
602
|
schema_pointer: "#{instance.schema_pointer}/additionalProperties"
|
596
603
|
)
|
@@ -614,6 +621,10 @@ module JSONSchemer
|
|
614
621
|
nil
|
615
622
|
end
|
616
623
|
|
624
|
+
def escape_json_pointer_token(token)
|
625
|
+
token.gsub(JSON_POINTER_TOKEN_ESCAPE_REGEXP, JSON_POINTER_TOKEN_ESCAPE_CHARS)
|
626
|
+
end
|
627
|
+
|
617
628
|
def join_uri(a, b)
|
618
629
|
b = URI.parse(b) if b
|
619
630
|
if a && b && a.relative? && b.relative?
|
data/lib/json_schemer/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_schemer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Harsha
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-12-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|