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