mirror of
https://github.com/caddyserver/caddy.git
synced 2024-12-26 21:53:48 +03: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 {
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue