diff options
author | Vaibhav <vrongmeal@gmail.com> | 2020-03-01 01:53:08 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-29 13:23:08 -0700 |
commit | 71e81d262bc34545f73f1380bc5d078d83d1570f (patch) | |
tree | de3a155bea038d43e6b1e770a7cfb955aac90347 /caddyconfig/caddyfile | |
parent | 5fe69ac4ab8bb1da84fc80776548fcc16f89b1db (diff) |
fmt: Add support for block nesting. (#3105)
Previously the formatter did not include support for
blocks inside other blocks. Hence the formatter could
not indent some files properly. This fixes it.
Fixes #3104
Signed-off-by: Vaibhav <vrongmeal@gmail.com>
Diffstat (limited to 'caddyconfig/caddyfile')
-rw-r--r-- | caddyconfig/caddyfile/formatter.go | 15 | ||||
-rw-r--r-- | caddyconfig/caddyfile/formatter_test.go | 34 |
2 files changed, 43 insertions, 6 deletions
diff --git a/caddyconfig/caddyfile/formatter.go b/caddyconfig/caddyfile/formatter.go index 6cfb1b2..e937208 100644 --- a/caddyconfig/caddyfile/formatter.go +++ b/caddyconfig/caddyfile/formatter.go @@ -29,12 +29,13 @@ func Format(body []byte) []byte { commented, quoted, escaped, - block, environ, lineBegin bool firstIteration = true + indentation = 0 + prev, curr, next rune @@ -93,13 +94,13 @@ func Format(body []byte) []byte { if curr == '}' { if environ { environ = false - } else if block { - block = false + } else if indentation > 0 { + indentation-- } } if curr == '{' { if unicode.IsSpace(next) { - block = true + indentation++ if !unicode.IsSpace(prev) { result.WriteRune(' ') @@ -113,8 +114,10 @@ func Format(body []byte) []byte { continue } else { lineBegin = false - if block { - result.WriteRune('\t') + if indentation > 0 { + for tabs := indentation; tabs > 0; tabs-- { + result.WriteRune('\t') + } } } } else { diff --git a/caddyconfig/caddyfile/formatter_test.go b/caddyconfig/caddyfile/formatter_test.go index a78ec7c..76eca00 100644 --- a/caddyconfig/caddyfile/formatter_test.go +++ b/caddyconfig/caddyfile/formatter_test.go @@ -29,6 +29,22 @@ b e { f } + +g { +h { +i +} +} + +j { k { +l +} +} + +m { + n { o + } +} `) expected := []byte(` a @@ -41,6 +57,24 @@ c { e { f } + +g { + h { + i + } +} + +j { + k { + l + } +} + +m { + n { + o + } +} `) testFormat(t, input, expected) } |