class Rufo::Parser
def self.sexp_unparsable_code(code)
def self.sexp_unparsable_code(code) code_type = detect_unparsable_code_type(code) case code_type when :yield extract_original_code_sexp( "def __rufo_dummy; #{code}; end", ->(exp) { exp => [:def, *, [:bodystmt, exps, *]]; exps } ) when :next, :break, :redo extract_original_code_sexp( "loop do; #{code}; end", ->(exp) { exp => [:method_add_block, *, [:do_block, nil, [:bodystmt, [[:void_stmt], *exps], *]]]; exps } ) when :retry extract_original_code_sexp( "begin; rescue; #{code}; end", ->(exp) { exp => [:begin, [:bodystmt, Array, [:rescue, nil, nil, exps, *], *]]; exps } ) end end