jbuilder-schema 2.6.3 → 2.6.5

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: 3ece2220807094bf6da825da24512a4dabd0ce985aa935a16e9247c0e5d4c70e
4
- data.tar.gz: f04dc67915f12690c7eca1efc2357f915351584061a6b0ece6598326606b0bbf
3
+ metadata.gz: 2534728d0a4ed22be0dab3a5a0cf3cd931e1e6c51047560ee7274ff32c90b865
4
+ data.tar.gz: cd91c940a4cafa9a06fbd7de5f3465e83f1be3689a7cae790ec25f9a7f9025bf
5
5
  SHA512:
6
- metadata.gz: eb350992a61f92fbaee952b0167369caf119fd2d3f2695f647e1d774974e461e01e6a9cd1b7d5d4da2c19abe0658f8a74b601bedeff7d4e78de8365a6c61b02b
7
- data.tar.gz: c9582ca4c80ba75106468c8b806cc443be3ee54a630afaa786524d249a4ef8d8bc5eeaef1f1beebb2b00c32e739cfe23be7734695cfff04a51f95de326a7fbd4
6
+ metadata.gz: 21b0034721c19d01f9f78c5159cea70744284827b58716466f31fcf1c351ef5a6741ac0b72b201f2667c304d99552f998911fd8e35df4733abe276ee2a2e8cba
7
+ data.tar.gz: d20f3cdd98c8684921bf4bd40f3df30c764e0cada317a3b7a6949bbde5db230b162fd9452d2d365c2548c4441d6fee81540c47d41f5c5117f4fe626e10f0db38
@@ -63,7 +63,7 @@ class Jbuilder::Schema
63
63
 
64
64
  # Rails 7.1 calls `to_s` on our `target!` (the return value from our templates).
65
65
  # To get around that and let our inner Hash through, we add this override.
66
- # `unwrap_target!` is added for backwardscompatibility so we get the inner Hash on Rails < 7.1.
66
+ # `unwrap_target!` is added for backwards compatibility so we get the inner Hash on Rails < 7.1.
67
67
  def to_s
68
68
  @object
69
69
  end
@@ -183,7 +183,7 @@ class Jbuilder::Schema
183
183
 
184
184
  def _nullify_non_required_types(attributes, required)
185
185
  attributes.transform_values! {
186
- _1[:type] = [_1[:type], "null"] unless required.include?(attributes.key(_1))
186
+ _1[:type] = [_1[:type], "null"] if _1[:type].present? && !required.include?(attributes.key(_1))
187
187
  _1
188
188
  }
189
189
  end
@@ -200,7 +200,7 @@ class Jbuilder::Schema
200
200
  if array
201
201
  _attributes.merge! type: :array, items: ref
202
202
  else
203
- _attributes.merge! allOf: [ref]
203
+ _attributes.merge! type: :object, allOf: [ref]
204
204
  end
205
205
  end
206
206
 
@@ -257,7 +257,6 @@ class Jbuilder::Schema
257
257
  when :array
258
258
  _schema(key, value, within_array: true)
259
259
  when :object
260
- value = value.attributes if value.is_a?(::ActiveRecord::Base)
261
260
  {
262
261
  type: type,
263
262
  properties: _set_properties(key, value)
@@ -267,12 +266,6 @@ class Jbuilder::Schema
267
266
  end
268
267
  end
269
268
 
270
- def _set_properties(key, value)
271
- value.each_with_object({}) do |(attr_name, attr_value), properties|
272
- properties[attr_name] = _schema("#{key}.#{attr_name}", attr_value)
273
- end
274
- end
275
-
276
269
  def _primitive_type(value)
277
270
  case value
278
271
  when ::Hash, ::Struct, ::OpenStruct, ::ActiveRecord::Base then :object
@@ -286,11 +279,22 @@ class Jbuilder::Schema
286
279
  end
287
280
 
288
281
  def _set_value(key, value)
282
+ value = _value(value)
289
283
  value = _schema(key, value) unless value.is_a?(::Hash) && (value.key?(:type) || value.key?(:allOf)) # rubocop:disable Style/UnlessLogicalOperators
290
284
  _set_description(key, value)
291
285
  super
292
286
  end
293
287
 
288
+ def _set_properties(key, value)
289
+ _value(value).each_with_object({}) do |(attr_name, attr_value), properties|
290
+ properties[attr_name] = _schema("#{key}.#{attr_name}", attr_value)
291
+ end
292
+ end
293
+
294
+ def _value(value)
295
+ value.respond_to?(:attributes) ? value.attributes : value
296
+ end
297
+
294
298
  def _required!(keys)
295
299
  presence_validated_attributes = @configuration.object&.class.try(:validators).to_a.flat_map { _1.attributes if _1.is_a?(::ActiveRecord::Validations::PresenceValidator) }
296
300
  keys & [_key(:id), *presence_validated_attributes.flat_map { [_key(_1), _key("#{_1}_id")] }]
@@ -1,4 +1,4 @@
1
1
  # We can't use the standard `Jbuilder::Schema::VERSION =` because
2
2
  # `Jbuilder` isn't a regular module namespace, but a class …which also loads Active Support.
3
3
  # So we use trickery, and assign the proper version once `jbuilder/schema.rb` is loaded.
4
- JBUILDER_SCHEMA_VERSION = "2.6.3"
4
+ JBUILDER_SCHEMA_VERSION = "2.6.5"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jbuilder-schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.3
4
+ version: 2.6.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuri Sidorov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-10 00:00:00.000000000 Z
11
+ date: 2023-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jbuilder
@@ -54,7 +54,7 @@ dependencies:
54
54
  version: '0'
55
55
  description: Generate JSON Schema from Jbuilder files
56
56
  email:
57
- - hey@yurisidorov.com
57
+ - git@yurisidorov.com
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []