api_def 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cdb595f5b66b430007981a694dd0156a8e086122
4
- data.tar.gz: 7f035fbce6c170108d3312c2777c5c70545c7f2f
3
+ metadata.gz: facc10cef9e3e33751c5509748fd9ca0c8b2a313
4
+ data.tar.gz: d627cb23afbcad348313fe5d77613745302b0176
5
5
  SHA512:
6
- metadata.gz: 9c82ff6bf4a4376c6c828b962fe90f94673ec655d5134d84e3f2cc75aff600609b6b3cc60a4279cfd2027877186fe30e2de04ec4e240ccd52a11b4e709cd2d25
7
- data.tar.gz: 8f3ea1ee1dd08e8323ad55541f45c21ffc98bb69f515d123c3db74eb2e26f318723cd719256c79643276fb50f0bf6d15d7baffb823349f5fb805f890ea6b8f28
6
+ metadata.gz: 56367bd34b1c6a5a9841e56b99805c9d27ed3e8e4ae88cf20c4f8444dcff1f988c6354a7a642f69247caad559fa77d42a8babda72422288b2ffed6d749f25c95
7
+ data.tar.gz: 922530e97e7120658e668a984ed8626198d8ff92abd6d64068d5fa310439d3e900e87ebc1c90737cd783208edf9d0fb6aba035de2670a9d6f4ebfa8bcaef8e97
@@ -1,5 +1,5 @@
1
1
  module ApiDef
2
- VERSION="1.0.1"
2
+ VERSION="1.0.2"
3
3
  # CLI
4
4
  autoload :CLI, 'api_def/cli'
5
5
  autoload :Template, 'api_def/template'
@@ -7,7 +7,7 @@ class ApiDef::CLI < Thor
7
7
  default: 'markdown',
8
8
  required: true,
9
9
  type: :string,
10
- enum: ['markdown', 'html'],
10
+ enum: ApiDef::Template::SUPPORTED_TEMPLATES,
11
11
  desc: 'Output template'
12
12
  }
13
13
  def build(file)
@@ -1,9 +1,10 @@
1
1
  class ApiDef::Parameter < ApiDef::Element
2
- attr_uno :optional, :type
2
+ attr_uno :optional, :type, :value
3
3
 
4
4
  def on_options(options)
5
5
  super
6
6
  self.optional options[:optional]
7
7
  self.type options[:type]
8
+ self.value options[:value]
8
9
  end
9
10
  end
@@ -1,14 +1,12 @@
1
1
  class ApiDef::Template
2
- autoload :Markdown, 'api_def/template/markdown'
3
- autoload :Html, 'api_def/template/html'
2
+ SUPPORTED_TEMPLATES = ['html', 'markdown', 'textile', 'confluence']
3
+
4
+ SUPPORTED_TEMPLATES.each do |tpl|
5
+ self.autoload tpl.capitalize.to_sym, "api_def/template/#{tpl}"
6
+ end
4
7
 
5
8
  def self.find(name)
6
- case name.to_s
7
- when 'html'
8
- ApiDef::Template::Html
9
- when 'markdown'
10
- ApiDef::Template::Markdown
11
- end
9
+ self.const_get name.capitalize
12
10
  end
13
11
 
14
12
  def render(spec)
@@ -0,0 +1,68 @@
1
+ require 'erb'
2
+ require 'json'
3
+
4
+ class ApiDef::Template::Confluence < ApiDef::Template
5
+ TEMPLATE_FILE= %{
6
+ h1. <%= spec.name %>
7
+
8
+ h1. <%= spec.version %>
9
+
10
+ <% spec.elements.each do |ele| -%>
11
+ h2. <%= ele.name %>
12
+
13
+ <%= ele.desc %>
14
+ <% end -%>
15
+
16
+ <% spec.groups.each do |group| -%>
17
+ h2. <%= group.name %>
18
+ ----
19
+
20
+ <%= group.desc %>
21
+ <% group.entries.each do |entry| %>
22
+ h3. <%= entry.name %>
23
+ ----
24
+
25
+ <%= entry.desc %>
26
+
27
+ h4. {{<%= entry.method.to_s.upcase %>}} {{<%= entry.path %>}}
28
+ <% entry.requests.each do |request| -%>
29
+
30
+ h4. Request <%= request.name %>
31
+
32
+ <%= request.desc %>
33
+
34
+ <% request.params.each do |param| -%>
35
+ * {{<%= param.name %>}}<%= " = {{" + param.value.to_s "}}" if param.value %><%= ", " + param.type.to_s if param.type %><%=", Optional" if param.optional %><%= ", " + param.desc.to_s if param.desc %>
36
+ <% end -%>
37
+
38
+ <% end -%>
39
+
40
+ <% entry.responses.each do |response| -%>
41
+
42
+ h4. Response <%= response.name %>
43
+
44
+ <%= response.desc %>
45
+
46
+ {code:language=javascript}
47
+ <%= JSON.pretty_generate(response.body) %>
48
+ {code}
49
+
50
+ <% end -%>
51
+ <% end -%>
52
+ <% end -%>
53
+ }
54
+
55
+ def render(_spec)
56
+ clazz = ::ERB.new(TEMPLATE_FILE, nil, "-").def_class
57
+ clazz.class_eval do
58
+ def initialize(_spec)
59
+ @spec = _spec
60
+ end
61
+
62
+ def spec
63
+ @spec
64
+ end
65
+ end
66
+ clazz.new(_spec).result
67
+ end
68
+ end
@@ -19,6 +19,7 @@ class ApiDef::Template::Html < ApiDef::Template
19
19
  <title>#{spec.name}</title>
