Class: Object

Inherits:
BasicObject
Defined in:
lib/meta.rb

Overview

A set of methods to help create meta-programming gizmos.

Instance Method Summary collapse

Instance Method Details

#class_def(name, &blk) ⇒ Object

Defines an instance method within a class



29
30
31
# File 'lib/meta.rb', line 29

def class_def name, &blk
  class_eval { define_method name, &blk }
end

#meta_def(name, &blk) ⇒ Object

Adds methods to a metaclass



24
25
26
# File 'lib/meta.rb', line 24

def meta_def name, &blk
  meta_eval { define_method name, &blk }
end

#meta_eval(&blk) ⇒ Object

Evaluates the block in the context of the metaclass



11
12
13
# File 'lib/meta.rb', line 11

def meta_eval(&blk)
  metaclass.instance_eval(&blk)
end

#meta_include(mod) ⇒ Object

Acts like an include except it adds the module’s methods to the metaclass so they act like class methods.



17
18
19
20
21
# File 'lib/meta.rb', line 17

def meta_include mod
  meta_eval do
    include mod
  end
end

#metaclassObject

The metaclass is the singleton behind every object.



4
5
6
7
8
# File 'lib/meta.rb', line 4

def metaclass
  class << self
    self
  end
end