json_schemer 0.2.10 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bf65b652bb728979d855beb43ca825f5bdfc2f9cbd05ed71e721900edb5ca478
4
- data.tar.gz: 9b2a5bb41e365da48e6fe18fadb36d690397026f79ca5a0d00e05a89b82add77
3
+ metadata.gz: 14785b9586c0f152587eedbdea3da0a37f8a766b21db28821ffa374fef6d6235
4
+ data.tar.gz: fe50adb42c6b0da48fc43b7c8ebee40e61a42f4ccfa3d87de6723551388b223c
5
5
  SHA512:
6
- metadata.gz: 652cda34ebb49e94b9e725e3143c7f7ed18329cdcb046aa55b1ef1f49f0b4722154389e49d13ce8d4182cb640c1b1b418107fa8b01b54572505207e930b34e51
7
- data.tar.gz: 1f922f37d0540c33f7d2238cf9bfc2bf03f2231c07668e94a6216c576bbd1db0f74db6f10456e7a96ae3bb3ed034ad9eb062c327dade08c64ec16a6cf09f1172
6
+ metadata.gz: e23c122d31d6a9c38326c90c1ac9af35148ce0b13ff1a576f2fb9bfff7cfdd289d2122b73d5b8b20330d8323e8ec98b11452ec0b70ccd339a26e6dba4d7f33b5
7
+ data.tar.gz: a4be1485304ae45f125e6b73494c5a1a5cf98d092c66b25dd2ff81fed0a74833165d8655abc46799faa97af0372d9d3f06e4a5e30554b0c31260b01699aa76be
@@ -4,19 +4,13 @@ jobs:
4
4
  ruby:
5
5
  strategy:
6
6
  matrix:
7
- ruby: [2.4.x, 2.5.x, 2.6.x]
7
+ ruby: [2.4, 2.5, 2.6, 2.7, truffleruby-head]
8
8
  runs-on: ubuntu-latest
9
9
  steps:
10
- - uses: actions/checkout@v1
11
- - uses: actions/setup-ruby@v1
10
+ - uses: actions/checkout@v2
11
+ - uses: ruby/setup-ruby@v1
12
12
  with:
13
13
  ruby-version: ${{ matrix.ruby }}
14
- - uses: actions/setup-python@v1
15
- with:
16
- python-version: 3.x
17
14
  - run: |
18
- pip install --user Flask
19
- ./JSON-Schema-Test-Suite/bin/jsonschema_suite serve &
20
- gem install bundler
21
15
  bundle install
22
16
  bundle exec rake test
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- json_schemer (0.2.10)
4
+ json_schemer (0.2.15)
5
5
  ecma-re-validator (~> 0.2)
6
6
  hana (~> 1.3)
7
7
  regexp_parser (~> 1.5)
@@ -10,12 +10,12 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- ecma-re-validator (0.2.0)
13
+ ecma-re-validator (0.2.1)
14
14
  regexp_parser (~> 1.2)
15
- hana (1.3.5)
15
+ hana (1.3.6)
16
16
  minitest (5.11.3)
17
- rake (10.5.0)
18
- regexp_parser (1.7.0)
17
+ rake (13.0.1)
18
+ regexp_parser (1.8.1)
19
19
  uri_template (0.7.0)
20
20
 
21
21
  PLATFORMS
@@ -25,7 +25,7 @@ DEPENDENCIES
25
25
  bundler (~> 2.0)
26
26
  json_schemer!
27
27
  minitest (~> 5.0)
28
- rake (~> 10.0)
28
+ rake (~> 13.0)
29
29
 
30
30
  BUNDLED WITH
31
31
  2.1.4
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.required_ruby_version = '~> 2.4'
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 2.0"
26
- spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "rake", "~> 13.0"
27
27
  spec.add_development_dependency "minitest", "~> 5.0"
28
28
 
29
29
  # spec.add_development_dependency "benchmark-ips", "~> 2.7.2"
@@ -14,6 +14,7 @@ require 'uri_template'
14
14
 
15
15
  require 'json_schemer/version'
16
16
  require 'json_schemer/format'
17
+ require 'json_schemer/errors'
17
18
  require 'json_schemer/cached_ref_resolver'
18
19
  require 'json_schemer/schema/base'
19
20
  require 'json_schemer/schema/draft4'
@@ -28,6 +29,7 @@ module JSONSchemer
28
29
  class InvalidSymbolKey < StandardError; end
29
30
 
