[ruby-core:75990] [Ruby trunk Feature#12317] Name space of a module
From:
akr@...
Date:
2016-06-13 09:54:02 UTC
List:
ruby-core #75990
Issue #12317 has been updated by Akira Tanaka.
I think lexical information is not obtainable in a method.
```
% ruby -e '
module A
module B
end
end
module C
Z = 2
module A::B
p Z
end
end
p A::B.namespaces
'
2
???
```
Z is refarenceable in B in C but not B in C.
Since B in C and B in A is same object, A::B.namespaces method cannot
distinguish them.
----------------------------------------
Feature #12317: Name space of a module
https://bugs.ruby-lang.org/issues/12317#change-59186
* Author: Tsuyoshi Sawada
* Status: Open
* Priority: Normal
* Assignee:
----------------------------------------
I want a method to return the name space of a module, something like:
~~~ruby
class A; module B; module C end end end
A::B::C.namespace => [A, A::B, A::B::C]
~~~
There is `nesting` method that is similar, but that only returns the lexical nesting information.
There are also some known hacks for this, converting the module to the string representation using `to_s` or `name`, and then splitting it by `::`. But that easily breaks if the module is anonymous, or is a singleton module. I would like a more robust, core method.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>