From f37a1ee1e2577a0e8fd76d4c965abb93cd99a6cf Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 11 Feb 2026 11:12:10 +0000 Subject: feat: Support JSON configuration file --- engine/engine.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'engine') diff --git a/engine/engine.go b/engine/engine.go index 0b37dd4..6f7b7a0 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -11,7 +11,8 @@ const ( ) type Engine struct { - CommentMode CommentMode + CommentMode CommentMode + GroupSingleLineScopes bool } func (e *Engine) format(events []LineEvent, resultBuilder *strings.Builder) { @@ -21,6 +22,7 @@ func (e *Engine) format(events []LineEvent, resultBuilder *strings.Builder) { previousWasComment := false previousWasTopLevel := false previousWasScoped := false + previousWasSingleLineScope := false for eventIndex, event := range events { if event.InRawString { @@ -48,6 +50,7 @@ func (e *Engine) format(events []LineEvent, resultBuilder *strings.Builder) { needsBlankLine := false currentIsTopLevel := event.HasASTInfo && event.IsTopLevel currentIsScoped := event.HasASTInfo && event.IsScoped + currentIsSingleLineScope := currentIsScoped && !event.IsOpeningBrace && !event.IsClosingBrace if hasWrittenContent && !previousWasOpenBrace && !event.IsClosingBrace && !event.IsCaseLabel && !event.IsContinuation { if currentIsTopLevel && previousWasTopLevel && currentStatementType != previousStatementType { @@ -55,7 +58,9 @@ func (e *Engine) format(events []LineEvent, resultBuilder *strings.Builder) { needsBlankLine = true } } else if event.HasASTInfo && (currentIsScoped || previousWasScoped) { - if !(e.CommentMode == CommentsFollow && previousWasComment) { + if e.GroupSingleLineScopes && currentIsSingleLineScope && previousWasSingleLineScope && currentStatementType == previousStatementType { + needsBlankLine = false + } else if !(e.CommentMode == CommentsFollow && previousWasComment) { needsBlankLine = true } } else if currentStatementType != "" && previousStatementType != "" && currentStatementType != previousStatementType { @@ -104,10 +109,12 @@ func (e *Engine) format(events []LineEvent, resultBuilder *strings.Builder) { previousStatementType = event.StatementType previousWasTopLevel = event.IsTopLevel previousWasScoped = event.IsScoped + previousWasSingleLineScope = currentIsSingleLineScope } else if currentStatementType != "" { previousStatementType = currentStatementType previousWasTopLevel = false previousWasScoped = false + previousWasSingleLineScope = false } } -- cgit v1.2.3