rspec-api-docs 0.3.0 → 0.4.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 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