rspec-api-docs 0.1.0 → 0.2.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.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.rubocop.yml +55 -0
  4. data/README.md +222 -4
  5. data/Rakefile +9 -2
  6. data/bin/generate_integration_docs +14 -0
  7. data/lib/rspec_api_docs.rb +2 -16
  8. data/lib/rspec_api_docs/after.rb +20 -3
  9. data/lib/rspec_api_docs/after/type_checker.rb +56 -0
  10. data/lib/rspec_api_docs/config.rb +27 -0
  11. data/lib/rspec_api_docs/dsl.rb +35 -10
  12. data/lib/rspec_api_docs/dsl/doc_proxy.rb +71 -0
  13. data/lib/rspec_api_docs/dsl/request_store.rb +21 -0
  14. data/lib/rspec_api_docs/formatter.rb +44 -6
  15. data/lib/rspec_api_docs/formatter/renderer/json_renderer.rb +35 -0
  16. data/lib/rspec_api_docs/formatter/renderer/json_renderer/example_serializer.rb +47 -0
  17. data/lib/rspec_api_docs/formatter/renderer/json_renderer/name.rb +18 -0
  18. data/lib/rspec_api_docs/formatter/renderer/json_renderer/resource_serializer.rb +31 -0
  19. data/lib/rspec_api_docs/formatter/renderer/raddocs_renderer.rb +56 -0
  20. data/lib/rspec_api_docs/formatter/renderer/raddocs_renderer/index_serializer.rb +57 -0
  21. data/lib/rspec_api_docs/formatter/renderer/raddocs_renderer/link.rb +11 -0
  22. data/lib/rspec_api_docs/formatter/renderer/raddocs_renderer/resource_serializer.rb +58 -0
  23. data/lib/rspec_api_docs/formatter/renderer/slate_renderer.rb +29 -0
  24. data/lib/rspec_api_docs/formatter/renderer/slate_renderer/slate_index.html.md.erb +45 -0
  25. data/lib/rspec_api_docs/formatter/resource.rb +25 -111
  26. data/lib/rspec_api_docs/formatter/resource/example.rb +125 -0
  27. data/lib/rspec_api_docs/formatter/resource/parameter.rb +39 -0
  28. data/lib/rspec_api_docs/formatter/resource/response_field.rb +39 -0
  29. data/lib/rspec_api_docs/version.rb +1 -1
  30. data/rspec-api-docs.gemspec +1 -0
  31. metadata +34 -5
  32. data/lib/rspec_api_docs/formatter/index_serializer.rb +0 -37
  33. data/lib/rspec_api_docs/formatter/renderers/json_renderer.rb +0 -34
  34. data/lib/rspec_api_docs/formatter/resource_serializer.rb +0 -21
@@ -0,0 +1,39 @@
1
+ module RspecApiDocs
2
+ class Resource
3
+ class Parameter
4
+ attr_reader :name, :parameter
5
+
6
+ def initialize(name, parameter)
7
+ @name = name
8
+ @parameter = parameter
9
+ end
10
+
11
+ # The scope of the parameter
12
+ #
13
+ # @return [String]
14
+ def scope
15
+ parameter[:scope].join
16
+ end
17
+
18
+ # If the parameter is required
19
+ #
20
+ # @return [String]
21
+ def required
22
+ !!parameter[:required]
23
+ end
24
+
25
+ # The description of the parameter
26
+ #
27
+ # @return [String]
28
+ def description
29
+ parameter[:description]
30
+ end
31
+
32
+ # @return [true, false]
33
+ def ==(other)
34
+ name == other.name &&
35
+ parameter == other.parameter
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ module RspecApiDocs
2
+ class Resource
3
+ class ResponseField
4
+ attr_reader :name, :field
5
+
6
+ def initialize(name, field)
7
+ @name = name
8
+ @field = field
9
+ end
10
+
11
+ # The scope of the response field
12
+ #
13
+ # @return [String]
14
+ def scope
15
+ field[:scope].join
16
+ end
17
+
18
+ # The type of the response field
19
+ #
20
+ # @return [String]
21
+ def type
22
+ field[:type]
23
+ end
24
+
25
+ # The description of the response field
26
+ #
27
+ # @return [String]
28
+ def description
29
+ field[:description]
30
+ end
31
+
32
+ # @return [true, false]
33
+ def ==(other)
34
+ name == other.name &&
35
+ field == other.field
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module RspecApiDocs
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -26,4 +26,5 @@ Gem::Specification.new do |spec|
26
26
  spec.add_development_dependency 'pry'
27
27
  spec.add_development_dependency 'rack-test'
28
28
  spec.add_development_dependency 'sinatra', '2.0.0.beta2'
29
+ spec.add_development_dependency 'rubocop'
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-api-docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Odin Dutton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-22 00:00:00.000000000 Z
11
+ date: 2016-12-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -108,33 +108,62 @@ dependencies:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
110
  version: 2.0.0.beta2
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description:
112
126
  email:
113
127
  - odindutton@gmail.com
114
128
  executables:
129
+ - generate_integration_docs
115
130
  - setup
116
131
  extensions: []
117
132
  extra_rdoc_files: []
118
133
  files:
