dox 1.0.0.alpha → 1.0.0
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/.gitignore +2 -0
- data/.rubocop.yml +14 -0
- data/.ruby-version +1 -0
- data/.travis.yml +23 -2
- data/CHANGES.md +51 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +1 -1
- data/README.md +236 -48
- data/dox.gemspec +18 -16
- data/exe/dox +3 -0
- data/infinum.png +0 -0
- data/lib/dox.rb +12 -5
- data/lib/dox/config.rb +3 -5
- data/lib/dox/dsl/attr_proxy.rb +1 -1
- data/lib/dox/dsl/documentation.rb +1 -1
- data/lib/dox/entities/action.rb +31 -5
- data/lib/dox/entities/example.rb +45 -12
- data/lib/dox/formatter.rb +66 -42
- data/lib/dox/printers/action_printer.rb +24 -8
- data/lib/dox/printers/base_printer.rb +10 -7
- data/lib/dox/printers/document_printer.rb +0 -2
- data/lib/dox/printers/example_printer.rb +78 -9
- data/lib/dox/printers/resource_group_printer.rb +12 -3
- data/lib/dox/printers/resource_printer.rb +12 -3
- data/lib/dox/util/http.rb +11 -0
- data/lib/dox/version.rb +1 -1
- metadata +42 -5
@@ -1,7 +1,6 @@
|
|
1
1
|
module Dox
|
2
2
|
module Printers
|
3
3
|
class BasePrinter
|
4
|
-
|
5
4
|
def initialize(output)
|
6
5
|
@output = output
|
7
6
|
end
|
@@ -20,16 +19,20 @@ module Dox
|
|
20
19
|
return if desc.blank?
|
21
20
|
|
22
21
|
if desc.to_s =~ /.*\.md$/
|
23
|
-
if fullpath
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
22
|
+
path = if fullpath
|
23
|
+
desc
|
24
|
+
else
|
25
|
+
descriptions_folder_path.join(desc).to_s
|
26
|
+
end
|
27
|
+
content(path)
|
29
28
|
else
|
30
29
|
desc
|
31
30
|
end
|
32
31
|
end
|
32
|
+
|
33
|
+
def content(path)
|
34
|
+
File.read(path)
|
35
|
+
end
|
33
36
|
end
|
34
37
|
end
|
35
38
|
end
|
@@ -1,22 +1,85 @@
|
|
1
1
|
module Dox
|
2
2
|
module Printers
|
3
3
|
class ExamplePrinter < BasePrinter
|
4
|
-
|
5
4
|
def print(example)
|
6
|
-
|
5
|
+
self.example = example
|
6
|
+
print_example_request
|
7
|
+
print_example_response
|
8
|
+
end
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
10
|
+
private
|
11
|
+
|
12
|
+
attr_accessor :example
|
11
13
|
|
12
|
-
|
14
|
+
def print_example_request
|
15
|
+
@output.puts example_request_title
|
16
|
+
@output.puts example_request_headers
|
17
|
+
return unless example.request_parameters.present?
|
13
18
|
|
14
|
-
|
15
|
-
|
19
|
+
@output.puts example_request_body
|
20
|
+
end
|
21
|
+
|
22
|
+
def print_example_response
|
23
|
+
@output.puts example_response_title
|
24
|
+
|
25
|
+
if example.response_headers.present?
|
26
|
+
@output.puts example_response_headers
|
16
27
|
end
|
28
|
+
|
29
|
+
return unless example.response_body.present?
|
30
|
+
@output.puts example_response_body
|
17
31
|
end
|
18
32
|
|
19
|
-
|
33
|
+
def example_request_title
|
34
|
+
<<-HEREDOC
|
35
|
+
|
36
|
+
+ Request #{example.request_identifier}
|
37
|
+
**#{example.request_method.upcase}** `#{CGI.unescape(example.request_fullpath)}`
|
38
|
+
HEREDOC
|
39
|
+
end
|
40
|
+
|
41
|
+
def example_request_headers
|
42
|
+
<<-HEREDOC
|
43
|
+
|
44
|
+
+ Headers
|
45
|
+
|
46
|
+
#{indent_lines(12, print_headers(example.request_headers))}
|
47
|
+
HEREDOC
|
48
|
+
end
|
49
|
+
|
50
|
+
def example_request_body
|
51
|
+
<<-HEREDOC
|
52
|
+
|
53
|
+
+ Body
|
54
|
+
|
55
|
+
#{indent_lines(12, pretty_json(example.request_parameters))}
|
56
|
+
HEREDOC
|
57
|
+
end
|
58
|
+
|
59
|
+
def example_response_title
|
60
|
+
<<-HEREDOC
|
61
|
+
|
62
|
+
+ Response #{example.response_status}
|
63
|
+
HEREDOC
|
64
|
+
end
|
65
|
+
|
66
|
+
def example_response_headers
|
67
|
+
<<-HEREDOC
|
68
|
+
|
69
|
+
+ Headers
|
70
|
+
|
71
|
+
#{indent_lines(12, print_headers(example.response_headers))}
|
72
|
+
HEREDOC
|
73
|
+
end
|
74
|
+
|
75
|
+
def example_response_body
|
76
|
+
<<-HEREDOC
|
77
|
+
|
78
|
+
+ Body
|
79
|
+
|
80
|
+
#{indent_lines(12, pretty_json(safe_json_parse(example.response_body)))}
|
81
|
+
HEREDOC
|
82
|
+
end
|
20
83
|
|
21
84
|
def safe_json_parse(json_string)
|
22
85
|
json_string.length >= 2 ? JSON.parse(json_string) : nil
|
@@ -30,6 +93,12 @@ module Dox
|
|
30
93
|
end
|
31
94
|
end
|
32
95
|
|
96
|
+
def print_headers(headers)
|
97
|
+
headers.map do |key, value|
|
98
|
+
"#{key}: #{value}"
|
99
|
+
end.join("\n")
|
100
|
+
end
|
101
|
+
|
33
102
|
def indent_lines(number_of_spaces, string)
|
34
103
|
string
|
35
104
|
.split("\n")
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Dox
|
2
2
|
module Printers
|
3
3
|
class ResourceGroupPrinter < BasePrinter
|
4
|
-
|
5
4
|
def print(resource_group)
|
6
|
-
|
5
|
+
self.resource_group = resource_group
|
6
|
+
@output.puts resource_group_title
|
7
7
|
|
8
8
|
resource_group.resources.each do |_, resource|
|
9
9
|
resource_printer.print(resource)
|
@@ -12,10 +12,19 @@ module Dox
|
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
|
+
attr_accessor :resource_group
|
16
|
+
|
17
|
+
def resource_group_title
|
18
|
+
<<-HEREDOC
|
19
|
+
|
20
|
+
# Group #{resource_group.name}
|
21
|
+
#{print_desc(resource_group.desc)}
|
22
|
+
HEREDOC
|
23
|
+
end
|
24
|
+
|
15
25
|
def resource_printer
|
16
26
|
@resource_printer ||= ResourcePrinter.new(@output)
|
17
27
|
end
|
18
|
-
|
19
28
|
end
|
20
29
|
end
|
21
30
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Dox
|
2
2
|
module Printers
|
3
3
|
class ResourcePrinter < BasePrinter
|
4
|
-
|
5
4
|
def print(resource)
|
6
|
-
|
5
|
+
self.resource = resource
|
6
|
+
@output.puts resource_title
|
7
7
|
|
8
8
|
resource.actions.each do |_, action|
|
9
9
|
action_printer.print(action)
|
@@ -12,10 +12,19 @@ module Dox
|
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
|
+
attr_accessor :resource
|
16
|
+
|
17
|
+
def resource_title
|
18
|
+
<<-HEREDOC
|
19
|
+
|
20
|
+
## #{resource.name} [#{resource.endpoint}]
|
21
|
+
#{print_desc(resource.desc)}
|
22
|
+
HEREDOC
|
23
|
+
end
|
24
|
+
|
15
25
|
def action_printer
|
16
26
|
@action_printer ||= ActionPrinter.new(@output)
|
17
27
|
end
|
18
|
-
|
19
28
|
end
|
20
29
|
end
|
21
30
|
end
|
data/lib/dox/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dox
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Melita Kokot
|
8
|
+
- Vedran Hrnčić
|
8
9
|
autorequire:
|
9
10
|
bindir: exe
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2017-05-06 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -66,6 +67,34 @@ dependencies:
|
|
66
67
|
- - ">="
|
67
68
|
- !ruby/object:Gem::Version
|
68
69
|
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: simplecov
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: codeclimate-test-reporter
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
69
98
|
- !ruby/object:Gem::Dependency
|
70
99
|
name: rspec-core
|
71
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -97,13 +126,18 @@ dependencies:
|
|
97
126
|
description:
|
98
127
|
email:
|
99
128
|
- melita.kokot@gmail.com
|
100
|
-
|
129
|
+
- vrabac266@gmail.com
|
130
|
+
executables:
|
131
|
+
- dox
|
101
132
|
extensions: []
|
102
133
|
extra_rdoc_files: []
|
103
134
|
files:
|
104
135
|
- ".gitignore"
|
105
136
|
- ".rspec"
|
137
|
+
- ".rubocop.yml"
|
138
|
+
- ".ruby-version"
|
106
139
|
- ".travis.yml"
|
140
|
+
- CHANGES.md
|
107
141
|
- CODE_OF_CONDUCT.md
|
108
142
|
- Gemfile
|
109
143
|
- LICENSE.txt
|
@@ -112,6 +146,8 @@ files:
|
|
112
146
|
- bin/console
|
113
147
|
- bin/setup
|
114
148
|
- dox.gemspec
|
149
|
+
- exe/dox
|
150
|
+
- infinum.png
|
115
151
|
- lib/dox.rb
|
116
152
|
- lib/dox/config.rb
|
117
153
|
- lib/dox/dsl/action.rb
|
@@ -136,6 +172,7 @@ files:
|
|
136
172
|
- lib/dox/printers/example_printer.rb
|
137
173
|
- lib/dox/printers/resource_group_printer.rb
|
138
174
|
- lib/dox/printers/resource_printer.rb
|
175
|
+
- lib/dox/util/http.rb
|
139
176
|
- lib/dox/version.rb
|
140
177
|
homepage: https://github.com/infinum/dox
|
141
178
|
licenses:
|
@@ -153,9 +190,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
190
|
version: '0'
|
154
191
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
192
|
requirements:
|
156
|
-
- - "
|
193
|
+
- - ">="
|
157
194
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
195
|
+
version: '0'
|
159
196
|
requirements: []
|
160
197
|
rubyforge_project:
|
161
198
|
rubygems_version: 2.5.1
|