nexmo-oas-renderer 0.5.1 → 0.5.2

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
  SHA256:
3
- metadata.gz: 57cfe1aefc0744e83e6882d343686cac3d2158b820e8463e95235d7f90da1de3
4
- data.tar.gz: 514e4c4cf32d7165d6ef3f46cafc036842f36c516e53456ba8ee61d1c355a1cf
3
+ metadata.gz: dd8d4b2e48a2f59827cedcc768e575bfd2c3cb017a956fda2f1229737c56ffe0
4
+ data.tar.gz: 40cd40d5fca9582ea435fb73046f147275f98d0c2e97f9c9d842afe27a5a4472
5
5
  SHA512:
6
- metadata.gz: a87895220bc084d7753ba7d3435eef080aead4acd96a7d9d128b67ca3a11a92cff1ccd9c38d139c5237ca9a18a1fb41db92ab9f078f380f28a60bbfc611cc77c
7
- data.tar.gz: cfb82652ef1437adda581c0e64ecce9a85df1519b65a002356483cc5ab2655b597f98c38c7f6020ed8f92e1d9b54ce01510e1b4991580812954c4b5502a27427
6
+ metadata.gz: 28e38f0b3ee339407c713b27479973be7ddd5e298a4a71a4910ca5e51ffee8d75ca579903941662cf2d7114543be2f9f51016e67f3028ae14c59bbadfd0a83d2
7
+ data.tar.gz: d9bac1035bda4b54418617e29c626b2efa39410cc772eab34faa5a719abee6864d2ca753af0225fd01df4925606e30c612c763a90d17bb56af5be7b00941c2b0
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in nexmo-oas-renderer.gemspec
4
4
  gemspec
5
+
6
+ gem 'rails', '< 6.0.0'
@@ -1,13 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nexmo-oas-renderer (0.5.1)
4
+ nexmo-oas-renderer (0.5.2)
5
5
  activemodel (~> 5.2)
6
6
  activesupport (~> 5.2)
7
7
  banzai (~> 0.1.2)
8
8
  dotenv (~> 2.7)
9
9
  neatjson (~> 0.8)
10
- oas_parser (= 0.21.1)
10
+ oas_parser (= 0.22.1)
11
11
  octicons_helper (~> 8.2)
12
12
  redcarpet (= 3.4.0)
13
13
  rouge (= 2.0.7)
@@ -97,7 +97,7 @@ GEM
97
97
  nio4r (2.5.1)
98
98
  nokogiri (1.10.4)
99
99
  mini_portile2 (~> 2.4.0)
100
- oas_parser (0.21.1)
100
+ oas_parser (0.22.1)
101
101
  activesupport (>= 4.0.0)
102
102
  addressable (~> 2.3)
103
103
  builder (~> 3.2.3)
@@ -193,6 +193,7 @@ PLATFORMS
193
193
  DEPENDENCIES
194
194
  bundler (~> 2.0)
195
195
  nexmo-oas-renderer!
196
+ rails (< 6.0.0)
196
197
  rake (~> 10.0)
197
198
  rspec (~> 3.8)
198
199
 
@@ -6,11 +6,12 @@ module Nexmo
6
6
  class Panel
7
7
  attr_reader :index
8
8
 
9
- def initialize(schema:, index:, format:, content:)
9
+ def initialize(schema:, index:, format:, content:, endpoint:)
10
10
  @schema = schema
11
11
  @index = index
12
12
  @format = format
13
13
  @content = content
14
+ @endpoint = endpoint
14
15
  end
15
16
 
16
17
  def css_classes
@@ -29,6 +30,7 @@ module Nexmo
29
30
  schema: @schema,
30
31
  index: @index,
31
32
  format: @format,
33
+ endpoint: @endpoint
32
34
  }]
33
35
  end
34
36
  end
@@ -8,10 +8,11 @@ module Nexmo
8
8
  class ResponseTabs
9
9
  attr_reader :format
10
10
 
11
- def initialize(format, response, content)
11
+ def initialize(format, response, content, endpoint)
12
12
  @format = format
13
13
  @response = response
14
14
  @content = content
15
+ @endpoint = endpoint
15
16
  end
16
17
 
17
18
  def tab_links
@@ -29,7 +30,8 @@ module Nexmo
29
30
  schema: schema,
30
31
  index: index,
31
32
  format: @format,
32
- content: @content
33
+ content: @content,
34
+ endpoint: @endpoint
33
35
  )
34
36
  end
35
37
  end
@@ -1,7 +1,7 @@
1
1
  module Nexmo
2
2
  module OAS
3
3
  module Renderer
