enumerable-statistics 0.1.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/CHANGELOG.md +15 -0
- data/LICENSE +21 -0
- data/README.md +60 -4
- data/Rakefile +11 -0
- data/bench/mean.rb +27 -0
- data/bench/sum.rb +26 -0
- data/bench/variance.rb +30 -0
- data/enumerable-statistics.gemspec +1 -0
- data/ext/enumerable/statistics/extension/statistics.c +811 -46
- data/images/benchmark.png +0 -0
- data/lib/enumerable/statistics/version.rb +1 -1
- data/yard/templates/mathjax/class/dot/setup.rb +6 -0
- data/yard/templates/mathjax/class/dot/superklass.erb +3 -0
- data/yard/templates/mathjax/class/html/constructor_details.erb +8 -0
- data/yard/templates/mathjax/class/html/setup.rb +1 -0
- data/yard/templates/mathjax/class/html/subclasses.erb +4 -0
- data/yard/templates/mathjax/class/setup.rb +36 -0
- data/yard/templates/mathjax/class/text/setup.rb +11 -0
- data/yard/templates/mathjax/class/text/subclasses.erb +5 -0
- data/yard/templates/mathjax/constant/text/header.erb +11 -0
- data/yard/templates/mathjax/constant/text/setup.rb +3 -0
- data/yard/templates/mathjax/docstring/html/abstract.erb +4 -0
- data/yard/templates/mathjax/docstring/html/deprecated.erb +1 -0
- data/yard/templates/mathjax/docstring/html/index.erb +5 -0
- data/yard/templates/mathjax/docstring/html/note.erb +6 -0
- data/yard/templates/mathjax/docstring/html/private.erb +4 -0
- data/yard/templates/mathjax/docstring/html/returns_void.erb +1 -0
- data/yard/templates/mathjax/docstring/html/text.erb +1 -0
- data/yard/templates/mathjax/docstring/html/todo.erb +6 -0
- data/yard/templates/mathjax/docstring/setup.rb +51 -0
- data/yard/templates/mathjax/docstring/text/abstract.erb +2 -0
- data/yard/templates/mathjax/docstring/text/deprecated.erb +2 -0
- data/yard/templates/mathjax/docstring/text/index.erb +2 -0
- data/yard/templates/mathjax/docstring/text/note.erb +4 -0
- data/yard/templates/mathjax/docstring/text/private.erb +2 -0
- data/yard/templates/mathjax/docstring/text/returns_void.erb +1 -0
- data/yard/templates/mathjax/docstring/text/text.erb +1 -0
- data/yard/templates/mathjax/docstring/text/todo.erb +4 -0
- data/yard/templates/mathjax/fulldoc/html/css/common.css +1 -0
- data/yard/templates/mathjax/fulldoc/html/css/full_list.css +58 -0
- data/yard/templates/mathjax/fulldoc/html/css/style.css +481 -0
- data/yard/templates/mathjax/fulldoc/html/frames.erb +17 -0
- data/yard/templates/mathjax/fulldoc/html/full_list.erb +37 -0
- data/yard/templates/mathjax/fulldoc/html/full_list_class.erb +2 -0
- data/yard/templates/mathjax/fulldoc/html/full_list_file.erb +7 -0
- data/yard/templates/mathjax/fulldoc/html/full_list_method.erb +10 -0
- data/yard/templates/mathjax/fulldoc/html/js/app.js +243 -0
- data/yard/templates/mathjax/fulldoc/html/js/full_list.js +216 -0
- data/yard/templates/mathjax/fulldoc/html/js/jquery.js +4 -0
- data/yard/templates/mathjax/fulldoc/html/setup.rb +242 -0
- data/yard/templates/mathjax/layout/dot/header.erb +6 -0
- data/yard/templates/mathjax/layout/dot/setup.rb +14 -0
- data/yard/templates/mathjax/layout/html/breadcrumb.erb +11 -0
- data/yard/templates/mathjax/layout/html/files.erb +11 -0
- data/yard/templates/mathjax/layout/html/footer.erb +5 -0
- data/yard/templates/mathjax/layout/html/headers.erb +15 -0
- data/yard/templates/mathjax/layout/html/index.erb +2 -0
- data/yard/templates/mathjax/layout/html/layout.erb +38 -0
- data/yard/templates/mathjax/layout/html/listing.erb +4 -0
- data/yard/templates/mathjax/layout/html/objects.erb +32 -0
- data/yard/templates/mathjax/layout/html/script_setup.erb +4 -0
- data/yard/templates/mathjax/layout/html/search.erb +13 -0
- data/yard/templates/mathjax/layout/html/setup.rb +87 -0
- data/yard/templates/mathjax/method/html/header.erb +17 -0
- data/yard/templates/mathjax/method/setup.rb +3 -0
- data/yard/templates/mathjax/method/text/header.erb +1 -0
- data/yard/templates/mathjax/method_details/html/header.erb +3 -0
- data/yard/templates/mathjax/method_details/html/method_signature.erb +25 -0
- data/yard/templates/mathjax/method_details/html/source.erb +10 -0
- data/yard/templates/mathjax/method_details/setup.rb +10 -0
- data/yard/templates/mathjax/method_details/text/header.erb +10 -0
- data/yard/templates/mathjax/method_details/text/method_signature.erb +12 -0
- data/yard/templates/mathjax/method_details/text/setup.rb +10 -0
- data/yard/templates/mathjax/module/dot/child.erb +1 -0
- data/yard/templates/mathjax/module/dot/dependencies.erb +3 -0
- data/yard/templates/mathjax/module/dot/header.erb +6 -0
- data/yard/templates/mathjax/module/dot/info.erb +14 -0
- data/yard/templates/mathjax/module/dot/setup.rb +14 -0
- data/yard/templates/mathjax/module/html/attribute_details.erb +10 -0
- data/yard/templates/mathjax/module/html/attribute_summary.erb +8 -0
- data/yard/templates/mathjax/module/html/box_info.erb +43 -0
- data/yard/templates/mathjax/module/html/children.erb +8 -0
- data/yard/templates/mathjax/module/html/constant_summary.erb +11 -0
- data/yard/templates/mathjax/module/html/defines.erb +3 -0
- data/yard/templates/mathjax/module/html/header.erb +5 -0
- data/yard/templates/mathjax/module/html/inherited_attributes.erb +14 -0
- data/yard/templates/mathjax/module/html/inherited_constants.erb +8 -0
- data/yard/templates/mathjax/module/html/inherited_methods.erb +19 -0
- data/yard/templates/mathjax/module/html/item_summary.erb +40 -0
- data/yard/templates/mathjax/module/html/method_details_list.erb +9 -0
- data/yard/templates/mathjax/module/html/method_summary.erb +14 -0
- data/yard/templates/mathjax/module/html/methodmissing.erb +12 -0
- data/yard/templates/mathjax/module/html/pre_docstring.erb +1 -0
- data/yard/templates/mathjax/module/setup.rb +164 -0
- data/yard/templates/mathjax/module/text/children.erb +10 -0
- data/yard/templates/mathjax/module/text/class_meths_list.erb +8 -0
- data/yard/templates/mathjax/module/text/extends.erb +8 -0
- data/yard/templates/mathjax/module/text/header.erb +7 -0
- data/yard/templates/mathjax/module/text/includes.erb +8 -0
- data/yard/templates/mathjax/module/text/instance_meths_list.erb +8 -0
- data/yard/templates/mathjax/module/text/setup.rb +12 -0
- data/yard/templates/mathjax/onefile/html/files.erb +5 -0
- data/yard/templates/mathjax/onefile/html/headers.erb +6 -0
- data/yard/templates/mathjax/onefile/html/layout.erb +29 -0
- data/yard/templates/mathjax/onefile/html/readme.erb +3 -0
- data/yard/templates/mathjax/onefile/html/setup.rb +61 -0
- data/yard/templates/mathjax/root/dot/child.erb +3 -0
- data/yard/templates/mathjax/root/dot/setup.rb +5 -0
- data/yard/templates/mathjax/root/html/setup.rb +1 -0
- data/yard/templates/mathjax/tags/html/example.erb +11 -0
- data/yard/templates/mathjax/tags/html/index.erb +3 -0
- data/yard/templates/mathjax/tags/html/option.erb +24 -0
- data/yard/templates/mathjax/tags/html/overload.erb +14 -0
- data/yard/templates/mathjax/tags/html/see.erb +8 -0
- data/yard/templates/mathjax/tags/html/tag.erb +20 -0
- data/yard/templates/mathjax/tags/setup.rb +55 -0
- data/yard/templates/mathjax/tags/text/example.erb +12 -0
- data/yard/templates/mathjax/tags/text/index.erb +1 -0
- data/yard/templates/mathjax/tags/text/option.erb +20 -0
- data/yard/templates/mathjax/tags/text/overload.erb +19 -0
- data/yard/templates/mathjax/tags/text/see.erb +11 -0
- data/yard/templates/mathjax/tags/text/tag.erb +13 -0
- metadata +134 -2
@@ -0,0 +1,17 @@
|
|
1
|
+
<h1>Method: <%= object.path %></h1>
|
2
|
+
<div class="box_info">
|
3
|
+
<dl>
|
4
|
+
<dt class="">Defined in:</dt>
|
5
|
+
<dd class="">
|
6
|
+
<%= object.file %><% if object.files.size > 1 %><span class="defines">,<br />
|
7
|
+
<%= object.files[1..-1].map {|f| f.first }.join(",<br /> ") %></div>
|
8
|
+
<% end %>
|
9
|
+
</dd>
|
10
|
+
</dl>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="method_details_list">
|
14
|
+
<div id="method_details">
|
15
|
+
<%= yieldall :index => 0 %>
|
16
|
+
</div>
|
17
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= yieldall %>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<h3 class="signature <%= 'first' if @index == 0 %>" id="<%= anchor_for(object) %>">
|
2
|
+
<% if object.tags(:overload).size == 1 %>
|
3
|
+
<%= signature(object.tag(:overload), false) %>
|
4
|
+
<% elsif object.tags(:overload).size > 1 %>
|
5
|
+
<% object.tags(:overload).each do |overload| %>
|
6
|
+
<span class="overload"><%= signature(overload, false) %></span>
|
7
|
+
<% end %>
|
8
|
+
<% else %>
|
9
|
+
<%= signature(object, false) %>
|
10
|
+
<% end %>
|
11
|
+
|
12
|
+
<% if object.aliases.size > 0 %>
|
13
|
+
<span class="aliases">Also known as:
|
14
|
+
<span class="names"><%= object.aliases.map {|o|
|
15
|
+
"<span id='#{anchor_for(o)}'>" + h(o.name.to_s) + "</span>" }.join(", ") %></span>
|
16
|
+
</span>
|
17
|
+
<% end %>
|
18
|
+
|
19
|
+
<% if owner != object.namespace %>
|
20
|
+
<span class="not_defined_here">
|
21
|
+
Originally defined in <%= object.namespace.type %>
|
22
|
+
<%= linkify object, owner.relative_path(object.namespace) %>
|
23
|
+
</span>
|
24
|
+
<% end %>
|
25
|
+
</h3>
|
@@ -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 %></pre>
|
8
|
+
</td>
|
9
|
+
</tr>
|
10
|
+
</table>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<%= title_align_right format_object_title(object) %>
|
2
|
+
|
3
|
+
<%= align_right "(Defined in: #{object.file})" %>
|
4
|
+
<% if object.aliases.size > 0 %>
|
5
|
+
|
6
|
+
<%= align_right "(Also known as: #{object.aliases.map {|o| o.name(true).to_s }.join(',')})" %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<%= yieldall %>
|
10
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
<% if object.tags(:overload).size == 1 %>
|
3
|
+
<%= indent wrap(signature(object.tag(:overload))) %>
|
4
|
+
<% elsif object.tags(:overload).size > 1 %>
|
5
|
+
<% object.tags(:overload).each do |overload| %>
|
6
|
+
<%= indent wrap(signature(overload)) %>
|
7
|
+
<% end %>
|
8
|
+
<% else %>
|
9
|
+
<%= indent wrap(signature(object)) %>
|
10
|
+
<% end %>
|
11
|
+
<%= hr %>
|
12
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= format_path object %> [label="{<%= yieldall.gsub("\n", '') %>}" rank=sink];
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%= object.type %> <%= h object.name %>
|
2
|
+
<% if options.full %>
|
3
|
+
|
|
4
|
+
<% object.attributes.each do |scope, list| %>
|
5
|
+
<% list.sort_by {|name, rw| name.to_s }.each do |name, rw| %>
|
6
|
+
<%= uml_visibility(rw.values.compact.first) %> <%= h (rw[:read]||rw[:write]).name(true).gsub(/=$/,'') %> [<%= 'R' if rw[:read] %><%= 'W' if rw[:write] %>]\l
|
7
|
+
<% end %>
|
8
|
+
<% end %>
|
9
|
+
|
|
10
|
+
<% method_listing.each do |obj| %>
|
11
|
+
<%= uml_visibility obj %> <%= h obj.name(true) %>
|
12
|
+
<%= h(" : #{obj.tag(:return).types.first}") if obj.has_tag?(:return) && obj.tag(:return).types && obj.tag(:return).types.size > 0 %>\l
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
def init
|
2
|
+
@modules = object.children.select {|o| o.type == :module }
|
3
|
+
@classes = object.children.select {|o| o.type == :class }
|
4
|
+
sections :child, [:info], :classes, [T('class')], :header, [T('module')], :dependencies
|
5
|
+
end
|
6
|
+
|
7
|
+
def dependencies
|
8
|
+
return unless options.dependencies
|
9
|
+
erb(:dependencies)
|
10
|
+
end
|
11
|
+
|
12
|
+
def classes
|
13
|
+
@classes.map {|k| yieldall :object => k }.join("\n")
|
14
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% scopes(attr_listing) do |list, scope| %>
|
2
|
+
<div id="<%= scope %>_attr_details" class="attr_details">
|
3
|
+
<h2><%= scope.to_s.capitalize %> Attribute Details</h2>
|
4
|
+
<% list.each_with_index do |meth, i| %>
|
5
|
+
<% rw = meth.attr_info %>
|
6
|
+
<span id="<%= anchor_for(rw[meth.reader? ? :write : :read]) %>"></span>
|
7
|
+
<%= yieldall :object => meth, :owner => object, :index => i %>
|
8
|
+
<% end %>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<div class="box_info">
|
2
|
+
<% if CodeObjects::ClassObject === object && object.superclass %>
|
3
|
+
<dl>
|
4
|
+
<dt>Inherits:</dt>
|
5
|
+
<dd>
|
6
|
+
<span class="inheritName"><%= linkify object.superclass %></span>
|
7
|
+
<% if object.superclass.name != :BasicObject %>
|
8
|
+
<ul class="fullTree">
|
9
|
+
<li><%= linkify P(:Object) %></li>
|
10
|
+
<% object.inheritance_tree.reverse.each_with_index do |obj, i| %>
|
11
|
+
<li class="next"><%= obj == object ? obj.path : linkify(obj) %></li>
|
12
|
+
<% end %>
|
13
|
+
</ul>
|
14
|
+
<a href="#" class="inheritanceTree">show all</a>
|
15
|
+
<% end %>
|
16
|
+
</dd>
|
17
|
+
</dl>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<% [[:class, "Extended by"], [:instance, "Includes"]].each do |scope, name| %>
|
21
|
+
<% if (mix = run_verifier(object.mixins(scope))).size > 0 %>
|
22
|
+
<dl>
|
23
|
+
<dt><%= name %>:</dt>
|
24
|
+
<dd><%= mix.sort_by {|o| o.path }.map {|o| linkify(o) }.join(", ") %></dd>
|
25
|
+
</dl>
|
26
|
+
<% end %>
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
<% if (mixed_into = mixed_into(object)).size > 0 %>
|
30
|
+
<dl>
|
31
|
+
<dt>Included in:</dt>
|
32
|
+
<dd><%= mixed_into.sort_by {|o| o.path }.map {|o| linkify(o) }.join(", ") %></dd>
|
33
|
+
</dl>
|
34
|
+
<% end %>
|
35
|
+
|
36
|
+
<% unless object.root? %>
|
37
|
+
<dl>
|
38
|
+
<dt>Defined in:</dt>
|
39
|
+
<dd><%= erb(:defines) %></dd>
|
40
|
+
</dl>
|
41
|
+
<% end %>
|
42
|
+
</div>
|
43
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<h2>Defined Under Namespace</h2>
|
2
|
+
<p class="children">
|
3
|
+
<% @inner.each do |name, list| %>
|
4
|
+
<% if list.size > 0 %>
|
5
|
+
<strong class="<%= name %>"><%= name.to_s.capitalize %>:</strong> <%= list.map {|child| linkify(child, child.name(true)) }.join(", ") %>
|
6
|
+
<% end %>
|
7
|
+
<% end %>
|
8
|
+
</p>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% if constant_listing.size > 0 %>
|
2
|
+
<h2>Constant Summary</h2>
|
3
|
+
<dl class="constants">
|
4
|
+
<% constant_listing.each do |cnst| %>
|
5
|
+
<dt id="<%= anchor_for(cnst) %>" class="<%= cnst.has_tag?(:deprecated) ? 'deprecated' : '' %>"><%= cnst.name %> =
|
6
|
+
<%= yieldall :object => cnst %>
|
7
|
+
</dt>
|
8
|
+
<dd><pre class="code"><%= format_constant cnst.value %></pre></dd>
|
9
|
+
<% end %>
|
10
|
+
</dl>
|
11
|
+
<% end %>
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<h1><%= format_object_title(object) %>
|
2
|
+
<% if object.has_tag?(:abstract) %><span class="abstract note title">Abstract</span><% end %>
|
3
|
+
<% if object.has_tag?(:deprecated) %><span class="deprecated note title">Deprecated</span><% end %>
|
4
|
+
<% if object.has_tag?(:api) && object.tag(:api).text == 'private' %><span class="private note title">Private</span><% end %>
|
5
|
+
</h1>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% found_method = false %>
|
2
|
+
<% inherited_attr_list do |superclass, attribs| %>
|
3
|
+
<% if attr_listing.size == 0 && !found_method %><h2>Instance Attribute Summary</h2><% end %>
|
4
|
+
<% found_method = true %>
|
5
|
+
<h3 class="inherited">Attributes <%= superclass.type == :class ? 'inherited' : 'included' %> from <%= linkify superclass %></h3>
|
6
|
+
<p class="inherited"><%= attribs.map do |method|
|
7
|
+
name = method.name(true).gsub(/=$/, '')
|
8
|
+
if superclass.type == :module && object.instance_mixins.include?(superclass)
|
9
|
+
name = "##{name}" unless name =~ /^#/
|
10
|
+
end
|
11
|
+
linkify(method, name)
|
12
|
+
end.join(", ")
|
13
|
+
%></p>
|
14
|
+
<% end %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<% found_const = false %>
|
2
|
+
<% inherited_constant_list do |superclass, consts| %>
|
3
|
+
<% if constant_listing.size == 0 && !found_const %><h2>Constant Summary</h2><% end %>
|
4
|
+
<% found_const = true %>
|
5
|
+
<h3 class="inherited">Constants <%= superclass.type == :class ? 'inherited' : 'included' %>
|
6
|
+
from <%= linkify superclass %></h3>
|
7
|
+
<p class="inherited"><%= consts.map {|c| linkify c }.join(", ") %></p>
|
8
|
+
<% end %>
|
@@ -0,0 +1,19 @@
|
|
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
|
+
<% next if meths.size == 0 %>
|
9
|
+
<% if method_listing.size == 0 && !found_method %><h2>Method Summary</h2><% end %>
|
10
|
+
<% found_method = true %>
|
11
|
+
<h3 class="inherited">Methods <%= superclass.type == :class ? 'inherited' : 'included' %> from <%= linkify superclass %></h3>
|
12
|
+
<p class="inherited"><%=
|
13
|
+
meths.sort_by {|o| o.name.to_s }.map do |m|
|
14
|
+
name = m.name(true)
|
15
|
+
name = name.gsub(/^#/,'') if superclass.type == :module && object.class_mixins.include?(superclass)
|
16
|
+
linkify(m, name)
|
17
|
+
end.join(", ")
|
18
|
+
%></p>
|
19
|
+
<% end %>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
<li class="<%= @item.visibility %> <%= @item.has_tag?(:deprecated) ? 'deprecated' : '' %>">
|
2
|
+
<span class="summary_signature">
|
3
|
+
<% if @item.tags(:overload).size == 1 %>
|
4
|
+
<%= signature(@item.tag(:overload), true, false, !@item.attr_info) %>
|
5
|
+
<% else %>
|
6
|
+
<%= signature(@item, true, false, !@item.attr_info) %>
|
7
|
+
<% end %>
|
8
|
+
|
9
|
+
<% if @item.aliases.size > 0 %>
|
10
|
+
(also: <%= @item.aliases.map {|o| h(o.name(true)) }.join(", ") %>)
|
11
|
+
<% end %>
|
12
|
+
</span>
|
13
|
+
<% if object != @item.namespace %>
|
14
|
+
<span class="note title not_defined_here">
|
15
|
+
<%= @item.namespace.type == :class ? 'inherited' : (@item.scope == :class ? 'extended' : 'included') %>
|
16
|
+
from <%= linkify @item, object.relative_path(@item.namespace) %>
|
17
|
+
</span>
|
18
|
+
<% end %>
|
19
|
+
<% if @item.constructor? %>
|
20
|
+
<span class="note title constructor">constructor</span>
|
21
|
+
<% end %>
|
22
|
+
<% if rw = @item.attr_info %>
|
23
|
+
<% if !run_verifier([rw[:read]].compact).empty? && run_verifier([rw[:write]].compact).empty? %>
|
24
|
+
<span class="note title readonly">readonly</span>
|
25
|
+
<% end %>
|
26
|
+
<% if !run_verifier([rw[:write]].compact).empty? && run_verifier([rw[:read]].compact).empty? %>
|
27
|
+
<span class="note title writeonly">writeonly</span>
|
28
|
+
<% end %>
|
29
|
+
<% end %>
|
30
|
+
<% if @item.visibility != :public %><span class="note title <%= @item.visibility %>"><%= @item.visibility %></span><% end %>
|
31
|
+
<% if @item.has_tag?(:abstract) %><span class="abstract note title">abstract</span><% end %>
|
32
|
+
<% if @item.has_tag?(:deprecated) %><span class="deprecated note title">deprecated</span><% end %>
|
33
|
+
<% if @item.has_tag?(:api) && @item.tag(:api).text == 'private' %><span class="private note title">private</span><% end %>
|
34
|
+
|
35
|
+
<% if @item.has_tag?(:deprecated) %>
|
36
|
+
<span class="summary_desc"><strong>Deprecated.</strong> <%= htmlify_line @item.tag(:deprecated).text %></span>
|
37
|
+
<% else %>
|
38
|
+
<span class="summary_desc"><%= htmlify_line docstring_summary(@item) %></span>
|
39
|
+
<% end %>
|
40
|
+
</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.capitalize %> Method 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,14 @@
|
|
1
|
+
<% if method_listing.size > 0 %>
|
2
|
+
<% groups(method_listing) do |list, name| %>
|
3
|
+
<h2>
|
4
|
+
<%= name %>
|
5
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
6
|
+
</h2>
|
7
|
+
|
8
|
+
<ul class="summary">
|
9
|
+
<% list.each do |meth| %>
|
10
|
+
<%= yieldall :item => meth %>
|
11
|
+
<% end %>
|
12
|
+
</ul>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<div id="method_missing_details" class="method_details_list">
|
2
|
+
<h2>Dynamic Method Handling</h2>
|
3
|
+
<p class="notice <%= @mm.namespace == object ? 'this' : 'super' %>">
|
4
|
+
This class handles dynamic methods through the <tt>method_missing</tt> method
|
5
|
+
<% if @mm.namespace != object %>
|
6
|
+
in the class <%= linkify @mm, @mm.namespace.path %>
|
7
|
+
<% end %>
|
8
|
+
</p>
|
9
|
+
<% if @mm.namespace == object %>
|
10
|
+
<%= yieldall :object => @mm, :index => 0 %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
@@ -0,0 +1 @@
|
|
1
|
+
<h2>Overview</h2>
|
@@ -0,0 +1,164 @@
|
|
1
|
+
include Helpers::ModuleHelper
|
2
|
+
|
3
|
+
def init
|
4
|
+
sections :header, :box_info, :pre_docstring, T('docstring'), :children,
|
5
|
+
:constant_summary, [T('docstring')], :inherited_constants,
|
6
|
+
:attribute_summary, [:item_summary], :inherited_attributes,
|
7
|
+
:method_summary, [:item_summary], :inherited_methods,
|
8
|
+
:methodmissing, [T('method_details')],
|
9
|
+
:attribute_details, [T('method_details')],
|
10
|
+
:method_details_list, [T('method_details')]
|
11
|
+
end
|
12
|
+
|
13
|
+
def pre_docstring
|
14
|
+
return if object.docstring.blank?
|
15
|
+
erb(:pre_docstring)
|
16
|
+
end
|
17
|
+
|
18
|
+
def children
|
19
|
+
@inner = [[:modules, []], [:classes, []]]
|
20
|
+
object.children.each do |child|
|
21
|
+
@inner[0][1] << child if child.type == :module
|
22
|
+
@inner[1][1] << child if child.type == :class
|
23
|
+
end
|
24
|
+
@inner.map! {|v| [v[0], run_verifier(v[1].sort_by {|o| o.name.to_s })] }
|
25
|
+
return if (@inner[0][1].size + @inner[1][1].size) == 0
|
26
|
+
erb(:children)
|
27
|
+
end
|
28
|
+
|
29
|
+
def methodmissing
|
30
|
+
mms = object.meths(:inherited => true, :included => true)
|
31
|
+
return unless @mm = mms.find {|o| o.name == :method_missing && o.scope == :instance }
|
32
|
+
erb(:methodmissing)
|
33
|
+
end
|
34
|
+
|
35
|
+
def method_listing(include_specials = true)
|
36
|
+
return @smeths ||= method_listing.reject {|o| special_method?(o) } unless include_specials
|
37
|
+
return @meths if @meths
|
38
|
+
@meths = object.meths(:inherited => false, :included => !options.embed_mixins.empty?)
|
39
|
+
if options.embed_mixins.size > 0
|
40
|
+
@meths = @meths.reject {|m| options.embed_mixins_match?(m.namespace) == false }
|
41
|
+
end
|
42
|
+
@meths = sort_listing(prune_method_listing(@meths))
|
43
|
+
@meths
|
44
|
+
end
|
45
|
+
|
46
|
+
def special_method?(meth)
|
47
|
+
return true if meth.name(true) == '#method_missing'
|
48
|
+
return true if meth.constructor?
|
49
|
+
false
|
50
|
+
end
|
51
|
+
|
52
|
+
def attr_listing
|
53
|
+
return @attrs if @attrs
|
54
|
+
@attrs = []
|
55
|
+
object.inheritance_tree(true).each do |superclass|
|
56
|
+
next if superclass.is_a?(CodeObjects::Proxy)
|
57
|
+
next if options.embed_mixins.size > 0 &&
|
58
|
+
!options.embed_mixins_match?(superclass)
|
59
|
+
[:class, :instance].each do |scope|
|
60
|
+
superclass.attributes[scope].each do |name, rw|
|
61
|
+
attr = prune_method_listing([rw[:read], rw[:write]].compact, false).first
|
62
|
+
@attrs << attr if attr
|
63
|
+
end
|
64
|
+
end
|
65
|
+
break if options.embed_mixins.empty?
|
66
|
+
end
|
67
|
+
@attrs = sort_listing(@attrs)
|
68
|
+
end
|
69
|
+
|
70
|
+
def constant_listing
|
71
|
+
return @constants if @constants
|
72
|
+
@constants = object.constants(:included => false, :inherited => false)
|
73
|
+
@constants += object.cvars
|
74
|
+
@constants = run_verifier(@constants)
|
75
|
+
@constants
|
76
|
+
end
|
77
|
+
|
78
|
+
def sort_listing(list)
|
79
|
+
list.sort_by {|o| [o.scope.to_s, o.name.to_s.downcase] }
|
80
|
+
end
|
81
|
+
|
82
|
+
def inherited_attr_list(&block)
|
83
|
+
object.inheritance_tree(true)[1..-1].each do |superclass|
|
84
|
+
next if superclass.is_a?(YARD::CodeObjects::Proxy)
|
85
|
+
next if options.embed_mixins.size > 0 && options.embed_mixins_match?(superclass) != false
|
86
|
+
attribs = superclass.attributes[:instance]
|
87
|
+
attribs = attribs.reject {|name, rw| object.child(:scope => :instance, :name => name) != nil }
|
88
|
+
attribs = attribs.sort_by {|args| args.first.to_s }.map {|n, m| m[:read] || m[:write] }
|
89
|
+
attribs = prune_method_listing(attribs, false)
|
90
|
+
yield superclass, attribs if attribs.size > 0
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def inherited_constant_list(&block)
|
95
|
+
object.inheritance_tree(true)[1..-1].each do |superclass|
|
96
|
+
next if superclass.is_a?(YARD::CodeObjects::Proxy)
|
97
|
+
next if options.embed_mixins.size > 0 && options.embed_mixins_match?(superclass) != false
|
98
|
+
consts = superclass.constants(:included => false, :inherited => false)
|
99
|
+
consts = consts.reject {|const| object.child(:type => :constant, :name => const.name) != nil }
|
100
|
+
consts = consts.sort_by {|const| const.name.to_s }
|
101
|
+
consts = run_verifier(consts)
|
102
|
+
yield superclass, consts if consts.size > 0
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def docstring_full(obj)
|
107
|
+
docstring = ""
|
108
|
+
if obj.tags(:overload).size == 1 && obj.docstring.empty?
|
109
|
+
docstring = obj.tag(:overload).docstring
|
110
|
+
else
|
111
|
+
docstring = obj.docstring
|
112
|
+
end
|
113
|
+
|
114
|
+
if docstring.summary.empty? && obj.tags(:return).size == 1 && obj.tag(:return).text
|
115
|
+
docstring = Docstring.new(obj.tag(:return).text.gsub(/\A([a-z])/) {|x| x.upcase }.strip)
|
116
|
+
end
|
117
|
+
|
118
|
+
docstring
|
119
|
+
end
|
120
|
+
|
121
|
+
def docstring_summary(obj)
|
122
|
+
docstring_full(obj).summary
|
123
|
+
end
|
124
|
+
|
125
|
+
def groups(list, type = "Method")
|
126
|
+
if groups_data = object.groups
|
127
|
+
list.each {|m| groups_data |= [m.group] if m.group && owner != m.namespace }
|
128
|
+
others = list.select {|m| !m.group || !groups_data.include?(m.group) }
|
129
|
+
groups_data.each do |name|
|
130
|
+
items = list.select {|m| m.group == name }
|
131
|
+
yield(items, name) unless items.empty?
|
132
|
+
end
|
133
|
+
else
|
134
|
+
others = []
|
135
|
+
group_data = {}
|
136
|
+
list.each do |meth|
|
137
|
+
if meth.group
|
138
|
+
(group_data[meth.group] ||= []) << meth
|
139
|
+
else
|
140
|
+
others << meth
|
141
|
+
end
|
142
|
+
end
|
143
|
+
group_data.each {|group, items| yield(items, group) unless items.empty? }
|
144
|
+
end
|
145
|
+
|
146
|
+
scopes(others) {|items, scope| yield(items, "#{scope.to_s.capitalize} #{type} Summary") }
|
147
|
+
end
|
148
|
+
|
149
|
+
def scopes(list)
|
150
|
+
[:class, :instance].each do |scope|
|
151
|
+
items = list.select {|m| m.scope == scope }
|
152
|
+
yield(items, scope) unless items.empty?
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
156
|
+
def mixed_into(object)
|
157
|
+
unless globals.mixed_into
|
158
|
+
globals.mixed_into = {}
|
159
|
+
list = run_verifier Registry.all(:class, :module)
|
160
|
+
list.each {|o| o.mixins.each {|m| (globals.mixed_into[m.path] ||= []) << o } }
|
161
|
+
end
|
162
|
+
|
163
|
+
globals.mixed_into[object.path] || []
|
164
|
+
end
|