diff options
author | Matthew Holt <mholt@users.noreply.github.com> | 2020-03-29 13:53:00 -0600 |
---|---|---|
committer | Matthew Holt <mholt@users.noreply.github.com> | 2020-03-29 13:53:00 -0600 |
commit | deba26d225c5b321a944439eb6b108117ac3d569 (patch) | |
tree | d88fd67ec1b32da4a29a699aca612232b92683b4 /caddyconfig | |
parent | 178ba024fea4db2b91fd159da629f0a8588f119a (diff) |
caddyfile: Minor fixes to the formatter
Diffstat (limited to 'caddyconfig')
-rw-r--r-- | caddyconfig/caddyfile/formatter.go | 13 | ||||
-rw-r--r-- | caddyconfig/caddyfile/formatter_test.go | 16 |
2 files changed, 23 insertions, 6 deletions
diff --git a/caddyconfig/caddyfile/formatter.go b/caddyconfig/caddyfile/formatter.go index bf70d11..2c97f3b 100644 --- a/caddyconfig/caddyfile/formatter.go +++ b/caddyconfig/caddyfile/formatter.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 } diff --git a/caddyconfig/caddyfile/formatter_test.go b/caddyconfig/caddyfile/formatter_test.go index 8f2a012..25bd7fa 100644 --- a/caddyconfig/caddyfile/formatter_test.go +++ b/caddyconfig/caddyfile/formatter_test.go @@ -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 |