Matthew Holt
5 years ago
No known key found for this signature in database
GPG Key ID: 2A349DD577D586A5
2 changed files with
23 additions and
6 deletions
-
caddyconfig/caddyfile/formatter.go
-
caddyconfig/caddyfile/formatter_test.go
|
|
@ -39,6 +39,7 @@ func Format(input []byte) []byte { |
|
|
|
|
|
|
|
openBrace bool // whether current word/token is or started with open curly brace
|
|
|
|
openBraceWritten bool // if openBrace, whether that brace was written or not
|
|
|
|
openBraceSpace bool // whether there was a non-newline space before open brace
|
|
|
|
|
|
|
|
newLines int // count of newlines consumed
|
|
|
|
|
|
|
@ -145,10 +146,11 @@ func Format(input []byte) []byte { |
|
|
|
openBrace = false |
|
|
|
if beginningOfLine { |
|
|
|
indent() |
|
|
|
} else { |
|
|
|
} else if !openBraceSpace { |
|
|
|
write(' ') |
|
|
|
} |
|
|
|
write('{') |
|
|
|
openBraceWritten = true |
|
|
|
nextLine() |
|
|
|
newLines = 0 |
|
|
|
nesting++ |
|
|
@ -158,6 +160,10 @@ func Format(input []byte) []byte { |
|
|
|
case ch == '{': |
|
|
|
openBrace = true |
|
|
|
openBraceWritten = false |
|
|
|
openBraceSpace = spacePrior && !beginningOfLine |
|
|
|
if openBraceSpace { |
|
|
|
write(' ') |
|
|
|
} |
|
|
|
continue |
|
|
|
|
|
|
|
case ch == '}' && (spacePrior || !openBrace): |
|
|
@ -183,7 +189,7 @@ func Format(input []byte) []byte { |
|
|
|
if beginningOfLine { |
|
|
|
indent() |
|
|
|
} |
|
|
|
if nesting == 0 && last == '}' { |
|
|
|
if nesting == 0 && last == '}' && beginningOfLine { |
|
|
|
nextLine() |
|
|
|
nextLine() |
|
|
|
} |
|
|
@ -193,9 +199,6 @@ func Format(input []byte) []byte { |
|
|
|
} |
|
|
|
|
|
|
|
if openBrace && !openBraceWritten { |
|
|
|
if !beginningOfLine { |
|
|
|
write(' ') |
|
|
|
} |
|
|
|
write('{') |
|
|
|
openBraceWritten = true |
|
|
|
} |
|
|
|
|
|
@ -287,10 +287,24 @@ bar "{\"key\":34}"`, |
|
|
|
expect: `foo \"literal\"`, |
|
|
|
}, |
|
|
|
{ |
|
|
|
description: "simple placeholders", |
|
|
|
description: "simple placeholders as standalone tokens", |
|
|
|
input: `foo {bar}`, |
|
|
|
expect: `foo {bar}`, |
|
|
|
}, |
|
|
|
{ |
|
|
|
description: "simple placeholders within tokens", |
|
|
|
input: `foo{bar} foo{bar}baz`, |
|
|
|
expect: `foo{bar} foo{bar}baz`, |
|
|
|
}, |
|
|
|
{ |
|
|
|
description: "placeholders and malformed braces", |
|
|
|
input: `foo{bar} foo{ bar}baz`, |
|
|
|
expect: `foo{bar} foo { |
|
|
|
bar |
|
|
|
} |
|
|
|
|
|
|
|
baz`, |
|
|
|
}, |
|
|
|
} { |
|
|
|
// the formatter should output a trailing newline,
|
|
|
|
// even if the tests aren't written to expect that
|
|
|
|