zero-rails_openapi 1.5.7 → 1.5.8

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
- SHA1:
3
- metadata.gz: ed64dbbb343efdc64e8ea606b49e5363f6fcc04a
4
- data.tar.gz: f6914e5543de926f5672710f9247ccb3b1c1bdbc
2
+ SHA256:
3
+ metadata.gz: 39f35108e381101fa164cda95f406a2317dac0fd7527fd1a05860301a41633f0
4
+ data.tar.gz: 949cdb1266842f65c92b8f1822f0c4fe1c2cc6c566bf5164c2b6bee168e29fb1
5
5
  SHA512:
6
- metadata.gz: 6308ca2b74eee6cd14d2a828eaed6c4591ffd2496e115c1e2c1d0807f7c70b457965f7146738efdb430740eb7a3f95d7fe0991060b4ca2531e18037c14547d5f
7
- data.tar.gz: 290fcb45ceb1f876ea4b3f20ccdfd4f056be1a5e18a6e534bef63e8d7a7d217e513872ec3bbed827748d2bd258bae69af455102f6dda5a870797a87981c4286c
6
+ metadata.gz: ed98743a9c8709cbeca382a61c343b4a93d2f62342a2f35cdf16fba131fa1129906d015b875dd1eca23bacfdcfc306806c5b05a2089a6fc3e016e625dc49e906
7
+ data.tar.gz: 8a88b1ff4011352b2f5875fbce9615c33cd3da3be6e1b068aacf2e902f36ccac5048862b54c701c79d7bbb5c1199bf2216bae66f091a126afcb78982996b3697
data/CHANGELOG.md CHANGED
@@ -6,11 +6,11 @@
6
6
 
7
7
  ## Changed
8
8
 