4
- VERSION = "0.5.1"
4
+ VERSION = "0.5.2"
5
5
  end
6
6
  end
7
7
  end
@@ -114,7 +114,7 @@
114
114
  <% response.formats.each_with_index do |format, index| %>
115
115
  <div class="js-format" data-format="<%= format %>">
116
116
  <% if response.exhibits_one_of_multiple_schemas?(format) %>
117
- <%= erb :'open_api/_response_tabs', locals: { format: format, response: response, content: :responses } %>
117
+ <%= erb :'open_api/_response_tabs', locals: { format: format, endpoint: endpoint, response: response, content: :responses } %>
118
118
  <% else %>
119
119
  <% schema = response.schema(format) %>
120
120
  <%= Nexmo::OAS::Renderer::ResponseParserDecorator.new(schema).html(format, xml_options: schema['xml']) %>
@@ -14,9 +14,13 @@
14
14
 
15
15
  <% if schema['properties'] %>
16
16
  <% schema['properties'].each do |key, value| %>
17
- <% next if key == '_links' %>
18
- <% next if value['x-skip-response-description'] %>
19
- <tr<% if value['properties'] %> class=" Vlt-table__row--noline" <% end %>>
17
+ <%
18
+ next if key == '_links'
19
+ next if value['x-skip-response-description']
20
+ parent = "#{endpoint.method}_#{endpoint.path.path.gsub("/", "_")[1..-1]}" unless parent
21
+ responseFieldId = parent + "_" + key
22
+ %>
23
+ <tr id="<%= responseFieldId %>" <% if value['properties'] %> class=" Vlt-table__row--noline" <% end %>>
20
24
  <td>
21
25
  <b><%= key %></b>
22
26
  <% if value['items'] %>
@@ -37,29 +41,87 @@
37
41
  </small>
38
42
  <% end %>
39
43
 
44
+
45
+
46
+
47
+
40
48
  <% if value['items'] # If this is an array, we need to show the structure of the children %>
41
- <% value['properties'] = value['items']['properties'] %>
42
- <% end %>
43
- <% if value['properties'] %>
49
+
50
+ <% if value['items']['oneOf'] || value['items']['anyOf'] # If it's a oneOf/anyOf, we need tabs! %>
51
+ <%
52
+
53
+ if value['items']['oneOf']
54
+ qualifier = 'one'
55
+ key = 'oneOf'
56
+ else
57
+ qualifier = 'any'
58
+ key = 'anyOf'
59
+ end
60
+
61
+ schemas = value['items'][key].map do |item|
62
+ if item['allOf']
63
+ item = item.deep_merge(item['allOf'].reduce { |a,b| a.deep_merge(b) })
64
+ item.delete('allOf')
65
+ end
66
+ item
67
+ end
68
+ %>
69
+ <% else %>
70
+ <% value['properties'] = value['items']['properties'] %>
71
+ <% schemas = [value] %>
72
+ <% end %>
73
+
74
+ <% if schemas %>
75
+ <% needs_tabs = schemas.size > 1 %>
44
76
  </td>
45
- </tr>
46
- <tr class="Vlt-table__row--nohighlight">
47
- <td colspan="2">
48
- <div class="Vlt-table Vlt-table--data Vlt-table--bordered">
49
- <table>
50
- <thead>
51
- <tr>
52
- <th>Field</th>
53
- <th>Description</th>
54
- </tr>
55
- </thead>
56
- <tbody>
57
- <%= erb :'open_api/_response_description_parameters', locals: { schema: value } %>
58
- </tbody>
59
- </table>
60
- </div>
77
+ </tr>
78
+
79
+ <tr class="Vlt-table__row--nohighlight">
80
+ <td colspan="2">
81
+
82
+ <% if needs_tabs %>
83
+ <div class="Vlt-callout Vlt-callout--shoutout">
84
+ <i></i>
85
+ <div class="Vlt-callout__content">
86
+ This array contains <strong><%= qualifier %></strong> of the following objects:
87
+ </div>
88
+ </div>
89
+ <div class="Vlt-tabs js-format">
90
+ <div class="Vlt-tabs__header" role="tablist" aria-label="Responses">
91
+ <% schemas.each_with_index do |schema, index| %>
92
+ <div class="Vlt-tabs__link <%= index == 0 ? 'Vlt-tabs__link_active' : '' %>">
93
+ <%= schema['description'] %>
94
+ </div>
95
+ <% end %>
96
+ </div>
97
+ <div class="Vlt-tabs__content">
98
+ <% end %>
99
+
100
+ <% schemas.each_with_index do |value, index| %>
101
+ <div class="Vlt-tabs__panel <%= index == 0 ? 'Vlt-tabs__panel_active' : '' %>">
102
+ <div class="Vlt-table Vlt-table--data Vlt-table--bordered">
103
+ <table>
104
+ <thead>
105
+ <tr>
106
+ <th>Field</th>
107
+ <th>Description</th>
108
+ </tr>
109
+ </thead>
110
+ <tbody>
111
+ <%= erb :'open_api/_response_description_parameters', locals: { endpoint: endpoint, schema: value, parent: responseFieldId } %>
112
+ </tbody>
113
+ </table>
114
+ </div>
115
+ </div>
116
+ <% end %>
117
+
118
+ <% if needs_tabs %>
119
+ </div>
120
+ </div>
121
+ <% end %>
122
+ <% end %>
61
123
  <% end %>
