json_model_rb 0.1.27 → 0.1.28

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: 11869cede7f9f8edc41ceb1d17d356dc1d9c795c081c6a0bb8dee482bbc87fce
4
- data.tar.gz: 95ac80eceb616c34d6c6f6ed98e9a935c342f72f3cb984705f98cf524df58269
3
+ metadata.gz: 75760feba3c11ac268b027e6a1ae6e54b210044cd8046233426cd7698403e277
4
+ data.tar.gz: bd40e30ae0a3be3ccce1c4d36c2c62bc5dcb36b23d82aa669d7c0ebb88756255
5
5
  SHA512:
6
- metadata.gz: 8d0cb3237a4164526778bc0bb6939c0bf5b041d90fb384a39c9e35059482f36ac63f64a42ff80231618cd2f1a8328d7cf88294d41dd25802eff1f427d0637698
7
- data.tar.gz: 6b2e5112a96921d4764a95cf9b272fe5c6b97ab038d754e4a94949d814874010156986527e6d2e5325a218409cf65d473d8150763478f6bdda5045eae76a583d
6
+ metadata.gz: a3e8f08de326f6d6046664cd615555822bdc34a0fbeab57ed2a767c1f3f7b011625fc235519d30abbb9853641a3f795773ab79d4f682b0ec379afb6f0fa2cc1b
7
+ data.tar.gz: 183575c9f148a81d6b712dd879646d5101806e3a12e5f36b94b8b2806b3c02531f04c1259efd47e28449d7fc4e11a8cdd58ffd9971b9d13abe0240c1b9dffa58
@@ -8,7 +8,15 @@ module JsonModel
8
8
  class AnyOfBuilder < Builder
9
9
  # @param [Dry::Types::Intersection] type
10
10
  def initialize(type)
11
- super(type.type, :anyOf)
11
+ super(type, :anyOf)
12
+ end
13
+
14
+ protected
15
+
16
+ # @param [Dry::Types::Type] type
17
+ # @return [Array<Dry::Types::Type>]
18
+ def types(type)
19
+ type.options[:mapping].values.uniq
12
20
  end
13
21
  end
14
22
  end
@@ -25,7 +25,7 @@ module JsonModel
25
25
  builders.flat_map(&:referenced_schemas).uniq
26
26
  end
27
27
 
28
- private
28
+ protected
29
29
 
30
30
  # @return [Array<JsonModel::Builder::BaseBuilder>]
31
31
  def builders
@@ -8,7 +8,15 @@ module JsonModel
8
8
  class OneOfBuilder < Builder
9
9
  # @param [Dry::Types::Sum] type
10
10
  def initialize(type)
11
- super(type.type, :oneOf)
11
+ super(type, :oneOf)
12
+ end
13
+
14
+ protected
15
+
16
+ # @param [Dry::Types::Type] type
17
+ # @return [Array<Dry::Types::Type>]
18
+ def types(type)
19
+ type.options[:mapping].values
12
20
  end
13
21
  end
14
22
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative('base_builder')
4
+
5
+ module JsonModel
6
+ module Builder
7
+ class NoOpBuilder < BaseBuilder
8
+ # @return [Hash]
9
+ def as_schema
10
+ {}
11
+ end
12
+ end
13
+ end
14
+ end
@@ -8,6 +8,7 @@ require_relative('builder/default_builder')
8
8
  require_relative('builder/enum_builder')
9
9
  require_relative('builder/format_builder')
10
10
  require_relative('builder/key_builder')
11
+ require_relative('builder/no_op_builder')
11
12
  require_relative('builder/primitive')
12
13
  require_relative('builder/ref_builder')
13
14
  require_relative('builder/schema_builder')
@@ -67,7 +67,7 @@ module JsonModel
67
67
 
68
68
  # @return [Hash]
69
69
  def meta_attributes
70
- @meta_attributes ||= { unevaluatedProperties: @schema&.strict? ? false : nil }.compact
70
+ { unevaluatedProperties: @schema&.strict? ? false : nil }.compact
71
71
  end
72
72
  end
73
73
  end
@@ -46,7 +46,7 @@ module JsonModel
46
46
 
47
47
  # @return [AnyOf]
48
48
  def build
49
- AnyOf.new(mapping.values.map(&:type).uniq.reduce(&:|), tag_key: tag_key, mapping: mapping) do |input|
49
+ AnyOf.new(Dry::Core::Constants::Undefined, 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
@@ -46,7 +46,7 @@ module JsonModel
46
46
 
47
47
  # @return [OneOf]
48
48
  def build
49
- OneOf.new(mapping.values.uniq.reduce(&:|), tag_key: tag_key, mapping: mapping) do |input|
49
+ OneOf.new(Dry::Core::Constants::Undefined, 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.27'
4
+ VERSION = '0.1.28'
5
5
  end
@@ -75,10 +75,10 @@ RSpec.describe('File system schema') do
75
75
  attribute(
76
76
  :storage,
77
77
  JsonModel::Types.one_of(:type) do
78
- on('disk', DiskDevice.local)
79
78
  on('diskUUID', 'diskuuid', DiskUuid.local)
80
79
  on('nfs', Nfs.local)
81
80
  on('tmpfs', Tmpfs.local)
81
+ on('disk', DiskDevice.local)
82
82
  end,
83
83
  )
84
84
  attribute(:fstype, JsonModel::Types::String.enum('ext3', 'ext4', 'btrfs'))
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_model_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.27
4
+ version: 0.1.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Gillesberger
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2026-01-30 00:00:00.000000000 Z
10
+ date: 2026-02-06 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rake
@@ -166,6 +166,7 @@ files:
166
166
  - lib/json_model/builder/format_builder.rb
167
167
  - lib/json_model/builder/key_builder.rb
168
168
  - lib/json_model/builder/nested_builder.rb
169
+ - lib/json_model/builder/no_op_builder.rb
169
170
  - lib/json_model/builder/primitive.rb
170
171
  - lib/json_model/builder/primitive/boolean_builder.rb
171
172
  - lib/json_model/builder/primitive/builder.rb