feat(format): case_collapse uses line_width via Doc-IR
This commit is contained in:
+5
-7
@@ -861,10 +861,6 @@ func alignSetItems(texts []string) []string {
|
||||
return out
|
||||
}
|
||||
|
||||
// caseCollapseWidth is the inline-length threshold under which case_collapse
|
||||
// keeps a CASE expression on one line even when case_when_wrap is set.
|
||||
const caseCollapseWidth = 60
|
||||
|
||||
// dmlIsCaseStart reports whether t is a CASE keyword token.
|
||||
func dmlIsCaseStart(t cst.Tok) bool {
|
||||
return t.Tok.Kind == lexer.Ident && lowerASCII(t.Tok.Text) == "case"
|
||||
@@ -1001,10 +997,12 @@ func dmlFormatCase(toks []cst.Tok, st config.Style) string {
|
||||
if !st.CaseWhenWrap {
|
||||
return inline
|
||||
}
|
||||
if st.CaseCollapse && len(inline) <= caseCollapseWidth {
|
||||
return inline
|
||||
wrapped := dmlCaseWrapped(caseKw, operand, whens, elseKw, elseText, haveElse, endKw, st)
|
||||
if st.CaseCollapse {
|
||||
// Collapse when the one-line form fits in line_width.
|
||||
return Render(Group(IfBreak(Text(wrapped), Text(inline))), st.LineWidth, st.Indent, st.Newline)
|
||||
}
|
||||
return dmlCaseWrapped(caseKw, operand, whens, elseKw, elseText, haveElse, endKw, st)
|
||||
return wrapped
|
||||
}
|
||||
|
||||
// dmlCaseInline renders a CASE expression on a single line.
|
||||
|
||||
Reference in New Issue
Block a user