caddyfile: Fix comparing if two tokens are on the same line (#5626)

* fix comparing if two tokens are on the same line

* compare tokens from copies when importing
This commit is contained in:
WeidiDeng
2023-07-13 04:32:22 +08:00
committed by GitHub
parent 0e2c7e1d35
commit bbe1952a59
4 changed files with 103 additions and 25 deletions

View File

@@ -338,3 +338,28 @@ func (t Token) NumLineBreaks() int {
}
var heredocMarkerRegexp = regexp.MustCompile("^[A-Za-z0-9_-]+$")
// isNextOnNewLine tests whether t2 is on a different line from t1
func isNextOnNewLine(t1, t2 Token) bool {
// If the second token is from a different file,
// we can assume it's from a different line
if t1.File != t2.File {
return true
}
// If the second token is from a different import chain,
// we can assume it's from a different line
if len(t1.imports) != len(t2.imports) {
return true
}
for i, im := range t1.imports {
if im != t2.imports[i] {
return true
}
}
// If the first token (incl line breaks) ends
// on a line earlier than the next token,
// then the second token is on a new line
return t1.Line+t1.NumLineBreaks() < t2.Line
}