yard-go 0.5.0

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 (42) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +5 -0
  4. data/lib/yard-go.rb +14 -0
  5. data/lib/yard-go/code_objects.rb +86 -0
  6. data/lib/yard-go/extensions.rb +64 -0
  7. data/lib/yard-go/handlers.rb +186 -0
  8. data/lib/yard-go/helpers.rb +94 -0
  9. data/lib/yard-go/parser.rb +194 -0
  10. data/lib/yard-go/version.rb +3 -0
  11. data/templates/default/bare_struct/html/fields.erb +15 -0
  12. data/templates/default/bare_struct/html/inherited_fields.erb +15 -0
  13. data/templates/default/bare_struct/html/method_signature.erb +18 -0
  14. data/templates/default/bare_struct/html/setup.rb +11 -0
  15. data/templates/default/field/html/method_signature.erb +4 -0
  16. data/templates/default/field/html/setup.rb +1 -0
  17. data/templates/default/fulldoc/html/css/common.css +33 -0
  18. data/templates/default/fulldoc/html/css/highlight.github.css +123 -0
  19. data/templates/default/fulldoc/html/full_list_package.erb +2 -0
  20. data/templates/default/fulldoc/html/setup.rb +10 -0
  21. data/templates/default/interface/html/implemented_by.erb +5 -0
  22. data/templates/default/interface/html/setup.rb +6 -0
  23. data/templates/default/layout/html/layout.erb +29 -0
  24. data/templates/default/layout/html/setup.rb +33 -0
  25. data/templates/default/method_details/html/source.erb +10 -0
  26. data/templates/default/module/html/box_info.erb +3 -0
  27. data/templates/default/module/html/constant_summary.erb +22 -0
  28. data/templates/default/module/html/inherited_methods.erb +18 -0
  29. data/templates/default/module/html/item_summary.erb +23 -0
  30. data/templates/default/module/html/method_details_list.erb +9 -0
  31. data/templates/default/module/html/packages.erb +4 -0
  32. data/templates/default/module/html/setup.rb +33 -0
  33. data/templates/default/package/html/list_summary.erb +12 -0
  34. data/templates/default/package/html/setup.rb +22 -0
  35. data/templates/default/package/html/type_details.erb +9 -0
  36. data/templates/default/struct/html/fields_details.erb +9 -0
  37. data/templates/default/struct/html/fields_summary.erb +12 -0
  38. data/templates/default/struct/html/implemented_interfaces.erb +5 -0
  39. data/templates/default/struct/html/inherited_fields.erb +15 -0
  40. data/templates/default/struct/html/setup.rb +9 -0
  41. data/yard-go.gemspec +15 -0
  42. metadata +83 -0
