rspec_api_documentation 0.6.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,14 +21,18 @@ module RspecApiDocumentation
21
21
  process :delete, *args
22
22
  end
23
23
 
24
+ def response_status
25
+ status
26
+ end
27
+
24
28
  private
25
29
 
26
- def process(method, path, params = {})
27
- do_request(method, path, params)
28
- document_example(method.to_s.upcase, path, params)
30
+ def process(method, path, params = {}, headers ={})
31
+ do_request(method, path, params, headers)
32
+ document_example(method.to_s.upcase, path)
29
33
  end
30
34
 
31
- def document_example(method, path, params)
35
+ def document_example(method, path)
32
36
  return unless metadata[:document]
33
37
 
34
38
  input = last_request.env["rack.input"]
@@ -63,12 +67,8 @@ module RspecApiDocumentation
63
67
  Hash[arrays]
64
68
  end
65
69
 
66
- def headers(method, path, params)
67
- if options && options[:headers]
68
- options[:headers]
69
- else
70
- {}
71
- end
70
+ def headers(method, path, params, request_headers)
71
+ request_headers || {}
72
72
  end
73
73
  end
74
74
  end
@@ -0,0 +1,18 @@
1
+ require 'rspec_api_documentation/json_writer'
2
+
3
+ module RspecApiDocumentation
4
+ class CombinedJsonWriter
5
+ def self.write(index, configuration)
6
+ File.open(configuration.docs_dir.join("combined.json"), "w+") do |f|
7
+ examples = []
8
+ index.examples.each do |rspec_example|
9
+ examples << JsonExample.new(rspec_example, configuration).to_json
10
+ end
11
+
12
+ f.write "["
13
+ f.write examples.join(",")
14
+ f.write "]"
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,100 @@
1
+ module RspecApiDocumentation
2
+ class CombinedTextWriter
3
+ def self.write(index, configuration)
4
+ index.examples.each do |rspec_example|
5
+ example = CombinedTextExample.new(rspec_example)
6
+ FileUtils.mkdir_p(configuration.docs_dir.join(example.resource_name))
7
+ File.open(configuration.docs_dir.join(example.resource_name, "index.txt"), "a+") do |f|
8
+ f.print example.description
9
+ f.print example.parameters
10
+
11
+ example.requests.each do |request, response|
12
+ f.puts "Request:"
13
+ f.puts request
14
+ f.puts
15
+ f.puts "Response:"
16
+ f.puts response
17
+ end
18
+
19
+ unless rspec_example == index.examples.last
20
+ f.puts
21
+ f.puts
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ def self.format_hash(hash, separator="=")
28
+ hash.sort_by { |k, v| k }.inject("") do |out, (k, v)|
29
+ out << " #{k}#{separator}#{v}\n"
30
+ end
31
+ end
32
+ end
33
+
34
+ class CombinedTextExample
35
+ attr_reader :example
36
+
37
+ def initialize(example)
38
+ @example = example
39
+ end
40
+
41
+ def resource_name
42
+ example.resource_name.downcase.gsub(/\s+/, '_')
43
+ end
44
+
45
+ def description
46
+ example.description + "\n" + "-" * example.description.length + "\n\n"
47
+ end
48
+
49
+ def parameters
50
+ return "" unless example.metadata[:parameters]
51
+ "Parameters:\n" + example.metadata[:parameters].inject("") do |out, parameter|
52
+ out << " * #{parameter[:name]} - #{parameter[:description]}\n"
53
+ end + "\n"
54
+ end
55
+
56
+ def requests
57
+ return [] unless example.metadata[:requests]
58
+ example.metadata[:requests].map do |request|
59
+ [format_request(request), format_response(request)]
60
+ end
61
+ end
62
+
63
+ private
64
+ def format_request(request)
65
+ [
66
+ [
67
+ " #{request[:request_method]} #{request[:request_path]}",
68
+ format_hash(request[:request_headers], ": ")
69
+ ],
70
+ [
71
+ format_string(request[:request_body]) || format_hash(request[:request_query_parameters])
72
+ ]
73
+ ].map { |x| x.compact.join("\n") }.reject(&:blank?).join("\n\n") + "\n"
74
+ end
75
+
76
+ def format_response(request)
77
+ [
78
+ [
79
+ " Status: #{request[:response_status]} #{request[:response_status_text]}",
80
+ format_hash(request[:response_headers], ": ")
81
+ ],
82
+ [
83
+ format_string(request[:response_body])
84
+ ]
85
+ ].map { |x| x.compact.join("\n") }.reject(&:blank?).join("\n\n") + "\n"
86
+ end
87
+
88
+ def format_string(string)
89
+ return unless string
90
+ string.split("\n").map { |line| " #{line}" }.join("\n")
91
+ end
92
+
93
+ def format_hash(hash, separator="=")
94
+ return unless hash
95
+ hash.sort_by { |k, v| k }.map do |k, v|
96
+ " #{k}#{separator}#{v}"
97
+ end.join("\n")
98
+ end
99
+ end
100
+ end
@@ -17,6 +17,7 @@ module RspecApiDocumentation
17
17
  subconfig = self.class.new(self)
