api_def 1.0.1 → 1.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.
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: