nidyx 0.2.0 → 0.2.1
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 +4 -4
- data/README.md +10 -11
- data/lib/nidyx/parse_constants.rb +1 -0
- data/lib/nidyx/parser.rb +21 -9
- data/lib/nidyx/version.rb +1 -1
- data/test/nidyx/test_parser.rb +63 -3
- metadata +24 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfb9be5f10368cc90ad4e6692306e0b1f525f657
|
4
|
+
data.tar.gz: 5381d4cc120acdc4a4f020d73218951fe4bc54e4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0743f7437b9476c4fe6330fdb54284c8265b3745e1afb9e8f6a5e56e2cb6c43c61b1b16a4e0cd9dc37a103889e0924d99dfdb00631f88a39e56d3d18e536cb30
|
7
|
+
data.tar.gz: 8eca92e4a710fa7d1903db3a3cf5415beb0c1f8f728d6b94b38620004fb3c456a7695b94304b9da82b40d0a7437df559a6e70ca45a79525cff9432bdb812c978
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Nidyx [](http://badge.fury.io/rb/nidyx) [](https://travis-ci.org/cknadler/nidyx) [](https://codeclimate.com/github/cknadler/nidyx) [](https://inch-ci.org/github/cknadler/nidyx)
|
2
2
|
|
3
3
|
[JSON Schema][JSONSchema] ⇒ Model.
|
4
4
|
|
@@ -15,14 +15,15 @@ $ gem install nidyx
|
|
15
15
|
|
16
16
|
```
|
17
17
|
usage: nidyx [-h] [--version]
|
18
|
-
nidyx <schema>
|
19
|
-
[-
|
18
|
+
nidyx <schema> [-n] [-a author] [-c company] [-p project]
|
19
|
+
[-o directory] [-x prefix]
|
20
20
|
[--json-model] # objc specific
|
21
21
|
|
22
22
|
-a, --author AUTHOR Author's name
|
23
23
|
-c, --company COMPANY Company's name
|
24
24
|
-p, --project PROJECT Project's name
|
25
25
|
-o, --output DIRECTORY Output models to a specific directory
|
26
|
+
-x, --class-prefix PREFIX Add a prefix to generated model names
|
26
27
|
-n, --no-comments Generate without header comments
|
27
28
|
--json-model Generate with JSONModel support
|
28
29
|
-h, --help Print usage information
|
@@ -34,19 +35,17 @@ models with JSONModel support.
|
|
34
35
|
Examples
|
35
36
|
========
|
36
37
|
|
37
|
-
|
38
|
-
current directory:
|
38
|
+
Generate models for a given schema.
|
39
39
|
|
40
|
-
$ nidyx example.json.schema
|
40
|
+
$ nidyx example.json.schema
|
41
41
|
|
42
|
-
Specify an ouput directory:
|
42
|
+
Specify an ouput directory and a class prefix:
|
43
43
|
|
44
|
-
$ nidyx example.json.schema ClassPrefix -o /path/to/output/directory
|
44
|
+
$ nidyx example.json.schema -x ClassPrefix -o /path/to/output/directory
|
45
45
|
|
46
|
-
Generate
|
46
|
+
Generate with JSONModel support and optional documentation:
|
47
47
|
|
48
|
-
$ nidyx example.json.schema
|
49
|
-
--json-model -a "Your Name" -c "Company Name" -p "Project Name"
|
48
|
+
$ nidyx example.json.schema --json-model -a "Your Name" -p "Project Name"
|
50
49
|
```
|
51
50
|
|
52
51
|
## Features
|
data/lib/nidyx/parser.rb
CHANGED
@@ -129,28 +129,40 @@ module Nidyx
|
|
129
129
|
obj
|
130
130
|
end
|
131
131
|
|
132
|
-
# Resolves any references
|
132
|
+
# Resolves any references buied in the `items` property of an array
|
133
133
|
# definition. Returns a list of collection types in the array.
|
134
134
|
# @param obj [Hash] the array property schema
|
135
|
-
# @return [Array]
|
135
|
+
# @return [Array] types contained in the array
|
136
136
|
def resolve_array_refs(obj)
|
137
137
|
items = obj[ITEMS_KEY]
|
138
|
-
types = []
|
139
|
-
|
140
138
|
case items
|
141
139
|
when Array
|
142
|
-
items
|
143
|
-
resolve_reference_string(i[REF_KEY])
|
144
|
-
types << class_name_from_ref(i[REF_KEY])
|
145
|
-
end
|
140
|
+
return resolve_items_array(items)
|
146
141
|
when Hash
|
142
|
+
# handle a nested any of key
|
143
|
+
any_of = items[ANY_OF_KEY]
|
144
|
+
return resolve_items_array(any_of) if any_of.is_a?(Array)
|
145
|
+
|
147
146
|
resolve_reference_string(items[REF_KEY])
|
148
|
-
|
147
|
+
return [class_name_from_ref(items[REF_KEY])].compact
|
148
|
+
else
|
149
|
+
return []
|
149
150
|
end
|
151
|
+
end
|
150
152
|
|
153
|
+
# @param items [Array] an array of items
|
154
|
+
# @return [Array] types contained in the array
|
155
|
+
def resolve_items_array(items)
|
156
|
+
types = []
|
157
|
+
items.each do |item|
|
158
|
+
resolve_reference_string(item[REF_KEY])
|
159
|
+
types << class_name_from_ref(item[REF_KEY])
|
160
|
+
end
|
151
161
|
types.compact
|
152
162
|
end
|
153
163
|
|
164
|
+
# @param ref [String] reference in json pointer format
|
165
|
+
# @return [String] the class name of the object at the location of the ref
|
154
166
|
def class_name_from_ref(ref)
|
155
167
|
class_name_from_path(@class_prefix, Nidyx::Pointer.new(ref).path, @schema) if ref
|
156
168
|
end
|
data/lib/nidyx/version.rb
CHANGED
data/test/nidyx/test_parser.rb
CHANGED
@@ -329,7 +329,7 @@ class TestParser < Minitest::Test
|
|
329
329
|
"type" => "object",
|
330
330
|
"nameOverride" => "somethingElse",
|
331
331
|
"properties" => {
|
332
|
-
"recObject" => {
|
332
|
+
"recObject" => {
|
333
333
|
"type" => "object",
|
334
334
|
"nameOverride" => "rec",
|
335
335
|
"properties" => {
|
@@ -353,8 +353,8 @@ class TestParser < Minitest::Test
|
|
353
353
|
# something model
|
354
354
|
model = models["TSSomethingModel"]
|
355
355
|
props = model.properties
|
356
|
-
|
357
|
-
assert_equal("TSSomethingElseModel",
|
356
|
+
value = props.shift
|
357
|
+
assert_equal("TSSomethingElseModel", value.class_name)
|
358
358
|
|
359
359
|
# something else model
|
360
360
|
model = models["TSSomethingElseModel"]
|
@@ -444,6 +444,66 @@ class TestParser < Minitest::Test
|
|
444
444
|
assert_equal(:boolean, bool.type)
|
445
445
|
end
|
446
446
|
|
447
|
+
def test_any_of_array
|
448
|
+
schema = {
|
449
|
+
"type" => "object",
|
450
|
+
"properties" => {
|
451
|
+
"widgets" => {
|
452
|
+
"type" => "array",
|
453
|
+
"items" => {
|
454
|
+
"anyOf" => [
|
455
|
+
{ "$ref" => "#/definitions/object" },
|
456
|
+
{ "$ref" => "#/definitions/otherObject" }
|
457
|
+
]
|
458
|
+
}
|
459
|
+
}
|
460
|
+
},
|
461
|
+
"definitions" => {
|
462
|
+
"object" => {
|
463
|
+
"type" => "object",
|
464
|
+
"properties" => {
|
465
|
+
"count" => { "type" => "integer" }
|
466
|
+
}
|
467
|
+
},
|
468
|
+
"otherObject" => {
|
469
|
+
"type" => "object",
|
470
|
+
"properties" => {
|
471
|
+
"lastObject" => { "$ref" => "#/definitions/lastObject" }
|
472
|
+
}
|
473
|
+
},
|
474
|
+
"lastObject" => {
|
475
|
+
"type" => "object",
|
476
|
+
"properties" => {
|
477
|
+
"limit" => { "type" => "integer" }
|
478
|
+
}
|
479
|
+
}
|
480
|
+
}
|
481
|
+
}
|
482
|
+
|
483
|
+
models = parse(schema)
|
484
|
+
assert_equal(4, models.size)
|
485
|
+
|
486
|
+
# root model
|
487
|
+
props = models["TSModel"].properties
|
488
|
+
value = props.shift
|
489
|
+
assert_equal(:array, value.type)
|
490
|
+
|
491
|
+
# object model
|
492
|
+
props = models["TSObjectModel"].properties
|
493
|
+
value = props.shift
|
494
|
+
assert_equal(:integer, value.type)
|
495
|
+
|
496
|
+
# other object model
|
497
|
+
props = models["TSOtherObjectModel"].properties
|
498
|
+
value = props.shift
|
499
|
+
assert_equal("TSLastObjectModel", value.class_name)
|
500
|
+
|
501
|
+
# last object model
|
502
|
+
props = models["TSLastObjectModel"].properties
|
503
|
+
value = props.shift
|
504
|
+
assert_equal(:integer, value.type)
|
505
|
+
end
|
506
|
+
|
447
507
|
private
|
448
508
|
|
449
509
|
OPTIONS = {
|
metadata
CHANGED
@@ -1,72 +1,73 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nidyx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Knadler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mustache
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.99.
|
19
|
+
version: 0.99.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.99.
|
26
|
+
version: 0.99.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: terminal-notifier-guard
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: guard-minitest
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
-
description:
|
69
|
+
description: Nidyx generates Objective-C models from JSONSchema files. Use your API's
|
70
|
+
spec to make your client's models in a snap.
|
70
71
|
email: takeshi91k@gmail.com
|
71
72
|
executables:
|
72
73
|
- nidyx
|
@@ -75,6 +76,10 @@ extra_rdoc_files:
|
|
75
76
|
- README.md
|
76
77
|
- LICENSE
|
77
78
|
files:
|
79
|
+
- LICENSE
|
80
|
+
- README.md
|
81
|
+
- bin/nidyx
|
82
|
+
- lib/nidyx.rb
|
78
83
|
- lib/nidyx/common.rb
|
79
84
|
- lib/nidyx/core_ext/string.rb
|
80
85
|
- lib/nidyx/generator.rb
|
@@ -93,13 +98,10 @@ files:
|
|
93
98
|
- lib/nidyx/property.rb
|
94
99
|
- lib/nidyx/reader.rb
|
95
100
|
- lib/nidyx/version.rb
|
96
|
-
- lib/nidyx.rb
|
97
101
|
- templates/objc/implementation.mustache
|
98
102
|
- templates/objc/imports.mustache
|
99
103
|
- templates/objc/interface.mustache
|
100
104
|
- templates/objc/top_info.mustache
|
101
|
-
- README.md
|
102
|
-
- LICENSE
|
103
105
|
- test/nidyx/core_ext/test_string.rb
|
104
106
|
- test/nidyx/objc/test_model_base.rb
|
105
107
|
- test/nidyx/objc/test_property.rb
|
@@ -108,7 +110,6 @@ files:
|
|
108
110
|
- test/nidyx/test_parser.rb
|
109
111
|
- test/nidyx/test_pointer.rb
|
110
112
|
- test/nidyx/test_property.rb
|
111
|
-
- bin/nidyx
|
112
113
|
homepage: https://github.com/cknadler/nidyx
|
113
114
|
licenses:
|
114
115
|
- MIT
|
@@ -119,20 +120,20 @@ require_paths:
|
|
119
120
|
- lib
|
120
121
|
required_ruby_version: !ruby/object:Gem::Requirement
|
121
122
|
requirements:
|
122
|
-
- -
|
123
|
+
- - ">="
|
123
124
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
125
|
+
version: 1.9.3
|
125
126
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
127
|
requirements:
|
127
|
-
- -
|
128
|
+
- - ">="
|
128
129
|
- !ruby/object:Gem::Version
|
129
130
|
version: '0'
|
130
131
|
requirements: []
|
131
132
|
rubyforge_project:
|
132
|
-
rubygems_version: 2.
|
133
|
+
rubygems_version: 2.4.5
|
133
134
|
signing_key:
|
134
135
|
specification_version: 4
|
135
|
-
summary:
|
136
|
+
summary: JSON Schema -> Objective-C models
|
136
137
|
test_files:
|
137
138
|
- test/nidyx/core_ext/test_string.rb
|
138
139
|
- test/nidyx/objc/test_model_base.rb
|