Skip to content

Commit 25d11c2

Browse files
unasukest0012
authored andcommitted
Add #namespace and #fully_qualified_namespaces to RDoc::ClassModule
1 parent f6289b7 commit 25d11c2

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

lib/rdoc/code_object/class_module.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,25 @@ def full_name
295295
end
296296
end
297297

298+
##
299+
# Return array of full_name splitted by +::+.
300+
301+
def namespaces
302+
@namespaces ||= full_name.split("::").reject(&:empty?)
303+
end
304+
305+
##
306+
# Return array of fully qualified namespaces.
307+
#
308+
# For example, if full_name is +A::B::C+, this method returns <code>["A", "A::B", "A::B::C"]</code>
309+
310+
def fully_qualified_namespaces
311+
return namespaces if namespaces.length < 2
312+
@fqns ||= namespaces.map.with_index do |_, i|
313+
namespaces[0..i].join("::")
314+
end
315+
end
316+
298317
##
299318
# TODO: filter included items by #display?
300319

test/rdoc/test_rdoc_class_module.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1526,6 +1526,28 @@ def test_update_extends_with_colons
15261526
assert_equal [a, c], @c1.extends
15271527
end
15281528

1529+
def test_namespaces
1530+
cm1 = RDoc::ClassModule.new "A"
1531+
assert_equal ["A"], cm1.namespaces
1532+
1533+
cm2 = RDoc::ClassModule.new "A::B"
1534+
assert_equal ["A", "B"], cm2.namespaces
1535+
1536+
cm3 = RDoc::ClassModule.new "::A::B::C"
1537+
assert_equal ["A", "B", "C"], cm3.namespaces
1538+
end
1539+
1540+
def test_fully_qualified_namespaces
1541+
cm1 = RDoc::ClassModule.new "A"
1542+
assert_equal ["A"], cm1.fully_qualified_namespaces
1543+
1544+
cm2 = RDoc::ClassModule.new "A::B"
1545+
assert_equal ["A", "A::B"], cm2.fully_qualified_namespaces
1546+
1547+
cm3 = RDoc::ClassModule.new "::A::B::C"
1548+
assert_equal ["A", "A::B", "A::B::C"], cm3.fully_qualified_namespaces
1549+
end
1550+
15291551
class TestRDocClassModuleMixins < XrefTestCase
15301552
def setup
15311553
super

0 commit comments

Comments
 (0)