yard-api 0.2.2 → 0.2.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +16 -3
  3. data/config/yard_api.yml +10 -1
  4. data/lib/yard-api/options.rb +8 -0
  5. data/lib/yard-api/tags/argument_tag.rb +0 -10
  6. data/lib/yard-api/tags.rb +0 -1
  7. data/lib/yard-api/templates/helpers/base_helper.rb +16 -1
  8. data/lib/yard-api/templates/helpers/html_helper.rb +7 -0
  9. data/lib/yard-api/templates/helpers/route_helper.rb +8 -0
  10. data/lib/yard-api/verifier.rb +5 -6
  11. data/lib/yard-api/version.rb +1 -1
  12. data/tasks/yard_api.rake +1 -0
  13. data/templates/api/appendix/json/setup.rb +1 -22
  14. data/templates/api/fulldoc/html/css/common.css +155 -102
  15. data/templates/api/fulldoc/html/css/highlight.css +125 -42
  16. data/templates/api/{layout/html/scripts.erb → fulldoc/html/js/app.js} +24 -20
  17. data/templates/api/fulldoc/html/js/highlight/styles/mono-blue.css +125 -42
  18. data/templates/api/fulldoc/html/setup.rb +1 -1
  19. data/templates/api/fulldoc/json/setup.rb +4 -8
  20. data/templates/api/layout/html/_dynamic_styles.erb +36 -11
  21. data/templates/api/layout/html/layout.erb +3 -2
  22. data/templates/api/layout/html/setup.rb +9 -2
  23. data/templates/api/layout/html/sidebar.erb +5 -4
  24. data/templates/api/layout/json/setup.rb +0 -3
  25. data/templates/api/method_details/html/header.erb +14 -3
  26. data/templates/api/method_details/html/method_signature.erb +10 -2
  27. data/templates/api/method_details/html/setup.rb +10 -15
  28. data/templates/api/tags/html/_example_code_block.erb +44 -1
  29. data/templates/api/tags/html/argument/_list.erb +20 -15
  30. data/templates/api/tags/html/argument/_table.erb +1 -1
  31. data/templates/api/tags/html/argument.erb +2 -2
  32. data/templates/api/tags/html/example_request.erb +3 -3
  33. data/templates/api/tags/html/example_response.erb +2 -2
  34. data/templates/api/topic/html/method_details_list.erb +4 -4
  35. data/templates/api/topic/html/topic_doc.erb +5 -5
  36. metadata +3 -6
  37. data/templates/api/docstring/json/setup.rb +0 -4
  38. data/templates/api/fulldoc/html/js/highlight.zip +0 -0
  39. data/templates/api/topic/json/setup.rb +0 -25
@@ -4,12 +4,16 @@ RouteHelper = YARD::Templates::Helpers::RouteHelper
4
4
 
5
5
  def init
6
6
  sections :header, [:method_signature, T('docstring')]
7
+
8
+
9
+ super
7
10
  end
8
11
 
9
12
  def header
10
13
  routes = get_current_routes
14
+ route = options[:current_route] = routes.first
11
15
 
