mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 21:49:06 +02:00
parent
478e0fc710
commit
7ae4b858b3
4 changed files with 41 additions and 8 deletions
|
@ -711,6 +711,20 @@ class RDoc::ClassModule < RDoc::Context
|
||||||
@superclass = superclass
|
@superclass = superclass
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Get all super classes of this class in an array. The last element might be
|
||||||
|
# a string if the name is unknown.
|
||||||
|
|
||||||
|
def super_classes
|
||||||
|
result = []
|
||||||
|
parent = self
|
||||||
|
while parent = parent.superclass
|
||||||
|
result << parent
|
||||||
|
return result if parent.is_a?(String)
|
||||||
|
end
|
||||||
|
result
|
||||||
|
end
|
||||||
|
|
||||||
def to_s # :nodoc:
|
def to_s # :nodoc:
|
||||||
if is_alias_for then
|
if is_alias_for then
|
||||||
"#{self.class.name} #{self.full_name} -> #{is_alias_for}"
|
"#{self.class.name} #{self.full_name} -> #{is_alias_for}"
|
||||||
|
|
|
@ -795,4 +795,22 @@ class RDoc::Generator::Darkfish
|
||||||
|
|
||||||
extracted_text[0...150].gsub(/\n/, " ").squeeze(" ")
|
extracted_text[0...150].gsub(/\n/, " ").squeeze(" ")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def generate_ancestor_list(ancestors, klass)
|
||||||
|
return '' if ancestors.empty?
|
||||||
|
|
||||||
|
ancestor = ancestors.shift
|
||||||
|
content = +'<ul><li>'
|
||||||
|
|
||||||
|
if ancestor.is_a?(RDoc::NormalClass)
|
||||||
|
content << "<a href=\"#{klass.aref_to ancestor.path}\">#{ancestor.full_name}</a>"
|
||||||
|
else
|
||||||
|
content << ancestor.to_s
|
||||||
|
end
|
||||||
|
|
||||||
|
# Recursively call the method for the remaining ancestors
|
||||||
|
content << generate_ancestor_list(ancestors, klass)
|
||||||
|
|
||||||
|
content << '</li></ul>'
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,11 +1,6 @@
|
||||||
<%- if klass.type == 'class' then %>
|
<%- if klass.type == 'class' && (ancestors = klass.super_classes).any? -%>
|
||||||
<div id="parent-class-section" class="nav-section">
|
<div id="parent-class-section" class="nav-section">
|
||||||
<h3>Parent</h3>
|
<h3>Ancestors</h3>
|
||||||
|
<%= generate_ancestor_list(ancestors, klass) %>
|
||||||
<%- if klass.superclass and not String === klass.superclass then -%>
|
|
||||||
<p class="link"><a href="<%= klass.aref_to klass.superclass.path %>"><%= klass.superclass.full_name %></a>
|
|
||||||
<%- else -%>
|
|
||||||
<p class="link"><%= klass.superclass %>
|
|
||||||
<%- end -%>
|
|
||||||
</div>
|
</div>
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
|
|
|
@ -1279,6 +1279,12 @@ class TestRDocClassModule < XrefTestCase
|
||||||
assert_equal @c3_h1, @c3_h2.superclass
|
assert_equal @c3_h1, @c3_h2.superclass
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_super_classes
|
||||||
|
rdoc_c3_h1 = @xref_data.find_module_named('C3::H1')
|
||||||
|
rdoc_object = @xref_data.find_module_named('Object')
|
||||||
|
assert_equal [rdoc_c3_h1, rdoc_object, "BasicObject"], @c3_h2.super_classes
|
||||||
|
end
|
||||||
|
|
||||||
def test_update_aliases_class
|
def test_update_aliases_class
|
||||||
n1 = @xref_data.add_module RDoc::NormalClass, 'N1'
|
n1 = @xref_data.add_module RDoc::NormalClass, 'N1'
|
||||||
n1_k2 = n1.add_module RDoc::NormalClass, 'N2'
|
n1_k2 = n1.add_module RDoc::NormalClass, 'N2'
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue