Class: Opal::Rewriters::ReturnableLogic
  
  
  
  
  
    - Inherits:
 
    - 
      Base
      
        
          - Object
 
          
            - Parser::AST::Processor
 
          
            - Base
 
          
            - Opal::Rewriters::ReturnableLogic
 
          
        
        show all
      
     
  
  
  
  
  
  
  
  
  
  
    - Defined in:
 
    - opal/lib/opal/rewriters/returnable_logic.rb
 
  
  
 
  Constant Summary
  
  Constants inherited
     from Base
  Base::DUMMY_LOCATION
  Instance Attribute Summary
  
  Attributes inherited from Base
  #current_node
  
    
      Instance Method Summary
      collapse
    
    
  
  
  
  
  
  
  
  
  
  Methods inherited from Base
  #append_to_body, #begin_with_stmts, #error, #prepend_to_body, #process, #s, s, #stmts_of
  
  
    Instance Method Details
    
      
  
  
    #next_tmp  ⇒ Object 
  
  
  
  
    
      
8
9
10
11
12 
     | 
    
      # File 'opal/lib/opal/rewriters/returnable_logic.rb', line 8
def next_tmp
  @counter ||= 0
  @counter += 1
  "$ret_or_#{@counter}"
end
     | 
  
 
    
      
  
  
    #on_and(node)  ⇒ Object 
  
  
  
  
    
      
25
26
27
28
29
30 
     | 
    
      # File 'opal/lib/opal/rewriters/returnable_logic.rb', line 25
def on_and(node)
  lhs, rhs = *node.children
  lhs_tmp = next_tmp
  node.updated(:if, [s(:lvasgn, lhs_tmp, process(lhs)), process(rhs), s(:js_tmp, lhs_tmp)])
end 
     | 
  
 
    
      
  
  
    #on_or(node)  ⇒ Object 
  
  
  
  
    
      
18
19
20
21
22
23 
     | 
    
      # File 'opal/lib/opal/rewriters/returnable_logic.rb', line 18
def on_or(node)
  lhs, rhs = *node.children
  lhs_tmp = next_tmp
  node.updated(:if, [s(:lvasgn, lhs_tmp, process(lhs)), s(:js_tmp, lhs_tmp), process(rhs)])
end 
     | 
  
 
    
      
  
  
    #reset_tmp_counter!  ⇒ Object 
  
  
  
  
    
      
14
15
16 
     | 
    
      # File 'opal/lib/opal/rewriters/returnable_logic.rb', line 14
def reset_tmp_counter!
  @counter = nil
end 
     |