Class: Opal::Rewriters::PatternMatching
- Defined in:
- opal/lib/opal/rewriters/pattern_matching.rb
Defined Under Namespace
Classes: PatternConverter
Constant Summary
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
- 
  
    
      #initialize  ⇒ PatternMatching 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of PatternMatching. 
- 
  
    
      #on_case_match(node)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    case a; in b; end. 
- 
  
    
      #on_match_pattern(node)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    a => b. 
- 
  
    
      #on_match_pattern_p(node)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    a in b. 
Methods inherited from Base
#append_to_body, #begin_with_stmts, #error, #prepend_to_body, #process, #s, s, #stmts_of
Constructor Details
#initialize ⇒ PatternMatching
Returns a new instance of PatternMatching.
| 8 9 10 11 | # File 'opal/lib/opal/rewriters/pattern_matching.rb', line 8 def initialize @depth = 0 super end | 
Instance Method Details
#on_case_match(node) ⇒ Object
case a; in b; end
| 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # File 'opal/lib/opal/rewriters/pattern_matching.rb', line 39 def on_case_match(node) @depth += 1 cmvar = :"$cmvar#{@depth}" from, *cases, els = *node if els process els else els = raise_no_matching_pattern_error(cmvar) end s(:begin, s(:lvasgn, cmvar, from), single_case_match(cmvar, *cases, els) ) end | 
#on_match_pattern(node) ⇒ Object
a => b
| 14 15 16 17 18 19 20 21 22 23 24 25 | # File 'opal/lib/opal/rewriters/pattern_matching.rb', line 14 def on_match_pattern(node) from, pat = *node s(:begin, s(:lvasgn, :"$pmvar", from), s(:if, convert_full_pattern(from, pat), nil, raise_no_matching_pattern_error(:"$pmvar") ) ) end | 
#on_match_pattern_p(node) ⇒ Object
a in b
| 28 29 30 31 32 33 34 35 36 | # File 'opal/lib/opal/rewriters/pattern_matching.rb', line 28 def on_match_pattern_p(node) from, pat = *node s(:if, convert_full_pattern(from, pat), s(:true), s(:false) ) end |