9
- 1. issue [#16](#https://github.com/zhandao/zero-rails_openapi/issues/16) DSL in `base_doc_class` can not be generated.
9
+ 1. issue [#16](https://github.com/zhandao/zero-rails_openapi/issues/16) DSL in `base_doc_class` can not be generated.
10
10
 
11
11
  ## Fixed
12
12
 
13
- 1. issue [#15](#https://github.com/zhandao/zero-rails_openapi/issues/15) colorize was not required.
13
+ 1. issue [#15](https://github.com/zhandao/zero-rails_openapi/issues/15) colorize was not required.
14
14
  2. securitySchemes defined by config DSL was not be generated.
15
15
 
16
16
  ## [1.5.6] - 2018/3/23 - [view diff](https://github.com/zhandao/zero-rails_openapi/compare/v1.5.5...v1.5.6)
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- zero-rails_openapi (1.5.7)
4
+ zero-rails_openapi (1.5.8)
5
5
  activesupport (>= 3)
6
6
  colorize
7
7
  rails (>= 3)
@@ -9,54 +9,54 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- actioncable (5.1.5)
13
- actionpack (= 5.1.5)
12
+ actioncable (5.1.6)
13
+ actionpack (= 5.1.6)
14
14
  nio4r (~> 2.0)
15
15
  websocket-driver (~> 0.6.1)
16
- actionmailer (5.1.5)
17
- actionpack (= 5.1.5)
18
- actionview (= 5.1.5)
19
- activejob (= 5.1.5)
16
+ actionmailer (5.1.6)
17
+ actionpack (= 5.1.6)
18
+ actionview (= 5.1.6)
19
+ activejob (= 5.1.6)
20
20
  mail (~> 2.5, >= 2.5.4)
21
21
  rails-dom-testing (~> 2.0)
22
- actionpack (5.1.5)
23
- actionview (= 5.1.5)
24
- activesupport (= 5.1.5)
22
+ actionpack (5.1.6)
23
+ actionview (= 5.1.6)
24
+ activesupport (= 5.1.6)
25
25
  rack (~> 2.0)
26
26
  rack-test (>= 0.6.3)
27
27
  rails-dom-testing (~> 2.0)
28
28
  rails-html-sanitizer (~> 1.0, >= 1.0.2)
29
- actionview (5.1.5)
30
- activesupport (= 5.1.5)
29
+ actionview (5.1.6)
30
+ activesupport (= 5.1.6)
31
31
  builder (~> 3.1)
32
32
  erubi (~> 1.4)
33
33
  rails-dom-testing (~> 2.0)
34
34
  rails-html-sanitizer (~> 1.0, >= 1.0.3)
35
- activejob (5.1.5)
36
- activesupport (= 5.1.5)
35
+ activejob (5.1.6)
36
+ activesupport (= 5.1.6)
37
37
  globalid (>= 0.3.6)
38
- activemodel (5.1.5)
39
- activesupport (= 5.1.5)
40
- activerecord (5.1.5)
41
- activemodel (= 5.1.5)
42
- activesupport (= 5.1.5)
38
+ activemodel (5.1.6)
39
+ activesupport (= 5.1.6)
40
+ activerecord (5.1.6)
41
+ activemodel (= 5.1.6)
42
+ activesupport (= 5.1.6)
43
43
  arel (~> 8.0)
44
- activesupport (5.1.5)
44
+ activesupport (5.1.6)
45
45
  concurrent-ruby (~> 1.0, >= 1.0.2)
46
- i18n (~> 0.7)
46
+ i18n (>= 0.7, < 2)
47
47
  minitest (~> 5.1)
48
48
  tzinfo (~> 1.1)
49
49
  arel (8.0.0)
50
50
  builder (3.2.3)
51
51
  colorize (0.8.1)
52
52
  concurrent-ruby (1.0.5)
53
- crass (1.0.3)
53
+ crass (1.0.4)
54
54
  diff-lcs (1.3)
55
55
  docile (1.3.0)
56
56
  erubi (1.7.1)
57
57
  globalid (0.4.1)
58
58
  activesupport (>= 4.2.0)
59
- i18n (0.9.5)
59
+ i18n (1.0.0)
60
60
  concurrent-ruby (~> 1.0)
61
61
  json (2.1.0)
62
62
  loofah (2.2.2)
@@ -72,28 +72,28 @@ GEM
72
72
  nokogiri (1.8.2)
73
73
  mini_portile2 (~> 2.3.0)
74
74
  rack (2.0.4)
75
- rack-test (0.8.3)
75
+ rack-test (1.0.0)
76
76
  rack (>= 1.0, < 3)
77
- rails (5.1.5)
78
- actioncable (= 5.1.5)
79
- actionmailer (= 5.1.5)
80
- actionpack (= 5.1.5)
81
- actionview (= 5.1.5)
82
- activejob (= 5.1.5)
83
- activemodel (= 5.1.5)
84
- activerecord (= 5.1.5)
85
- activesupport (= 5.1.5)
77
+ rails (5.1.6)
78
+ actioncable (= 5.1.6)
79
+ actionmailer (= 5.1.6)
80
+ actionpack (= 5.1.6)
81
+ actionview (= 5.1.6)
82
+ activejob (= 5.1.6)
83
+ activemodel (= 5.1.6)
84
+ activerecord (= 5.1.6)
85
+ activesupport (= 5.1.6)
86
86
  bundler (>= 1.3.0)
87
- railties (= 5.1.5)
87
+ railties (= 5.1.6)
88
88
  sprockets-rails (>= 2.0.0)
89
89
  rails-dom-testing (2.0.3)
90
90
  activesupport (>= 4.2.0)
91
91
  nokogiri (>= 1.6)
92
92
  rails-html-sanitizer (1.0.4)
93
93
  loofah (~> 2.2, >= 2.2.2)
94
- railties (5.1.5)
95
- actionpack (= 5.1.5)
96
- activesupport (= 5.1.5)
94
+ railties (5.1.6)
95
+ actionpack (= 5.1.6)
96
+ activesupport (= 5.1.6)
97
97
  method_source
98
98
  rake (>= 0.8.7)
99
99
  thor (>= 0.18.1, < 2.0)
@@ -66,3 +66,4 @@ You can set the schema by following keys (all are optional), the words in parent
66
66
  Regexp or Time Format
67
67
  - **default (dft, default_value)**
68
68
  - **as** # TODO
69
+ - **example & examples** # TODO
@@ -7,14 +7,16 @@ module OpenApi
7
7
  class ExampleObj < Hash
8
8
  include Helpers
9
9
 
10
- attr_accessor :processed, :examples_hash, :keys_of_value
10
+ attr_accessor :processed, :examples_hash, :example_value, :keys_of_value
11
11
 
12
- def initialize(examples_hash, keys_of_value = nil)
13
- self.examples_hash = examples_hash
12
+ def initialize(exp, keys_of_value = nil, multiple: false)
13
+ multiple ? self.examples_hash = exp : self.example_value = exp
14
14
  self.keys_of_value = keys_of_value
15
15
  end
16
16
 
17
17
  def process
18
+ return self.processed = example_value if example_value
19
+
18
20
  self.processed =
19
21
  examples_hash.map do |(name, value)|
20
22
  value =
@@ -13,7 +13,7 @@ module OpenApi
13
13
  schema_type = hash.values_at(:type, :data).compact.first
14
14
  exp_by = schema_type.keys if exp_by == :all
15
15
 
16
- self.examples = ExampleObj.new(examples_hash, exp_by) if examples_hash.present?
16
+ self.examples = ExampleObj.new(examples_hash, exp_by, multiple: true) if examples_hash.present?
17
17
  self.media_type = media_type_mapping media_type
18
18
  self.schema = SchemaObj.new(schema_type, hash)
19
19
  end
@@ -91,9 +91,10 @@ module OpenApi
91
91
 
92
92
  def pattern_default_and_other
93
93
  {
94
- pattern: _pattern.is_a?(String) ? _pattern : _pattern&.inspect&.delete('/'),
95
- default: _default,
96
- examples: self[:examples].present? ? ExampleObj.new(self[:examples], self[:exp_by]).process : nil,
94
+ pattern: _pattern.is_a?(String) ? _pattern : _pattern&.inspect&.delete('/'),
95
+ default: _default,
96
+ example: _exp.present? ? ExampleObj.new(_exp).process : nil,
97
+ examples: _exps.present? ? ExampleObj.new(_exps, self[:exp_by], multiple: true).process : nil,
97
98
  as: _as, permit: _permit, not_permit: _npermit, req_if: _req_if, opt_if: _opt_if, blankable: _blank
98
99
  }
99
100
  end
@@ -104,18 +105,20 @@ module OpenApi
104
105
  _value: %i[ must_be value allowable_value ],
105
106
  _range: %i[ range number_range ],
106
107
  _length: %i[ length lth size ],
107
- _is: %i[ is_a is ], # NOT OAS Spec, see documentation/parameter.md
108
108
  _format: %i[ format fmt ],
109
109
  _pattern: %i[ pattern regexp pt reg ],
110
110
  _default: %i[ default dft default_value ],
111
111
  _desc: %i[ desc description d ],
112
112
  __desc: %i[ desc! description! d! ],
113
+ _exp: %i[ example ],
114
+ _exps: %i[ examples ],
115
+ _is: %i[ is_a is ], # NOT OAS Spec, see documentation/parameter.md
113
116
  _as: %i[ as to for map mapping ], # NOT OAS Spec, it's for zero-params_processor
114
- _permit: %i[ permit pmt ], # NOT OAS Spec, it's for zero-params_processor
115
- _npermit: %i[ npmt not_permit unpermit ], # NOT OAS Spec, it's for zero-params_processor
116
- _req_if: %i[ req_if req_when ], # NOT OAS Spec, it's for zero-params_processor
117
- _opt_if: %i[ opt_if opt_when ], # NOT OAS Spec, it's for zero-params_processor
118
- _blank: %i[ blank blankable ], # NOT OAS Spec, it's for zero-params_processor
117
+ _permit: %i[ permit pmt ], # ditto
118
+ _npermit: %i[ npmt not_permit unpermit ], # ditto
119
+ _req_if: %i[ req_if req_when ], # ditto
120
+ _opt_if: %i[ opt_if opt_when ], # ditto
121
+ _blank: %i[ blank blankable ], # ditto
119
122
  }.each do |key, aliases|
120
123
  define_method key do
121
124
  return self[key] unless self[key].nil?
data/lib/open_api/dsl.rb CHANGED
@@ -27,9 +27,11 @@ module OpenApi
27
27
  def components &block
28
28
  doc_tag if @doc_info.nil?
29
29
  structure = %i[ schemas responses parameters examples requestBodies securitySchemes ].map { |k| [k, { }] }.to_h
30
- current_doc = @doc_info[:components] = Components.new.merge!(structure)
30
+ current_doc = Components.new.merge!(structure)
31
31
  current_doc.instance_exec(&block)
32
32
  current_doc.process_objs
33
+
34
+ (@doc_info[:components] ||= { }).deep_merge!(current_doc)
33
35
  end
34
36
 
35
37
  def api action, summary = '', http: http_method = nil, skip: [ ], use: [ ], &block
@@ -37,7 +39,7 @@ module OpenApi
37
39
  # select the routing info (corresponding to the current method) from routing list.
38
40
  action_path = "#{@route_base ||= controller_path}##{action}"
39
41
  routes = ctrl_routes_list&.select { |api| api[:action_path].match?(/^#{action_path}$/) }
40
- return puts ' ZRO'.red + " Route mapping failed: #{@route_base}##{action}" if routes.blank?
42
+ return puts ' ZRO'.red + " Route mapping failed: #{action_path}" if routes.blank?
41
43
 
42
44
  api = Api.new(action_path, skip: Array(skip), use: Array(use))
43
45
  .merge! description: '', summary: summary, operationId: action, tags: [@doc_tag],
@@ -132,7 +132,7 @@ module OpenApi
132
132
 
133
133
  def param_examples exp_by = :all, examples_hash
134
134
  exp_by = self[:parameters].map(&:name) if exp_by == :all
135
- self[:examples] = ExampleObj.new(examples_hash, exp_by).process
135
+ self[:examples] = ExampleObj.new(examples_hash, exp_by, multiple: true).process
136
136
  end
137
137
 
138
138
  alias examples param_examples
@@ -15,7 +15,7 @@ module OpenApi
15
15
  arrow_enable :schema
16
16
 
17
17
  def example component_key, examples_hash
18
- self[:examples][component_key] = ExampleObj.new(examples_hash).process
18
+ self[:examples][component_key] = ExampleObj.new(examples_hash, multiple: true).process
19
19
  end
20
20
 
21
21
  arrow_enable :example
@@ -1,3 +1,3 @@
1
1
  module OpenApi
2
- VERSION = '1.5.7'
2
+ VERSION = '1.5.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zero-rails_openapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.7
4
+ version: 1.5.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - zhandao
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-06 00:00:00.000000000 Z
11
+ date: 2018-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  version: '0'
180
180
  requirements: []
181
181
  rubyforge_project:
182
- rubygems_version: 2.6.13
182
+ rubygems_version: 2.7.3
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Concise DSL for generating OpenAPI3 documentation.