hello,
is this a proper way to do it:
name = ‘MyModule’
o = Object.new
o.extend(Module.const_get(name))
are there better ways?
thanks
konstantin
hello,
is this a proper way to do it:
name = ‘MyModule’
o = Object.new
o.extend(Module.const_get(name))
are there better ways?
thanks
konstantin
On Fri, 9 Dec 2005, ako… wrote:
hello,
is this a proper way to do it:
name = ‘MyModule’
o = Object.new
o.extend(Module.const_get(name))are there better ways?
this will fail for “ModuleA::ModuleB”. for that you need something
like:
#
# creates a class by class name
#
def klass_stamp(hierachy, *a, &b)
#–{{{
ancestors = hierachy.split(%r/::/)
parent = Object
while((child = ancestors.shift))
klass = parent.const_get child
parent = klass
end
klass::new(*a, &b)
#–}}}
end
this will work for
m = klass_stamp “A::C::Module”
o = Object::new
o.extend m
it’s in alib.rb btw.
hth.
-a
On Thu, 08 Dec 2005 18:37:43 -0800, ako… wrote:
hello,
is this a proper way to do it:
name = ‘MyModule’
o = Object.new
o.extend(Module.const_get(name))
I don’t know if this is the proper way, but you could just eval the
name:
name = ‘MyModule’
o = Object.new
o.extend( eval name )
Or alternatively:
eval(“o.extend #{name}”)
require ‘facet/kernel/constant’
name = ‘MyModule’
o = Object.new
o.extend(constant(name))
T.
On Fri, Dec 09, 2005 at 12:50:40PM +0900, [email protected] wrote:
klass = parent.const_get child parent = klass end klass::new(*a, &b)
#–}}}
end
def klass_stamp(name, *a, &b)
name.split(/::/).inject(Object){|s,x| s.const_get(x)}.new(*a,&b)
end
class A; class B; def foo; “A::B#foo” end end end
klass_stamp(“A::B”).foo # => “A::B#foo”
this will work for
m = klass_stamp “A::C::Module”
m = "A::B::C::Module".split(/::/).inject(Object){|s,x|
s.const_get(x)}
o = Object::new
o.extend m
PS: have you seen
eigenclass.org ?
It might be of interest to you if you often use manual markers for
methods…
On Fri, 9 Dec 2005, Trans wrote:
require ‘facet/kernel/constant’
name = ‘MyModule’
o = Object.new
o.extend(constant(name))T.
we have dueling libraries tom!
guess the fact that we are both writing these function over and over
means
they are useful.
cheers.
-a
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs