json-schema-serializer 2.0.1 → 2.1.0

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: 98a8247eb1adc250801738b4056a8cb48af71a3b58f47636993a46aab2593951
4
- data.tar.gz: 6eaab852b30a1b1ad23d3ced5a55fb17a010ca5a97f259e23f61ebe8589eedf6
3
+ metadata.gz: 688a9d9a5604e822768c5427964b4b63a4bc1e4a909709672a4ba091c9afd309
4
+ data.tar.gz: 842ed003063daf2b04c14cee4239d8b2b31c4bdc77426adbc3c231ac80922576
5
5
  SHA512:
6
- metadata.gz: 4271739806fd52a9363a68459a760f3e5753fe7ea293fe9dd2ccc722b3204cb4c1673937de900891d013dcd7bc5e5177c4f2893c41aaecf81ad6358fe37cd430
7
- data.tar.gz: 496676d7b7a47a46ecadb2ef6b55dad7fb26417821ac54737991d2d7e5254f903fc57310a30c51930e40e0da73e61c4caa0c74e9382be43345e0d866b4579588
6
+ metadata.gz: 88ede4a87f75b6f176d177cb078d7336ba67f25923d890a95c727106a14e2c673f6a02593056a3f069b30d517b6b48f344075df7b30e0edac76e1bab58f4fb15
7
+ data.tar.gz: f797603f80e47cced28a52bddabf61cef290064339d8b25c32b89fd7ebafd2093c46eeaa9b79f6436b557d8315ec23c5153060058f364067f98243cf3222d924
File without changes
data/.gitignore CHANGED
File without changes
File without changes
data/.rspec CHANGED
File without changes
File without changes
File without changes
File without changes
data/Gemfile CHANGED
File without changes
data/LICENSE CHANGED
File without changes
data/README.md CHANGED
File without changes
data/Rakefile CHANGED
File without changes
@@ -0,0 +1,5 @@
1
+ target :lib do
2
+ signature "sig"
3
+
4
+ check "lib"
5
+ end
@@ -38,4 +38,5 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency "rubocop-config-prettier", "~> 0.1"
39
39
  spec.add_development_dependency "pry-byebug", "~> 3.7"
40
40
  spec.add_development_dependency "yard", "~> 0.9"
41
+ spec.add_development_dependency "steep", ">= 0.39"
41
42
  end
@@ -6,7 +6,12 @@ module JSON
6
6
  class Schema
7
7
  class Serializer
8
8
  def initialize(schema, options = nil) # rubocop:disable Airbnb/OptArgParameters
9
- @schema = options && options[:resolver] ? options[:resolver].call(schema) : schema
9
+ @schema =
10
+ if options && (resolver = options[:resolver])
11
+ resolver.call(schema)
12
+ else
13
+ schema
14
+ end
10
15
  @options = options || {}
11
16
  end
12
17
 
@@ -212,8 +217,8 @@ module JSON
212
217
  nil
213
218
  elsif options[:empty_string_boolean_coerce_null] && obj == ""
214
219
  nil
215
- elsif options[:false_values]
216
- !options[:false_values].include?(obj)
220
+ elsif (false_values = options[:false_values])
221
+ !false_values.include?(obj)
217
222
  elsif options[:no_boolean_coerce]
218
223
  obj == true
219
224
  else
@@ -1,7 +1,7 @@
1
1
  module JSON
2
2
  class Schema
3
3
  class Serializer
4
- VERSION = "2.0.1".freeze
4
+ VERSION = "2.1.0".freeze
5
5
  end
6
6
  end
7
7
  end
