mirror of
https://github.com/caddyserver/caddy.git
synced 2025-12-08 06:09:53 +00:00
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>
This commit is contained in:
parent
5fe69ac4ab
commit
71e81d262b
2 changed files with 43 additions and 6 deletions
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue