static public Method

Module.nesting

Module.nesting     array

Returns the list of Modules nested at the point of call.

module M1
  module M2
    $a = Module.nesting
  end
end
$a           #=> [M1::M2, M1]
$a[0].name   #=> "M1::M2"

Source Code

/*
*  call-seq:
*     Module.nesting    => array
*  
*  Returns the list of +Modules+ nested at the point of call.
*     
*     module M1
*       module M2
*         $a = Module.nesting
*       end
*     end
*     $a           #=> [M1::M2, M1]
*     $a[0].name   #=> "M1::M2"
*/

static VALUE
rb_mod_nesting()
{
   NODE *cbase = ruby_cref;
   VALUE ary = rb_ary_new();

   while (cbase && cbase->nd_next) {
       if (!NIL_P(cbase->nd_clss)) rb_ary_push(ary, cbase->nd_clss);
       cbase = cbase->nd_next;
   }
   if (ruby_wrapper && RARRAY(ary)->len == 0) {
       rb_ary_push(ary, ruby_wrapper);
   }
   return ary;
}
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.