20
20
  <style>
21
21
  body {
22
+ font-family: sans-serif;
22
23
  min-width: 200px;
23
24
  max-width: 790px;
24
25
  margin: 0 auto;
@@ -4,6 +4,7 @@ require 'json'
4
4
  class ApiDef::Template::Markdown < ApiDef::Template
5
5
  TEMPLATE_FILE= %{
6
6
  # <%= spec.name %>
7
+
7
8
  # <%= spec.version %>
8
9
 
9
10
  <% spec.elements.each do |ele| -%>
@@ -12,7 +13,7 @@ class ApiDef::Template::Markdown < ApiDef::Template
12
13
  <%= ele.desc %>
13
14
  <% end -%>
14
15
 
15
- <% spec.groups.each do |group| -%>
16
+ <% spec.groups.each do |group| %>
16
17
  ## <%= group.name %>
17
18
 
18
19
  <%= group.desc %>
@@ -21,22 +22,22 @@ class ApiDef::Template::Markdown < ApiDef::Template
21
22
 
22
23
  <%= entry.desc %>
23
24
 
24
- #### `<%= entry.path %>` [<%= entry.method.to_s.upcase %>]
25
+ #### `<%= entry.method.to_s.upcase %>` `<%= entry.path %>`
25
26
  <% entry.requests.each do |request| -%>
26
27
 
27
- ##### Request <%= request.name %>
28
+ #### Request <%= request.name %>
28
29
 
29
30
  <%= request.desc %>
30
31
 
31
32
  <% request.params.each do |param| -%>
32
- + `<%= param.name %>`, <%= param.type %>, <%="Optional, " if param.optional%><%= param.desc %>
33
+ + `<%= param.name %>`<%= " = `" + param.value.to_s + "`" if param.value %><%= ", " + param.type.to_s if param.type %><%=", Optional" if param.optional%><%= ", " + param.desc.to_s if param.desc %>
33
34
  <% end -%>
34
35
 
35
36
  <% end -%>
36
37
 
37
38
  <% entry.responses.each do |response| -%>
38
39
 
39
- ##### Response <%= response.name %>
40
+ #### Response <%= response.name %>
40
41
 
41
42
  <%= response.desc %>
42
43
 
@@ -0,0 +1,64 @@
1
+ require 'erb'
2
+ require 'json'
3
+
4
+ class ApiDef::Template::Textile < ApiDef::Template
5
+ TEMPLATE_FILE= %{
6
+ h1. <%= spec.name %>
7
+
8
+ h1. <%= spec.version %>
9
+
10
+ <% spec.elements.each do |ele| -%>
11
+ h2. <%= ele.name %>
12
+
13
+ <%= ele.desc %>
14
+ <% end -%>
15
+
16
+ <% spec.groups.each do |group| -%>
17
+ h2. <%= group.name %>
18
+
19
+ <%= group.desc %>
20
+ <% group.entries.each do |entry| %>
21
+ h3. <%= entry.name %>
22
+
23
+ <%= entry.desc %>
24
+
25
+ h4. @<%= entry.method.to_s.upcase %>@ @<%= entry.path %>@
26
+ <% entry.requests.each do |request| -%>
27
+
28
+ h4. Request <%= request.name %>
29
+
30
+ <%= request.desc %>
31
+
32
+ <% request.params.each do |param| -%>
33
+ * @<%= param.name %>@<%= " = @" + param.value.to_s + "@" if param.value %><%= ", " + param.type.to_s if param.type %><%=", Optional" if param.optional %><%= ", " + param.desc.to_s if param.desc %>
34
+ <% end -%>
35
+
36
+ <% end -%>
37
+
38
+ <% entry.responses.each do |response| -%>
39
+
40
+ h4. Response <%= response.name %>
41
+
42
+ <%= response.desc %>
43
+
44
+ bc. <%= JSON.pretty_generate(response.body) %>
45
+
46
+ <% end -%>
47
+ <% end -%>
48
+ <% end -%>
49
+ }
50
+
51
+ def render(_spec)
52
+ clazz = ::ERB.new(TEMPLATE_FILE, nil, "-").def_class
53
+ clazz.class_eval do
54
+ def initialize(_spec)
55
+ @spec = _spec
56
+ end
57
+
58
+ def spec
59
+ @spec
60
+ end
61
+ end
62
+ clazz.new(_spec).result
63
+ end
64
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_def
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - YANKE Guo
@@ -85,8 +85,10 @@ files:
85
85
  - lib/api_def/support/attr_array.rb
86
86
  - lib/api_def/support/attr_uno.rb
87
87
  - lib/api_def/support/attr_uno_array.rb
88
+ - lib/api_def/template/confluence.rb
88
89
  - lib/api_def/template/html.rb
89
90
  - lib/api_def/template/markdown.rb
91
+ - lib/api_def/template/textile.rb
90
92
  - lib/api_def/template.rb
91
93
  - lib/api_def.rb
92
94
  - bin/api_def
@@ -115,3 +117,4 @@ signing_key:
115
117
  specification_version: 4
116
118
  summary: API definition tool
117
119
  test_files: []
120
+ has_rdoc: