nidyx 0.2.0 → 0.2.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
  SHA1:
3
- metadata.gz: 8433c258d171e3151329b3623a8fb03ee27cd9a6
4
- data.tar.gz: 69d7d5702a72d1123c2bf0659e82c6d517714598
3
+ metadata.gz: dfb9be5f10368cc90ad4e6692306e0b1f525f657
4
+ data.tar.gz: 5381d4cc120acdc4a4f020d73218951fe4bc54e4
5
5
  SHA512:
6
- metadata.gz: 7c5d42a4d48c2b1a4b2a45b6e5b99eb27f4a04bed8a25de6b97ca2c102651cf3e11d037260ac105471d46eb5a4a78973685e837d97d2b5107ee412fc6c613275
7
- data.tar.gz: 8fed850402a9f1480479aef191a0e45c66bd95515c1606ea5d4adef2a1e2f8a5ef95eb55d848692ca7dd2ea6023efd4646e21d9819e5d4343f3327448eb48f7e
6
+ metadata.gz: 0743f7437b9476c4fe6330fdb54284c8265b3745e1afb9e8f6a5e56e2cb6c43c61b1b16a4e0cd9dc37a103889e0924d99dfdb00631f88a39e56d3d18e536cb30
7
+ data.tar.gz: 8eca92e4a710fa7d1903db3a3cf5415beb0c1f8f728d6b94b38620004fb3c456a7695b94304b9da82b40d0a7437df559a6e70ca45a79525cff9432bdb812c978
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Nidyx [![Gem Version](https://img.shields.io/gem/v/nidyx.svg)](https://rubygems.org/gems/nidyx) [![Build Status](https://travis-ci.org/cknadler/nidyx.svg?branch=master)](https://travis-ci.org/cknadler/nidyx) [![Code Climate](https://codeclimate.com/github/cknadler/nidyx/badges/gpa.svg)](https://codeclimate.com/github/cknadler/nidyx)
1
+ # Nidyx [![Gem Version](https://badge.fury.io/rb/nidyx.svg)](http://badge.fury.io/rb/nidyx) [![Build Status](https://travis-ci.org/cknadler/nidyx.svg?branch=master)](https://travis-ci.org/cknadler/nidyx) [![Code Climate](https://codeclimate.com/github/cknadler/nidyx/badges/gpa.svg)](https://codeclimate.com/github/cknadler/nidyx) [![Documentation](https://inch-ci.org/github/cknadler/nidyx.svg?branch=master)](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> <class-prefix>
19
- [-n] [-a author] [-c company] [-p project] [-o directory]
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
- Bare minimum. Given a schema and a class prefix, generate models in the
38
- current directory:
38
+ Generate models for a given schema.
39
39
 
40
- $ nidyx example.json.schema ClassPrefix
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 models with JSONModel support and optional documentation:
46
+ Generate with JSONModel support and optional documentation:
47
47
 
48
- $ nidyx example.json.schema ClassPrefix -o /path/to/output/directory \
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
@@ -13,6 +13,7 @@ module Nidyx
13
13
  NAME_OVERRIDE_KEY = "nameOverride"
14
14
  ITEMS_KEY = "items"
15
15
  MINIMUM_KEY = "minimum"
16
+ ANY_OF_KEY = "anyOf"
16
17
 
17
18
  ###
18
19
  # Internal schema key definitions
data/lib/nidyx/parser.rb CHANGED
@@ -129,28 +129,40 @@ module Nidyx
129
129
  obj
130
130
  end
131
131
 
132
- # Resolves any references burried in the `items` property of an array
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] list of types in the 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.each do |i|
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
- types << class_name_from_ref(items[REF_KEY])
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
@@ -1,3 +1,3 @@
1
1
  module Nidyx
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -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
- name = props.shift
357
- assert_equal("TSSomethingElseModel", name.class_name)
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.0
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-05-22 00:00:00.000000000 Z
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.5
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.5
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: ruby_gntp
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: JSON Schema -> Objective-C model generator
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: '0'
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.0.2
133
+ rubygems_version: 2.4.5
133
134
  signing_key:
134
135
  specification_version: 4
135
- summary: Nidyx
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