18
18
  subconfig.filter = name
19
19
  subconfig.docs_dir = self.docs_dir.join(name.to_s)
20
+ subconfig.url_prefix = "#{self.url_prefix}/#{name}"
20
21
  yield subconfig
21
22
  groups << subconfig
22
23
  end
@@ -57,6 +58,7 @@ module RspecApiDocumentation
57
58
 
58
59
  add_setting :curl_host, :default => nil
59
60
  add_setting :keep_source_order, :default => false
61
+ add_setting :api_name, :default => "API Documentation"
60
62
 
61
63
  def settings
62
64
  @settings ||= {}
@@ -4,7 +4,7 @@ module RspecApiDocumentation::DSL
4
4
  module Endpoint
5
5
  extend ActiveSupport::Concern
6
6
 
7
- delegate :response_headers, :status, :response_body, :to => :client
7
+ delegate :response_headers, :status, :response_status, :response_body, :to => :client
8
8
 
9
9
  module ClassMethods
10
10
  def example_request(description, params = {}, &block)
@@ -41,7 +41,7 @@ module RspecApiDocumentation::DSL
41
41
  params_or_body = respond_to?(:raw_post) ? raw_post : params
42
42
  end
43
43
 
44
- client.send(method, path_or_query, params_or_body)
44
+ client.send(method, path_or_query, params_or_body, headers)
45
45
  end
46
46
 
47
47
  def query_string
@@ -61,6 +61,10 @@ module RspecApiDocumentation::DSL
61
61
  parameters
62
62
  end
63
63
 
64
+ def headers
65
+ example.metadata[:headers]
66
+ end
67
+
64
68
  def method
65
69
  example.metadata[:method]
66
70
  end
@@ -35,6 +35,10 @@ module RspecApiDocumentation::DSL
35
35
  parameters.push(options.merge(:name => name.to_s, :description => description))
36
36
  end
37
37
 
38
+ def header(name, value)
39
+ headers[name] = value
40
+ end
41
+
38
42
  def required_parameters(*names)
39
43
  names.each do |name|
40
44
  param = parameters.find { |param| param[:name] == name.to_s }
@@ -67,6 +71,14 @@ module RspecApiDocumentation::DSL
67
71
  metadata[:parameters]
68
72
  end
69
73
 
74
+ def headers
75
+ metadata[:headers] ||= {}
76
+ if superclass_metadata && metadata[:headers].equal?(superclass_metadata[:headers])
77
+ metadata[:headers] = Marshal.load(Marshal.dump(superclass_metadata[:headers]))
78
+ end
79
+ metadata[:headers]
80
+ end
81
+
70
82
  def parameter_keys
71
83
  parameters.map { |param| param[:name] }
72
84
  end
@@ -14,6 +14,15 @@ module RspecApiDocumentation
14
14
  headers
15
15
  end
16
16
 
17
+ def headers_to_env(headers)
18
+ headers.inject({}) do |hsh, (k, v)|
19
+ new_key = k.upcase.gsub("-", "_")
20
+ new_key = "HTTP_#{new_key}" unless new_key == "CONTENT_TYPE"
21
+ hsh[new_key] = v
22
+ hsh
23
+ end
24
+ end
25
+
17
26
  def format_headers(headers)
