On 2005-02-18, jc <james.cromwell / gmail.com> wrote:
> What I'm really looking for is a more generic method, something like
> Object#parent_namespace:
>
> class A; end
> module B
>   class C
>     D = A.new
>   end
> end
>
> puts A.parent_namespace => Object
> puts B.parent_namespace => Object
> puts B::C.parent_namespace => B
> puts B::C::D.parent_namespace => C
> puts B::C::D.class.parent_namespace => Object
>
> So that lookups could be easily done:
>
> obj.parent_namespace.const_get(:name)
> obj.parent_namespace.send(name, value)
>
> Is there perhaps a way to do this via the Ruby C API?

Although far from being elegant, and won't work for anonymous classes,
you can get these methods by parsing what "inspect" and "name" gives
you.

Csaba