rdoc 6.6.3.1 → 6.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CONTRIBUTING.rdoc +1 -1
- data/ExampleMarkdown.md +2 -0
- data/ExampleRDoc.rdoc +2 -0
- data/History.rdoc +64 -62
- data/LICENSE.rdoc +2 -0
- data/README.rdoc +13 -0
- data/RI.md +842 -0
- data/TODO.rdoc +8 -7
- data/lib/rdoc/{alias.rb → code_object/alias.rb} +1 -1
- data/lib/rdoc/{class_module.rb → code_object/class_module.rb} +54 -0
- data/lib/rdoc/{context.rb → code_object/context.rb} +1 -1
- data/lib/rdoc/{method_attr.rb → code_object/method_attr.rb} +3 -3
- data/lib/rdoc/{top_level.rb → code_object/top_level.rb} +4 -4
- data/lib/rdoc/code_object.rb +6 -0
- data/lib/rdoc/generator/darkfish.rb +45 -3
- data/lib/rdoc/generator/pot/message_extractor.rb +1 -1
- data/lib/rdoc/generator/pot/po_entry.rb +1 -1
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +23 -0
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +20 -11
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +3 -8
- data/lib/rdoc/generator/template/darkfish/class.rhtml +69 -43
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +367 -392
- data/lib/rdoc/generator/template/darkfish/index.rhtml +7 -6
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +18 -1
- data/lib/rdoc/generator/template/darkfish/page.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/servlet_not_found.rhtml +10 -8
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +5 -2
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +11 -0
- data/lib/rdoc/markdown.kpeg +3 -3
- data/lib/rdoc/markdown.rb +25 -15
- data/lib/rdoc/markup/attribute_manager.rb +2 -2
- data/lib/rdoc/markup/pre_process.rb +9 -6
- data/lib/rdoc/markup/to_bs.rb +26 -1
- data/lib/rdoc/markup/to_html_crossref.rb +12 -13
- data/lib/rdoc/markup/to_markdown.rb +4 -4
- data/lib/rdoc/markup/to_rdoc.rb +15 -7
- data/lib/rdoc/markup.rb +18 -13
- data/lib/rdoc/options.rb +23 -5
- data/lib/rdoc/parser/c.rb +19 -9
- data/lib/rdoc/parser/changelog.rb +2 -2
- data/lib/rdoc/parser/ripper_state_lex.rb +7 -305
- data/lib/rdoc/parser/ruby.rb +26 -8
- data/lib/rdoc/parser.rb +6 -3
- data/lib/rdoc/rd/block_parser.rb +3 -7
- data/lib/rdoc/rd/inline_parser.rb +3 -7
- data/lib/rdoc/rdoc.rb +3 -2
- data/lib/rdoc/ri/driver.rb +11 -7
- data/lib/rdoc/task.rb +2 -3
- data/lib/rdoc/tom_doc.rb +1 -7
- data/lib/rdoc/version.rb +1 -1
- data/lib/rdoc.rb +23 -23
- metadata +27 -24
- data/RI.rdoc +0 -57
- /data/lib/rdoc/{anon_class.rb → code_object/anon_class.rb} +0 -0
- /data/lib/rdoc/{any_method.rb → code_object/any_method.rb} +0 -0
- /data/lib/rdoc/{attr.rb → code_object/attr.rb} +0 -0
- /data/lib/rdoc/{constant.rb → code_object/constant.rb} +0 -0
- /data/lib/rdoc/{context → code_object/context}/section.rb +0 -0
- /data/lib/rdoc/{extend.rb → code_object/extend.rb} +0 -0
- /data/lib/rdoc/{ghost_method.rb → code_object/ghost_method.rb} +0 -0
- /data/lib/rdoc/{include.rb → code_object/include.rb} +0 -0
- /data/lib/rdoc/{meta_method.rb → code_object/meta_method.rb} +0 -0
- /data/lib/rdoc/{mixin.rb → code_object/mixin.rb} +0 -0
- /data/lib/rdoc/{normal_class.rb → code_object/normal_class.rb} +0 -0
- /data/lib/rdoc/{normal_module.rb → code_object/normal_module.rb} +0 -0
- /data/lib/rdoc/{require.rb → code_object/require.rb} +0 -0
- /data/lib/rdoc/{single_class.rb → code_object/single_class.rb} +0 -0
data/TODO.rdoc
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
+
= TODO
|
1
2
|
This file contains some things that might happen in RDoc, or might not.
|
2
3
|
Forward Looking Statements applies.
|
3
4
|
|
4
|
-
|
5
|
+
== RDoc::VERSION.succ
|
5
6
|
|
6
|
-
Blockers:
|
7
|
+
=== Blockers:
|
7
8
|
|
8
9
|
* Update LICENSE to match ruby's switch
|
9
10
|
* The alias keyword should not be bidirectional
|
@@ -13,7 +14,7 @@ Blockers:
|
|
13
14
|
* Fix consumption of , after link like: RDoc[rdoc-ref:RDoc], <- comma here
|
14
15
|
* Remove support for links like Matrix[*rows]
|
15
16
|
|
16
|
-
Nice to have:
|
17
|
+
=== Nice to have:
|
17
18
|
|
18
19
|
* Parse only changed files (like in ruby)
|
19
20
|
* Page of Glory (or Shame) in HTML output showing documentation coverage
|
@@ -26,9 +27,9 @@ Nice to have:
|
|
26
27
|
* Global variable support
|
27
28
|
* Provide the code_object to directive handlers
|
28
29
|
|
29
|
-
|
30
|
+
== More Future
|
30
31
|
|
31
|
-
API changes to RDoc
|
32
|
+
=== API changes to RDoc
|
32
33
|
|
33
34
|
* RDoc::TopLevel#add_method should automatically create the appropriate method
|
34
35
|
class rather than requiring one be passed in.
|
@@ -36,7 +37,7 @@ API changes to RDoc
|
|
36
37
|
* Add versions to RDoc::Markup syntax tree marshal format
|
37
38
|
* Comments can no longer be Strings
|
38
39
|
|
39
|
-
|
40
|
+
== Crazy Ideas
|
40
41
|
|
41
42
|
* Auto-normalize heading levels to look OK. It's weird to see an <h1> in
|
42
43
|
the middle of a method section.
|
@@ -46,7 +47,7 @@ API changes to RDoc
|
|
46
47
|
* Rename Context to Container
|
47
48
|
* Rename NormalClass to Class
|
48
49
|
|
49
|
-
|
50
|
+
== Accessibility
|
50
51
|
|
51
52
|
Page title in right hand side
|
52
53
|
|
@@ -70,7 +70,7 @@ class RDoc::Alias < RDoc::CodeObject
|
|
70
70
|
# HTML id-friendly version of +#new_name+.
|
71
71
|
|
72
72
|
def html_name
|
73
|
-
CGI.escape(@new_name.gsub('-', '-2D')).gsub('%','-').sub(/^-/, '')
|
73
|
+
CGI.escape(@new_name.gsub('-', '-2D')).gsub('%', '-').sub(/^-/, '')
|
74
74
|
end
|
75
75
|
|
76
76
|
def inspect # :nodoc:
|
@@ -223,6 +223,7 @@ class RDoc::ClassModule < RDoc::Context
|
|
223
223
|
def complete min_visibility
|
224
224
|
update_aliases
|
225
225
|
remove_nodoc_children
|
226
|
+
embed_mixins
|
226
227
|
update_includes
|
227
228
|
remove_invisible min_visibility
|
228
229
|
end
|
@@ -710,6 +711,20 @@ class RDoc::ClassModule < RDoc::Context
|
|
710
711
|
@superclass = superclass
|
711
712
|
end
|
712
713
|
|
714
|
+
##
|
715
|
+
# Get all super classes of this class in an array. The last element might be
|
716
|
+
# a string if the name is unknown.
|
717
|
+
|
718
|
+
def super_classes
|
719
|
+
result = []
|
720
|
+
parent = self
|
721
|
+
while parent = parent.superclass
|
722
|
+
result << parent
|
723
|
+
return result if parent.is_a?(String)
|
724
|
+
end
|
725
|
+
result
|
726
|
+
end
|
727
|
+
|
713
728
|
def to_s # :nodoc:
|
714
729
|
if is_alias_for then
|
715
730
|
"#{self.class.name} #{self.full_name} -> #{is_alias_for}"
|
@@ -798,4 +813,43 @@ class RDoc::ClassModule < RDoc::Context
|
|
798
813
|
extends.uniq!
|
799
814
|
end
|
800
815
|
|
816
|
+
def embed_mixins
|
817
|
+
return unless options.embed_mixins
|
818
|
+
|
819
|
+
includes.each do |include|
|
820
|
+
next if String === include.module
|
821
|
+
include.module.method_list.each do |code_object|
|
822
|
+
add_method(prepare_to_embed(code_object))
|
823
|
+
end
|
824
|
+
include.module.constants.each do |code_object|
|
825
|
+
add_constant(prepare_to_embed(code_object))
|
826
|
+
end
|
827
|
+
include.module.attributes.each do |code_object|
|
828
|
+
add_attribute(prepare_to_embed(code_object))
|
829
|
+
end
|
830
|
+
end
|
831
|
+
|
832
|
+
extends.each do |ext|
|
833
|
+
next if String === ext.module
|
834
|
+
ext.module.method_list.each do |code_object|
|
835
|
+
add_method(prepare_to_embed(code_object, true))
|
836
|
+
end
|
837
|
+
ext.module.attributes.each do |code_object|
|
838
|
+
add_attribute(prepare_to_embed(code_object, true))
|
839
|
+
end
|
840
|
+
end
|
841
|
+
end
|
842
|
+
|
843
|
+
private
|
844
|
+
|
845
|
+
def prepare_to_embed(code_object, singleton=false)
|
846
|
+
code_object = code_object.dup
|
847
|
+
code_object.mixin_from = code_object.parent
|
848
|
+
code_object.singleton = true if singleton
|
849
|
+
set_current_section(code_object.section.title, code_object.section.comment)
|
850
|
+
# add_method and add_attribute will reassign self's visibility back to the method/attribute
|
851
|
+
# so we need to sync self's visibility with the object's to properly retain that information
|
852
|
+
self.visibility = code_object.visibility
|
853
|
+
code_object
|
854
|
+
end
|
801
855
|
end
|
@@ -268,8 +268,8 @@ class RDoc::MethodAttr < RDoc::CodeObject
|
|
268
268
|
when 'const_get' then 'const'
|
269
269
|
when 'new' then
|
270
270
|
$1.split('::').last. # ClassName => class_name
|
271
|
-
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
272
|
-
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
271
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
272
|
+
gsub(/([a-z\d])([A-Z])/, '\1_\2').
|
273
273
|
downcase
|
274
274
|
else
|
275
275
|
$2
|
@@ -291,7 +291,7 @@ class RDoc::MethodAttr < RDoc::CodeObject
|
|
291
291
|
def html_name
|
292
292
|
require 'cgi/util'
|
293
293
|
|
294
|
-
CGI.escape(@name.gsub('-', '-2D')).gsub('%','-').sub(/^-/, '')
|
294
|
+
CGI.escape(@name.gsub('-', '-2D')).gsub('%', '-').sub(/^-/, '')
|
295
295
|
end
|
296
296
|
|
297
297
|
##
|
@@ -183,8 +183,8 @@ class RDoc::TopLevel < RDoc::Context
|
|
183
183
|
"#<%s:0x%x %p modules: %p classes: %p>" % [
|
184
184
|
self.class, object_id,
|
185
185
|
base_name,
|
186
|
-
@modules.map { |n,m| m },
|
187
|
-
@classes.map { |n,c| c }
|
186
|
+
@modules.map { |n, m| m },
|
187
|
+
@classes.map { |n, c| c }
|
188
188
|
]
|
189
189
|
end
|
190
190
|
|
@@ -254,8 +254,8 @@ class RDoc::TopLevel < RDoc::Context
|
|
254
254
|
q.text "base name: #{base_name.inspect}"
|
255
255
|
q.breakable
|
256
256
|
|
257
|
-
items = @modules.map { |n,m| m }
|
258
|
-
items.concat @modules.map { |n,c| c }
|
257
|
+
items = @modules.map { |n, m| m }
|
258
|
+
items.concat @modules.map { |n, c| c }
|
259
259
|
q.seplist items do |mod| q.pp mod end
|
260
260
|
end
|
261
261
|
end
|
data/lib/rdoc/code_object.rb
CHANGED
@@ -96,6 +96,11 @@ class RDoc::CodeObject
|
|
96
96
|
|
97
97
|
attr_accessor :viewer
|
98
98
|
|
99
|
+
##
|
100
|
+
# When mixed-in to a class, this points to the Context in which it was originally defined.
|
101
|
+
|
102
|
+
attr_accessor :mixin_from
|
103
|
+
|
99
104
|
##
|
100
105
|
# Creates a new CodeObject that will document itself and its children
|
101
106
|
|
@@ -111,6 +116,7 @@ class RDoc::CodeObject
|
|
111
116
|
@full_name = nil
|
112
117
|
@store = nil
|
113
118
|
@track_visibility = true
|
119
|
+
@mixin_from = nil
|
114
120
|
|
115
121
|
initialize_visibility
|
116
122
|
end
|
@@ -677,7 +677,6 @@ class RDoc::Generator::Darkfish
|
|
677
677
|
return body if body =~ /<html/
|
678
678
|
|
679
679
|
head_file = @template_dir + '_head.rhtml'
|
680
|
-
footer_file = @template_dir + '_footer.rhtml'
|
681
680
|
|
682
681
|
<<-TEMPLATE
|
683
682
|
<!DOCTYPE html>
|
@@ -687,8 +686,6 @@ class RDoc::Generator::Darkfish
|
|
687
686
|
#{head_file.read}
|
688
687
|
|
689
688
|
#{body}
|
690
|
-
|
691
|
-
#{footer_file.read}
|
692
689
|
TEMPLATE
|
693
690
|
end
|
694
691
|
|
@@ -783,4 +780,49 @@ class RDoc::Generator::Darkfish
|
|
783
780
|
template
|
784
781
|
end
|
785
782
|
|
783
|
+
# Returns an excerpt of the content for usage in meta description tags
|
784
|
+
def excerpt(content)
|
785
|
+
text = case content
|
786
|
+
when RDoc::Comment
|
787
|
+
content.text
|
788
|
+
when RDoc::Markup::Document
|
789
|
+
# This case is for page files that are not markdown nor rdoc
|
790
|
+
# We convert them to markdown for now as it's easier to extract the text
|
791
|
+
formatter = RDoc::Markup::ToMarkdown.new
|
792
|
+
formatter.start_accepting
|
793
|
+
formatter.accept_document(content)
|
794
|
+
formatter.end_accepting
|
795
|
+
else
|
796
|
+
content
|
797
|
+
end
|
798
|
+
|
799
|
+
# Match from a capital letter to the first period, discarding any links, so
|
800
|
+
# that we don't end up matching badges in the README
|
801
|
+
first_paragraph_match = text.match(/[A-Z][^\.:\/]+\./)
|
802
|
+
return text[0...150].gsub(/\n/, " ").squeeze(" ") unless first_paragraph_match
|
803
|
+
|
804
|
+
extracted_text = first_paragraph_match[0]
|
805
|
+
second_paragraph = first_paragraph_match.post_match.match(/[A-Z][^\.:\/]+\./)
|
806
|
+
extracted_text << " " << second_paragraph[0] if second_paragraph
|
807
|
+
|
808
|
+
extracted_text[0...150].gsub(/\n/, " ").squeeze(" ")
|
809
|
+
end
|
810
|
+
|
811
|
+
def generate_ancestor_list(ancestors, klass)
|
812
|
+
return '' if ancestors.empty?
|
813
|
+
|
814
|
+
ancestor = ancestors.shift
|
815
|
+
content = +'<ul><li>'
|
816
|
+
|
817
|
+
if ancestor.is_a?(RDoc::NormalClass)
|
818
|
+
content << "<a href=\"#{klass.aref_to ancestor.path}\">#{ancestor.full_name}</a>"
|
819
|
+
else
|
820
|
+
content << ancestor.to_s
|
821
|
+
end
|
822
|
+
|
823
|
+
# Recursively call the method for the remaining ancestors
|
824
|
+
content << generate_ancestor_list(ancestors, klass)
|
825
|
+
|
826
|
+
content << '</li></ul>'
|
827
|
+
end
|
786
828
|
end
|
@@ -29,7 +29,7 @@ class RDoc::Generator::POT::MessageExtractor
|
|
29
29
|
extract_text(klass.comment_location, klass.full_name)
|
30
30
|
|
31
31
|
klass.each_section do |section, constants, attributes|
|
32
|
-
extract_text(section.title
|
32
|
+
extract_text(section.title, "#{klass.full_name}: section title")
|
33
33
|
section.comments.each do |comment|
|
34
34
|
extract_text(comment, "#{klass.full_name}: #{section.title}")
|
35
35
|
end
|
@@ -23,7 +23,7 @@ class RDoc::Generator::POT::POEntry
|
|
23
23
|
attr_reader :flags
|
24
24
|
|
25
25
|
##
|
26
|
-
# Creates a PO entry for +msgid+. Other
|
26
|
+
# Creates a PO entry for +msgid+. Other values can be specified by
|
27
27
|
# +options+.
|
28
28
|
|
29
29
|
def initialize msgid, options = {}
|
@@ -1,7 +1,30 @@
|
|
1
1
|
<meta charset="<%= @options.charset %>">
|
2
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
2
3
|
|
3
4
|
<title><%= h @title %></title>
|
4
5
|
|
6
|
+
<%- if defined?(klass) -%>
|
7
|
+
<meta name="keywords" content="ruby,<%= h "#{klass.type},#{klass.full_name}" %>">
|
8
|
+
|
9
|
+
<%- if klass.comment.empty? -%>
|
10
|
+
<meta name="description" content="Documentation for the <%= h "#{klass.full_name} #{klass.type}" %>">
|
11
|
+
<%- else -%>
|
12
|
+
<meta name="description" content="<%= h "#{klass.type} #{klass.full_name}: #{excerpt(klass.comment)}" %>">
|
13
|
+
<%- end -%>
|
14
|
+
<%- elsif defined?(file) -%>
|
15
|
+
<meta name="keywords" content="ruby,documentation,<%= h file.page_name %>">
|
16
|
+
<meta name="description" content="<%= h "#{file.page_name}: #{excerpt(file.comment)}" %>">
|
17
|
+
<%- elsif @title -%>
|
18
|
+
<meta name="keywords" content="ruby,documentation,<%= h @title %>">
|
19
|
+
|
20
|
+
<%- if @options.main_page and
|
21
|
+
main_page = @files.find { |f| f.full_name == @options.main_page } then %>
|
22
|
+
<meta name="description" content="<%= h "#{@title}: #{excerpt(main_page.comment)}" %>">
|
23
|
+
<%- else -%>
|
24
|
+
<meta name="description" content="Documentation for <%= h @title %>">
|
25
|
+
<%- end -%>
|
26
|
+
<%- end -%>
|
27
|
+
|
5
28
|
<script type="text/javascript">
|
6
29
|
var rdoc_rel_prefix = "<%= h asset_rel_prefix %>/";
|
7
30
|
var index_rel_prefix = "<%= h rel_prefix %>/";
|
@@ -1,12 +1,21 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
<
|
4
|
-
|
1
|
+
<% if (class_methods = klass.class_method_list.sort).any? %>
|
2
|
+
<div class="nav-section">
|
3
|
+
<h3>Class Methods</h3>
|
4
|
+
<ul class="link-list" role="directory">
|
5
|
+
<%- class_methods.each do |meth| -%>
|
6
|
+
<li <%- if meth.calls_super %>class="calls-super" <%- end %>><a href="#<%= meth.aref %>"><%= h meth.name -%></a></li>
|
7
|
+
<%- end -%>
|
8
|
+
</ul>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
5
11
|
|
6
|
-
|
7
|
-
|
8
|
-
<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
<%- end -%>
|
12
|
+
<% if (instance_methods = klass.instance_methods.sort).any? %>
|
13
|
+
<div class="nav-section">
|
14
|
+
<h3>Instance Methods</h3>
|
15
|
+
<ul class="link-list" role="directory">
|
16
|
+
<%- instance_methods.each do |meth| -%>
|
17
|
+
<li <%- if meth.calls_super %>class="calls-super" <%- end %>><a href="#<%= meth.aref %>"><%= h meth.name -%></a></li>
|
18
|
+
<%- end -%>
|
19
|
+
</ul>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
@@ -1,11 +1,6 @@
|
|
1
|
-
<%- if klass.type == 'class'
|
1
|
+
<%- if klass.type == 'class' && (ancestors = klass.super_classes).any? -%>
|
2
2
|
<div id="parent-class-section" class="nav-section">
|
3
|
-
<h3>
|
4
|
-
|
5
|
-
<%- if klass.superclass and not String === klass.superclass then -%>
|
6
|
-
<p class="link"><a href="<%= klass.aref_to klass.superclass.path %>"><%= klass.superclass.full_name %></a>
|
7
|
-
<%- else -%>
|
8
|
-
<p class="link"><%= klass.superclass %>
|
9
|
-
<%- end -%>
|
3
|
+
<h3>Ancestors</h3>
|
4
|
+
<%= generate_ancestor_list(ancestors, klass) %>
|
10
5
|
</div>
|
11
6
|
<%- end -%>
|
@@ -1,23 +1,24 @@
|
|
1
1
|
<body id="top" role="document" class="<%= klass.type %>">
|
2
|
-
|
2
|
+
<%= render '_sidebar_toggle.rhtml' %>
|
3
|
+
|
4
|
+
<nav id="navigation" role="navigation">
|
3
5
|
<div id="project-navigation">
|
4
6
|
<%= render '_sidebar_navigation.rhtml' %>
|
5
7
|
<%= render '_sidebar_search.rhtml' %>
|
6
8
|
</div>
|
7
9
|
|
8
10
|
<%= render '_sidebar_table_of_contents.rhtml' %>
|
11
|
+
<%= render '_sidebar_sections.rhtml' %>
|
12
|
+
<%= render '_sidebar_parent.rhtml' %>
|
13
|
+
<%= render '_sidebar_includes.rhtml' %>
|
14
|
+
<%= render '_sidebar_extends.rhtml' %>
|
15
|
+
<%= render '_sidebar_methods.rhtml' %>
|
9
16
|
|
10
|
-
|
11
|
-
<%= render '_sidebar_sections.rhtml' %>
|
12
|
-
<%= render '_sidebar_parent.rhtml' %>
|
13
|
-
<%= render '_sidebar_includes.rhtml' %>
|
14
|
-
<%= render '_sidebar_extends.rhtml' %>
|
15
|
-
<%= render '_sidebar_methods.rhtml' %>
|
16
|
-
</div>
|
17
|
+
<%= render '_footer.rhtml' %>
|
17
18
|
</nav>
|
18
19
|
|
19
20
|
<main role="main" aria-labelledby="<%=h klass.aref %>">
|
20
|
-
<h1 id="<%=h klass.aref %>" class="<%= klass.type %>">
|
21
|
+
<h1 id="<%=h klass.aref %>" class="anchor-link <%= klass.type %>">
|
21
22
|
<%= klass.type %> <%= klass.full_name %>
|
22
23
|
</h1>
|
23
24
|
|
@@ -26,7 +27,7 @@
|
|
26
27
|
</section>
|
27
28
|
|
28
29
|
<%- klass.each_section do |section, constants, attributes| -%>
|
29
|
-
<section id="<%= section.aref %>" class="documentation-section">
|
30
|
+
<section id="<%= section.aref %>" class="documentation-section anchor-link">
|
30
31
|
<%- if section.title then -%>
|
31
32
|
<header class="documentation-section-title">
|
32
33
|
<h2>
|
@@ -53,7 +54,13 @@
|
|
53
54
|
<%- constants.each do |const| -%>
|
54
55
|
<dt id="<%= const.name %>"><%= const.name %>
|
55
56
|
<%- if const.comment then -%>
|
56
|
-
<dd
|
57
|
+
<dd>
|
58
|
+
<%- if const.mixin_from then -%>
|
59
|
+
<div class="mixin-from">
|
60
|
+
Included from <a href="<%= klass.aref_to(const.mixin_from.path)%>"><%= const.mixin_from.full_name %></a>
|
61
|
+
</div>
|
62
|
+
<%- end -%>
|
63
|
+
<%= const.description.strip %>
|
57
64
|
<%- else -%>
|
58
65
|
<dd class="missing-docs">(Not documented)
|
59
66
|
<%- end -%>
|
@@ -69,13 +76,20 @@
|
|
69
76
|
</header>
|
70
77
|
|
71
78
|
<%- attributes.each do |attrib| -%>
|
72
|
-
<div id="<%= attrib.aref %>" class="method-detail">
|
79
|
+
<div id="<%= attrib.aref %>" class="method-detail anchor-link">
|
73
80
|
<div class="method-heading attribute-method-heading">
|
74
|
-
<
|
75
|
-
class="
|
81
|
+
<a href="#<%= attrib.aref %>" title="Link to this attribute">
|
82
|
+
<span class="method-name"><%= h attrib.name %></span>
|
83
|
+
<span class="attribute-access-type">[<%= attrib.rw %>]</span>
|
84
|
+
</a>
|
76
85
|
</div>
|
77
86
|
|
78
87
|
<div class="method-description">
|
88
|
+
<%- if attrib.mixin_from then -%>
|
89
|
+
<div class="mixin-from">
|
90
|
+
<%= attrib.singleton ? "Extended" : "Included" %> from <a href="<%= klass.aref_to(attrib.mixin_from.path)%>"><%= attrib.mixin_from.full_name %></a>
|
91
|
+
</div>
|
92
|
+
<%- end -%>
|
79
93
|
<%- if attrib.comment then -%>
|
80
94
|
<%= attrib.description.strip %>
|
81
95
|
<%- else -%>
|
@@ -91,44 +105,62 @@
|
|
91
105
|
next if visibilities.empty?
|
92
106
|
visibilities.each do |visibility, methods|
|
93
107
|
next if methods.empty? %>
|
94
|
-
<section id="<%= visibility %>-<%= type %>-<%= section.aref %>-method-details" class="method-section">
|
108
|
+
<section id="<%= visibility %>-<%= type %>-<%= section.aref %>-method-details" class="method-section anchor-link">
|
95
109
|
<header>
|
96
110
|
<h3><%= visibility.to_s.capitalize %> <%= type.capitalize %> Methods</h3>
|
97
111
|
</header>
|
98
112
|
|
99
113
|
<%- methods.each do |method| -%>
|
100
|
-
<div id="<%= method.aref %>" class="method-detail <%= method.is_alias_for ? "method-alias" : '' %>">
|
114
|
+
<div id="<%= method.aref %>" class="method-detail anchor-link <%= method.is_alias_for ? "method-alias" : '' %>">
|
101
115
|
<div class="method-header">
|
102
116
|
<%- if (call_seq = method.call_seq) then -%>
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
117
|
+
<%- call_seq.strip.split("\n").each_with_index do |call_seq, i| -%>
|
118
|
+
<div class="method-heading">
|
119
|
+
<a href="#<%= method.aref %>" title="Link to this method">
|
120
|
+
<span class="method-callseq">
|
121
|
+
<%= h(call_seq.strip.
|
122
|
+
gsub( /^\w+\./m, '')).
|
123
|
+
gsub(/(.*)[-=]>/, '\1→') %>
|
124
|
+
</span>
|
125
|
+
</a>
|
126
|
+
</div>
|
112
127
|
<%- end -%>
|
113
|
-
</div>
|
114
|
-
<%- end -%>
|
115
128
|
<%- elsif method.has_call_seq? then -%>
|
116
|
-
|
117
|
-
|
118
|
-
|
129
|
+
<div class="method-heading">
|
130
|
+
<a href="#<%= method.aref %>" title="Link to this method">
|
131
|
+
<span class="method-name"><%= h method.name %></span>
|
132
|
+
</a>
|
133
|
+
</div>
|
119
134
|
<%- else -%>
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
</div>
|
135
|
+
<div class="method-heading">
|
136
|
+
<a href="#<%= method.aref %>" title="Link to this method">
|
137
|
+
<span class="method-name"><%= h method.name %></span>
|
138
|
+
<span class="method-args"><%= h method.param_seq %></span>
|
139
|
+
</a>
|
140
|
+
</div>
|
127
141
|
<%- end -%>
|
128
142
|
</div>
|
129
143
|
|
144
|
+
<%- if method.token_stream -%>
|
145
|
+
<div class="method-controls">
|
146
|
+
<details class="method-source-toggle">
|
147
|
+
<summary>Source</summary>
|
148
|
+
</details>
|
149
|
+
</div>
|
150
|
+
<%- end -%>
|
151
|
+
|
130
152
|
<%- unless method.skip_description? then -%>
|
131
153
|
<div class="method-description">
|
154
|
+
<%- if method.token_stream then -%>
|
155
|
+
<div class="method-source-code" id="<%= method.html_name %>-source">
|
156
|
+
<pre><%= method.markup_code %></pre>
|
157
|
+
</div>
|
158
|
+
<%- end -%>
|
159
|
+
<%- if method.mixin_from then -%>
|
160
|
+
<div class="mixin-from">
|
161
|
+
<%= method.singleton ? "Extended" : "Included" %> from <a href="<%= klass.aref_to(method.mixin_from.path)%>"><%= method.mixin_from.full_name %></a>
|
162
|
+
</div>
|
163
|
+
<%- end -%>
|
132
164
|
<%- if method.comment then -%>
|
133
165
|
<%= method.description.strip %>
|
134
166
|
<%- else -%>
|
@@ -143,12 +175,6 @@
|
|
143
175
|
%>
|
144
176
|
</div>
|
145
177
|
<%- end -%>
|
146
|
-
|
147
|
-
<%- if method.token_stream then -%>
|
148
|
-
<div class="method-source-code" id="<%= method.html_name %>-source">
|
149
|
-
<pre><%= method.markup_code %></pre>
|
150
|
-
</div>
|
151
|
-
<%- end -%>
|
152
178
|
</div>
|
153
179
|
<%- end -%>
|
154
180
|
|