in internal/ingress/controller/template/template.go [100:175]
func cleanConf(in *bytes.Buffer, out *bytes.Buffer) error {
depth := 0
lineStarted := false
emptyLineWritten := false
state := stateCode
for {
c, err := in.ReadByte()
if err != nil {
if err == io.EOF {
return nil
}
return err // unreachable
}
needOutput := false
nextDepth := depth
nextLineStarted := lineStarted
switch state {
case stateCode:
switch c {
case '{':
needOutput = true
nextDepth = depth + 1
nextLineStarted = true
case '}':
needOutput = true
depth--
nextDepth = depth
nextLineStarted = true
case ' ', '\t':
needOutput = lineStarted
case '\r':
case '\n':
needOutput = !(!lineStarted && emptyLineWritten)
nextLineStarted = false
case '#':
needOutput = true
nextLineStarted = true
state = stateComment
default:
needOutput = true
nextLineStarted = true
}
case stateComment:
switch c {
case '\r':
case '\n':
needOutput = true
nextLineStarted = false
state = stateCode
default:
needOutput = true
}
}
if needOutput {
if !lineStarted && (writeIndentOnEmptyLines || c != '\n') {
for i := 0; i < depth; i++ {
err = out.WriteByte('\t') // always nil
if err != nil {
return err
}
}
}
emptyLineWritten = !lineStarted
err = out.WriteByte(c) // always nil
if err != nil {
return err
}
}
depth = nextDepth
lineStarted = nextLineStarted
}
}