introspection/block_given_context.rb
tests/_examples/introspection/block_given_context.rb in the metorex repository.
module Reporter
def self.direct
block_given?
end
def self.with_named_block(&handler)
block_given?
end
def self.inside_block
yield_self { block_given? }
end
def self.via_kernel
Kernel.block_given?
end
def self.via_send
self.send :block_given?
end
class << self
define_method(:from_define_method) do
block_given?
end
end
end
puts Reporter.direct { }
puts Reporter.direct
puts Reporter.with_named_block { }
puts Reporter.with_named_block
puts Reporter.inside_block { }
puts Reporter.inside_block
puts Reporter.via_kernel { }
puts Reporter.via_kernel
puts Reporter.via_send { }
puts Reporter.via_send
puts Reporter.from_define_method { }
puts block_given?
Output:
true
false
true
false
true
false
true
false
true
false
false
false