class Class

Public Instance Methods

<<(arg) click to toggle source
# File lib/partialclass.rb, line 8
def << (arg)
        specialize(arg)
end
define_singleton_method(name, &block) click to toggle source
# File lib/partialclass.rb, line 13
def define_singleton_method name, &block
        metaclass = class << self; self; end
        metaclass.define_method(name, &block)
end
specialize(*args) click to toggle source
# File lib/partialclass.rb, line 4
def specialize(*args)
        _specialize(self, *args)
end

Private Instance Methods

_specialize(parent, *prep) click to toggle source
Calls superclass method
# File lib/partialclass.rb, line 20
def _specialize(parent, *prep)
        Class.new(parent) do
                define_singleton_method(:new) { |*args| super(*(prep + args)) }
                define_singleton_method(:specialize) { |*args| _specialize(parent, *(prep+args)) }
        end
end