30
31
  DRAFT_CLASS_BY_META_SCHEMA = {
32
+ 'http://json-schema.org/schema#' => Schema::Draft4, # Version-less $schema deprecated after Draft 4
31
33
  'http://json-schema.org/draft-04/schema#' => Schema::Draft4,
32
34
  'http://json-schema.org/draft-06/schema#' => Schema::Draft6,
33
35
  'http://json-schema.org/draft-07/schema#' => Schema::Draft7
@@ -0,0 +1,31 @@
1
+ # Based on code from @robacarp found in issue 48:
2
+ # https://github.com/davishmcclurg/json_schemer/issues/48
3
+ #
4
+ module JSONSchemer
5
+ module Errors
6
+ class << self
7
+ def pretty(error)
8
+ data_pointer, type, schema = error.values_at('data_pointer', 'type', 'schema')
9
+ location = data_pointer.empty? ? 'root' : "property '#{data_pointer}'"
10
+
11
+ case type
12
+ when 'required'
13
+ keys = error.fetch('details').fetch('missing_keys').join(', ')
14
+ "#{location} is missing required keys: #{keys}"
15
+ when 'null', 'string', 'boolean', 'integer', 'number', 'array', 'object'
16
+ "#{location} is not of type: #{type}"
17
+ when 'pattern'
18
+ "#{location} does not match pattern: #{schema.fetch('pattern')}"
19
+ when 'format'
20
+ "#{location} does not match format: #{schema.fetch('format')}"
21
+ when 'const'
22
+ "#{location} is not: #{schema.fetch('const').inspect}"
23
+ when 'enum'
24
+ "#{location} is not one of: #{schema.fetch('enum')}"
25
+ else
26
+ "#{location} is invalid: error_type=#{type}"
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -3,7 +3,7 @@ module JSONSchemer
3
3
  module Format
4
4
  # this is no good
5
5
  EMAIL_REGEX = /\A[^@\s]+@([\p{L}\d-]+\.)+[\p{L}\d\-]{2,}\z/i.freeze
6
- LABEL_REGEX_STRING = '\p{L}([\p{L}\p{N}\-]*[\p{L}\p{N}])?'
6
+ LABEL_REGEX_STRING = '[\p{L}\p{N}]([\p{L}\p{N}\-]*[\p{L}\p{N}])?'
7
7
  HOSTNAME_REGEX = /\A(#{LABEL_REGEX_STRING}\.)*#{LABEL_REGEX_STRING}\z/i.freeze
8
8
  JSON_POINTER_REGEX_STRING = '(\/([^~\/]|~[01])*)*'
9
9
  JSON_POINTER_REGEX = /\A#{JSON_POINTER_REGEX_STRING}\z/.freeze
@@ -568,12 +568,10 @@ module JSONSchemer
568
568
  end
569
569
 
570
570
  def safe_strict_decode64(data)
571
- begin
572
- Base64.strict_decode64(data)
573
- rescue ArgumentError => e
574
- raise e unless e.message == 'invalid base64'
575
- nil
576
- end
571
+ Base64.strict_decode64(data)
572
+ rescue ArgumentError => e
573
+ raise e unless e.message == 'invalid base64'
574
+ nil
577
575
  end
578
576
 
579
577
  def ecma_262_regex(pattern)
@@ -615,16 +613,15 @@ module JSONSchemer
615
613
  if schema.is_a?(Array)
616
614
  schema.each_with_index { |subschema, index| resolve_ids(subschema, ids, parent_uri, "#{pointer}/#{index}") }
617
615
  elsif schema.is_a?(Hash)
618
- id = schema[id_keyword]
619
- uri = join_uri(parent_uri, id)
620
- unless uri == parent_uri
621
- ids[uri.to_s] = {
622
- schema: schema,
623
- pointer: pointer
624
- }
625
- end
626
- if definitions = schema['definitions']
627
- definitions.each { |key, subschema| resolve_ids(subschema, ids, uri, "#{pointer}/definitions/#{key}") }
616
+ uri = join_uri(parent_uri, schema[id_keyword])
617
+ schema.each do |key, value|
618
+ if key == id_keyword && uri != parent_uri
619
+ ids[uri.to_s] = {
620
+ schema: schema,
621
+ pointer: pointer
622
+ }
623
+ end
624
+ resolve_ids(value, ids, uri, "#{pointer}/#{key}")
628
625
  end
629
626
  end
630
627
  ids
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module JSONSchemer
3
- VERSION = '0.2.10'
3
+ VERSION = '0.2.15'
4
4
  end
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.10
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Harsha
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-26 00:00:00.000000000 Z
11
+ date: 2020-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
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
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -127,6 +127,7 @@ files:
127
127
  - json_schemer.gemspec
128
128
  - lib/json_schemer.rb
129
129
  - lib/json_schemer/cached_ref_resolver.rb
130
+ - lib/json_schemer/errors.rb
130
131
  - lib/json_schemer/format.rb
131
132
  - lib/json_schemer/schema/base.rb
132
133
  - lib/json_schemer/schema/draft4.rb
@@ -152,7 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
153
  - !ruby/object:Gem::Version
153
154
  version: '0'
154
155
  requirements: []
155
- rubygems_version: 3.0.3
156
+ rubygems_version: 3.1.2
156
157
  signing_key:
157
158
  specification_version: 4
158
159
  summary: JSON Schema validator. Supports drafts 4, 6, and 7.