free_mutant/lib/mutant/singleton_methods.rb

29 lines
591 B
Ruby
Raw Normal View History

# Singleton methods are defined here so zombie can pick them up
module Mutant
# Define instance of subclassed superclass as constant
#
# @param [Class] superclass
# @param [Symbol] name
#
# @return [self]
#
# @api private
#
def self.singleton_subclass_instance(name, superclass, &block)
klass = Class.new(superclass) do
def inspect; self.class.name; end
define_singleton_method(:name) do
"#{superclass.name}::#{name}".freeze
end
end
klass.class_eval(&block)
superclass.const_set(name, klass.new)
self
end
2013-06-14 14:54:02 -04:00
end # Mutant