blob: 0cd0d1ff2c129666ed1a12b854b44f5df8f64c20 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class Module
# Return the module which contains this one; if this is a root module, such as
# +::MyModule+, then Object is returned.
def parent
parent_name = name.split('::')[0..-2] * '::'
parent_name.empty? ? Object : parent_name.constantize
end
# Return all the parents of this module, ordered from nested outwards. The
# receiver is not contained within the result.
def parents
parents = []
parts = name.split('::')[0..-2]
until parts.empty?
parents << (parts * '::').constantize
parts.pop
end
parents << Object unless parents.include? Object
parents
end
end
|