Class: PowerAssert::BlockContext
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
| 
         Class Chain: 
        
          self,
           
      Context
         | 
    |
| 
         Instance Chain: 
        
          self,
           
      Context
         | 
    |
| Inherits: | 
        PowerAssert::Context
        
  | 
    
| Defined in: | lib/power_assert/context.rb | 
Class Method Summary
Context - Inherited
Instance Attribute Summary
Instance Method Summary
- #yield
 - #invoke_yield private
 
Context - Inherited
Constructor Details
    .new(assertion_proc_or_source, assertion_method, source_binding)  ⇒ BlockContext 
  
# File 'lib/power_assert/context.rb', line 162
def initialize(assertion_proc_or_source, assertion_method, source_binding) super(0) if assertion_proc_or_source.respond_to?(:to_proc) @assertion_proc = assertion_proc_or_source.to_proc line = nil else @assertion_proc = source_binding.eval "Proc.new {#{assertion_proc_or_source}}" line = assertion_proc_or_source end @parser = Parser::DUMMY @trace_call = TracePoint.new(:call, :c_call) do if PowerAssert.app_context? and Thread.current == @target_thread @trace_call.disable locs = PowerAssert.app_caller_locations path = locs.last.path lineno = locs.last.lineno if File.exist?(path) line ||= File.open(path) {|fp| fp.each_line.drop(lineno - 1).first } end if line @parser = Parser.new(line, path, lineno, @assertion_proc.binding, assertion_method.to_s, @assertion_proc) end end end end
Instance Method Details
#invoke_yield (private)
[ GitHub ]# File 'lib/power_assert/context.rb', line 195
def invoke_yield @trace_return.enable do @trace_call.enable do yield end end end
#yield
[ GitHub ]# File 'lib/power_assert/context.rb', line 188
def yield @fired = true invoke_yield(&@assertion_proc) end