From 7ecaab0230d17418487dede28841a314a389c4e6 Mon Sep 17 00:00:00 2001 From: "Christian G. Warden" Date: Tue, 12 Dec 2023 08:49:50 -0600 Subject: [PATCH] Wrap Long Ternary Expressions and String Concatenations --- formatter/format_test.go | 12 ++++++++++++ formatter/visitors.go | 10 ++++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/formatter/format_test.go b/formatter/format_test.go index 992fbb8..d8974df 100644 --- a/formatter/format_test.go +++ b/formatter/format_test.go @@ -178,6 +178,18 @@ func TestStatement(t *testing.T) { '\n' + 'lorem' + 'ipsum';`}, + + { + `Id originalGroupId = ql.SBQQ__RenewedSubscription__r.SBQQ__QuoteLine__r.SBQQ__Group__c != null ? ql.SBQQ__RenewedSubscription__r.SBQQ__QuoteLine__r.SBQQ__Group__c : ql.SBQQ__UpgradedSubscription__r.SBQQ__QuoteLine__r.SBQQ__Group__c;`, + `Id originalGroupId = ql.SBQQ__RenewedSubscription__r.SBQQ__QuoteLine__r.SBQQ__Group__c != null ? + ql.SBQQ__RenewedSubscription__r.SBQQ__QuoteLine__r.SBQQ__Group__c : + ql.SBQQ__UpgradedSubscription__r.SBQQ__QuoteLine__r.SBQQ__Group__c;`}, + + { + `List originalGroups = Database.query('SELECT ' + String.join(new List(qlgfields.keySet()), ',') + ' FROM SBQQ__QuoteLineGroup__c WHERE Id IN :originalGroupIds');`, + `List originalGroups = Database.query('SELECT ' + + String.join(new List(qlgfields.keySet()), ',') + + ' FROM SBQQ__QuoteLineGroup__c WHERE Id IN :originalGroupIds');`}, } for _, tt := range tests { input := antlr.NewInputStream(tt.input) diff --git a/formatter/visitors.go b/formatter/visitors.go index 3daf27d..3f3a8f4 100644 --- a/formatter/visitors.go +++ b/formatter/visitors.go @@ -423,7 +423,12 @@ func (v *FormatVisitor) VisitAssignExpression(ctx *parser.AssignExpressionContex } func (v *FormatVisitor) VisitCondExpression(ctx *parser.CondExpressionContext) interface{} { - return fmt.Sprintf("%s ? %s : %s", v.visitRule(ctx.Expression(0)), v.visitRule(ctx.Expression(1)), v.visitRule(ctx.Expression(2))) + if len(ctx.Expression(0).GetText())+len(ctx.Expression(1).GetText())+len(ctx.Expression(2).GetText()) <= 60 { + return fmt.Sprintf("%s ? %s : %s", v.visitRule(ctx.Expression(0)), v.visitRule(ctx.Expression(1)), v.visitRule(ctx.Expression(2))) + } + return fmt.Sprintf("%s ?\n%s :\n%s", v.visitRule(ctx.Expression(0)), + v.indent(v.visitRule(ctx.Expression(1)).(string)), + v.indent(v.visitRule(ctx.Expression(2)).(string))) } func (v *FormatVisitor) VisitLogAndExpression(ctx *parser.LogAndExpressionContext) interface{} { @@ -482,7 +487,8 @@ func (v *FormatVisitor) VisitArth2Expression(ctx *parser.Arth2ExpressionContext) right := i.visitRule(ctx.Expression(1)).(int) log.Debug(fmt.Sprintf("LEFT %d: %s ", left, ctx.Expression(0).GetText())) log.Debug(fmt.Sprintf("RIGHT %d: %s ", right, ctx.Expression(1).GetText())) - wrap := v.wrap || left+right > 2 + log.Debug(fmt.Sprintf("TEXT %d: %s ", len(ctx.GetText()), ctx.GetText())) + wrap := v.wrap || left+right > 2 || len(ctx.GetText()) > 40 if wrap { sep = "\n\t" defer restoreWrap(unwrap(v))