json_schema_tools 0.5.2 → 0.5.3
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 +8 -8
- data/CHANGELOG.md +4 -0
- data/README.md +10 -1
- data/lib/schema_tools/modules/hash.rb +11 -3
- data/lib/schema_tools/version.rb +1 -1
- data/spec/schema_tools/hash_spec.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YTU2OGFjZGFhZGI4YzVlNGM4MGI5ZGI4MDI0MjhjMDFiNTc4MjMzYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NzRkYTVkMjY2M2ZhYjJhMTA3MWUyMzU3MGZmZTQyOWJmODI1YzdkYQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjM2MzVlMTUwZDgzNDFhMmQyY2Q3ZTBlNWFkNjg4NDQ4NTBhNzNhNWQxY2Q3
|
10
|
+
Mjg1NmUzYTkxYzM1MzEzOTNiYjg4ZTkyZDI3Y2M2MjQxYmUyZGQ4NGI4ZWVm
|
11
|
+
YmE4YWU0OWZkNmU0NzM2MGI4NWI5ZTkxNTBmYjEzMDAyZWI2NWQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MjUyZjE5NDM2ZDE2MTlkZDIzZWRhOGQ5Y2FmOGFmMjQ2Yzg4YTVkMDZlODFj
|
14
|
+
MDI1YmQ2ZTNhNzRhZWU3MWU5NDAxN2UwN2Q2YjIxZTlmMWI1ZWM4N2M4YmQw
|
15
|
+
OTBkYmFjMzdlOGMxYzJiYWE2Nzk0ZWE1M2I1ZWFlMTJjNTJhMmQ=
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
# Changelog JSON Schema Tools
|
2
2
|
|
3
|
+
##2015-01
|
4
|
+
|
5
|
+
* add :reader option for Obj.as_schema_hash to use a custom reader instance(with its own schema registry), instead of the global one
|
6
|
+
|
3
7
|
##2014-12
|
4
8
|
|
5
9
|
* object.as_schema_hash converts values to types defined in the schema e.g strings, integers
|
data/README.md
CHANGED
@@ -84,7 +84,8 @@ schema = SchemaTools::Reader.read :client, 'my/path/to/json-files'
|
|
84
84
|
schemata = SchemaTools::Reader.read_all 'my/path/to/json-files'
|
85
85
|
```
|
86
86
|
|
87
|
-
Don't like the global path and registry?
|
87
|
+
Don't like the global path and registry? Create an instance and your save with
|
88
|
+
a local registry. Use if you have schema with same names but different markup!
|
88
89
|
|
89
90
|
```ruby
|
90
91
|
reader = SchemaTools::Reader.new
|
@@ -164,6 +165,14 @@ Set a custom schema path
|
|
164
165
|
peter.as_schema_json( path: 'path-to/json-files/')
|
165
166
|
```
|
166
167
|
|
168
|
+
Use your custom reader (preferred over path usage)
|
169
|
+
|
170
|
+
```ruby
|
171
|
+
reader = SchemaTools::Reader.new
|
172
|
+
reader.read_all '/your/custom/path-to-schema-json/
|
173
|
+
peter.as_schema_json( reader: reader)
|
174
|
+
```
|
175
|
+
|
167
176
|
By default the object hash has the class name (client) and the link-section on
|
168
177
|
root level. This divides the data from the available methods and makes a clear
|
169
178
|
statement about the object type(it's class).
|
@@ -33,6 +33,8 @@ module SchemaTools
|
|
33
33
|
# @options opts [Array<String>] :fields to return. If not set all schema
|
34
34
|
# properties are used.
|
35
35
|
# @options opts [String] :path of the schema files overriding global one
|
36
|
+
# @options opts [String] :reader instance to read the schemas from instead
|
37
|
+
# of the global one
|
36
38
|
# @options opts [String] :base_url used in all links
|
37
39
|
# @options opts [Boolean] :links if set the object hash gets its _links
|
38
40
|
# array inline.
|
@@ -44,9 +46,15 @@ module SchemaTools
|
|
44
46
|
# get objects class name without inheritance
|
45
47
|
real_class_name = obj.class.name.split('::').last.underscore
|
46
48
|
class_name = opts[:class_name] || real_class_name
|
47
|
-
|
48
|
-
|
49
|
-
|
49
|
+
schema = if opts[:reader].present?
|
50
|
+
opts[:reader].read(class_name)
|
51
|
+
elsif opts[:schema].present?
|
52
|
+
# TODO inline schema can be problematic with nested resource types,
|
53
|
+
# use a local reader instance until we figured it out
|
54
|
+
opts.delete(:schema)
|
55
|
+
else
|
56
|
+
SchemaTools::Reader.read(class_name, opts[:path])
|
57
|
+
end
|
50
58
|
|
51
59
|
# iterate over the defined schema fields
|
52
60
|
data = parse_properties(obj, schema, opts)
|
data/lib/schema_tools/version.rb
CHANGED
@@ -60,6 +60,20 @@ describe SchemaTools::Hash do
|
|
60
60
|
hash.keys.should_not include('birthday')
|
61
61
|
end
|
62
62
|
|
63
|
+
it 'should use custom reader' do
|
64
|
+
reader = SchemaTools::Reader.new
|
65
|
+
reader.read_all File.expand_path('../../fixtures/schemata', __FILE__)
|
66
|
+
client = Client.new
|
67
|
+
client.first_name = 'Egon'
|
68
|
+
a1 = Address.new
|
69
|
+
a1.city = 'Cologne'
|
70
|
+
client.addresses = [a1]
|
71
|
+
# use a object with nesting as this is problematic
|
72
|
+
hash = SchemaTools::Hash.from_schema(client, reader: reader)
|
73
|
+
hash['first_name'].should == 'Egon'
|
74
|
+
hash['addresses'][0]['city'].should == 'Cologne'
|
75
|
+
end
|
76
|
+
|
63
77
|
it 'should use custom schema path' do
|
64
78
|
custom_path = File.expand_path('../../fixtures/schemata', __FILE__)
|
65
79
|
hash = SchemaTools::Hash.from_schema(contact, path: custom_path)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_schema_tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Georg Leciejewski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|