Sha256: 274da2f67533868296bece66f571e01714881adca7bde663cd565a52c4faa7e3

Contents?: true

Size: 541 Bytes

Versions: 1

Compression:

Stored size: 541 Bytes

Contents

class Object
  # The hidden singleton lurks behind everyone
  def metaclass; class << self; self; end; end
  def meta_eval &blk; metaclass.instance_eval &blk; end

  # Adds methods to a metaclass
  def meta_def name, &blk
    meta_eval { define_method name, &blk }
  end

  # Defines an instance method within a class
  def class_def name, &blk
    class_eval { define_method name, &blk }
  end

  # Defines a class method
  def define_class_method name, &blk
    self.class.instance_eval do
      define_method name, &blk
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ar-enums-0.3.0 lib/metaprogramming_extensions.rb