cmd: fmt: Fix brace opening block indentation (#3153)

This fixes indentation for blocks starting with
a brace as:
```Caddyfile
{
    ...
}
```

Fixes #3144

Signed-off-by: Vaibhav <vrongmeal@gmail.com>
This commit is contained in:
Vaibhav 2020-03-17 21:25:36 +05:30 committed by GitHub
parent b62f8e0582
commit f192ae5ea5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 47 additions and 6 deletions

View file

@ -43,6 +43,12 @@ func Format(body []byte) []byte {
err error
)
insertTabs := func(num int) {
for tabs := num; tabs > 0; tabs-- {
result.WriteRune('\t')
}
}
for {
prev = curr
curr = next
@ -102,7 +108,7 @@ func Format(body []byte) []byte {
if unicode.IsSpace(next) {
indentation++
if !unicode.IsSpace(prev) {
if !unicode.IsSpace(prev) && !lineBegin {
result.WriteRune(' ')
}
} else {
@ -114,10 +120,12 @@ func Format(body []byte) []byte {
continue
} else {
lineBegin = false
if indentation > 0 {
for tabs := indentation; tabs > 0; tabs-- {
result.WriteRune('\t')
}
if curr == '{' && unicode.IsSpace(next) {
// If the block is global, i.e., starts with '{'
// One less indentation for these blocks.
insertTabs(indentation - 1)
} else {
insertTabs(indentation)
}
}
} else {