@@ -0,0 +1,6 @@
1
+ include T('default/module/html')
2
+
3
+ def init
4
+ super
5
+ sections.place(:implemented_by).before(:constant_summary)
6
+ end
@@ -0,0 +1,29 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <%= erb(:headers) %>
5
+ </head>
6
+ <body>
7
+ <div class="nav_wrap">
8
+ <iframe id="nav" src="<%= @nav_url %>"></iframe>
9
+ <div id="resizer"></div>
10
+ </div>
11
+
12
+ <div id="main" tabindex="-1">
13
+ <div id="header">
14
+ <%= erb(:breadcrumb) %>
15
+ <%= erb(:search) %>
16
+ <div class="clear"></div>
17
+ </div>
18
+
19
+ <iframe id="search_frame"></iframe>
20
+
21
+ <div id="content">
22
+ <!--REGION_DISCLAIMER_DO_NOT_REMOVE-->
23
+ <%= yieldall %>
24
+ </div>
25
+
26
+ <%= erb(:footer) %>
27
+ </div>
28
+ </body>
29
+ </html>
@@ -0,0 +1,33 @@
1
+ def stylesheets
2
+ super + %w(css/highlight.github.css)
3
+ end
4
+
5
+ def menu_lists
6
+ [ { :type => 'package', :title => 'Packages', :search_title => 'Package List' },
7
+ { :type => 'method', :title => 'Methods', :search_title => 'Method List' },
8
+ { :type => 'file', :title => 'Files', :search_title => 'File List' } ]
9
+ end
10
+
11
+ def index
12
+ @objects_by_letter = {}
13
+ objects = Registry.all(:struct).sort_by {|o| o.name.to_s }
14
+ objects = run_verifier(objects)
15
+ objects.each {|o| (@objects_by_letter[o.name.to_s[0,1].upcase] ||= []) << o }
16
+ erb(:index)
17
+ end
18
+
19
+ def layout
20
+ @nav_url = url_for_list(!@file || options.index ? 'package' : 'file')
21
+
22
+ if !object || object.is_a?(String)
23
+ @path = nil
24
+ elsif @file
25
+ @path = @file.path
26
+ elsif !object.is_a?(YARD::CodeObjects::NamespaceObject)
27
+ @path = object.parent.path
28
+ else
29
+ @path = object.path
30
+ end
31
+
32
+ erb(:layout)
33
+ end
@@ -0,0 +1,10 @@
1
+ <table class="source_code">
2
+ <tr>
3
+ <td>
4
+ <pre class="lines"><%= "\n\n\n" %><%= h format_lines(object) %></pre>
5
+ </td>
6
+ <td>
7
+ <pre class="code"><span class="info file">// File '<%= h object.file %>'<% if object.line %>, line <%= object.line %><% end %></span><%= "\n\n" %><%= html_syntax_highlight object.source, :go %></pre>
8
+ </td>
9
+ </tr>
10
+ </table>
@@ -0,0 +1,3 @@
1
+ <div class="package signature">
2
+ import "<%= object.type == :package || object.root? ? object.full_path : object.namespace.full_path %>"
3
+ </div>
@@ -0,0 +1,22 @@
1
+ <% {"Constants" => constant_listing, "Variables" => variable_listing}.each do |title, cnsts| %>
2
+ <% if cnsts.size > 0 %>
3
+ <h2><%= title %></h2>
4
+ <% if cnsts.size > 0 %>
5
+ <dl class="constants">
6
+ <% cnsts.each do |cnst| %>
7
+ <dt id="<%= anchor_for(cnst) %>" class="<%= cnst.has_tag?(:deprecated) ? 'deprecated' : '' %>">
8
+ <div class="defn"><%= cnst.tag(:constant_type).text %> <strong><%= cnst.name %></strong> <%= signature_types cnst %> =
9
+ <% if cnst.has_tag?(:readonly) %><span class="note title readonly">readonly</span>
10
+ <% else %><span class="note title writeonly">writable</span><% end %>
11
+ </div>
12
+ <%= yieldall :object => cnst %>
13
+ </dt>
14
+ <dd>
15
+ <h3>Value:</h3>
16
+ <pre class="code"><%= link_types(format_constant(cnst.value)) %></pre>
17
+ </dd>
18
+ <% end %>
19
+ </dl>
20
+ <% end %>
21
+ <% end %>
22
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <% found_method = false %>
2
+ <% object.inheritance_tree(true)[1..-1].each do |superclass| %>
3
+ <% next if superclass.is_a?(YARD::CodeObjects::Proxy) %>
4
+ <% next if options.embed_mixins.size > 0 && options.embed_mixins_match?(superclass) != false %>
5
+ <% meths = prune_method_listing(superclass.meths(:included => false, :inherited => false)) %>
6
+ <% meths.reject! {|m| object.child(:scope => m.scope, :name => m.name) != nil } %>
7
+ <% meths.reject! {|m| m.is_alias? || m.is_attribute? } %>
8
+ <% meths.reject! {|m| m.scope == :class } %>
9
+ <% next if meths.size == 0 %>
10
+ <% if method_listing.size == 0 && !found_method %><h2>Method Summary</h2><% end %>
11
+ <% found_method = true %>
12
+ <h3 class="inherited">Methods <%= superclass.type == :class ? 'inherited' : 'included' %> from <%= linkify superclass %></h3>
13
+ <p class="inherited"><%=
14
+ meths.sort_by {|o| o.name.to_s }.map do |m|
15
+ linkify(m)
16
+ end.join(", ")
17
+ %></p>
18
+ <% end %>
@@ -0,0 +1,23 @@
1
+ <li class="<%= @item.visibility %> <%= @item.has_tag?(:deprecated) ? 'deprecated' : '' %>">
2
+ <span class="summary_signature"><%= signature(@item) %></span>
3
+ <% if object != @item.namespace %>
4
+ <span class="note title not_defined_here">
5
+ <%= @item.namespace.type == :class ? 'inherited' : (@item.scope == :class ? 'extended' : 'included') %>
6
+ from <%= linkify @item, object.relative_path(@item.namespace) %>
7
+ </span>
8
+ <% end %>
9
+ <% if @item.type == :bare_struct || @item.type == :struct %><span class="note title readonly">struct</span><% end %>
10
+ <% if @item.type == :interface %><span class="note title interface">interface</span><% end %>
11
+ <% if @item.has_tag?(:readonly) %><span class="note title readonly">readonly</span><% end %>
12
+ <% if @item.has_tag?(:writeonly) %><span class="note title writeonly">writeonly</span><% end %>
13
+ <% if @item.visibility != :public %><span class="note title <%= @item.visibility %>"><%= @item.visibility %></span><% end %>
14
+ <% if @item.has_tag?(:abstract) %><span class="abstract note title">interface</span><% end %>
15
+ <% if @item.has_tag?(:deprecated) %><span class="deprecated note title">deprecated</span><% end %>
16
+ <% if @item.has_tag?(:api) && @item.tag(:api).text == 'private' %><span class="private note title">private</span><% end %>
17
+
18
+ <% if @item.has_tag?(:deprecated) %>
19
+ <span class="summary_desc"><strong>Deprecated.</strong> <%= htmlify_line @item.tag(:deprecated).text %></span>
20
+ <% else %>
21
+ <span class="summary_desc"><%= htmlify_line docstring_summary(@item) %></span>
22
+ <% end %>
23
+ </li>
@@ -0,0 +1,9 @@
1
+ <% scopes(method_listing(false)) do |list, scope| %>
2
+ <div id="<%= scope %>_method_details" class="method_details_list">
3
+ <h2><%= scope.to_s %> Details</h2>
4
+
5
+ <% list.each_with_index do |meth, i| %>
6
+ <%= yieldall :object => meth, :owner => object, :index => i %>
7
+ <% end %>
8
+ </div>
9
+ <% end %>
@@ -0,0 +1,4 @@
1
+ <div id="subpackages">
2
+ <h2 class="packages">Sub-Packages</h2>
3
+ <p class="children"><%= @packages.map {|pkg| link_object(pkg, pkg.name) }.join(", ") %></p>
4
+ </div>
@@ -0,0 +1,33 @@
1
+ def init
2
+ super
3
+ sections.place(:packages).before(:constant_summary)
4
+ end
5
+
6
+ alias orig_constant_listing constant_listing
7
+
8
+ def constant_listing
9
+ @go_constant_listing ||= orig_constant_listing.select {|o| o.tag(:constant_type).text == "const" }
10
+ end
11
+
12
+ def variable_listing
13
+ @go_variable_listing ||= orig_constant_listing.select {|o| o.tag(:constant_type).text == "var" }
14
+ end
15
+
16
+ def scopes(list)
17
+ [:class, :instance].each do |scope|
18
+ items = list.select {|m| m.scope == scope }
19
+ yield(items, items.first.scope_name) unless items.empty?
20
+ end
21
+ end
22
+
23
+ def groups(list, type = "")
24
+ super(list, "") do |items, scope|
25
+ yield(items, scope.gsub(/\b[a-z]/) {|m| m.upcase })
26
+ end
27
+ end
28
+
29
+ def packages
30
+ @packages = object.children.select {|c| c.type == :package }.sort_by {|c| c.name.to_s }
31
+ return if @packages.size == 0
32
+ erb :packages
33
+ end
@@ -0,0 +1,12 @@
1
+ <% if @items.size > 0 %>
2
+ <h2>
3
+ <%= @name %> Summary
4
+ <small><a href="#" class="summary_toggle">collapse</a></small>
5
+ </h2>
6
+
7
+ <ul class="summary">
8
+ <% @items.each do |t| %>
9
+ <%= yieldall :item => t %>
10
+ <% end %>
11
+ </ul>
12
+ <% end %>
@@ -0,0 +1,22 @@
1
+ include T('default/module/html')
2
+ include YARDGo::CodeObjects
3
+
4
+ def init
5
+ super
6
+ sections.place(:type_summary, [:item_summary], :interface_summary, [:item_summary]).before(:method_summary)
7
+ sections.place(:type_details, [T('bare_struct')]).before(:method_details_list)
8
+
9
+ @types = object.children.select {|c| c.type == :bare_struct }.sort_by {|c| c.name.to_s }
10
+ end
11
+
12
+ def type_summary
13
+ @items = object.children.select {|c| c.type == :bare_struct || c.type == :struct }.sort_by {|c| c.name.to_s }
14
+ @name = "Type"
15
+ erb :list_summary
16
+ end
17
+
18
+ def interface_summary
19
+ @items = object.children.select {|c| c.type == :interface }.sort_by {|c| c.name.to_s }
20
+ @name = "Interface"
21
+ erb :list_summary
22
+ end
@@ -0,0 +1,9 @@
1
+ <% if @types.size > 0 %>
2
+ <div id="type_details" class="method_details_list">
3
+ <h2>Type Details</h2>
4
+
5
+ <% @types.each_with_index do |type, i| %>
6
+ <%= yieldall :object => type, :owner => object, :index => i %>
7
+ <% end %>
8
+ </div>
9
+ <% end %>
@@ -0,0 +1,9 @@
1
+ <% if @fields.size > 0 %>
2
+ <div id="type_details" class="method_details_list">
3
+ <h2>Structure Field Details</h2>
4
+
5
+ <% @fields.each_with_index do |field, i| %>
6
+ <%= yieldall :object => field, :owner => object, :index => i %>
7
+ <% end %>
8
+ </div>
9
+ <% end %>
@@ -0,0 +1,12 @@
1
+ <% if @fields.size > 0 %>
2
+ <h2>
3
+ Structure Field Summary
4
+ <small><a href="#" class="summary_toggle">collapse</a></small>
5
+ </h2>
6
+
7
+ <ul class="summary">
8
+ <% @fields.each do |t| %>
9
+ <%= yieldall :item => t %>
10
+ <% end %>
11
+ </ul>
12
+ <% end %>
@@ -0,0 +1,5 @@
1
+ <% list = object.implemented_interfaces %>
2
+ <% if list.size > 0 %>
3
+ <h3 class="inherited">Implemented Interfaces</h3>
4
+ <p class="inherited"><%= list.sort_by {|o| o.name.to_s }.map {|m| linkify(m) }.join(", ") %></p>
5
+ <% end %>
@@ -0,0 +1,15 @@
1
+ <% found_method = false %>
2
+ <% object.inheritance_tree(true)[1..-1].each do |superclass| %>
3
+ <% next if superclass.is_a?(YARD::CodeObjects::Proxy) %>
4
+ <% next if options.embed_mixins.size > 0 && options.embed_mixins_match?(superclass) != false %>
5
+ <% meths = superclass.children.select {|c| c.type == :field } %>
6
+ <% next if meths.size == 0 %>
7
+ <% if method_listing.size == 0 && !found_method %><h2>Method Summary</h2><% end %>
8
+ <% found_method = true %>
9
+ <h3 class="inherited">Fields <%= superclass.type == :class ? 'inherited' : 'included' %> from <%= linkify superclass %></h3>
10
+ <p class="inherited"><%=
11
+ meths.sort_by {|o| o.name.to_s }.map do |m|
12
+ linkify(m)
13
+ end.join(", ")
14
+ %></p>
15
+ <% end %>
@@ -0,0 +1,9 @@
1
+ include T('default/class/html')
2
+
3
+ def init
4
+ super
5
+ sections.place(:implemented_interfaces).before(:constant_summary)
6
+ sections.place(:fields_summary, [:item_summary], :inherited_fields).before(:method_summary)
7
+ sections.place(:fields_details, [T('field')]).before(:method_details_list)
8
+ @fields = object.children.select {|t| t.type == :field }.sort_by {|t| t.name.to_s }
9
+ end
@@ -0,0 +1,15 @@
1
+ require File.expand_path('../lib/yard-go/version', __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "yard-go"
5
+ s.summary = "YARD plugin for documenting Go source code"
6
+ s.version = YARDGo::VERSION
7
+ s.date = Time.now.strftime('%Y-%m-%d')
8
+ s.author = "Loren Segal"
9
+ s.email = "lsegal@soen.ca"
10
+ s.homepage = "http://github.com/lsegal/yard-go"
11
+ s.platform = Gem::Platform::RUBY
12
+ s.files = Dir.glob("{lib,templates}/**/*") +
13
+ ['LICENSE.txt', 'README.md', __FILE__]
14
+ s.require_paths = ['lib']
15
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: yard-go
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Loren Segal
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-07-01 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description:
14
+ email: lsegal@soen.ca
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/yard-go/code_objects.rb
20
+ - lib/yard-go/extensions.rb
21
+ - lib/yard-go/handlers.rb
22
+ - lib/yard-go/helpers.rb
23
+ - lib/yard-go/parser.rb
24
+ - lib/yard-go/version.rb
25
+ - lib/yard-go.rb
26
+ - templates/default/bare_struct/html/fields.erb
27
+ - templates/default/bare_struct/html/inherited_fields.erb
28
+ - templates/default/bare_struct/html/method_signature.erb
29
+ - templates/default/bare_struct/html/setup.rb
30
+ - templates/default/field/html/method_signature.erb
31
+ - templates/default/field/html/setup.rb
32
+ - templates/default/fulldoc/html/css/common.css
33
+ - templates/default/fulldoc/html/css/highlight.github.css
34
+ - templates/default/fulldoc/html/full_list_package.erb
35
+ - templates/default/fulldoc/html/setup.rb
36
+ - templates/default/interface/html/implemented_by.erb
37
+ - templates/default/interface/html/setup.rb
38
+ - templates/default/layout/html/layout.erb
39
+ - templates/default/layout/html/setup.rb
40
+ - templates/default/method_details/html/source.erb
41
+ - templates/default/module/html/box_info.erb
42
+ - templates/default/module/html/constant_summary.erb
43
+ - templates/default/module/html/inherited_methods.erb
44
+ - templates/default/module/html/item_summary.erb
45
+ - templates/default/module/html/method_details_list.erb
46
+ - templates/default/module/html/packages.erb
47
+ - templates/default/module/html/setup.rb
48
+ - templates/default/package/html/list_summary.erb
49
+ - templates/default/package/html/setup.rb
50
+ - templates/default/package/html/type_details.erb
51
+ - templates/default/struct/html/fields_details.erb
52
+ - templates/default/struct/html/fields_summary.erb
53
+ - templates/default/struct/html/implemented_interfaces.erb
54
+ - templates/default/struct/html/inherited_fields.erb
55
+ - templates/default/struct/html/setup.rb
56
+ - LICENSE.txt
57
+ - README.md
58
+ - yard-go.gemspec
59
+ homepage: http://github.com/lsegal/yard-go
60
+ licenses: []
61
+ metadata: {}
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubyforge_project:
78
+ rubygems_version: 2.0.14
79
+ signing_key:
80
+ specification_version: 4
81
+ summary: YARD plugin for documenting Go source code
82
+ test_files: []
83
+ has_rdoc: