class Rufo::Formatter

def visit_case(node)

def visit_case(node)
  # [:case, cond, case_when]
  _, cond, case_when = node
  # If node is inline pattern matching, case_expression will be false
  case_expression = keyword?("case")
  already_visit_cond = false
  if case_expression
    if cond && cond[0] == :case
      visit cond
      # In this case, the `case` token is for the `cond`, but not for `node`
      case_expression = false
      already_visit_cond = true
    else
      consume_keyword "case"
    end
  end
  if cond && !already_visit_cond
    consume_space
    visit cond
  end
  if case_expression
    consume_end_of_line
    write_indent
  else
    consume_space
  end
  visit case_when
  if case_expression
    write_indent
    consume_keyword "end"
  end
end