apipie-rails 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/.travis.yml +1 -2
  2. data/CHANGELOG.md +26 -0
  3. data/README.rst +94 -3
  4. data/app/controllers/apipie/apipies_controller.rb +28 -10
  5. data/app/views/apipie/apipies/_disqus.html.erb +4 -2
  6. data/app/views/apipie/apipies/_languages.erb +6 -0
  7. data/app/views/apipie/apipies/_method_detail.erb +7 -7
  8. data/app/views/apipie/apipies/_params.html.erb +2 -2
  9. data/app/views/apipie/apipies/_params_plain.html.erb +2 -2
  10. data/app/views/apipie/apipies/apipie_404.html.erb +7 -4
  11. data/app/views/apipie/apipies/getting_started.html.erb +5 -3
  12. data/app/views/apipie/apipies/index.html.erb +7 -6
  13. data/app/views/apipie/apipies/method.html.erb +4 -2
  14. data/app/views/apipie/apipies/plain.html.erb +3 -3
  15. data/app/views/apipie/apipies/resource.html.erb +3 -2
  16. data/app/views/apipie/apipies/static.html.erb +7 -7
  17. data/app/views/layouts/apipie/apipie.html.erb +1 -1
  18. data/config/locales/en.yml +27 -0
  19. data/lib/apipie-rails.rb +7 -0
  20. data/lib/apipie/apipie_module.rb +5 -2
  21. data/lib/apipie/application.rb +27 -16
  22. data/lib/apipie/configuration.rb +6 -1
  23. data/lib/apipie/extractor.rb +35 -26
  24. data/lib/apipie/extractor/recorder.rb +9 -5
  25. data/lib/apipie/extractor/writer.rb +36 -7
  26. data/lib/apipie/method_description.rb +6 -6
  27. data/lib/apipie/param_description.rb +9 -4
  28. data/lib/apipie/resource_description.rb +5 -5
  29. data/lib/apipie/routing.rb +1 -1
  30. data/lib/apipie/version.rb +1 -1
  31. data/lib/generators/apipie/install/templates/initializer.rb.erb +1 -1
  32. data/lib/tasks/apipie.rake +89 -47
  33. data/spec/dummy/doc/apipie_examples.json +1 -0
  34. data/spec/lib/extractor/middleware_spec.rb +21 -0
  35. data/spec/lib/extractor/writer_spec.rb +76 -0
  36. metadata +10 -5
  37. data/Gemfile.rails30 +0 -5
  38. data/spec/dummy/doc/apipie_examples.yml +0 -28
@@ -39,7 +39,8 @@ module Apipie
39
39
  @method_description = method_description
40
40
  @name = concern_subst(name)
41
41
  @as = options[:as] || @name
42
- @desc = concern_subst(Apipie.markup_to_html(@options[:desc] || ''))
42
+ @desc = preformat_text(@options[:desc])
43
+
43
44
  @parent = @options[:parent]
44
45
  @metadata = @options[:meta]
45
46
 
@@ -99,10 +100,10 @@ module Apipie
99
100
  ret
100
101
  end
101
102
 
102
- def to_json
103
+ def to_json(lang = nil)
103
104
  hash = { :name => name.to_s,
104
105
  :full_name => full_name,
105
- :description => desc,
106
+ :description => preformat_text(Apipie.app.translate(@options[:desc], lang)),
106
107
  :required => required,
107
108
  :allow_nil => allow_nil,
108
109
  :validator => validator.to_s,
@@ -110,7 +111,7 @@ module Apipie
110
111
  :metadata => metadata,
111
112
  :show => show }
112
113
  if sub_params = validator.params_ordered
113
- hash[:params] = sub_params.map(&:to_json)
114
+ hash[:params] = sub_params.map { |p| p.to_json(lang)}
114
115
  end
115
116
  hash
116
117
  end
@@ -198,6 +199,10 @@ module Apipie
198
199
  return replaced
199
200
  end
200
201
 
202
+ def preformat_text(text)
203
+ concern_subst(Apipie.markup_to_html(text || ''))
204
+ end
205
+
201
206
  end
202
207
 
203
208
  end
@@ -81,20 +81,20 @@ module Apipie
81
81
 
82
82
  def api_url; "#{Apipie.api_base_url(_version)}#{@_path}"; end
83
83
 
84
- def to_json(method_name = nil)
84
+ def to_json(method_name = nil, lang = nil)
85
85
 
86
86
  methods = if method_name.blank?
