Re: Find the fully qualified name of a class from a string
- From: "Rick DeNatale" <rick.denatale@xxxxxxxxx>
- Date: Sat, 31 Mar 2007 08:23:39 +0900
On 3/30/07, ara.t.howard@xxxxxxxx <ara.t.howard@xxxxxxxx> wrote:
On Sat, 31 Mar 2007, Nasir Khan wrote:
> Say you have a class definition in a string -
>
> str = <<EOF
> module A
> class B
> def b
> puts "hello"
> end
> end
> end
> EOF
>
> What is the easiest way to find out the fully qualified name of the class
> there, namely "A::B"
>
> Now I could do a thing like
>
> module EmptyModule
> end
>
> EmptyModule.module_eval(str)
>
> def self.find_class mod
> mod.constants.each do |str|
> m = mod.const_get(str)
> if m.class == Module
> find_class(m)
> else
> cname = m.to_s
> puts cname.match(/EmptyModule::/).post_match
> break
> end
> end
> end
>
> and call this method
>
> find_class(EmptyModule)
>
> which prints "A::B"
>
> This works but it seems too much work to do something simple.
>
> Is there a better/simpler way to do this?
>
> Thanks
> Nasir
harp:~ > cat a.rb
#
# a better const_get
#
def constant_get(hierachy)
ancestors = hierachy.split(%r/::/)
parent = Object
while((child = ancestors.shift))
klass = parent.const_get child
parent = klass
end
klass
end
c = constant_get 'A::B'
I don't think that's what he's looking for.
He has a string containing Ruby source code which presumably defines a
class (or classes?) which might be contained within a module. He
want's to find the fully qualified name of this unknown class (or
classes?).
The A::B is really just an example.
WHY he wants to do this is beyond me.
--
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/
.
- References:
- Re: Find the fully qualified name of a class from a string
- From: ara . t . howard
- Re: Find the fully qualified name of a class from a string
- Prev by Date: Re: Newbie needs a pointer
- Next by Date: Re: Is there a library/mechanism for an object/hash hybrid?
- Previous by thread: Re: Find the fully qualified name of a class from a string
- Next by thread: Re: Find the fully qualified name of a class from a string
- Index(es):
Relevant Pages
|