Sha256: c3bb302e9ae2ed0ea777b5410a538e8e427f5fd4c6887b14d8ca003c3e1bb8b4

Contents?: true

Size: 729 Bytes

Versions: 19

Compression:

Stored size: 729 Bytes

Contents

# A set of methods to help create meta-programming gizmos.
class Object
  # The metaclass is the singleton behind every object.
  def metaclass
    class << self
      self
    end
  end

  # Evaluates the block in the context of the metaclass
  def meta_eval(&blk)
    metaclass.instance_eval(&blk)
  end

  # Acts like an include except it adds the module's methods
  # to the metaclass so they act like class methods.
  def meta_include mod
    meta_eval do
      include mod
    end
  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
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
icalendar-1.5.4 lib/meta.rb
icalendar-1.5.3 lib/meta.rb
icalendar-1.5.2 lib/meta.rb
icalendar-1.5.1 lib/meta.rb
icalendar-1.5.0 lib/meta.rb
icalendar-1.4.5 lib/meta.rb
icalendar-1.4.4 lib/meta.rb
icalendar-1.4.3 lib/meta.rb
icalendar-1.4.2 lib/meta.rb
icalendar-1.4.1 lib/meta.rb
icalendar-1.4.0 lib/meta.rb
icalendar-1.3.0 lib/meta.rb
icalendar-1.2.4 lib/meta.rb
icalendar-1.2.3 lib/meta.rb
icalendar-1.2.2 lib/meta.rb
icalendar-1.2.1 lib/meta.rb
icalendar-1.2.0 lib/meta.rb
icalendar-1.2 lib/meta.rb
icalendar-1.1.6 lib/meta.rb