grape_doc 0.0.1 → 0.0.2
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.
- data/CHANGELOG.md +7 -5
- data/Gemfile +1 -0
- data/README.md +63 -14
- data/grape_doc.gemspec +4 -3
- data/lib/grape_doc.rb +12 -6
- data/lib/grape_doc/doc_generator.rb +18 -7
- data/lib/grape_doc/version.rb +1 -1
- metadata +21 -5
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
_Not published yet_
|
2
|
+
|
1
3
|
# GrapeDoc
|
2
4
|
|
3
5
|
This gem generate API documentation from Grape API.
|
@@ -18,19 +20,22 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
## Usage
|
20
22
|
|
21
|
-
To generate API documentation you should cd to
|
22
|
-
|
23
|
-
$ cd rails_app
|
23
|
+
To generate API documentation you should cd to your app directory
|
24
24
|
|
25
|
-
|
25
|
+
$ cd app_dir
|
26
26
|
|
27
|
+
# rails
|
27
28
|
$ grape_doc
|
28
29
|
|
29
|
-
|
30
|
+
# non-rails
|
31
|
+
$ grape_doc --path sinatra_app.rb # for example
|
32
|
+
|
33
|
+
|
34
|
+
It'll generate documentation for each Grape::API subclass and place it into **grape_doc** directory. Each API subclass were placed as separated file.
|
30
35
|
|
31
36
|
You can pass a doc formatter as parameter
|
32
37
|
|
33
|
-
$ grape_doc
|
38
|
+
$ grape_doc
|
34
39
|
|
35
40
|
_At this time it supports only MarkDown format._
|
36
41
|
|
@@ -64,15 +69,59 @@ _At this time it supports only MarkDown format._
|
|
64
69
|
Tweet.find(params[:id])
|
65
70
|
end
|
66
71
|
|
67
|
-
|
72
|
+
### Manual response description
|
73
|
+
|
74
|
+
Single entity
|
75
|
+
|
76
|
+
desc "Returns a tweet.",
|
77
|
+
:response => {
|
78
|
+
:id => 14,
|
79
|
+
:tweet => "FooBarBazz"
|
80
|
+
}
|
81
|
+
get '/show/:id' do
|
82
|
+
Tweet.find(params[:id])
|
83
|
+
end
|
84
|
+
|
85
|
+
Array of entities
|
86
|
+
|
87
|
+
desc "Returns a tweets",
|
88
|
+
:response => [
|
89
|
+
{
|
90
|
+
:id => 14,
|
91
|
+
:tweet => "FooBarBazz"
|
92
|
+
},
|
93
|
+
{
|
94
|
+
:id => 14,
|
95
|
+
:tweet => "FooBarBazz"
|
96
|
+
}
|
97
|
+
]
|
98
|
+
get '/tweets' do
|
99
|
+
Tweet.all
|
100
|
+
end
|
68
101
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
102
|
+
### Response using Grape::Entity
|
103
|
+
|
104
|
+
Single entity
|
105
|
+
|
106
|
+
desc "Returns a tweet.",
|
107
|
+
:response_with => { :entity => API::Entities::Tweet }
|
108
|
+
get '/show/:id' do
|
109
|
+
Tweet.find(params[:id])
|
110
|
+
end
|
111
|
+
|
112
|
+
Array of entities
|
113
|
+
|
114
|
+
desc "Returns a tweet.",
|
115
|
+
:response_with => { :entities => API::Entities::Tweet }
|
116
|
+
get '/show/:id' do
|
117
|
+
Tweet.find(params[:id])
|
118
|
+
end
|
119
|
+
|
120
|
+
Grape::Entity description
|
121
|
+
|
122
|
+
class Tweet < Grape::Entity
|
123
|
+
expose :tweet, :documentation => {:type => String, :desc => "words go here", :value => "FuuBar"}
|
124
|
+
end
|
76
125
|
|
77
126
|
## Contributing
|
78
127
|
|
data/grape_doc.gemspec
CHANGED
@@ -4,9 +4,9 @@ require File.expand_path('../lib/grape_doc/version', __FILE__)
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.authors = ["Alex Denisov"]
|
6
6
|
gem.email = ["1101.debian@gmail.com"]
|
7
|
-
gem.description = %q{
|
8
|
-
gem.summary = %q{
|
9
|
-
gem.homepage = "
|
7
|
+
gem.description = %q{: Write a gem description}
|
8
|
+
gem.summary = %q{: Write a gem summary}
|
9
|
+
gem.homepage = ""
|
10
10
|
gem.files = `git ls-files`.split($\)
|
11
11
|
gem.executables << "grape_doc"
|
12
12
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
@@ -14,6 +14,7 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.require_paths = ["lib"]
|
15
15
|
gem.version = GrapeDoc::VERSION
|
16
16
|
gem.add_runtime_dependency 'grape', '~> 0.2', '>= 0.2.1'
|
17
|
+
gem.add_runtime_dependency 'trollop', '~> 2.0'
|
17
18
|
gem.add_runtime_dependency 'json', '~> 1.7', '>= 1.7.4'
|
18
19
|
gem.add_development_dependency 'rspec', '~> 2.11'
|
19
20
|
end
|
data/lib/grape_doc.rb
CHANGED
@@ -6,16 +6,22 @@ require 'grape_doc/api_parameter'
|
|
6
6
|
require 'grape_doc/api_resource'
|
7
7
|
require 'grape_doc/doc_generator'
|
8
8
|
require 'grape_doc/formatters/markdown_formatter'
|
9
|
+
require 'trollop'
|
9
10
|
|
10
|
-
begin
|
11
|
-
require File.expand_path(Dir.pwd + "/config/environment")
|
12
|
-
rescue LoadError => ex
|
13
|
-
puts "#{ex}"
|
14
|
-
end
|
11
|
+
#begin
|
12
|
+
#require File.expand_path(Dir.pwd + "/config/environment")
|
13
|
+
#rescue LoadError => ex
|
14
|
+
# puts "#{ex}"
|
15
|
+
#end
|
15
16
|
|
16
17
|
module GrapeDoc
|
17
18
|
def self.generate_doc
|
18
|
-
|
19
|
+
opts = Trollop::options do
|
20
|
+
opt :path, "Resource path",
|
21
|
+
:type => :string,
|
22
|
+
:default => File.expand_path(Dir.pwd + "/config/environment")
|
23
|
+
end
|
24
|
+
generator = DOCGenerator.new opts[:path]
|
19
25
|
generator.generate
|
20
26
|
end
|
21
27
|
end
|
@@ -3,7 +3,20 @@ module GrapeDoc
|
|
3
3
|
attr_accessor :resources,
|
4
4
|
:formatter,
|
5
5
|
:single_file
|
6
|
-
def initialize
|
6
|
+
def initialize(resource_path)
|
7
|
+
begin
|
8
|
+
require resource_path
|
9
|
+
self.load
|
10
|
+
rescue LoadError => ex
|
11
|
+
puts "#{ex}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def init_formatter
|
16
|
+
return GrapeDoc::MarkdownFormatter.new if self.formatter.nil?
|
17
|
+
end
|
18
|
+
|
19
|
+
def load
|
7
20
|
self.resources = Grape::API.subclasses.map do |klass|
|
8
21
|
resource = APIResource.new(klass)
|
9
22
|
if resource.documents.nil? or resource.documents.count.zero?
|
@@ -14,17 +27,15 @@ module GrapeDoc
|
|
14
27
|
end.compact.sort_by{ |res| res.resource_name }
|
15
28
|
end
|
16
29
|
|
17
|
-
def init_formatter
|
18
|
-
return GrapeDoc::MarkdownFormatter.new self.formatter.nil?
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
30
|
def generate
|
23
31
|
doc_formatter = init_formatter
|
24
32
|
generated_resources = self.resources.map do | resource |
|
25
33
|
doc_formatter.generate_resource_doc resource
|
26
34
|
end.join
|
27
|
-
|
35
|
+
doc_dir = "#{Dir.pwd}/grape_doc"
|
36
|
+
doc_path = "#{doc_dir}/api.md"
|
37
|
+
Dir::mkdir(doc_dir)
|
38
|
+
output = File.open(doc_path, "w")
|
28
39
|
output << generated_resources
|
29
40
|
end
|
30
41
|
end
|
data/lib/grape_doc/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: grape_doc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: grape
|
@@ -33,6 +33,22 @@ dependencies:
|
|
33
33
|
- - ! '>='
|
34
34
|
- !ruby/object:Gem::Version
|
35
35
|
version: 0.2.1
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: trollop
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ~>
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '2.0'
|
36
52
|
- !ruby/object:Gem::Dependency
|
37
53
|
name: json
|
38
54
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,7 +87,7 @@ dependencies:
|
|
71
87
|
- - ~>
|
72
88
|
- !ruby/object:Gem::Version
|
73
89
|
version: '2.11'
|
74
|
-
description:
|
90
|
+
description: ': Write a gem description'
|
75
91
|
email:
|
76
92
|
- 1101.debian@gmail.com
|
77
93
|
executables:
|
@@ -107,7 +123,7 @@ files:
|
|
107
123
|
- spec/test_classes/api.rb
|
108
124
|
- spec/test_classes/projects.rb
|
109
125
|
- spec/test_classes/users.rb
|
110
|
-
homepage:
|
126
|
+
homepage: ''
|
111
127
|
licenses: []
|
112
128
|
post_install_message:
|
113
129
|
rdoc_options: []
|
@@ -130,7 +146,7 @@ rubyforge_project:
|
|
130
146
|
rubygems_version: 1.8.24
|
131
147
|
signing_key:
|
132
148
|
specification_version: 3
|
133
|
-
summary:
|
149
|
+
summary: ': Write a gem summary'
|
134
150
|
test_files:
|
135
151
|
- spec/api_document_spec.rb
|
136
152
|
- spec/api_parameter_spec.rb
|