swagger_docs_generator 0.3.5 → 0.3.6.pre.34
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/lib/generators/swagger_docs_generator/environment_generator.rb +5 -5
- data/lib/generators/swagger_docs_generator/initializer_generator.rb +11 -11
- data/lib/swagger_docs_generator/extractor.rb +15 -4
- data/lib/swagger_docs_generator/info.rb +1 -1
- data/lib/swagger_docs_generator/metadata/metadata.rb +2 -2
- data/lib/swagger_docs_generator/parser/action.rb +48 -10
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b0d5baad818850dbd3ff75f23ffb8560e5063521
|
4
|
+
data.tar.gz: 2832ad4e8d604d6517ae8983df8d07a3baf8e8e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd0c15b13abb397a8437fdef01f55448c8b9cde9689faa7e34b26709d12b1c08ec5a1c5f2f97d8f8deae141808131f234739eb656743a713e7ab17ea532fcefa
|
7
|
+
data.tar.gz: 16e02dfd9f2431c26d7d4c7788a80d725b9aa125624c9ad036b72da3d840b2965bc4e8029bbaea9d6911e533a604a687fd773f8a0724c7ad70e736b03e910229
|
@@ -7,12 +7,12 @@ module SwaggerDocsGenerator
|
|
7
7
|
class EnvironmentGenerator < Rails::Generators::Base
|
8
8
|
desc 'Generate a Environment `doc` for Swagger Docs Generator'
|
9
9
|
ENVIRONMENT = <<-INIT
|
10
|
-
# frozen_string_literal: true
|
10
|
+
# frozen_string_literal: true
|
11
11
|
|
12
|
-
Rails.application.configure do
|
13
|
-
|
14
|
-
|
15
|
-
end
|
12
|
+
Rails.application.configure do
|
13
|
+
# Do not eader load code on boot.
|
14
|
+
config.eager_load = false
|
15
|
+
end
|
16
16
|
INIT
|
17
17
|
|
18
18
|
# Create a new environment
|
@@ -7,20 +7,20 @@ module SwaggerDocsGenerator
|
|
7
7
|
class InitializerGenerator < Rails::Generators::Base
|
8
8
|
desc 'Generate a initializer for Swagger Docs Generator'
|
9
9
|
INITIALIZER = <<-INIT
|
10
|
-
# frozen_string_literal: true
|
10
|
+
# frozen_string_literal: true
|
11
11
|
|
12
|
-
if Rails.env.doc?
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
if Rails.env.doc?
|
13
|
+
SwaggerDocsGenerator.configure do |config|
|
14
|
+
config.swagger = '2.2.4' # Swagger version used
|
15
|
+
config.base_path = '/' # Base to API
|
16
|
+
config.host = 'localhost:3000' # Host api
|
17
|
+
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
SwaggerDocsGenerator.configure_info do |info|
|
20
|
+
info.title = 'API example.com' # Title to API
|
21
|
+
info.version = 'v1' # Version to API
|
22
|
+
end
|
22
23
|
end
|
23
|
-
end
|
24
24
|
INIT
|
25
25
|
|
26
26
|
# Create initializer
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
# :reek:NestedIterators
|
4
|
+
# :reek:TooManyStatements
|
5
|
+
# :reek:UtilityFunction
|
4
6
|
|
5
7
|
module SwaggerDocsGenerator
|
6
8
|
# # Extractor routes info
|
@@ -22,12 +24,14 @@ module SwaggerDocsGenerator
|
|
22
24
|
|
23
25
|
# Extract path to routes and change format to parameter path
|
24
26
|
def path
|
27
|
+
temporary = []
|
28
|
+
actual_route = nil
|
25
29
|
router do |route|
|
26
|
-
route
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
+
actual_route = extract_and_format_route(route)
|
31
|
+
temporary.push(actual_route) unless temporary.include?(actual_route)
|
32
|
+
actual_route
|
30
33
|
end
|
34
|
+
temporary
|
31
35
|
end
|
32
36
|
|
33
37
|
private
|
@@ -52,5 +56,12 @@ module SwaggerDocsGenerator
|
|
52
56
|
end
|
53
57
|
data.downcase
|
54
58
|
end
|
59
|
+
|
60
|
+
def extract_and_format_route(route)
|
61
|
+
route.path.spec.to_s.gsub('(.:format)',
|
62
|
+
'.json').gsub(/:[a-z1-9_A-Z]*/) do |word|
|
63
|
+
"{#{word.delete(':')}}"
|
64
|
+
end
|
65
|
+
end
|
55
66
|
end
|
56
67
|
end
|
@@ -5,8 +5,8 @@ module SwaggerDocsGenerator
|
|
5
5
|
#
|
6
6
|
# Metadata generated in swagger json file
|
7
7
|
class Metadata
|
8
|
-
ACCEPT = %i
|
9
|
-
swagger
|
8
|
+
ACCEPT = %i[title version contact description host schemes base_path
|
9
|
+
swagger].freeze
|
10
10
|
|
11
11
|
def initialize
|
12
12
|
@config = nil
|
@@ -6,9 +6,15 @@ require 'swagger_docs_generator/parser/actions/actions'
|
|
6
6
|
# :reek:InstanceVariableAssumption
|
7
7
|
# :reek:TooManyInstanceVariables
|
8
8
|
# :reek:TooManyStatements
|
9
|
+
# :reek:DuplicateMethodCall
|
10
|
+
# :reek:FeatureEnvy
|
11
|
+
# :reek:TooManyMethods
|
12
|
+
# :reek:LongParameterList
|
9
13
|
|
10
14
|
# rubocop:disable Metrics/AbcSize
|
11
15
|
# rubocop:disable Metrics/CyclomaticComplexity
|
16
|
+
# rubocop:disable Style/MultilineIfModifier
|
17
|
+
# rubocop:disable Metrics/ClassLength
|
12
18
|
module SwaggerDocsGenerator
|
13
19
|
# # Parse action in controller classe to Rails application. It's adding
|
14
20
|
# paths to swagger docs file.
|
@@ -36,26 +42,52 @@ module SwaggerDocsGenerator
|
|
36
42
|
old_route = json['paths']
|
37
43
|
|
38
44
|
keys_new = hash.keys[0]
|
39
|
-
|
45
|
+
paths = hash.keys.split.first
|
40
46
|
|
47
|
+
test_tags(paths, hash)
|
48
|
+
merge_hashes(old_route, keys_new.to_s, paths, hash)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_tags(paths, hash)
|
52
|
+
paths.each do |path|
|
53
|
+
tag = extract_tag(path)
|
54
|
+
next unless path.downcase.include?(tag.downcase) &&
|
55
|
+
!hash[path][@verb][:tags].include?(tag) &&
|
56
|
+
!tag.include?('.json')
|
57
|
+
add_tag(hash, path, tag)
|
58
|
+
end if paths.count <= 2
|
59
|
+
end
|
60
|
+
|
61
|
+
def add_tag(hash, path, tag)
|
62
|
+
hash[path][@verb][:tags].push(tag)
|
63
|
+
hash[path]['patch'][:tags].push(tag) if @verb.eql?('put')
|
64
|
+
end
|
65
|
+
|
66
|
+
def merge_hashes(old_route, index, paths, hash)
|
41
67
|
if !old_route.blank? && old_route.keys.include?(index)
|
42
|
-
|
68
|
+
paths.each do |path|
|
69
|
+
old_route[path].merge!(hash[path])
|
70
|
+
end
|
43
71
|
else
|
44
72
|
old_route.merge!(hash)
|
45
73
|
end
|
46
74
|
end
|
47
75
|
|
48
76
|
def construct_routes
|
77
|
+
yop = {}
|
49
78
|
extract = Extractor.new(controller, @action)
|
50
79
|
@verb = extract.verb
|
51
80
|
@route = extract.path
|
52
|
-
@
|
81
|
+
@route.each do |rte|
|
82
|
+
yop.merge!(@verb.eql?('put') ? route_update(rte) : route(rte))
|
83
|
+
end
|
84
|
+
yop
|
53
85
|
end
|
54
86
|
|
55
87
|
def construct_path
|
56
88
|
element = {}
|
57
|
-
summary_text = @summary.present? ? @summary : @action.to_s
|
58
|
-
element.merge!(summary: summary_text)
|
89
|
+
summary_text = @summary.present? ? @summary : @action.to_s
|
90
|
+
element.merge!(summary: summary_text.humanize)
|
59
91
|
element.merge!(description: @description) if @description.present?
|
60
92
|
element.merge!(parameters: @parameter) if @parameter.present?
|
61
93
|
element.merge!(consumes: @consume) if @consume.present?
|
@@ -65,16 +97,20 @@ module SwaggerDocsGenerator
|
|
65
97
|
element.merge!(tags: write_tag)
|
66
98
|
end
|
67
99
|
|
68
|
-
def route
|
69
|
-
{
|
100
|
+
def route(rte)
|
101
|
+
{ rte => { @verb => construct_path } }
|
70
102
|
end
|
71
103
|
|
72
|
-
def route_update
|
73
|
-
{
|
104
|
+
def route_update(rte)
|
105
|
+
{ rte => { @verb => construct_path }.merge!('patch' => construct_path) }
|
74
106
|
end
|
75
107
|
|
76
108
|
def write_tag
|
77
|
-
[@tag_name]
|
109
|
+
[@tag_name.humanize]
|
110
|
+
end
|
111
|
+
|
112
|
+
def extract_tag(route)
|
113
|
+
route.split('/').reject(&:empty?).first.humanize
|
78
114
|
end
|
79
115
|
|
80
116
|
def summary(text)
|
@@ -110,3 +146,5 @@ module SwaggerDocsGenerator
|
|
110
146
|
end
|
111
147
|
# rubocop:enable Metrics/AbcSize
|
112
148
|
# rubocop:enable Metrics/CyclomaticComplexity
|
149
|
+
# rubocop:enable Style/MultilineIfModifier
|
150
|
+
# rubocop:enable Metrics/ClassLength
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swagger_docs_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6.pre.34
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- VAILLANT Jeremy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0.
|
75
|
+
version: 0.48.1
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0.
|
82
|
+
version: 0.48.1
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: yard
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -325,9 +325,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
325
325
|
version: '0'
|
326
326
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
327
327
|
requirements:
|
328
|
-
- - "
|
328
|
+
- - ">"
|
329
329
|
- !ruby/object:Gem::Version
|
330
|
-
version:
|
330
|
+
version: 1.3.1
|
331
331
|
requirements: []
|
332
332
|
rubyforge_project:
|
333
333
|
rubygems_version: 2.4.5
|