Issue #3773 has been updated by trans (Thomas Sawyer).


I will eventually try again. I don't really understand having #name, but not being able to get the actual constant named by #name.

----------------------------------------
Feature #3773: Module#parent
https://bugs.ruby-lang.org/issues/3773#change-24971

Author: trans (Thomas Sawyer)
Status: Rejected
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: 
Target version: 


=begin
 Not sure "parent" is the best name, it does seem like this functionality should be provided somehow by Ruby itself.
 
   class Module
     # Returns the name of the module containing this one.
     #
     #   M::N.parent_name # => "M"
     def parent_name
       unless defined? @parent_name
         @parent_name = name =~ /::[^:]+\Z/ ? $`.freeze : nil
       end
       @parent_name
     end
 
     # Returns the module which contains this one according to its name.
     #
     #   module M
     #     module N
     #     end
     #   end
     #   X = M::N
     #
     #   M::N.parent # => M
     #   X.parent    # => M
     #
     # The parent of top-level and anonymous modules is Object.
     #
     #   M.parent          # => Object
     #   Module.new.parent # => Object
     #
     def parent
       parent_name ? constant(parent_name) : Object
     end
 
     # Returns all the parents of this module according to its name, ordered from
     # nested outwards. The receiver is not contained within the result.
     #
     #   module M
     #     module N
     #     end
     #   end
     #   X = M::N
     #
     #   M.parents    # => [Object]
     #   M::N.parents # => [M, Object]
     #   X.parents    # => [M, Object]
     #
     def parents
       parents = []
       if parent_name
         parts = parent_name.split('::')
         until parts.empty?
           parents << constant(parts * '::')
           parts.pop
         end
       end
       parents << Object unless parents.include? Object
       parents
     end
 
   end
=end



-- 
http://bugs.ruby-lang.org/