12
- unless route = routes.first
16
+ unless route
13
17
  ::YARD::APIPlugin.log(
14
18
  "[error] Unable to find route for object: #{object}",
15
19
  ::Logger::ERROR
@@ -39,20 +43,11 @@ def header
39
43
  end
40
44
 
41
45
  @props[:routes] = routes.map do |route|
42
- {}.tap do |spec|
43
- spec[:path] = route.path.spec.to_s.gsub("(.:format)", "")
44
- spec[:verb] = route.verb.source =~ /\^?(\w*)\$/ ? $1.upcase : route.verb.source
45
- end
46
+ {
47
+ path: RouteHelper.get_route_path(route),
48
+ verb: RouteHelper.get_route_verb(route)
49
+ }
46
50
  end
47
51
 
48
52
  erb(:header)
49
- end
50
-
51
- def get_current_routes
52
- controller_name = object.parent.path.underscore
53
- controller_name.sub!("_controller", '') unless controller_name.include?('/')
54
-
55
- action = object.path.sub(/^.*#/, '').sub(/_with_.*$/, '')
56
-
57
- RouteHelper.api_methods_for_controller_and_action(controller_name, action)
58
- end
53
+ end
@@ -1,8 +1,51 @@
1
1
  <% tag = options[:tag] %>
2
+ <% multi_dialect = options[:multi_dialect] %>
2
3
  <% title = tag.name %>
4
+ <%
5
+ json_blob = begin
6
+ JSON.parse(tag.text).to_json
7
+ rescue JSON::ParserError => e
8
+ puts '*' * 80
9
+ puts " Invalid JSON payload in endpoint: #{object.path.to_s}"
10
+ puts " Please make sure it is valid JSON."
11
+ puts '*' * 80
12
+
13
+ if api_options.strict then
14
+ raise e
15
+ else
16
+ return
17
+ end
18
+ end
19
+ %>
3
20
 
4
21
  <% if title && !title.empty? %>
5
22
  <header class="example-title"><%= title.strip %></header>
6
23
  <% end %>
7
24
 
8
- <pre class="example code js"><%= html_syntax_highlight(tag.text, :plain) %></pre>
25
+ <div class="example-codeblocks">
26
+ <% if multi_dialect %>
27
+ <div class="example-codeblocks__tabs">
28
+ <a class="example-codeblocks__tab">JSON</a>
29
+ <a class="example-codeblocks__tab">cURL</a>
30
+ </div>
31
+ <% end %>
32
+
33
+ <pre class="example-codeblocks__example example code js"><%= html_syntax_highlight(tag.text, :plain) %></pre>
34
+ <% if multi_dialect %>
35
+ <pre class="example-codeblocks__example example code shell">
36
+ curl \
37
+ -X <%= YARD::Templates::Helpers::RouteHelper.get_route_verb(options[:current_route]) %> \
38
+ -H "Authorization: Bearer $TOKEN" \
39
+ -H 'Content-Type: application/json' \
40
+ -H 'Accept: application/json' \
41
+ -d '<%= JSON.parse(tag.text).to_json %>' \
42
+ <%=
43
+ [
44
+ "http://&lt;#{api_options.url_title}&gt;",
45
+ api_options.url_prefix,
46
+ YARD::Templates::Helpers::RouteHelper.get_route_path(options[:current_route])
47
+ ].compact.reject(&:empty?).join('')
48
+ %>
49
+ </pre>
50
+ <% end %>
51
+ </div>
@@ -1,21 +1,26 @@
1
- <ul class="argument">
1
+ <ul class="argument-listing">
2
2
  <% @argument_tags.each do |tag| %>
3
- <li>
4
- <code class="argument-name"><%= h tag.unscoped_name %></code>
5
- <span class="argument-type"><%= tag.type %></span>
6
- <% if (tag.accepted_values || []).any? %>
7
- <span class="argument-values fade">
8
- <em>[ <%= tag.accepted_values.join(', ') %> ]</em>
9
- </span>
10
- <% end %>
3
+ <li class="argument-listing__argument">
4
+ <div class="argument-listing__argument-details">
5
+ <code class="argument-listing__argument-name"><%= h tag.name %></code>
6
+ <span class="argument-listing__argument-type"><%= tag.type %></span>
11
7
 
12
- <% if tag.is_required %>
13
- <em class="argument-required">Required</em>
14
- <% end %>
8
+ <% if (tag.accepted_values || []).any? %>
9
+ <span class="argument-listing__argument-values">
10
+ <span>[ <%= tag.accepted_values.join(', ') %> ]</span>
11
+ </span>
12
+ <% end %>
15
13
 
16
- <% if !tag.text.empty? %>
17
- <%= html_markup_markdown(tag.text) %>
18
- <% end %>
14
+ <% if tag.is_required %>
15
+ <span class="argument-listing__argument-required">Required</span>
16
+ <% end %>
17
+ </div>
18
+
19
+ <div class="argument-listing__argument-text">
20
+ <% if !tag.text.empty? %>
21
+ <%= html_markup_markdown(tag.text) %>
22
+ <% end %>
23
+ </div>
19
24
  </li>
20
25
  <% end %>
21
26
  </ul>
@@ -14,7 +14,7 @@
14
14
  <tbody>
15
15
  <% @argument_tags.each do |tag| %>
16
16
  <tr>
17
- <td><code class="argument-name"><%= h tag.unscoped_name %></code></td>
17
+ <td><code class="argument-name"><%= h tag.name %></code></td>
18
18
  <td><span class="argument-type"><%= tag.type %></span></td>
19
19
 
20
20
  <% if has_accepted_values %>
@@ -1,5 +1,5 @@
1
- <section class="endpoint-arguments">
2
- <h4>Parameters:</h4>
1
+ <section>
2
+ <h4 class="arguments-header">Parameters</h4>
3
3
 
4
4
  <% if api_options.tabular_arguments %>
5
5
  <%= erb :"argument/_table" %>
@@ -1,13 +1,13 @@
1
1
  <% if object.has_tag?(:example_request) %>
2
2
  <div class="examples">
3
3
  <% if object.tags(:example_request).length > 1 %>
4
- <h4>Example Requests:</h4>
4
+ <h4>Example Requests</h4>
5
5
  <% else %>
6
- <h4>Example Request:</h4>
6
+ <h4>Example Request</h4>
7
7
  <% end %>
8
8
 
9
9
  <% object.tags(:example_request).each do |tag| %>
10
- <%= tag_partial '_example_code_block', tag %>
10
+ <%= tag_partial '_example_code_block', tag, { multi_dialect: true } %>
11
11
  <% end %>
12
12
  </div>
13
13
  <% end %>
@@ -2,9 +2,9 @@
2
2
  <% tags = object.tags(:example_response) %>
3
3
  <div class="examples example_response">
4
4
  <% if tags.length > 1 %>
5
- <h4>Example Responses:</h4>
5
+ <h4>Example Responses</h4>
6
6
  <% else %>
7
- <h4>Example Response:</h4>
7
+ <h4>Example Response</h4>
8
8
  <% end %>
9
9
 
10
10
  <% tags.each do |tag| %>
@@ -1,5 +1,5 @@
1
- <div id="Services" class="method_details_list">
2
- <% @meths.each_with_index do |meth, i| %>
3
- <%= yieldall :object => meth, :index => i %>
4
- <% end %>
1
+ <div>
2
+ <% @meths.each_with_index do |meth, i| %>
3
+ <%= yieldall :object => meth, :index => i %>
4
+ <% end %>
5
5
  </div>
@@ -11,17 +11,17 @@
11
11
  <% end %>
12
12
 
13
13
  <section>
14
- <header><strong>Interfaces</strong></header>
15
- <ul id="quicklinks">
16
- </ul>
14
+ <h2>Interfaces</h2>
15
+
16
+ <ul id="quicklinks"></ul>
17
17
  </section>
18
18
 
19
19
  <% @json_objects.each do |name, json| %>
20
20
  <% properties = render_properties(json) %>
21
21
  <div class='object_definition'>
22
22
  <h3>
23
- <a name="<%= name %>"></a><%= name %> object synposis:
23
+ <a name="<%= name %>"></a><%= name %> object synopsis:
24
24
  </h3>
25
25
  <pre class="example code"><%= html_syntax_highlight(properties ? properties : json, :plain) %></pre>
26
26
  </div>
27
- <% end %>
27
+ <% end %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yard-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ahmad Amireh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-21 00:00:00.000000000 Z
11
+ date: 2015-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -96,10 +96,9 @@ files:
96
96
  - templates/api/appendix/json/setup.rb
97
97
  - templates/api/docstring/html/setup.rb
98
98
  - templates/api/docstring/html/text.erb
99
- - templates/api/docstring/json/setup.rb
100
99
  - templates/api/fulldoc/html/css/common.css
101
100
  - templates/api/fulldoc/html/css/highlight.css
102
- - templates/api/fulldoc/html/js/highlight.zip
101
+ - templates/api/fulldoc/html/js/app.js
103
102
  - templates/api/fulldoc/html/js/highlight/CHANGES.md
104
103
  - templates/api/fulldoc/html/js/highlight/LICENSE
105
104
  - templates/api/fulldoc/html/js/highlight/README.md
@@ -164,7 +163,6 @@ files:
164
163
  - templates/api/layout/html/footer.erb
165
164
  - templates/api/layout/html/headers.erb
166
165
  - templates/api/layout/html/layout.erb
167
- - templates/api/layout/html/scripts.erb
168
166
  - templates/api/layout/html/setup.rb
169
167
  - templates/api/layout/html/sidebar.erb
170
168
  - templates/api/layout/json/layout.erb
@@ -195,7 +193,6 @@ files:
195
193
  - templates/api/topic/html/method_details_list.erb
196
194
  - templates/api/topic/html/setup.rb
197
195
  - templates/api/topic/html/topic_doc.erb
198
- - templates/api/topic/json/setup.rb
199
196
  - yard-api.gemspec
200
197
  homepage: https://github.com/amireh/yard-api
201
198
  licenses:
@@ -1,4 +0,0 @@
1
- def init
2
- puts "> HI from docstring!"
3
- # sections :text, T('tags')
4
- end
@@ -1,25 +0,0 @@
1
- def init
2
- # sections :header, [:topic_doc, :method_details_list, [T('method_details')]]
3
- sections :method_details_list, [T('method_details')]
4
- @resource = object
5
- # @beta = options[:controllers].any? { |c| c.tag('beta') }
6
- puts "Topic: HEE? #{@resource}"
7
- end
8
-
9
- def method_details_list
10
- @meths = options[:controllers].map { |c| c.meths(:inherited => false, :included => false) }.flatten
11
- @meths = run_verifier(@meths)
12
-
13
- # puts "Methods: #{@meths}"
14
-
15
- buffer = [];
16
-
17
- @meths.each_with_index do |meth, i|
18
- # puts "#{i} => #{meth.tags}"
19
- buffer.push(yieldall :object => meth, :index => i)
20
- end
21
-
22
- puts "Buffer: #{buffer.to_json}"
23
-
24
- buffer.to_json
25
- end