Re: Find the fully qualified name of a class from a string
- From: ara.t.howard@xxxxxxxx
- Date: Sat, 31 Mar 2007 06:09:22 +0900
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'
-a
--
be kind whenever possible... it is always possible.
- the dalai lama
.
- Follow-Ups:
- Re: Find the fully qualified name of a class from a string
- From: Rick DeNatale
- Re: Find the fully qualified name of a class from a string
- Prev by Date: Re: text processing
- Next by Date: simple gsub question \' \` what?
- Previous by thread: Ruby/Python Extension -> pygame?
- Next by thread: Re: Find the fully qualified name of a class from a string
- Index(es):
Relevant Pages
|