aboutsummaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-11 11:12:10 +0000
committerFuwn <[email protected]>2026-02-11 11:12:10 +0000
commitf37a1ee1e2577a0e8fd76d4c965abb93cd99a6cf (patch)
tree4923021c7a049a9b2badb9dab9bd0e71c1551e7a /engine
parentfix(adapter): Suppress blank lines before continuation keywords (else/catch/f... (diff)
downloadiku-f37a1ee1e2577a0e8fd76d4c965abb93cd99a6cf.tar.xz
iku-f37a1ee1e2577a0e8fd76d4c965abb93cd99a6cf.zip
feat: Support JSON configuration file
Diffstat (limited to 'engine')
-rw-r--r--engine/engine.go11
1 files changed, 9 insertions, 2 deletions
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
}
}