api_doc_generation 0.4.0 → 0.4.3
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.
- checksums.yaml +4 -4
- data/README.md +26 -7
- data/lib/api_doc_generation/format_file.rb +9 -3
- data/lib/api_doc_generation/generation.rb +7 -3
- data/lib/api_doc_generation/version.rb +1 -1
- data/lib/rake/tasks/api_doc.rake +3 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc466cb2612dc05d4675097c536b541a3c1c74a6
|
4
|
+
data.tar.gz: 40f6398342e3aa43b3aaa443ed686b751c13b3ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0011170b68b8d86def142ac90396720bae4174ec8a72a31f9648e896b681f09e8b97b12c9fa5c2570167862c896ec23408a5a00e1820875096cb22dc5dfc2458
|
7
|
+
data.tar.gz: 7d6d9cf957b5c7b13e76b642416781138b390c70bd27feb5ad66e32d5d56622a965d174b0870ef64f773ce42d599297a4a33c107182abc8af57ebf1a2d9f724c
|
data/README.md
CHANGED
@@ -18,13 +18,22 @@ Or install it yourself as:
|
|
18
18
|
|
19
19
|
## Usage
|
20
20
|
|
21
|
-
`rake doc:api [
|
21
|
+
`rake doc:api [opts=xxx]`
|
22
22
|
|
23
|
-
__
|
23
|
+
__参数说明:__
|
24
24
|
|
25
|
-
|
25
|
+
* CODES_PATH
|
26
|
+
指定生成代码路径,默认为app/controllers/api
|
27
|
+
* OUT_FORMAT
|
28
|
+
simple_html 或者 detailed_html, 默认使用detailed_html 模板
|
29
|
+
* SHOW_BASE
|
30
|
+
是否为*BaseController结尾的controller生成文档,默认为false
|
26
31
|
|
27
|
-
|
32
|
+
__代码注释格式:__
|
33
|
+
d
|
34
|
+
|
35
|
+
# 文件说明
|
36
|
+
# About: xxxx
|
28
37
|
# Host: 定义api host
|
29
38
|
# Other: ...
|
30
39
|
class Api::UsersController < class Api::BaseController
|
@@ -74,19 +83,22 @@ __代码注释格式:__
|
|
74
83
|
|
75
84
|
__总的来说,注释格式有三种__
|
76
85
|
|
77
|
-
1.
|
86
|
+
1. 只一层
|
87
|
+
|
78
88
|
```
|
79
89
|
# 层级1: 说明
|
80
90
|
```
|
81
91
|
|
82
|
-
2.
|
92
|
+
2. 两层
|
93
|
+
|
83
94
|
```
|
84
95
|
# 层级1:
|
85
96
|
# 层级2: 说明
|
86
97
|
# 层级2: 说明
|
87
98
|
```
|
88
99
|
|
89
|
-
3.
|
100
|
+
3. 超过两层
|
101
|
+
|
90
102
|
```
|
91
103
|
# 层级1:
|
92
104
|
# 层级2: 说明
|
@@ -108,6 +120,13 @@ __总的来说,注释格式有三种__
|
|
108
120
|
|
109
121
|
|
110
122
|
|
123
|
+
## 注意
|
124
|
+
为加强文档规范化,以下情况的controller将不再生成显示出来:
|
125
|
+
|
126
|
+
1. 当前Controller没有文件说明
|
127
|
+
2. 当前controller的actions数量为0
|
128
|
+
3. 当前action没有Return说明
|
129
|
+
|
111
130
|
## Contributing
|
112
131
|
|
113
132
|
1. Fork it
|
@@ -8,6 +8,7 @@ module ApiDocGeneration; module FormatFile; class << self
|
|
8
8
|
klass = class_name.safe_constantize
|
9
9
|
filelines = File.readlines(path)
|
10
10
|
actions = klass.action_methods - klass.superclass.action_methods
|
11
|
+
ctrl_about = get_controller_about(filelines, klass.to_s)
|
11
12
|
|
12
13
|
actions = actions.map do |action|
|
13
14
|
method = klass.instance_method action
|
@@ -16,7 +17,13 @@ module ApiDocGeneration; module FormatFile; class << self
|
|
16
17
|
note = FormatNote.analyze(filelines, line - 2)
|
17
18
|
note["Level"] ||= ''
|
18
19
|
note['Name'] = action.to_s
|
19
|
-
|
20
|
+
|
21
|
+
unless note['Path']
|
22
|
+
note = get_routes(klass, action).merge(note)
|
23
|
+
else
|
24
|
+
note['Path'] = note['Path'][0]['desc']
|
25
|
+
note['Method'] = note['Method'][0]['desc'] rescue nil
|
26
|
+
end
|
20
27
|
|
21
28
|
note
|
22
29
|
end
|
@@ -25,11 +32,10 @@ module ApiDocGeneration; module FormatFile; class << self
|
|
25
32
|
val['Return'].nil?
|
26
33
|
end
|
27
34
|
|
28
|
-
|
29
35
|
{
|
30
36
|
'Path' => path,
|
31
37
|
'Klass' => klass.to_s,
|
32
|
-
'About' =>
|
38
|
+
'About' => ctrl_about,
|
33
39
|
'Actions' => actions
|
34
40
|
}
|
35
41
|
end
|
@@ -7,13 +7,17 @@ require 'api_doc_generation/format_note'
|
|
7
7
|
module ApiDocGeneration; class Generation
|
8
8
|
attr_reader :controller_documents
|
9
9
|
|
10
|
-
def initialize(codes_path = nil, title = '')
|
10
|
+
def initialize(codes_path = nil, title = '', opts = {})
|
11
11
|
codes_path ||= File.expand_path('app/controllers/api', Rails.root)
|
12
12
|
@controller_documents = []
|
13
13
|
@title = title
|
14
|
+
@opts = opts
|
14
15
|
|
15
16
|
each_api_controllers_file(codes_path) do |path|
|
16
|
-
|
17
|
+
ctrl_doc = FormatFile.analyze_file(path)
|
18
|
+
next if ctrl_doc['About']['Desc'].nil? || ctrl_doc['About']['Desc'].length == 0
|
19
|
+
next if ctrl_doc['Actions'].length == 0
|
20
|
+
@controller_documents << ctrl_doc
|
17
21
|
end
|
18
22
|
end
|
19
23
|
|
@@ -45,7 +49,7 @@ module ApiDocGeneration; class Generation
|
|
45
49
|
def each_api_controllers_file(codes_path, &block)
|
46
50
|
paths = codes_path.end_with?('.rb') ? [codes_path] : Dir[codes_path + '/**/*.rb']
|
47
51
|
paths.each do |path|
|
48
|
-
next if path =~ /base_controller.*\.rb$/
|
52
|
+
next if path =~ /base_controller.*\.rb$/ && @opts[:show_base] != true
|
49
53
|
block.call path
|
50
54
|
end
|
51
55
|
end
|
data/lib/rake/tasks/api_doc.rake
CHANGED
@@ -9,7 +9,9 @@ namespace :doc do
|
|
9
9
|
title = ENV['TITLE']
|
10
10
|
|
11
11
|
puts "Template: #{out_format}"
|
12
|
-
generation = ApiDocGeneration::Generation.new(codes_path, title
|
12
|
+
generation = ApiDocGeneration::Generation.new(codes_path, title, {
|
13
|
+
:show_base => ENV['SHOW_BASE'].to_s == 'true' ? true : false
|
14
|
+
})
|
13
15
|
|
14
16
|
puts generation.controller_documents if ENV['SHOW_DOCS']
|
15
17
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: api_doc_generation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jiangzhi.xie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|