18
27
  headers.map do |key, value|
19
28
  "#{key}: #{value}"
@@ -35,6 +35,10 @@ module RspecApiDocumentation
35
35
  self.template_path = configuration.template_path
36
36
  end
37
37
 
38
+ def api_name
39
+ @configuration.api_name
40
+ end
41
+
38
42
  def sections
39
43
  IndexWriter.sections(examples, @configuration)
40
44
  end
@@ -42,8 +42,8 @@ module RspecApiDocumentation
42
42
 
43
43
  protected
44
44
 
45
- def do_request(method, path, params)
46
- self.last_response = access_token.send(method, "http://example.com#{path}", :body => params, :header => headers(method, path, params))
45
+ def do_request(method, path, params, request_headers)
46
+ self.last_response = access_token.send(method, "http://example.com#{path}", :body => params, :header => headers(method, path, params, request_headers))
47
47
  end
48
48
 
49
49
  class ProxyApp < Struct.new(:client, :app)
@@ -34,8 +34,12 @@ module RspecApiDocumentation
34
34
 
35
35
  protected
36
36
 
37
- def do_request(method, path, params)
38
- rack_test_session.send(method, path, params, headers(method, path, params))
37
+ def do_request(method, path, params, request_headers)
38
+ rack_test_session.send(method, path, params, headers(method, path, params, request_headers))
39
+ end
40
+
41
+ def headers(*args)
42
+ headers_to_env(super)
39
43
  end
40
44
 
41
45
  private
@@ -35,6 +35,10 @@ module RspecApiDocumentation
35
35
  self.template_path = configuration.template_path
36
36
  end
37
37
 
38
+ def api_name
39
+ @configuration.api_name
40
+ end
41
+
38
42
  def sections
39
43
  IndexWriter.sections(examples, @configuration)
40
44
  end
@@ -28,6 +28,8 @@ module RspecApiDocumentation
28
28
  autoload :WurlWriter
29
29
  autoload :JsonWriter
30
30
  autoload :IndexWriter
31
+ autoload :CombinedTextWriter
32
+ autoload :CombinedJsonWriter
31
33
  autoload :Curl
32
34
 
33
35
  def self.configuration
data/lib/tasks/docs.rake CHANGED
@@ -1,9 +1,7 @@
1
1
  require 'rspec/core/rake_task'
2
2
 
3
- if Rails.env.test? || Rails.env.development?
4
- desc 'Generate API request documentation from API specs'
5
- RSpec::Core::RakeTask.new('docs:generate') do |t|
6
- t.pattern = 'spec/acceptance/**/*_spec.rb'
7
- t.rspec_opts = ["--format RspecApiDocumentation::ApiFormatter"]
8
- end
3
+ desc 'Generate API request documentation from API specs'
4
+ RSpec::Core::RakeTask.new('docs:generate') do |t|
5
+ t.pattern = 'spec/acceptance/**/*_spec.rb'
6
+ t.rspec_opts = ["--format RspecApiDocumentation::ApiFormatter"]
9
7
  end
@@ -2,15 +2,15 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>{{resource_name}} API</title>
5
- <link rel="stylesheet" href="/{{url_prefix}}/assets/stylesheets/bootstrap.css"/>
6
- <link rel="stylesheet" href="/{{url_prefix}}/assets/stylesheets/codemirror.css"/>
7
- <link rel="stylesheet" href="/{{url_prefix}}/assets/stylesheets/application.css"/>
8
- <script src="/{{url_prefix}}/assets/javascripts/jquery-1-7-2.js"></script>
9
- <script src="/{{url_prefix}}/assets/javascripts/codemirror.js"></script>
10
- <script src="/{{url_prefix}}/assets/javascripts/mode/css/css.js"></script>
11
- <script src="/{{url_prefix}}/assets/javascripts/mode/htmlmixed/htmlmixed.js"></script>
12
- <script src="/{{url_prefix}}/assets/javascripts/mode/javascript/javascript.js"></script>
13
- <script src="/{{url_prefix}}/assets/javascripts/mode/xml/xml.js"></script>
5
+ <link rel="stylesheet" href="{{url_prefix}}/assets/stylesheets/bootstrap.css"/>
6
+ <link rel="stylesheet" href="{{url_prefix}}/assets/stylesheets/codemirror.css"/>
7
+ <link rel="stylesheet" href="{{url_prefix}}/assets/stylesheets/application.css"/>
8
+ <script src="{{url_prefix}}/assets/javascripts/jquery-1-7-2.js"></script>
9
+ <script src="{{url_prefix}}/assets/javascripts/codemirror.js"></script>
10
+ <script src="{{url_prefix}}/assets/javascripts/mode/css/css.js"></script>
11
+ <script src="{{url_prefix}}/assets/javascripts/mode/htmlmixed/htmlmixed.js"></script>
12
+ <script src="{{url_prefix}}/assets/javascripts/mode/javascript/javascript.js"></script>
13
+ <script src="{{url_prefix}}/assets/javascripts/mode/xml/xml.js"></script>
14
14
  <script>
