class Rufo::ErbFormatter

def determine_code_wrappers(code_str)

def determine_code_wrappers(code_str)
  keywords = Ripper.lex("#{code_str}").filter { |lex_token| code_block_token?(lex_token) }
  lexical_tokens = keywords.map { |lex_token| lex_token[3].to_s }
  state_tally = lexical_tokens.group_by(&:itself).transform_values(&:count)
  beg_token = state_tally["BEG"] || state_tally["EXPR_BEG"] || 0
  end_token = state_tally["END"] || state_tally["EXPR_END"] || 0
  depth = beg_token - end_token
  if depth > 0
    affix = format_affix("end", depth.abs, :suffix)
    return nil, affix if Ripper.sexp("#{code_str}#{affix}")
  end
  return nil, "}" if Ripper.sexp("#{code_str} }")
  return "{", nil if Ripper.sexp("{ #{code_str}")
  if depth < 0
    affix = format_affix("begin", depth.abs, :prefix)
    return affix, nil if Ripper.sexp("#{affix}#{code_str}")
  end
  return "begin\n", "\nend" if Ripper.sexp("begin\n#{code_str}\nend")
  return "if a\n", "\nend" if Ripper.sexp("if a\n#{code_str}\nend")
  return "case a\n", "\nend" if Ripper.sexp("case a\n#{code_str}\nend")
  raise_syntax_error!(code_str)
end