nexmo-oas-renderer 0.5.1 → 0.5.2

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
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