Module: Monkey::Ext::Object
- Defined in:
- lib/monkey/ext/object.rb
Instance Method Summary collapse
- #define_singleton_method(name, &block) ⇒ Object
-
#instance_yield(block = nil, &alternate_block) ⇒ Object
Behaves like instance_eval or yield depending on whether a block takes an argument or not.
- #metaclass_eval(str = nil, &block) ⇒ Object
Instance Method Details
#define_singleton_method(name, &block) ⇒ Object
32 33 34 |
# File 'lib/monkey/ext/object.rb', line 32 def define_singleton_method(name, &block) { define_method(name, &block) } end |
#instance_yield(block = nil, &alternate_block) ⇒ Object
Behaves like instance_eval or yield depending on whether a block takes an argument or not.
class Foo
define_method(:foo) { 42 }
end
Foo.new.instance_yield { foo } # => 42
Foo.new.instance_yield { |c| c.foo } # => 42
Also, you can pass a proc directly:
block = proc { }
instance_yield(block)
21 22 23 24 25 26 |
# File 'lib/monkey/ext/object.rb', line 21 def instance_yield(block = nil, &alternate_block) raise ArgumentError, "too many blocks given" if block && alternate_block block ||= alternate_block raise LocalJumpError, "no block given (yield)" unless block block.arity > 0 ? yield(self) : instance_eval(&block) end |
#metaclass_eval(str = nil, &block) ⇒ Object
28 29 30 |
# File 'lib/monkey/ext/object.rb', line 28 def (str = nil, &block) .class_eval(str, &block) end |