|
|
|
|
@ -54,22 +54,12 @@ func formatIndent(lines []formatLine) {
|
|
|
|
|
// which should be more than enough for reasonable HCL uses.
|
|
|
|
|
indents := make([]int, 0, 10)
|
|
|
|
|
|
|
|
|
|
inHeredoc := false
|
|
|
|
|
for i := range lines {
|
|
|
|
|
line := &lines[i]
|
|
|
|
|
if len(line.lead) == 0 {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if inHeredoc {
|
|
|
|
|
for _, token := range line.lead {
|
|
|
|
|
if token.Type == hclsyntax.TokenCHeredoc {
|
|
|
|
|
inHeredoc = false
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
continue // don't touch indentation inside heredocs
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if line.lead[0].Type == hclsyntax.TokenNewline {
|
|
|
|
|
// Never place spaces before a newline
|
|
|
|
|
line.lead[0].SpacesBefore = 0
|
|
|
|
|
@ -80,9 +70,10 @@ func formatIndent(lines []formatLine) {
|
|
|
|
|
for _, token := range line.lead {
|
|
|
|
|
netBrackets += tokenBracketChange(token)
|
|
|
|
|
if token.Type == hclsyntax.TokenOHeredoc {
|
|
|
|
|
inHeredoc = true
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, token := range line.assign {
|
|
|
|
|
netBrackets += tokenBracketChange(token)
|
|
|
|
|
}
|
|
|
|
|
@ -391,9 +382,9 @@ func linesForFormat(tokens Tokens) []formatLine {
|
|
|
|
|
|
|
|
|
|
// Now we'll pick off any trailing comments and attribute assignments
|
|
|
|
|
// to shuffle off into the "comment" and "assign" cells.
|
|
|
|
|
inHeredoc := false
|
|
|
|
|
for i := range lines {
|
|
|
|
|
line := &lines[i]
|
|
|
|
|
|
|
|
|
|
if len(line.lead) == 0 {
|
|
|
|
|
// if the line is empty then there's nothing for us to do
|
|
|
|
|
// (this should happen only for the final line, because all other
|
|
|
|
|
@ -401,26 +392,6 @@ func linesForFormat(tokens Tokens) []formatLine {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if inHeredoc {
|
|
|
|
|
for _, tok := range line.lead {
|
|
|
|
|
if tok.Type == hclsyntax.TokenCHeredoc {
|
|
|
|
|
inHeredoc = false
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// Inside a heredoc everything is "lead", even if there's a
|
|
|
|
|
// template interpolation embedded in there that might otherwise
|
|
|
|
|
// confuse our logic below.
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for _, tok := range line.lead {
|
|
|
|
|
if tok.Type == hclsyntax.TokenOHeredoc {
|
|
|
|
|
inHeredoc = true
|
|
|
|
|
break
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(line.lead) > 1 && line.lead[len(line.lead)-1].Type == hclsyntax.TokenComment {
|
|
|
|
|
line.comment = line.lead[len(line.lead)-1:]
|
|
|
|
|
line.lead = line.lead[:len(line.lead)-1]
|
|
|
|
|
|