grape_doc 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,9 @@
1
- # 0.0.1
1
+ ## 0.0.2
2
+
3
+ - Support non-rails apps
2
4
 
3
- - markdown formatter
4
- - generate single doc file doc/api.md
5
- - rails only
6
- - generate only parameters documentation
5
+ ## 0.0.1
6
+
7
+ - Rails support only
8
+ - generate Markdown
7
9
 
data/Gemfile CHANGED
@@ -7,3 +7,4 @@ gem 'rspec'
7
7
  gem 'grape'
8
8
  gem 'json'
9
9
  gem 'rake'
10
+ gem 'trollop'
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 rails app directory
22
-
23
- $ cd rails_app
23
+ To generate API documentation you should cd to your app directory
24
24
 
25
- Then run
25
+ $ cd app_dir
26
26
 
27
+ # rails
27
28
  $ grape_doc
28
29
 
29
- It'll generate documentation for each Grape::API subclass and place it into **doc** directory. Each API subclass were placed as separated file.
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 markdown
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
- ## TODO
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
- - generate plain response
70
- - generate response from Grape::Entity
71
- - generate response from Grape::Entity with nested entities
72
- - other output formats
73
- - write docs into separated files
74
- - add code documentation
75
- - and more others features
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
 
@@ -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{Documentation generator for Grape API}
8
- gem.summary = %q{Documentation generator for Grape API}
9
- gem.homepage = "https://github.com/AlexDenisov/grape_doc"
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
@@ -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
- generator = DOCGenerator.new
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
- output = File.open("#{Dir.pwd}/doc/api.md", "w")
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
@@ -1,3 +1,3 @@
1
1
  module GrapeDoc
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
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.1
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-08-15 00:00:00.000000000 Z
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: Documentation generator for Grape API
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: https://github.com/AlexDenisov/grape_doc
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: Documentation generator for Grape API
149
+ summary: ': Write a gem summary'
134
150
  test_files:
135
151
  - spec/api_document_spec.rb
136
152
  - spec/api_parameter_spec.rb