Sha256: 72af84ecb875cb4d51e9553779c7ff6c170adf16129dc2b435ec5c9795ffaa7b

Contents?: true

Size: 591 Bytes

Versions: 20

Compression:

Stored size: 591 Bytes

Contents

# 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

end # Mutant

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
mutant-0.3.0.beta21 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta20 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta19 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta18 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta17 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta16 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta15 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta14 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta13 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta12 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta11 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta10 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta9 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta8 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta7 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta6 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta5 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta4 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta3 lib/mutant/singleton_methods.rb
mutant-0.3.0.beta2 lib/mutant/singleton_methods.rb