reynard 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d85681365ddb46b06c062b39bdea10bf46810d80d813c9737df0ee3aeb38e843
4
- data.tar.gz: '007908692ed0a3c437befba30a29d0f694429033097b7ae47ca2aaf7050c05ea'
3
+ metadata.gz: 891b142e2ca908078c960db4b36040b407974da43395d02b7ee3f768a1c758b4
4
+ data.tar.gz: 5deefbad34c0364cfd3c3a04910b882499c3b96d7c4d642fdb10fbdcc3e9898f
5
5
  SHA512:
6
- metadata.gz: 1e23bf2702660623a61039bb8444ea3e0f4bdd7eaceab42d22dbca2ea157e705a54af69558ce84812d4ef2f13c1330071781e8da61d3ed44c8b0d2a944816752
7
- data.tar.gz: 9e973c551d30a6b7e6ab8ef494d270b5dac05dfd96de86c49448c5889b070a07ee8d8aa486de1f80c3d372c73ed7b11e37da49625fdeb64d21e84352130e55f3
6
+ metadata.gz: 393b2cab7867c45c53b761f42b03e609e653600981aa1283cf3f7c0213379adb9a1eeb1530b3a0f826e07d1ceb5c3fab0d8afc114a2001ec773f71d2484bc109
7
+ data.tar.gz: c14ebcc55481c202c0c3c7b7dd36e68eb5b72f0297c0339867e6c298d4a3605284dff2e041d33b074c8c9e3b8064f450fdf481fa686e56c1e764af59a1050593
@@ -14,6 +14,8 @@ class Reynard
14
14
  def object_class
15
15
  if @media_type.schema_name
16
16
  self.class.model_class(@media_type.schema_name, @schema.object_type)
17
+ elsif @schema.object_type == 'array'
18
+ Array
17
19
  else
18
20
  Reynard::Model
19
21
  end
@@ -112,6 +112,14 @@ class Reynard
112
112
  .gsub(/\A(.)/) { Regexp.last_match(1).upcase }
113
113
  end
114
114
 
115
+ def self.normalize_model_title(title)
116
+ title
117
+ .gsub(/[^[:alpha:]]/, ' ')
118
+ .gsub(/\s{2,}/, ' ')
119
+ .gsub(/(\s+)([[:alpha:]])/) { Regexp.last_match(2).upcase }
120
+ .strip
121
+ end
122
+
115
123
  private
116
124
 
117
125
  def read
@@ -150,17 +158,25 @@ class Reynard
150
158
  # rubocop:enable Metrics/MethodLength
151
159
 
152
160
  def schema_name(response)
153
- ref = response.dig('schema', '$ref')
154
- return unless ref
155
-
156
- self.class.normalize_model_name(ref&.split('/')&.last)
161
+ extract_schema_name(response['schema'])
157
162
  end
158
163
 
159
164
  def item_schema_name(schema)
160
- ref = schema.dig('items', '$ref')
161
- return unless ref
165
+ if schema['type'] == 'array'
166
+ extract_schema_name(schema['items'])
167
+ else
168
+ extract_schema_name(schema)
169
+ end
170
+ end
171
+
172
+ def extract_schema_name(definition)
173
+ ref = definition['$ref']
174
+ return self.class.normalize_model_name(ref&.split('/')&.last) if ref
175
+
176
+ title = definition['title']
177
+ return unless title
162
178
 
163
- self.class.normalize_model_name(ref&.split('/')&.last)
179
+ self.class.normalize_model_title(title)
164
180
  end
165
181
  end
166
182
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Reynard
4
- VERSION = '0.5.0'
4
+ VERSION = '0.5.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reynard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manfred Stienstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-07-22 00:00:00.000000000 Z
11
+ date: 2022-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: multi_json