rspec-api-docs 0.3.0 → 0.4.0

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
  SHA1:
3
- metadata.gz: b6e7c92209d8f94e43eb1a790f207e172304477e
4
- data.tar.gz: 4cd8916ae2205054cf17803fc987b098261a09ef
3
+ metadata.gz: 2e9892448884eff6e7ab9f869c5358595e25af95
4
+ data.tar.gz: 11968fb9bb7a942b6859c8f13029ab37765c936c
5
5
  SHA512:
6
- metadata.gz: 99b1b8b472fcb9ea6c0e459e69ab99e27ab9d69c5117a2eaf90c0e5d5c95e37eb6249af8d305ea66f85e2dbd05cec52675b756db3eafbdbcf1c4f28ff46cbac0
7
- data.tar.gz: 67d2c88fad377d95d1b2a076cf07a57793cb0e925d9f22c34339d97ea220df58bbc5c5c11d540a2c4051e3457db55f24488f24370317b0933f7bf08aa07494fb
6
+ metadata.gz: 0dd30dcf52b5df54ba6ac7179e315619bec8f6652679291fcc12ff0a974d98b184ca97b61da3e6eda8dabed7abd420c4814f32edc86d0fcec00d7441803497dc
7
+ data.tar.gz: f313600b62164dfae76b321187860fb894eed9c8b6732249c060418c7daa6c8072fbc22b590dbaf9f4ed13b2a8ea44fcde1ffcf7bbd8dcdeb01d29bc428cac97
data/README.md CHANGED
@@ -42,11 +42,12 @@ end
42
42
  The `doc` method stores data in a hash on the RSpec example metadata.
43
43
 
44
44
  The second stage is the formatter (`RspecApiDocs::Formatter`). The formatter
45
- parses the hash stored on each RSpec example and uses a renderer
46
- (lib/rspec_api_docs/formatter/renderer/) to write out your documentation.
45
+ parses the hash stored on each RSpec example and uses a
46
+ [renderer](lib/rspec_api_docs/formatter/renderer/README.md) to write out your
47
+ documentation.
47
48
 
48
49
  ```
49
- bundle exec rspec spec/requests/characters_spec.rb --formatter=RspecApiDocs::Formatter
50
+ $ rspec spec/requests/characters_spec.rb --formatter=RspecApiDocs::Formatter
50
51
  ```
51
52
 
52
53
  ### DSL
@@ -246,7 +247,7 @@ git commits and tags, and push the `.gem` file to [rubygems.org].
246
247
  Regenerate this project's integration spec docs locally:
247
248
 
248
249
  ```
249
- ./bin/generate_integration_docs
250
+ $ ./bin/generate_integration_docs
250
251
  ```
251
252
 
252
253
  ## TODO
@@ -0,0 +1,30 @@
1
+ # Renderers
2
+
3
+ Included renders:
4
+
5
+ - JSON renderer for https://github.com/twe4ked/api-docs
6
+ - Raddocs renderer for https://github.com/smartlogic/raddocs
7
+ - Slate renderer for https://github.com/lord/slate
8
+
9
+ ## Protocol
10
+
11
+ A renderer gets initialized with an array of `Resource`s and then the `render`
12
+ instance method is called.
13
+
14
+ ## Example
15
+
16
+ ``` ruby
17
+ class ExampleRenderer
18
+ def initialize(resources)
19
+ @resources = resources
20
+ end
21
+
22
+ def render
23
+ puts @resources.map(&:name).join("\n")
24
+ end
25
+ end
26
+
27
+ RspecApiDocs.configure do |config|
28
+ config.renderer = ExampleRenderer
29
+ end
30
+ ```
@@ -1,5 +1,4 @@
1
1
  require 'json'
2
- require 'active_support/core_ext/hash/keys'
3
2
  require 'rspec_api_docs/formatter/renderer/json_renderer/name'
4
3
  require 'rspec_api_docs/formatter/renderer/json_renderer/resource_serializer'
5
4
 
@@ -24,20 +23,33 @@ module RspecApiDocs
24
23
 
25
24
  def output
26
25
  resources.map do |resource|
27
- format_hash ResourceSerializer.new(resource).to_h
26
+ recursive_format_hash ResourceSerializer.new(resource).to_h
28
27
  end
29
28
  end
30
29
 
31
- def format_hash(hash)
32
- hash.deep_transform_keys do |key|
33
- if key =~ /\A[a-z]/
34
- key.to_s.camelize(:lower).to_sym
35
- else
36
- key
37
- end
30
+ def recursive_format_hash(hash)
31
+ case hash
32
+ when Hash
33
+ Hash[
34
+ hash.map do |key, v|
35
+ [
36
+ key.is_a?(Symbol) && key =~ /\A[a-z]/ ? lower_camel_case(key.to_s).to_sym : key,
37
+ recursive_format_hash(v),
38
+ ]
39
+ end
40
+ ]
41
+ when Enumerable
42
+ hash.map { |value| recursive_format_hash(value) }
43
+ else
44
+ hash
38
45
  end
39
46
  end
40
47
 
48
+ def lower_camel_case(string)
49
+ string = string.split('_').collect(&:capitalize).join
50
+ string[0].downcase + string[1..-1]
51
+ end
52
+
41
53
  def output_file
42
54
  Pathname.new(RspecApiDocs.configuration.output_dir) + 'index.json'
43
55
  end
@@ -3,7 +3,7 @@ module RspecApiDocs
3
3
  class RaddocsRenderer
4
4
  class Link
5
5
  def self.call(resource_name, example_name)
6
- "#{resource_name.parameterize.underscore}/#{example_name.parameterize.underscore}.json"
6
+ "#{resource_name.downcase.gsub(/[^a-z]/, '_')}/#{example_name.downcase.gsub(/[^a-z]/, '_')}.json"
7
7
  end
8
8
  end
9
9
  end
@@ -1,4 +1,3 @@
1
- require 'active_support/inflector'
2
1
  require 'rspec_api_docs/formatter/resource/example'
3
2
  require 'rspec_api_docs/formatter/resource/parameter'
4
3
  require 'rspec_api_docs/formatter/resource/response_field'
@@ -1,3 +1,3 @@
1
1
  module RspecApiDocs
2
- VERSION = '0.3.0'
2
+ VERSION = '0.4.0'
3
3
  end
@@ -18,8 +18,6 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activesupport'
22
-
23
21
  spec.add_development_dependency 'bundler', '~> 1.13'
24
22
  spec.add_development_dependency 'rake', '~> 10.0'
25
23
  spec.add_development_dependency 'rspec', '~> 3.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec-api-docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Odin Dutton
@@ -10,20 +10,6 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2017-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bundler
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -150,6 +136,7 @@ files:
150
136
  - lib/rspec_api_docs/dsl/doc_proxy.rb
151
137
  - lib/rspec_api_docs/dsl/request_store.rb
152
138
  - lib/rspec_api_docs/formatter.rb
139
+ - lib/rspec_api_docs/formatter/renderer/README.md
153
140
  - lib/rspec_api_docs/formatter/renderer/json_renderer.rb
154
141
  - lib/rspec_api_docs/formatter/renderer/json_renderer/example_serializer.rb
155
142
  - lib/rspec_api_docs/formatter/renderer/json_renderer/name.rb