yard-go 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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: