eazypi 0.0.12 → 0.0.13

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: 244892ecf0e137179172b7cda3f78dc7f00292194434f5bb053b6246ad25a765
4
- data.tar.gz: 158bef0052e89bde84bfe05ab5e1a2b059067aba49ddb4f6b697b68659c3aba2
3
+ metadata.gz: afad13d28348701818a13c38dd0c9902d54bacc4ad61b5aa5883f4968be2726f
4
+ data.tar.gz: 66e4f1c6c763a185a364da9e5b1187a87c96a6f99c80d193f5af52d01daa5ba2
5
5
  SHA512:
6
- metadata.gz: 636c5f7ce57dc6bb2b575e8d99fafe1b5d8f16bda9cab8f9fbf416600d1c319aea03cf3a2e2dcbee830c22ee0a84bc9d12af9ef55ddb034b5102b8543c2f70f0
7
- data.tar.gz: 6d2dcfefbc061d50af85aae149aef8e107c977ace16047a2c72cec27ed32e3eb82b076d7768233f32ac53bfc663d1618b8b8aff523b828e51a07e9d2cd802c98
6
+ metadata.gz: 6b327da1939bdeec54f0bedc33aacaddb80dad8c5aa1e7f8f2015586809e49e3b352290e99b5eabc2af6d3dd6b19435f2213776d720b6c4492e3ae68af1e355b
7
+ data.tar.gz: da9fabdab32f333588e9998e1020b0ee09bdd6e664f042b6b4c0f4fb3b883cfa5f6cda2e6db74539c66d6e79c59f94698c71993572dc7fcd94c953798eb7cd41
data/lib/eazypi/schema.rb CHANGED
@@ -3,13 +3,13 @@
3
3
  module Eazypi
4
4
  # JSON schema
5
5
  module Schema
6
- def self.from_object(object, parent = nil) # rubocop:todo Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize
6
+ def self.from_object(object, parents: []) # rubocop:todo Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity, Metrics/AbcSize
7
7
  if object == :boolean
8
8
  Schema::Primitive.new(type: "boolean")
9
9
  elsif object.is_a?(::Array)
10
10
  raise "Array needs to have one element" if object.length != 1
11
11
 
12
- Schema::Array.new(Schema.from_object(object[0], parent))
12
+ Schema::Array.new(Schema.from_object(object[0], parents: parents))
13
13
  elsif object == String
14
14
  Schema::Primitive.new(type: "string")
15
15
  elsif object == Date
@@ -21,10 +21,10 @@ module Eazypi
21
21
  elsif object == Float
22
22
  Schema::Primitive.new(type: "number")
23
23
  elsif object.respond_to?(:to_schema)
24
- if object == parent
24
+ if parents.include?(object)
25
25
  object.to_schema_reference
26
26
  else
27
- object.to_schema
27
+ object.to_schema(parents)
28
28
  end
29
29
  else
30
30
  raise "Can not convert #{object} to a schema"
@@ -84,11 +84,14 @@ module Eazypi
84
84
  @attributes
85
85
  end
86
86
 
87
- def self.to_schema
87
+ def self.to_schema(parents = [])
88
88
  schema = Schema::Object.new(object_name)
89
89
 
90
90
  @attributes.each do |attribute|
91
- schema.property attribute.name.to_s, Schema.from_object(attribute.type, self), required: attribute.required
91
+ schema.property attribute.name.to_s,
92
+ Schema.from_object(attribute.type,
93
+ parents: parents + [self]),
94
+ required: attribute.required
92
95
  end
93
96
 
94
97
  schema
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Eazypi
4
- VERSION = "0.0.12"
4
+ VERSION = "0.0.13"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eazypi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Samson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-01-15 00:00:00.000000000 Z
11
+ date: 2025-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -98,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  - !ruby/object:Gem::Version
99
99
  version: '0'
100
100
  requirements: []
101
- rubygems_version: 3.5.22
101
+ rubygems_version: 3.5.11
102
102
  signing_key:
103
103
  specification_version: 4
104
104
  summary: An opinionated framework to generate OpenAPI API's for Rails