Permalink
Browse files

metaid.rb

  • Loading branch information...
1 parent f1db851 commit c90e243fe4e69be5726f03123d2faddd29b5306b @defunkt committed Aug 21, 2009
Showing with 28 additions and 0 deletions.
  1. +1 −0 README
  2. +27 −0 metaid.rb
View
1 README
@@ -0,0 +1 @@
+By _why
View
@@ -0,0 +1,27 @@
+class Object
+ # The hidden singleton lurks behind everyone
+ def metaclass; class << self; self; end; end
+ alias_method :singleton_class, :metaclass
+
+ def meta_eval(&blk)
+ metaclass.instance_eval &blk
+ end
+
+ def meta_class_eval(code=nil, &blk)
+ if code.nil?
+ metaclass.class_eval &blk
+ else
+ metaclass.class_eval code, &blk
+ 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

0 comments on commit c90e243

Please sign in to comment.