module RipperRubyParser::SexpHandlers::Conditionals
Sexp handlers for conditionals
Public Instance Methods
process_case(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 48 def process_case(exp) _, expr, clauses = exp.shift 3 s(:case, process(expr), *process(clauses).sexp_body) end
process_else(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 67 def process_else(exp) _, body = exp.shift 2 process(body) end
process_elsif(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 15 def process_elsif(exp) _, cond, truepart, falsepart = exp.shift 4 s(:if, unwrap_begin(process(cond)), handle_consequent(truepart), handle_consequent(falsepart)) end
process_if(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 7 def process_if(exp) _, cond, truepart, falsepart = exp.shift 4 construct_conditional(handle_condition(cond), handle_consequent(truepart), handle_consequent(falsepart)) end
process_if_mod(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 24 def process_if_mod(exp) _, cond, truepart = exp.shift 3 construct_conditional(handle_condition(cond), process(truepart), nil) end
process_unless(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 32 def process_unless(exp) _, cond, truepart, falsepart = exp.shift 4 construct_conditional(handle_condition(cond), handle_consequent(falsepart), handle_consequent(truepart)) end
process_unless_mod(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 40 def process_unless_mod(exp) _, cond, truepart = exp.shift 3 construct_conditional(handle_condition(cond), nil, process(truepart)) end
process_when(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 53 def process_when(exp) _, values, truepart, falsepart = exp.shift 4 falsepart ||= s(:void_stmt) falsepart = unwrap_case_body process(falsepart) values = process(values).sexp_body truepart = unwrap_block process(truepart) s(:case_body, s(:when, s(:array, *values), *truepart), *falsepart) end
Private Instance Methods
construct_conditional(cond, truepart, falsepart)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 91 def construct_conditional(cond, truepart, falsepart) if cond.sexp_type == :not _, inner = cond s(:if, inner, falsepart, truepart) else s(:if, cond, truepart, falsepart) end end
handle_condition(cond)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 74 def handle_condition(cond) cond = unwrap_begin process(cond) case cond.sexp_type when :lit return s(:match, cond) if cond.last.is_a?(Regexp) when :dot2 return s(:flip2, *cond.sexp_body) when :dot3 return s(:flip3, *cond.sexp_body) end cond end
handle_consequent(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 87 def handle_consequent(exp) unwrap_nil process(exp) if exp end
unwrap_case_body(exp)
click to toggle source
# File lib/ripper_ruby_parser/sexp_handlers/conditionals.rb, line 100 def unwrap_case_body(exp) case exp.sexp_type when :case_body exp.sexp_body when :void_stmt [nil] else [exp] end end