[RCR] Module#nesting (NOT the class method - instance method)

harp:~ > cat a.rb
   class Module
     def nesting
       parent, child = nil
       name.split('::').inject(Object){|parent, child| parent.const_get child}
       Object == parent ? nil : parent
     end
   end

   class A
     class B
       class C
         class D
         end
       end
     end
   end

   p A.nesting
   p A::B.nesting
   p A::b::C.nesting
   p A::b::C::D.nesting

   harp:~ > ruby a.rb
   nil
   A

-a

···

A::B
   A::b::C
--
we can deny everything, except that we have the possibility of being better.
simply reflect on that.
- the dalai lama

   harp:~ > cat a.rb
   class Module
     def nesting
       parent, child = nil
       name.split('::').inject(Object){|parent, child| parent.const_get child}
       Object == parent ? nil : parent
     end
   end

   class A
     class B
       class C
         class D
         end
       end
     end
   end

   p A.nesting
   p A::B.nesting
   p A::b::C.nesting
   p A::b::C::D.nesting

   harp:~ > ruby a.rb
   nil
   A
   A::B
   A::b::C

irb(main):001:0> require 'facets/core/module/nesting'
=> true
irb(main):002:0> class A
irb(main):003:1> class B
irb(main):004:2> class C
irb(main):005:3> class D
irb(main):006:4> end
irb(main):007:3> end
irb(main):008:2> end
irb(main):009:1> end
=> nil
irb(main):010:0> A.nesting
=> [A]
irb(main):011:0> B.nesting
NameError: uninitialized constant B
        from (irb):11
irb(main):012:0> A::B.nesting
=> [A, A::B]
irb(main):013:0> A::b::C.nesting
=> [A, A::B, A::b::C]
irb(main):014:0> A::b::C::D.nesting
=> [A, A::B, A::b::C, A::b::C::D]

class Module
  def nesting
    n =
    name.split(/::/).inject(self){ |mod, name| c =
mod.const_get(name) ; n << c ; c }
    return n
  end
end

T.

···

On Feb 5, 3:23 pm, ara.t.how...@noaa.gov wrote:
        from :0