62
- </td>
63
- </tr>
124
+ </td>
125
+ </tr>
64
126
  <% end %>
65
127
  <% end %>
@@ -6,19 +6,19 @@
6
6
  <p class="collapsible">
7
7
  <a class="Vlt-js-accordion__trigger Nxd-accordion-button" data-accordion="acc<%= id %>">
8
8
  <span class="response-description-toggle Vlt-btn Vlt-btn--tertiary Vlt-btn--block">
9
- <%= auto_expand_responses ? 'Hide' : 'View' %> response field descriptions
9
+ <%= @specification.auto_expand_responses ? 'Hide' : 'View' %> response field descriptions
10
10
  </span>
11
11
  </a>
12
12
  </p>
13
13
 
14
- <div id="acc<%= id %>" class="Vlt-js-accordion__content <%= auto_expand_responses ? 'Vlt-js-accordion__content_open' : '' %>">
14
+ <div id="acc<%= id %>" class="Vlt-js-accordion__content <%= @specification.auto_expand_responses ? 'Vlt-js-accordion__content_open' : '' %>">
15
15
  <h4>Response Fields</h4>
16
16
  <% response.formats.each_with_index do |format, index| %>
17
17
  <% if response.exhibits_one_of_multiple_schemas?(format) %>
18
- <%= erb :'open_api/_response_tabs', locals: { format: format, response: response, content: :descriptions } %>
18
+ <%= erb :'open_api/_response_tabs', locals: { endpoint: endpoint, format: format, response: response, content: :descriptions } %>
19
19
  <% else %>
20
20
  <% schema = response.schema(format) %>
21
- <%= erb :'open_api/_response_fields', locals: { schema: schema, format: format, index: nil } %>
21
+ <%= erb :'open_api/_response_fields', locals: { endpoint: endpoint, schema: schema, format: format, index: nil } %>
22
22
  <% end %>
23
23
  <% end %>
24
24
  </div>
@@ -11,7 +11,7 @@
11
11
  </tr>
12
12
  </thead>
13
13
  <tbody>
14
- <%= erb :'open_api/_response_description_parameters', locals: { schema: schema } %>
14
+ <%= erb :'open_api/_response_description_parameters', locals: { response: response, endpoint: endpoint, schema: schema } %>
15
15
  </tbody>
16
16
  </table>
17
17
  </div>
@@ -1,4 +1,4 @@
1
- <% tabs = Nexmo::OAS::Renderer::Presenters::ResponseTabs.new(format, response, content) %>
1
+ <% tabs = Nexmo::OAS::Renderer::Presenters::ResponseTabs.new(format, response, content, endpoint) %>
2
2
 
3
3
  <div class='Vlt-tabs js-format' data-format='<%= tabs.format %>'>
4
4
  <div class='Vlt-tabs__header' role='tablist' aria-label='Responses'>
@@ -34,7 +34,7 @@ Gem::Specification.new do |spec|
34
34
  spec.add_runtime_dependency 'sinatra', '~> 2.0'
35
35
  spec.add_runtime_dependency 'shotgun', '~> 0.9'
36
36
  spec.add_runtime_dependency 'rouge', '2.0.7'
37
- spec.add_runtime_dependency 'oas_parser', '0.21.1'
37
+ spec.add_runtime_dependency 'oas_parser', '0.22.1'
38
38
  spec.add_runtime_dependency 'neatjson', '~> 0.8'
39
39
  spec.add_runtime_dependency 'activesupport', '~> 5.2'
40
40
  spec.add_runtime_dependency 'banzai', '~> 0.1.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nexmo-oas-renderer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabian Rodriguez
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-09-09 00:00:00.000000000 Z
11
+ date: 2019-09-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 0.21.1
61
+ version: 0.22.1
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 0.21.1
68
+ version: 0.22.1
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: neatjson
71
71
  requirement: !ruby/object:Gem::Requirement