Previous Reductive Labs, LLC Next

But Wait, There's More

def classgen(name, parent, &block)
    klass = Class.new(parent) do
        @name = name
    end

    if klass.respond_to? :initvars
        klass.send(:initvars)
    end

    klass.class_eval(&block)

    return klass
end

class Base
    def self.initvars
        @inited = true
    end
end

myclass = classgen :myclass, Base do
    def self.testing
        "Has %s been initialized? %s" % [@name, @inited.inspect]
    end
end

puts "myclass is a %s" % myclass.class
puts myclass.testing

Produces:

myclass is a Class
Has myclass been initialized? true
Previous Luke Kanies luke@reductivelabs.com | Index Next