json-schema_builder 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/json/schema_builder/entity.rb +1 -0
- data/lib/json/schema_builder/object.rb +8 -1
- data/lib/json/schema_builder/version.rb +1 -1
- data/spec/integration/array_any_of_spec.rb +36 -0
- data/spec/support/examples/array_any_of.rb +18 -0
- data/spec/unit/object_spec.rb +5 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74990c32e6a0f3818690fb0ce66adcb7bb14bd4e
|
4
|
+
data.tar.gz: 359ba84e515b4c059320954bcfdaaf84de2dfc1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0c146bbba22320150069cec3b4e903ca505748775a001ef412a49aa740c488de989ffc8ee465256f13bf734dd36c4585542774efbffc1824f3f3d795680a84ad
|
7
|
+
data.tar.gz: f5070d30ab1296356e8297de145c174e8b89e768854a1d1f4dbe73c2dc0ca86dac59141373ff4c84ce435a410c6ebeb47c7668274c9ee80c1ed0a8ba19b1ae7d
|
@@ -13,8 +13,15 @@ module JSON
|
|
13
13
|
|
14
14
|
def initialize_children
|
15
15
|
self.properties = { }
|
16
|
+
|
16
17
|
children.select(&:name).each do |child|
|
17
|
-
|
18
|
+
case child.name
|
19
|
+
when Regexp
|
20
|
+
self.pattern_properties ||= { }
|
21
|
+
self.pattern_properties[child.name.source] = child.as_json
|
22
|
+
else
|
23
|
+
self.properties[child.name] = child.as_json
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
20
27
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Examples::ArrayAnyOf, type: :integration do
|
4
|
+
it_behaves_like 'a builder' do
|
5
|
+
let(:expected_json) do
|
6
|
+
{
|
7
|
+
type: :object,
|
8
|
+
properties: {
|
9
|
+
an_array: {
|
10
|
+
type: :array,
|
11
|
+
items: {
|
12
|
+
anyOf: [
|
13
|
+
{
|
14
|
+
type: :object,
|
15
|
+
properties: {
|
16
|
+
a_string: {
|
17
|
+
type: :string
|
18
|
+
}
|
19
|
+
}
|
20
|
+
},
|
21
|
+
{
|
22
|
+
type: :object,
|
23
|
+
properties: {
|
24
|
+
a_number: {
|
25
|
+
type: :number
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
]
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Examples
|
2
|
+
class ArrayAnyOf
|
3
|
+
include JSON::SchemaBuilder
|
4
|
+
|
5
|
+
def example
|
6
|
+
object do
|
7
|
+
array :an_array do
|
8
|
+
items do
|
9
|
+
any_of [
|
10
|
+
object { string(:a_string) },
|
11
|
+
object { number(:a_number) }
|
12
|
+
]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/spec/unit/object_spec.rb
CHANGED
@@ -16,13 +16,17 @@ RSpec.describe JSON::SchemaBuilder::Object, type: :unit do
|
|
16
16
|
described_class.new 'name' do
|
17
17
|
string :test1
|
18
18
|
string :test2
|
19
|
+
string /^_/
|
20
|
+
string /^\./
|
19
21
|
end
|
20
22
|
end
|
21
23
|
|
22
24
|
let(:string){ kind_of JSON::SchemaBuilder::String }
|
23
25
|
its(:children){ is_expected.to include string }
|
24
|
-
its('children.length'){ is_expected.to eql
|
26
|
+
its('children.length'){ is_expected.to eql 4 }
|
25
27
|
its('properties'){ is_expected.to include test1: { 'type' => 'string' } }
|
26
28
|
its('properties'){ is_expected.to include test2: { 'type' => 'string' } }
|
29
|
+
its('pattern_properties'){ is_expected.to include '^_' => { 'type' => 'string' } }
|
30
|
+
its('pattern_properties'){ is_expected.to include '^\.' => { 'type' => 'string' } }
|
27
31
|
end
|
28
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-schema_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Parrish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -201,6 +201,7 @@ files:
|
|
201
201
|
- lib/json/schema_builder/string.rb
|
202
202
|
- lib/json/schema_builder/validation.rb
|
203
203
|
- lib/json/schema_builder/version.rb
|
204
|
+
- spec/integration/array_any_of_spec.rb
|
204
205
|
- spec/integration/array_definitions_spec.rb
|
205
206
|
- spec/integration/context_delegation_spec.rb
|
206
207
|
- spec/integration/custom_errors_spec.rb
|
@@ -221,6 +222,7 @@ files:
|
|
221
222
|
- spec/spec_helper.rb
|
222
223
|
- spec/support/.keep
|
223
224
|
- spec/support/attribute_matcher.rb
|
225
|
+
- spec/support/examples/array_any_of.rb
|
224
226
|
- spec/support/examples/array_definitions.rb
|
225
227
|
- spec/support/examples/context_delegation.rb
|
226
228
|
- spec/support/examples/custom_errors.rb
|
@@ -277,6 +279,7 @@ signing_key:
|
|
277
279
|
specification_version: 4
|
278
280
|
summary: Build JSON schemas with Ruby
|
279
281
|
test_files:
|
282
|
+
- spec/integration/array_any_of_spec.rb
|
280
283
|
- spec/integration/array_definitions_spec.rb
|
281
284
|
- spec/integration/context_delegation_spec.rb
|
282
285
|
- spec/integration/custom_errors_spec.rb
|
@@ -297,6 +300,7 @@ test_files:
|
|
297
300
|
- spec/spec_helper.rb
|
298
301
|
- spec/support/.keep
|
299
302
|
- spec/support/attribute_matcher.rb
|
303
|
+
- spec/support/examples/array_any_of.rb
|
300
304
|
- spec/support/examples/array_definitions.rb
|
301
305
|
- spec/support/examples/context_delegation.rb
|
302
306
|
- spec/support/examples/custom_errors.rb
|