Sha256: 15ddcb738ba06ecef9b3bef98e6e572a39c3b319414275305bf00018f7be7393

Contents?: true

Size: 685 Bytes

Versions: 12

Compression:

Stored size: 685 Bytes

Contents

# metaprogramming assistant -- metaid.rb
class Object # :nodoc:
  # The hidden singleton lurks behind everyone
  def metaclass; class << self; self; end; end
  def meta_eval(&blk); metaclass.instance_eval(&blk); end

  # A class_eval version of meta_eval
  def metaclass_eval(&blk); metaclass.class_eval(&blk); end
  
  # Adds methods to a metaclass
  def meta_def(name, &blk)
    meta_eval { define_method(name, &blk) }
  end

  # Adds class methods to a metaclass
  def metaclass_def(name, &blk)
    metaclass_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
end

Version data entries

12 entries across 12 versions & 2 rubygems

Version Path
rprogram-0.1.8 lib/rprogram/extensions/meta/object.rb
rprogram-0.1.7 lib/rprogram/extensions/meta/object.rb
rprogram-0.1.6 lib/rprogram/extensions/meta/object.rb
repertoire-0.1.2 lib/repertoire/extensions/meta/object.rb
repertoire-0.1.1 lib/repertoire/extensions/meta/object.rb
rprogram-0.1.2 lib/rprogram/extensions/meta/object.rb
rprogram-0.1.3 lib/rprogram/extensions/meta/object.rb
rprogram-0.0.9 lib/rprogram/extensions/meta/object.rb
rprogram-0.1.4 lib/rprogram/extensions/meta/object.rb
rprogram-0.1.5 lib/rprogram/extensions/meta/object.rb
rprogram-0.1.0 lib/rprogram/extensions/meta/object.rb
rprogram-0.1.1 lib/rprogram/extensions/meta/object.rb