119
134
  - ".gitignore"
120
135
  - ".rspec"
136
+ - ".rubocop.yml"
121
137
  - ".travis.yml"
122
138
  - CODE_OF_CONDUCT.md
123
139
  - Gemfile
124
140
  - LICENSE.txt
125
141
  - README.md
126
142
  - Rakefile
143
+ - bin/generate_integration_docs
127
144
  - bin/setup
128
145
  - lib/rspec_api_docs.rb
129
146
  - lib/rspec_api_docs/after.rb
147
+ - lib/rspec_api_docs/after/type_checker.rb
148
+ - lib/rspec_api_docs/config.rb
130
149
  - lib/rspec_api_docs/dsl.rb
131
150
  - lib/rspec_api_docs/dsl/doc_proxy.rb
132
151
  - lib/rspec_api_docs/dsl/request_store.rb
133
152
  - lib/rspec_api_docs/formatter.rb
134
- - lib/rspec_api_docs/formatter/index_serializer.rb
135
- - lib/rspec_api_docs/formatter/renderers/json_renderer.rb
153
+ - lib/rspec_api_docs/formatter/renderer/json_renderer.rb
154
+ - lib/rspec_api_docs/formatter/renderer/json_renderer/example_serializer.rb
155
+ - lib/rspec_api_docs/formatter/renderer/json_renderer/name.rb
156
+ - lib/rspec_api_docs/formatter/renderer/json_renderer/resource_serializer.rb
157
+ - lib/rspec_api_docs/formatter/renderer/raddocs_renderer.rb
158
+ - lib/rspec_api_docs/formatter/renderer/raddocs_renderer/index_serializer.rb
159
+ - lib/rspec_api_docs/formatter/renderer/raddocs_renderer/link.rb
160
+ - lib/rspec_api_docs/formatter/renderer/raddocs_renderer/resource_serializer.rb
161
+ - lib/rspec_api_docs/formatter/renderer/slate_renderer.rb
162
+ - lib/rspec_api_docs/formatter/renderer/slate_renderer/slate_index.html.md.erb
136
163
  - lib/rspec_api_docs/formatter/resource.rb
137
- - lib/rspec_api_docs/formatter/resource_serializer.rb
164
+ - lib/rspec_api_docs/formatter/resource/example.rb
165
+ - lib/rspec_api_docs/formatter/resource/parameter.rb
166
+ - lib/rspec_api_docs/formatter/resource/response_field.rb
138
167
  - lib/rspec_api_docs/version.rb
139
168
  - rspec-api-docs.gemspec
140
169
  homepage: https://github.com/twe4ked
@@ -1,37 +0,0 @@
1
- class IndexSerializer
2
- class ResourceSerializer
3
- attr_reader :resource
4
-
5
- def initialize(resource)
6
- @resource = resource
7
- end
8
-
9
- def to_h
10
- {
11
- description: resource.example_name,
12
- link: resource.link,
13
- groups: resource.groups,
14
- route: resource.path,
15
- method: resource.http_method.downcase,
16
- }
17
- end
18
- end
19
-
20
- attr_reader :resources
21
-
22
- def initialize(resources)
23
- @resources = resources.group_by(&:name)
24
- end
25
-
26
- def to_h
27
- {
28
- resources: resources.map do |name, examples|
29
- {
30
- name: name,
31
- explanation: nil,
32
- examples: examples.map { |resource| ResourceSerializer.new(resource).to_h },
33
- }
34
- end
35
- }
36
- end
37
- end
@@ -1,34 +0,0 @@
1
- require 'rspec_api_docs/formatter/index_serializer'
2
- require 'rspec_api_docs/formatter/resource_serializer'
3
-
4
- module RspecApiDocs
5
- class JSONRender
6
- attr_reader :resources
7
-
8
- def initialize(resources)
9
- @resources = resources
10
- end
11
-
12
- def render
13
- FileUtils.mkdir_p output_dir
14
-
15
- File.open(output_dir + 'index.json', 'w') do |f|
16
- f.write JSON.pretty_generate(IndexSerializer.new(resources).to_h) + "\n"
17
- end
18
-
19
- resources.each do |resource|
20
- FileUtils.mkdir_p output_dir + Pathname.new(resource.link).dirname
21
-
22
- File.open(output_dir + resource.link, 'w') do |f|
23
- f.write JSON.pretty_generate(ResourceSerializer.new(resource).to_h) + "\n"
24
- end
25
- end
26
- end
27
-
28
- private
29
-
30
- def output_dir
31
- Pathname.new RspecApiDocs.configuration.output_dir
32
- end
33
- end
34
- end
@@ -1,21 +0,0 @@
1
- class ResourceSerializer
2
- attr_reader :resource
3
-
4
- def initialize(resource)
5
- @resource = resource
6
- end
7
-
8
- def to_h
9
- {
10
- resource: resource.name,
11
- resource_explanation: nil,
12
- http_method: resource.http_method,
13
- route: resource.path,
14
- description: resource.example_name,
15
- explanation: resource.description,
16
- parameters: resource.parameters,
17
- response_fields: resource.response_fields,
18
- requests: resource.requests,
19
- }
20
- end
21
- end