15
15
  function mirror(textarea, contentType, options) {
16
16
  $textarea = $(textarea);
@@ -108,7 +108,7 @@
108
108
 
109
109
  {{# request_body }}
110
110
  <h4>Body</h4>
111
- <div class="request body" data-content-type="{{ response_content_type }}"><textarea>{{{ request_body }}}</textarea></div>
111
+ <div class="request body" data-content-type="{{ request_content_type }}"><textarea>{{{ request_body }}}</textarea></div>
112
112
  {{/ request_body }}
113
113
 
114
114
  {{# curl }}
@@ -124,7 +124,7 @@
124
124
  <pre class="response status">{{ response_status }} {{ response_status_text}}</pre>
125
125
  {{# response_body }}
126
126
  <h4>Body</h4>
127
- <div class="response body" data-content-type="{{ request_content_type }}"><textarea>{{{ response_body }}}</textarea></div>
127
+ <div class="response body" data-content-type="{{ response_content_type }}"><textarea>{{{ response_body }}}</textarea></div>
128
128
  {{/ response_body }}
129
129
  {{/ response_status }}
130
130
  {{/ requests }}
@@ -1,12 +1,12 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>API Documentation</title>
5
- <link rel="stylesheet" href="/{{ url_prefix }}/assets/stylesheets/bootstrap.css"/>
4
+ <title>{{ api_name }}</title>
5
+ <link rel="stylesheet" href="{{ url_prefix }}/assets/stylesheets/bootstrap.css"/>
6
6
  </head>
7
7
  <body>
8
8
  <div class="container">
9
- <h1>API Documentation</h1>
9
+ <h1>{{ api_name }}</h1>
10
10
 
11
11
  {{# sections }}
12
12
  <div class="article">
@@ -15,7 +15,7 @@
15
15
  <ul>
16
16
  {{# examples }}
17
17
  <li>
18
- <a href="/{{ url_prefix }}{{ dirname }}/{{ filename }}">{{ description }}</a>
18
+ <a href="{{ url_prefix }}/{{ dirname }}/{{ filename }}">{{ description }}</a>
19
19
  </li>
20
20
  {{/ examples }}
21
21
  </ul>
@@ -1,19 +1,19 @@
1
1
  <!DOCTYPE html>
2
2
  <head>
3
3
  <title>{{resource_name}} API</title>
4
- <link rel="stylesheet" href="/{{url_prefix}}/assets/stylesheets/bootstrap.css"/>
5
- <link rel="stylesheet" href="/{{url_prefix}}/assets/stylesheets/codemirror.css"/>
6
- <link rel="stylesheet" href="/{{url_prefix}}/assets/stylesheets/application.css"/>
7
- <script src="/{{url_prefix}}/assets/javascripts/jquery-1-7-2.js"></script>
8
- <script src="/{{url_prefix}}/assets/javascripts/jquery-livequery.js"></script>
9
- <script src="/{{url_prefix}}/assets/javascripts/jquery-base64.js"></script>
10
- <script src="/{{url_prefix}}/assets/javascripts/jquery-ui-1-8-16-min.js"></script>
11
- <script src="/{{url_prefix}}/assets/javascripts/codemirror.js"></script>
12
- <script src="/{{url_prefix}}/assets/javascripts/mode/css/css.js"></script>
13
- <script src="/{{url_prefix}}/assets/javascripts/mode/htmlmixed/htmlmixed.js"></script>
14
- <script src="/{{url_prefix}}/assets/javascripts/mode/javascript/javascript.js"></script>
15
- <script src="/{{url_prefix}}/assets/javascripts/mode/xml/xml.js"></script>
16
- <script src="/{{url_prefix}}/assets/javascripts/application.js"></script>
4
+ <link rel="stylesheet" href="{{url_prefix}}/assets/stylesheets/bootstrap.css"/>
5
+ <link rel="stylesheet" href="{{url_prefix}}/assets/stylesheets/codemirror.css"/>
6
+ <link rel="stylesheet" href="{{url_prefix}}/assets/stylesheets/application.css"/>
7
+ <script src="{{url_prefix}}/assets/javascripts/jquery-1-7-2.js"></script>
8
+ <script src="{{url_prefix}}/assets/javascripts/jquery-livequery.js"></script>
9
+ <script src="{{url_prefix}}/assets/javascripts/jquery-base64.js"></script>
10
+ <script src="{{url_prefix}}/assets/javascripts/jquery-ui-1-8-16-min.js"></script>
11
+ <script src="{{url_prefix}}/assets/javascripts/codemirror.js"></script>
12
+ <script src="{{url_prefix}}/assets/javascripts/mode/css/css.js"></script>
13
+ <script src="{{url_prefix}}/assets/javascripts/mode/htmlmixed/htmlmixed.js"></script>
14
+ <script src="{{url_prefix}}/assets/javascripts/mode/javascript/javascript.js"></script>
15
+ <script src="{{url_prefix}}/assets/javascripts/mode/xml/xml.js"></script>
16
+ <script src="{{url_prefix}}/assets/javascripts/application.js"></script>
17
17
  <script>
18
18
 
19
19
  </script>
@@ -238,4 +238,4 @@
238
238
  </div>
239
239
  </div>
240
240
  </body>
241
- </html>
241
+ </html>
@@ -1,12 +1,12 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>API Documentation</title>
5
- <link rel="stylesheet" href="/{{ url_prefix }}/assets/stylesheets/bootstrap.css"/>
4
+ <title>{{ api_name }}</title>
5
+ <link rel="stylesheet" href="{{ url_prefix }}/assets/stylesheets/bootstrap.css"/>
6
6
  </head>
7
7
  <body>
8
8
  <div class="container">
9
- <h1>API Documentation</h1>
9
+ <h1>{{ api_name }}</h1>
10
10
 
11
11
  {{# sections }}
12
12
  <div class="article">
@@ -15,7 +15,7 @@
15
15
  <ul>
16
16
  {{# examples }}
17
17
  <li>
18
- <a href="/{{ url_prefix }}{{ dirname }}/{{ filename }}">{{ description }}</a>
18
+ <a href="{{ url_prefix }}/{{ dirname }}/{{ filename }}">{{ description }}</a>
19
19
  </li>
20
20
  {{/ examples }}
21
21
  </ul>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec_api_documentation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.7.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-05-21 00:00:00.000000000Z
14
+ date: 2012-07-03 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec
18
- requirement: &70239312431960 !ruby/object:Gem::Requirement
18
+ requirement: &70135105134860 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: 2.6.0
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *70239312431960
26
+ version_requirements: *70135105134860
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
- requirement: &70239312430760 !ruby/object:Gem::Requirement
29
+ requirement: &70135105133960 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: 3.0.0
35
35
  type: :runtime
36
36
  prerelease: false
37
- version_requirements: *70239312430760
37
+ version_requirements: *70135105133960
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: i18n
40
- requirement: &70239312429680 !ruby/object:Gem::Requirement
40
+ requirement: &70135105132820 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: 0.1.0
46
46
  type: :runtime
47
47
  prerelease: false
48
- version_requirements: *70239312429680
48
+ version_requirements: *70135105132820
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: mustache
51
- requirement: &70239312428600 !ruby/object:Gem::Requirement
51
+ requirement: &70135105131980 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: 0.99.4
57
57
  type: :runtime
58
58
  prerelease: false
59
- version_requirements: *70239312428600
59
+ version_requirements: *70135105131980
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: webmock
62
- requirement: &70239312427680 !ruby/object:Gem::Requirement
62
+ requirement: &70135105130500 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: 1.7.0
68
68
  type: :runtime
69
69
  prerelease: false
70
- version_requirements: *70239312427680
70
+ version_requirements: *70135105130500
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: json
73
- requirement: &70239312426980 !ruby/object:Gem::Requirement
73
+ requirement: &70135105129420 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: 1.4.6
79
79
  type: :runtime
80
80
  prerelease: false
81
- version_requirements: *70239312426980
81
+ version_requirements: *70135105129420
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: fakefs
84
- requirement: &70239312426260 !ruby/object:Gem::Requirement
84
+ requirement: &70135105128660 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *70239312426260
92
+ version_requirements: *70135105128660
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: sinatra
95
- requirement: &70239312425460 !ruby/object:Gem::Requirement
95
+ requirement: &70135105127860 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: '0'
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *70239312425460
103
+ version_requirements: *70135105127860
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: aruba
106
- requirement: &70239312424480 !ruby/object:Gem::Requirement
106
+ requirement: &70135105115500 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: '0'
112
112
  type: :development
113
113
  prerelease: false
114
- version_requirements: *70239312424480
114
+ version_requirements: *70135105115500
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: capybara
117
- requirement: &70239312411060 !ruby/object:Gem::Requirement
117
+ requirement: &70135105114560 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ! '>='
@@ -122,10 +122,10 @@ dependencies:
122
122
  version: '0'
123
123
  type: :development
124
124
  prerelease: false
125
- version_requirements: *70239312411060
125
+ version_requirements: *70135105114560
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: rake
128
- requirement: &70239312410480 !ruby/object:Gem::Requirement
128
+ requirement: &70135105112420 !ruby/object:Gem::Requirement
129
129
  none: false
130
130
  requirements:
131
131
  - - ! '>='
@@ -133,10 +133,10 @@ dependencies:
133
133
  version: '0'
134
134
  type: :development
135
135
  prerelease: false
136
- version_requirements: *70239312410480
136
+ version_requirements: *70135105112420
137
137
  - !ruby/object:Gem::Dependency
138
138
  name: rack-test
139
- requirement: &70239312409580 !ruby/object:Gem::Requirement
139
+ requirement: &70135105111420 !ruby/object:Gem::Requirement
140
140
  none: false
141
141
  requirements:
142
142
  - - ! '>='
@@ -144,10 +144,10 @@ dependencies:
144
144
  version: 0.5.5
145
145
  type: :development
146
146
  prerelease: false
147
- version_requirements: *70239312409580
147
+ version_requirements: *70135105111420
148
148
  - !ruby/object:Gem::Dependency
149
149
  name: rack-oauth2
150
- requirement: &70239312408200 !ruby/object:Gem::Requirement
150
+ requirement: &70135105110060 !ruby/object:Gem::Requirement
151
151
  none: false
152
152
  requirements:
153
153
  - - ! '>='
@@ -155,7 +155,7 @@ dependencies:
155
155
  version: 0.14.4
156
156
  type: :development
157
157
  prerelease: false
158
- version_requirements: *70239312408200
158
+ version_requirements: *70135105110060
159
159
  description: Generate API docs from your test suite
160
160
  email:
161
161
  - chris@smartlogicsolutions.com
@@ -168,6 +168,8 @@ files:
168
168
  - lib/rspec_api_documentation/api_documentation.rb
169
169
  - lib/rspec_api_documentation/api_formatter.rb
170
170
  - lib/rspec_api_documentation/client_base.rb
171
+ - lib/rspec_api_documentation/combined_json_writer.rb
172
+ - lib/rspec_api_documentation/combined_text_writer.rb
171
173
  - lib/rspec_api_documentation/configuration.rb
172
174
  - lib/rspec_api_documentation/curl.rb
173
175
  - lib/rspec_api_documentation/dsl/callback.rb