json_model_rb 0.1.22 → 0.1.23

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d90d48751d60c7659e5307e712510a9f93b283df371b5a5f844932f81e5b521c
4
- data.tar.gz: 49452ae911f59bab15249b804889bfe48636a74de9fedae4f658e37e99b00500
3
+ metadata.gz: 8e523a1baeb8b4df65376a0a0faf3c51c9d759c41baea7b3a963ec06dff69dd6
4
+ data.tar.gz: 76e9f892bd2c2999ae3710b397a83d713e582bb2d032782f707cf0c7195dc323
5
5
  SHA512:
6
- metadata.gz: 25a33e3c1dce3c63aa18a1e5e8c258fd34d59d6fd84b69ae681cf7d8aa1dc38f09af92e898b4403d4d376398f13af11db5eb43f9738c9bb3efca00999240a631
7
- data.tar.gz: bdf75c96f987a150b4c09aecb20469768c45886278e0c6087b5fc467ef129a029de604f79515bb783fc299a0ed0fba0357ff185539949aa3881d60278cfad6bd
6
+ metadata.gz: 7a8dc6b87e9d56f3c513cced01ce02435cc590d67ceef494b244902cb5acae3836c12d70aafb9cf2dec78e45a4fb9ad0ecfa68d6c098ad7ba4ca337bfa7fdbeb
7
+ data.tar.gz: 74aee7bc7e7bf1ed5ef0274398a200f47ea56bcdcf908697aa9569d94de3e3a5b6178ed35c8cf41ce374b1514be1789f65b321fbf2ba06bb969db48bdb431a4d
@@ -16,9 +16,11 @@ module JsonModel
16
16
  new(attributes)
17
17
  end
18
18
 
19
+ # @param [Symbol] key
20
+ # @return [Symbol]
19
21
  def invert_alias(key)
20
- builder = builders.find { |b| b.alias.to_s == key.to_s }
21
- builder&.type&.name
22
+ builder = local_builders.find { |b| b.alias.to_s == key.to_s }
23
+ builder&.type&.name || key
22
24
  end
23
25
 
24
26
  # @return [Hash]
@@ -35,8 +37,8 @@ module JsonModel
35
37
 
36
38
  # @return [Hash, nil]
37
39
  def properties_as_schema
38
- if builders.any?
39
- builders
40
+ if local_builders.any?
41
+ local_builders
40
42
  .sort_by(&:alias)
41
43
  .map(&:as_schema)
42
44
  .inject({}, &:merge)
@@ -45,8 +47,8 @@ module JsonModel
45
47
 
46
48
  # @return [Array, nil]
47
49
  def required_properties_as_schema
48
- if builders.any?
49
- builders
50
+ if local_builders.any?
51
+ local_builders
50
52
  .reject(&:optional?)
51
53
  .map(&:alias)
52
54
  .sort
@@ -55,7 +57,7 @@ module JsonModel
55
57
 
56
58
  # @return [Hash, nil]
57
59
  def defs_as_schema
58
- referenced_schemas = builders
60
+ referenced_schemas = local_builders
59
61
  .flat_map(&:referenced_schemas)
60
62
  .uniq
61
63
 
@@ -64,12 +66,20 @@ module JsonModel
64
66
  end
65
67
  end
66
68
 
69
+ # @return [Array<Builder>]
70
+ def local_builders
71
+ @local_builders ||= @schema
72
+ .type
73
+ .reject { |type| parent_keys.include?(type) }
74
+ .map { |type| Builder.for(type) }
75
+ end
76
+
67
77
  # @return [Array<Builder>]
68
78
  def builders
69
- @builders ||= @schema
70
- .type
71
- .reject { |type| parent_keys.include?(type) }
72
- .map { |type| Builder.for(type) }
79
+ @builders ||= @local_builders + @schema
80
+ .type
81
+ .select { |type| parent_keys.include?(type) }
82
+ .map { |type| Builder.for(type) }
73
83
  end
74
84
 
75
85
  # @return [Array<Class>]
@@ -46,7 +46,7 @@ module JsonModel
46
46
 
47
47
  # @return [AnyOf]
48
48
  def build
49
- AnyOf.new(mapping.values.uniq.reduce(&:|), tag_key: tag_key, mapping: mapping) do |input|
49
+ AnyOf.new(mapping.values.map(&:type).uniq.reduce(&:|), tag_key: tag_key, mapping: mapping) do |input|
50
50
  tag = input[tag_key]
51
51
  type = mapping[tag]
52
52
  raise(Dry::Types::ConstraintError, "Unknown tag #{tag.inspect}") unless type
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonModel
4
- VERSION = '0.1.22'
4
+ VERSION = '0.1.23'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_model_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.22
4
+ version: 0.1.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Gillesberger