87
- @_methods.collect { |key, method_description| method_description.to_json}
87
+ @_methods.collect { |key, method_description| method_description.to_json(lang) }
88
88
  else
89
- [@_methods[method_name.to_sym].to_json]
89
+ [@_methods[method_name.to_sym].to_json(lang)]
90
90
  end
91
91
 
92
92
  {
93
93
  :doc_url => doc_url,
94
94
  :api_url => api_url,
95
95
  :name => @_name,
96
- :short_description => @_short_description,
97
- :full_description => @_full_description,
96
+ :short_description => Apipie.app.translate(@_short_description, lang),
97
+ :full_description => Apipie.app.translate(@_full_description, lang),
98
98
  :version => _version,
99
99
  :formats => @_formats,
100
100
  :metadata => @_metadata,
@@ -4,7 +4,7 @@ module Apipie
4
4
  def apipie
5
5
  namespace "apipie", :path => Apipie.configuration.doc_base_url do
6
6
  get 'apipie_checksum', :to => "apipies#apipie_checksum", :format => "json"
7
- constraints(:version => /[^\/]+/) do
7
+ constraints(:version => /[^\/]+/, :resource => /[^\/]+/, :method => /[^\/]+/) do
8
8
  get("(:version)/(:resource)/(:method)" => "apipies#index", :as => :apipie)
9
9
  end
10
10
  end
@@ -1,3 +1,3 @@
1
1
  module Apipie
2
- VERSION = '0.1.3'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -2,6 +2,6 @@ Apipie.configure do |config|
2
2
  config.app_name = "<%= Rails.application.class.name[/^\w+/] %>"
3
3
  config.api_base_url = "<%= options.api_path %>"
4
4
  config.doc_base_url = "<%= options.route %>"
5
- # were is your API defined?
5
+ # where is your API defined?
6
6
  config.api_controllers_matcher = "#{Rails.root}/app/controllers/*.rb"
7
7
  end
@@ -23,16 +23,19 @@ namespace :apipie do
23
23
  subdir = File.basename(out)
24
24
  copy_jscss(out)
25
25
  Apipie.configuration.version_in_url = false
26
- Apipie.url_prefix = "./#{subdir}"
27
- doc = Apipie.to_json(args[:version])
28
- doc[:docs][:link_extension] = '.html'
29
- generate_one_page(out, doc)
30
- generate_plain_page(out, doc)
31
- generate_index_page(out, doc)
32
- Apipie.url_prefix = "../#{subdir}"
33
- generate_resource_pages(args[:version], out, doc)
34
- Apipie.url_prefix = "../../#{subdir}"
35
- generate_method_pages(args[:version], out, doc)
26
+ ([nil] + Apipie.configuration.languages).each do |lang|
27
+ I18n.locale = lang || Apipie.configuration.default_locale
28
+ Apipie.url_prefix = "./#{subdir}"
29
+ doc = Apipie.to_json(args[:version], nil, nil, lang)
30
+ doc[:docs][:link_extension] = "#{lang_ext(lang)}.html"
31
+ generate_one_page(out, doc, lang)
32
+ generate_plain_page(out, doc, lang)
33
+ generate_index_page(out, doc, false, false, lang)
34
+ Apipie.url_prefix = "../#{subdir}"
35
+ generate_resource_pages(args[:version], out, doc, false, lang)
36
+ Apipie.url_prefix = "../../#{subdir}"
37
+ generate_method_pages(args[:version], out, doc, false, lang)
38
+ end
36
39
  end
37
40
  end
38
41
 
@@ -41,32 +44,43 @@ namespace :apipie do
41
44
  with_loaded_documentation do
42
45
  args.with_defaults(:version => Apipie.configuration.default_version)
43
46
  out = ENV["OUT"] || File.join(::Rails.root, 'doc', 'apidoc')
44
- doc = Apipie.to_json(args[:version])
45
- generate_json_page(out, doc)
47
+ ([nil] + Apipie.configuration.languages).each do |lang|
48
+ doc = Apipie.to_json(args[:version], nil, nil, lang)
49
+ generate_json_page(out, doc, lang)
50
+ end
46
51
  end
47
52
  end
48
53
 
49
54
  desc "Generate cache to avoid production dependencies on markup languages"
50
55
  task :cache => :environment do
56
+ puts "#{Time.now} | Started"
51
57
  with_loaded_documentation do
52
- cache_dir = Apipie.configuration.cache_dir
53
- subdir = Apipie.configuration.doc_base_url.sub(/\A\//,"")
54
-
55
- file_base = File.join(cache_dir, Apipie.configuration.doc_base_url)
56
- Apipie.url_prefix = "./#{subdir}"
57
- doc = Apipie.to_json(Apipie.configuration.default_version)
58
- generate_index_page(file_base, doc, true)
59
- Apipie.available_versions.each do |version|
60
- file_base_version = File.join(file_base, version)
61
- Apipie.url_prefix = "../#{subdir}"
62
- doc = Apipie.to_json(version)
63
- generate_index_page(file_base_version, doc, true, true)
64
- Apipie.url_prefix = "../../#{subdir}"
65
- generate_resource_pages(version, file_base_version, doc, true)
66
- Apipie.url_prefix = "../../../#{subdir}"
67
- generate_method_pages(version, file_base_version, doc, true)
58
+ puts "#{Time.now} | Documents loaded..."
59
+ ([nil] + Apipie.configuration.languages).each do |lang|
60
+ I18n.locale = lang || Apipie.configuration.default_locale
61
+ puts "#{Time.now} | Processing docs for #{lang}"
62
+ cache_dir = Apipie.configuration.cache_dir
63
+ subdir = Apipie.configuration.doc_base_url.sub(/\A\//,"")
64
+
65
+ file_base = File.join(cache_dir, Apipie.configuration.doc_base_url)
66
+ Apipie.url_prefix = "./#{subdir}"
67
+ doc = Apipie.to_json(Apipie.configuration.default_version, nil, nil, lang)
68
+ doc[:docs][:link_extension] = (lang ? ".#{lang}.html" : ".html")
69
+ generate_index_page(file_base, doc, true, false, lang)
70
+ Apipie.available_versions.each do |version|
71
+ file_base_version = File.join(file_base, version)
72
+ Apipie.url_prefix = "../#{subdir}"
73
+ doc = Apipie.to_json(version, nil, nil, lang)
74
+ doc[:docs][:link_extension] = (lang ? ".#{lang}.html" : ".html")
75
+ generate_index_page(file_base_version, doc, true, true, lang)
76
+ Apipie.url_prefix = "../../#{subdir}"
77
+ generate_resource_pages(version, file_base_version, doc, true, lang)
78
+ Apipie.url_prefix = "../../../#{subdir}"
79
+ generate_method_pages(version, file_base_version, doc, true, lang)
80
+ end
68
81
  end
69
82
  end
83
+ puts "#{Time.now} | Finished"
70
84
  end
71
85
 
72
86
  # Attempt to use the Rails application views, otherwise default to built in views
@@ -94,57 +108,64 @@ namespace :apipie do
94
108
  end
95
109
  end
96
110
 
97
- def generate_json_page(file_base, doc)
111
+ def generate_json_page(file_base, doc, lang = nil)
98
112
  FileUtils.mkdir_p(file_base) unless File.exists?(file_base)
99
113
 
100
- filename = 'schema_apipie.json'
114
+ filename = "schema_apipie#{lang_ext(lang)}.json"
101
115
  File.open("#{file_base}/#{filename}", 'w') { |file| file.write(JSON.pretty_generate(doc)) }
102
116
  end
103
117
 
104
- def generate_one_page(file_base, doc)
118
+ def generate_one_page(file_base, doc, lang = nil)
105
119
  FileUtils.mkdir_p(File.dirname(file_base)) unless File.exists?(File.dirname(file_base))
106
120
 
107
- render_page("#{file_base}-onepage.html", "static", {:doc => doc[:docs]})
121
+ render_page("#{file_base}-onepage#{lang_ext(lang)}.html", "static", {:doc => doc[:docs],
122
+ :language => lang, :languages => Apipie.configuration.languages})
108
123
  end
109
124
 
110
- def generate_plain_page(file_base, doc)
125
+ def generate_plain_page(file_base, doc, lang = nil)
111
126
  FileUtils.mkdir_p(File.dirname(file_base)) unless File.exists?(File.dirname(file_base))
112
127
 
113
- render_page("#{file_base}-plain.html", "plain", {:doc => doc[:docs]}, nil)
128
+ render_page("#{file_base}-plain#{lang_ext(lang)}.html", "plain", {:doc => doc[:docs],
129
+ :language => lang, :languages => Apipie.configuration.languages}, nil)
114
130
  end
115
131
 
116
- def generate_index_page(file_base, doc, include_json = false, show_versions = false)
132
+ def generate_index_page(file_base, doc, include_json = false, show_versions = false, lang = nil)
117
133
  FileUtils.mkdir_p(File.dirname(file_base)) unless File.exists?(File.dirname(file_base))
118
134
  versions = show_versions && Apipie.available_versions
119
- render_page("#{file_base}.html", "index", {:doc => doc[:docs], :versions => versions})
135
+ render_page("#{file_base}#{lang_ext(lang)}.html", "index", {:doc => doc[:docs],
136
+ :versions => versions, :language => lang, :languages => Apipie.configuration.languages})
120
137
 
121
- File.open("#{file_base}.json", "w") { |f| f << doc.to_json } if include_json
138
+ File.open("#{file_base}#{lang_ext(lang)}.json", "w") { |f| f << doc.to_json } if include_json
122
139
  end
123
140
 
124
- def generate_resource_pages(version, file_base, doc, include_json = false)
141
+ def generate_resource_pages(version, file_base, doc, include_json = false, lang = nil)
125
142
  doc[:docs][:resources].each do |resource_name, _|
126
143
  resource_file_base = File.join(file_base, resource_name.to_s)
127
144
  FileUtils.mkdir_p(File.dirname(resource_file_base)) unless File.exists?(File.dirname(resource_file_base))
128
145
 
129
- doc = Apipie.to_json(version, resource_name)
130
- render_page("#{resource_file_base}.html", "resource", {:doc => doc[:docs],
131
- :resource => doc[:docs][:resources].first})
132
- File.open("#{resource_file_base}.json", "w") { |f| f << doc.to_json } if include_json
146
+ doc = Apipie.to_json(version, resource_name, nil, lang)
147
+ doc[:docs][:link_extension] = (lang ? ".#{lang}.html" : ".html")
148
+ render_page("#{resource_file_base}#{lang_ext(lang)}.html", "resource", {:doc => doc[:docs],
149
+ :resource => doc[:docs][:resources].first, :language => lang, :languages => Apipie.configuration.languages})
150
+ File.open("#{resource_file_base}#{lang_ext(lang)}.json", "w") { |f| f << doc.to_json } if include_json
133
151
  end
134
152
  end
135
153
 
136
- def generate_method_pages(version, file_base, doc, include_json = false)
154
+ def generate_method_pages(version, file_base, doc, include_json = false, lang = nil)
137
155
  doc[:docs][:resources].each do |resource_name, resource_params|
138
156
  resource_params[:methods].each do |method|
139
157
  method_file_base = File.join(file_base, resource_name.to_s, method[:name].to_s)
140
158
  FileUtils.mkdir_p(File.dirname(method_file_base)) unless File.exists?(File.dirname(method_file_base))
141
159
 
142
- doc = Apipie.to_json(version, resource_name, method[:name])
143
- render_page("#{method_file_base}.html", "method", {:doc => doc[:docs],
160
+ doc = Apipie.to_json(version, resource_name, method[:name], lang)
161
+ doc[:docs][:link_extension] = (lang ? ".#{lang}.html" : ".html")
162
+ render_page("#{method_file_base}#{lang_ext(lang)}.html", "method", {:doc => doc[:docs],
144
163
  :resource => doc[:docs][:resources].first,
145
- :method => doc[:docs][:resources].first[:methods].first})
164
+ :method => doc[:docs][:resources].first[:methods].first,
165
+ :language => lang,
166
+ :languages => Apipie.configuration.languages})
146
167
 
147
- File.open("#{method_file_base}.json", "w") { |f| f << doc.to_json } if include_json
168
+ File.open("#{method_file_base}#{lang_ext(lang)}.json", "w") { |f| f << doc.to_json } if include_json
148
169
  end
149
170
  end
150
171
  end
@@ -155,12 +176,17 @@ namespace :apipie do
155
176
  yield
156
177
  end
157
178
 
179
+
158
180
  def copy_jscss(dest)
159
181
  src = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'app', 'public', 'apipie'))
160
182
  FileUtils.mkdir_p dest
161
183
  FileUtils.cp_r "#{src}/.", dest
162
184
  end
163
185
 
186
+ def lang_ext(lang = nil)
187
+ lang ? ".#{lang}" : ""
188
+ end
189
+
164
190
  desc "Generate CLI client for API documented with apipie gem. (deprecated)"
165
191
  task :client do
166
192
  puts <<MESSAGE
@@ -190,4 +216,20 @@ MESSAGE
190
216
  end
191
217
  end
192
218
 
219
+ desc "Convert your examples from the old yaml into the new json format"
220
+ task :convert_examples => :environment do
221
+ yaml_examples_file = File.join(Rails.root, "doc", "apipie_examples.yml")
222
+ if File.exists?(yaml_examples_file)
223
+ #if SafeYAML gem is enabled, it will load examples as an array of Hash, instead of hash
224
+ if defined? SafeYAML
225
+ examples = YAML.load_file(yaml_examples_file, :safe=>false)
226
+ else
227
+ examples = YAML.load_file(yaml_examples_file)
228
+ end
229
+ else
230
+ examples = {}
231
+ end
232
+ Apipie::Extractor::Writer.write_recorded_examples(examples)
233
+ end
234
+
193
235
  end
@@ -0,0 +1 @@
1
+ {"users#show":[{"verb":"GET","path":"/users/15","query":null,"request_data":null,"response_data":null,"code":"404","show_in_doc":2,"recorded":true},{"verb":"GET","path":"/users/14","query":"verbose=true","request_data":null,"response_data":"{\n \"name\": \"Test User\"\n}","code":"200","show_in_doc":1,"recorded":true},{"verb":"GET","path":"/users/15","query":"verbose=true","request_data":null,"response_data":"{\n \"name\": \"Test User\"\n}","code":"200","show_in_doc":0,"recorded":true}]}
@@ -0,0 +1,21 @@
1
+ require "spec_helper"
2
+
3
+ describe Apipie::Extractor::Recorder::Middleware do
4
+ let(:app) { ->(env) { [200, env, "app"] } }
5
+ let(:stack) { Apipie::Extractor::Recorder::Middleware.new(app) }
6
+ let(:request) { Rack::MockRequest.new(stack) }
7
+ let(:response) { request.get('/') }
8
+
9
+ it 'correctly process request without recording' do
10
+ expect(stack).not_to receive(:analyze)
11
+ response
12
+ end
13
+
14
+ it "analyze request if recording is set" do
15
+ Apipie.configuration.record = true
16
+ expect(Apipie::Extractor.call_recorder).to receive(:analyse_env)
17
+ expect(Apipie::Extractor.call_recorder).to receive(:analyse_response)
18
+ expect(Apipie::Extractor).to receive(:clean_call_recorder)
19
+ response
20
+ end
21
+ end
@@ -0,0 +1,76 @@
1
+ require "spec_helper"
2
+
3
+ describe Apipie::Extractor::Writer do
4
+
5
+ let(:collector) { double "collector" }
6
+ let(:writer_class) { Apipie::Extractor::Writer }
7
+ let(:writer) { writer_class.new(collector) }
8
+ let(:test_examples_file) { File.join(Rails.root, "doc", "apipie_examples_test.json") }
9
+ let(:records) { {
10
+ "concern_resources#show" =>
11
+ [{
12
+ :controller=>ConcernsController,
13
+ :action=>"show",
14
+ :verb=>:GET,
15
+ :path=>"/api/concerns/5",
16
+ :params=>{},
17
+ :query=>"session=secret_hash",
18
+ :request_data=>nil,
19
+ :response_data=>"OK {\"session\"=>\"secret_hash\", \"id\"=>\"5\", \"controller\"=>\"concerns\", \"action\"=>\"show\"}",
20
+ :code=>"200"
21
+ }, {
22
+ :controller=>ConcernsController,
23
+ :action=>"show",
24
+ :verb=>:GET,
25
+ :path=>"/api/concerns/5",
26
+ :params=>{},
27
+ :query=>"",
28
+ :request_data=>nil,
29
+ :response_data=>"OK {\"id\"=>\"5\", \"controller\"=>\"concerns\", \"action\"=>\"show\"}",
30
+ :code=>"200"
31
+ }]
32
+ }
33
+ }
34
+ let(:loaded_records) { {
35
+ "concern_resources#show" =>
36
+ [{
37
+ "verb"=>:GET,
38
+ "path"=>"/api/concerns/5",
39
+ "versions"=>["development"],
40
+ "query"=>"session=secret_hash",
41
+ "request_data"=>nil,
42
+ "response_data"=>"OK {\"session\"=>\"secret_hash\", \"id\"=>\"5\", \"controller\"=>\"concerns\", \"action\"=>\"show\"}",
43
+ "code"=>"200",
44
+ "show_in_doc"=>1,
45
+ "recorded"=>true
46
+ }, {
47
+ "verb"=>:GET,
48
+ "path"=>"/api/concerns/5",
49
+ "versions"=>["development"],
50
+ "query"=>"",
51
+ "request_data"=>nil,
52
+ "response_data"=>"OK {\"id\"=>\"5\", \"controller\"=>\"concerns\", \"action\"=>\"show\"}",
53
+ "code"=>"200",
54
+ "show_in_doc"=>0,
55
+ "recorded"=>true
56
+ }]
57
+ }
58
+ }
59
+
60
+
61
+ describe "storing of examples" do
62
+ before do
63
+ writer_class.stub(:examples_file) { test_examples_file }
64
+ collector.should_receive(:records).and_return(records)
65
+ end
66
+
67
+ it "should read and write examples" do
68
+ writer.write_examples
69
+ writer.send(:load_recorded_examples).should eq(loaded_records)
70
+ end
71
+
72
+ after do
73
+ File.unlink(test_examples_file) if File.exists?(test_examples_file)
74
+ end
75
+ end
76
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apipie-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-04-04 00:00:00.000000000 Z
13
+ date: 2014-05-12 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -170,7 +170,6 @@ files:
170
170
  - APACHE-LICENSE-2.0
171
171
  - CHANGELOG.md
172
172
  - Gemfile
173
- - Gemfile.rails30
174
173
  - Gemfile.rails32
175
174
  - Gemfile.rails40
176
175
  - Gemfile.rails41
@@ -191,6 +190,7 @@ files:
191
190
  - app/public/apipie/stylesheets/bundled/bootstrap.min.css
192
191
  - app/public/apipie/stylesheets/bundled/prettify.css
193
192
  - app/views/apipie/apipies/_disqus.html.erb
193
+ - app/views/apipie/apipies/_languages.erb
194
194
  - app/views/apipie/apipies/_metadata.erb
195
195
  - app/views/apipie/apipies/_method_detail.erb
196
196
  - app/views/apipie/apipies/_params.html.erb
@@ -204,6 +204,7 @@ files:
204
204
  - app/views/apipie/apipies/resource.html.erb
205
205
  - app/views/apipie/apipies/static.html.erb
206
206
  - app/views/layouts/apipie/apipie.html.erb
207
+ - config/locales/en.yml
207
208
  - lib/apipie-rails.rb
208
209
  - lib/apipie/apipie_module.rb
209
210
  - lib/apipie/application.rb
@@ -273,7 +274,7 @@ files:
273
274
  - spec/dummy/config/locales/en.yml
274
275
  - spec/dummy/config/routes.rb
275
276
  - spec/dummy/db/.gitkeep
276
- - spec/dummy/doc/apipie_examples.yml
277
+ - spec/dummy/doc/apipie_examples.json
277
278
  - spec/dummy/doc/users/desc_from_file.md
278
279
  - spec/dummy/public/404.html
279
280
  - spec/dummy/public/422.html
@@ -288,6 +289,8 @@ files:
288
289
  - spec/dummy/public/stylesheets/.gitkeep
289
290
  - spec/dummy/script/rails
290
291
  - spec/lib/application_spec.rb
292
+ - spec/lib/extractor/middleware_spec.rb
293
+ - spec/lib/extractor/writer_spec.rb
291
294
  - spec/lib/method_description_spec.rb
292
295
  - spec/lib/param_description_spec.rb
293
296
  - spec/lib/param_group_spec.rb
@@ -358,7 +361,7 @@ test_files:
358
361
  - spec/dummy/config/locales/en.yml
359
362
  - spec/dummy/config/routes.rb
360
363
  - spec/dummy/db/.gitkeep
361
- - spec/dummy/doc/apipie_examples.yml
364
+ - spec/dummy/doc/apipie_examples.json
362
365
  - spec/dummy/doc/users/desc_from_file.md
363
366
  - spec/dummy/public/404.html
364
367
  - spec/dummy/public/422.html
@@ -373,6 +376,8 @@ test_files:
373
376
  - spec/dummy/public/stylesheets/.gitkeep
374
377
  - spec/dummy/script/rails
375
378
  - spec/lib/application_spec.rb
379
+ - spec/lib/extractor/middleware_spec.rb
380
+ - spec/lib/extractor/writer_spec.rb
376
381
  - spec/lib/method_description_spec.rb
377
382
  - spec/lib/param_description_spec.rb
378
383
  - spec/lib/param_group_spec.rb