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.
@@ -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