json-schema-serializer 1.2.1 → 1.3.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: f207536a1ba36cfa5ed2e197638d815ab1eb24e71abd373889eefb86042c38f8
4
- data.tar.gz: 052f1f62be3e4742036b7e7fa5088b28bef3460c1111527adf677774f144d461
3
+ metadata.gz: 34d2323a3916909a75c82c34fac5be56267ec91391737ccc56bccc44d28cc008
4
+ data.tar.gz: 754c7cfc61441a22cae20d198c943ba7688fa9f5b4898f4cb4458ccb9aa0501a
5
5
  SHA512:
6
- metadata.gz: 66c04803cfc518eac8d2db50948f7ccbd48fef7d9ac8e757dc81b625bb87d21c10edd9af0d41d7e74278354e5da658642d05a8a62f16aeb3b3ec5dda73eb32df
7
- data.tar.gz: 53597adc44e4a90c81536b8edd629affdd9f7fbbbbee07cd3fd3f8f4d9accb94220ad1c9f00b1a34f9548ee8a154e3cc0938e76aded65960929824ff0a154c74
6
+ metadata.gz: c9b16d0c0cae997cba4db892b3ec9d36bebb05b36477ff5840c81728c595221e1fd27f939aac367934714cc82cf69bc25494f5e754f2984687320f5aafcbaab6
7
+ data.tar.gz: '082080bd9faf94c1cb444eef4874581e91009c385f1d9f7d2355864615bcfaa5fb80619b46e6eca99384bb0c22ee007ca604f2458e115897a31e734e93bde247'
data/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.3.0
4
+
5
+ - add: resolver option to resolve `$ref`
6
+ - mod: regexp to string serialization
7
+
8
+ ## 1.2.1
9
+
10
+ - add documentation link
11
+
12
+ ## 1.2.0
13
+
14
+ - add: injector options
15
+
16
+ ## 1.1.0
17
+
18
+ - add: "default" key handling
19
+
20
+ ## 1.0.0
21
+
22
+ - feature not changed
23
+
3
24
  ## 0.1.0
4
25
 
5
26
  - released
data/README.md CHANGED
@@ -114,17 +114,17 @@ serializer_injected.serialize([1, 2, 3])
114
114
  # => {"first"=>1, "count"=>3}
115
115
  ```
116
116
 
117
- ### Caution
117
+ ### `$ref` resolving
118
118
 
119
119
  `JSON::Schema::Serializer` does not resolve `$ref` so use external resolver.
120
120
 
121
- with `json_refs` gem example:
121
+ with `hana` and `json_refs` gem example:
122
122
 
123
123
  ```ruby
124
+ require "hana"
124
125
  require "json_refs"
125
126
  require "json/schema/serializer"
126
127
 
127
-
128
128
  schema = {
129
129
  "type" => "object",
130
130
  "properties" => {
@@ -136,6 +136,29 @@ schema = {
136
136
  serializer = JSON::Schema::Serializer.new(JsonRefs.(schema))
137
137
  serializer.serialize({foo: 0, bar: "42"})
138
138
  # => {"foo"=>0, "bar"=>42}
139
+
140
+ # resolver option also available
141
+
142
+ def walk(all, part)
143
+ if part.is_a?(Array)
144
+ part.map { |item| walk(all, item) }
145
+ elsif part.is_a?(Hash)
146
+ ref = part["$ref"] || part[:"$ref"]
147
+ if ref
148
+ Hana::Pointer.new(ref[1..-1]).eval(all)
149
+ else
150
+ part.map { |k, v| [k, walk(all, v)] }.to_h
151
+ end
152
+ else
153
+ part
154
+ end
155
+ end
156
+
157
+ serializer2 = JSON::Schema::Serializer.new(schema["properties"]["bar"], {
158
+ resolver: ->(schema) do
159
+ walk(all, JsonRefs.(schema))
160
+ end
161
+ })
139
162
  ```
140
163
 
141
164
  ## License
@@ -6,7 +6,7 @@ module JSON
6
6
  class Schema
7
7
  class Serializer
8
8
  def initialize(obj, options = {})
9
- @schema = obj
9
+ @schema = options && options[:resolver] ? options[:resolver].call(obj) : obj
10
10
  @options = options
11
11
  end
12
12
 
@@ -133,6 +133,8 @@ module JSON
133
133
  else
134
134
  obj.to_s
135
135
  end
136
+ when Regexp
137
+ obj.inspect.gsub(%r`^/|/[a-z]*$`, '')
136
138
  else
137
139
  obj.to_s
138
140
  end
@@ -1,7 +1,7 @@
1
1
  module Json
2
2
  module Schema
3
3
  module Serializer
4
- VERSION = "1.2.1".freeze
4
+ VERSION = "1.3.0".freeze
5
5
  end
6
6
  end
7
7
  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: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Narazaka
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-29 00:00:00.000000000 Z
11
+ date: 2019-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -181,7 +181,7 @@ metadata:
181
181
  homepage_uri: https://github.com/Narazaka/json-schema-serializer
182
182
  source_code_uri: https://github.com/Narazaka/json-schema-serializer.git
183
183
  changelog_uri: https://github.com/Narazaka/json-schema-serializer/blob/master/CHANGELOG.md
184
- documentation_uri: https://www.rubydoc.info/gems/json-schema-serializer/1.2.1
184
+ documentation_uri: https://www.rubydoc.info/gems/json-schema-serializer/1.3.0
185
185
  post_install_message:
186
186
  rdoc_options: []
187
187
  require_paths: