Skip to content

Commit c88c36e

Browse files
committed
Add method RDoc::ClassModule#super_classes
The purpose is to list all class ancestors in a new theme (see PR #1182).
1 parent b7d580a commit c88c36e

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

lib/rdoc/code_object/class_module.rb

+14
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,20 @@ def superclass=(superclass)
710710
@superclass = superclass
711711
end
712712

713+
##
714+
# Get all super classes of this class in an array. The last element might be
715+
# a string if the name is unknown.
716+
717+
def super_classes
718+
result = []
719+
parent = self
720+
while parent = parent.superclass
721+
result << parent
722+
return result if parent.is_a?(String)
723+
end
724+
result
725+
end
726+
713727
def to_s # :nodoc:
714728
if is_alias_for then
715729
"#{self.class.name} #{self.full_name} -> #{is_alias_for}"

test/rdoc/test_rdoc_class_module.rb

+6
Original file line numberDiff line numberDiff line change
@@ -1279,6 +1279,12 @@ def test_superclass
12791279
assert_equal @c3_h1, @c3_h2.superclass
12801280
end
12811281

1282+
def test_super_classes
1283+
rdoc_c3_h1 = @xref_data.find_module_named('C3::H1')
1284+
rdoc_object = @xref_data.find_module_named('Object')
1285+
assert_equal [rdoc_c3_h1, rdoc_object, "BasicObject"], @c3_h2.super_classes
1286+
end
1287+
12821288
def test_update_aliases_class
12831289
n1 = @xref_data.add_module RDoc::NormalClass, 'N1'
12841290
n1_k2 = n1.add_module RDoc::NormalClass, 'N2'

0 commit comments

Comments
 (0)