@@ -0,0 +1,59 @@
1
+ type jsonSchema = untyped
2
+ type jsonData = untyped
3
+ type jsonSchemaContext = untyped
4
+ type jsonSingleType = "null" | "string" | "number" | "integer" | "boolean" | "array" | "object"
5
+ type jsonType = jsonSingleType | Array[jsonSingleType]
6
+
7
+ # Classes
8
+ module JSON
9
+ class Schema
10
+ class Serializer
11
+ VERSION: String
12
+
13
+ type serializerOptions = {
14
+ inject_key: String | Symbol?,
15
+ inject_context: jsonSchemaContext?,
16
+ injectors: Hash[String | Symbol, Class] | Class,
17
+ inject_by_keyword: bool?,
18
+ resolver: (^(jsonData data) -> jsonData)?,
19
+ null_through: bool?,
20
+ empty_string_number_coerce_null: bool?,
21
+ empty_string_boolean_coerce_null: bool?,
22
+ false_values: Enumerable[untyped]?,
23
+ no_boolean_coerce: bool?,
24
+ guard_primitive_in_structure: bool?,
25
+ schema_key_transform_for_input: (^(String name) -> String)?,
26
+ schema_key_transform_for_output: (^(String name) -> String)?
27
+ }
28
+ @schema: jsonSchema
29
+ @options: serializerOptions
30
+
31
+ def initialize: (jsonSchema schema, ?serializerOptions options) -> void
32
+ def serialize: (jsonData data) -> untyped
33
+
34
+ class DataWithContext < Struct[untyped]
35
+ attr_accessor data(): jsonData
36
+ attr_accessor context(): jsonSchemaContext
37
+ def initialize: (data: jsonData, context: jsonSchemaContext) -> void
38
+ end
39
+
40
+ module WithContext
41
+ ARG2_NOT_GIVEN: :__json_schema_serializer_arg2_not_given__
42
+
43
+ def with_context!: (jsonSchemaContext context) { () -> jsonData } -> DataWithContext
44
+ | (jsonData data, jsonSchemaContext context) -> DataWithContext
45
+ | ({ data: jsonData, context: jsonSchemaContext } arg) -> DataWithContext
46
+ end
47
+
48
+ class Walker
49
+ TimeWithZone: nil
50
+
51
+ def self.walk: (jsonSchema schema, jsonData obj, bool required, bool using_default, serializerOptions options) -> untyped
52
+ def self.detect_type: (jsonType type_, jsonData obj) -> jsonSingleType
53
+ def self.type_coerce: (jsonSchema schema, jsonType type_, String format, jsonData obj, bool required, bool using_default, serializerOptions options) -> untyped
54
+ def self.try_hash: (untyped obj, String | Symbol? name) -> untyped
55
+ def self.is_primitive?: (untyped obj) -> bool
56
+ end
57
+ end
58
+ end
59
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json-schema-serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Narazaka
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-06 00:00:00.000000000 Z
11
+ date: 2020-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -164,7 +164,21 @@ dependencies:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0.9'
167
- description:
167
+ - !ruby/object:Gem::Dependency
168
+ name: steep
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0.39'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0.39'
181
+ description:
168
182
  email:
169
183
  - info@narazaka.net
170
184
  executables: []
@@ -182,12 +196,14 @@ files:
182
196
  - LICENSE
183
197
  - README.md
184
198
  - Rakefile
199
+ - Steepfile
185
200
  - bin/console
186
201
  - bin/fmt
187
202
  - bin/setup
188
203
  - json-schema-serializer.gemspec
189
204
  - lib/json/schema/serializer.rb
190
205
  - lib/json/schema/serializer/version.rb
206
+ - sig/json/schema/serializer.rbs
191
207
  homepage: https://github.com/Narazaka/json-schema-serializer
192
208
  licenses:
193
209
  - Zlib
@@ -195,8 +211,8 @@ metadata:
195
211
  homepage_uri: https://github.com/Narazaka/json-schema-serializer
196
212
  source_code_uri: https://github.com/Narazaka/json-schema-serializer.git
197
213
  changelog_uri: https://github.com/Narazaka/json-schema-serializer/blob/master/CHANGELOG.md
198
- documentation_uri: https://www.rubydoc.info/gems/json-schema-serializer/2.0.1
199
- post_install_message:
214
+ documentation_uri: https://www.rubydoc.info/gems/json-schema-serializer/2.1.0
215
+ post_install_message:
200
216
  rdoc_options: []
201
217
  require_paths:
202
218
  - lib
@@ -211,8 +227,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
211
227
  - !ruby/object:Gem::Version
212
228
  version: '0'
213
229
  requirements: []
214
- rubygems_version: 3.0.3
215
- signing_key:
230
+ rubygems_version: 3.2.3
231
+ signing_key:
216
232
  specification_version: 4
217
233
  summary: JSON Schema based serializer
218
234
  test_files: []