Browse Source
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>
master
Vaibhav
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
47 additions and
6 deletions
-
caddyconfig/caddyfile/formatter.go
-
caddyconfig/caddyfile/formatter_test.go
|
|
@ -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 { |
|
|
|
|
|
@ -45,6 +45,18 @@ m { |
|
|
|
n { o |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
p |
|
|
|
} |
|
|
|
|
|
|
|
{ q |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
{ r |
|
|
|
} |
|
|
|
} |
|
|
|
`) |
|
|
|
expected := []byte(` |
|
|
|
a |
|
|
@ -75,6 +87,20 @@ m { |
|
|
|
o |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
p |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
q |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
r |
|
|
|
} |
|
|
|
} |
|
|
|
`) |
|
|
|
testFormat(t, input, expected) |
|
|
|
} |
|
|
@ -110,6 +136,9 @@ b { |
|
|
|
|
|
|
|
d { {$E} |
|
|
|
} |
|
|
|
|
|
|
|
{ {$F} |
|
|
|
} |
|
|
|
`) |
|
|
|
expected := []byte(` |
|
|
|
{$A} |
|
|
@ -121,6 +150,10 @@ b { |
|
|
|
d { |
|
|
|
{$E} |
|
|
|
} |
|
|
|
|
|
|
|
{ |
|
|
|
{$F} |
|
|
|
} |
|
|
|
`) |
|
|
|
testFormat(t, input, expected) |
|
|
|
} |
|
|
@ -190,6 +223,6 @@ g { |
|
|
|
func testFormat(t *testing.T, input, expected []byte) { |
|
|
|
output := Format(input) |
|
|
|
if string(output) != string(expected) { |
|
|
|
t.Errorf("Expected:\n%s\ngot:\n%s", string(output), string(expected)) |
|
|
|
t.Errorf("Expected:\n%s\ngot:\n%s", string(expected), string(output)) |
|
|
|
} |
|
|
|
} |
|
|
|