我有一个渲染文件的 Go 文本/模板,但是我发现很难在保留输出中的换行符的同时干净地构建模板。
我想在模板中有额外的、不必要的换行符以使其更具可读性,但从输出中删除它们。任何超过正常分段符的换行符组都应该压缩为正常的分段符,例如
lines with
too many breaks should become lines with
normal paragraph breaks.
该字符串可能太大而无法安全地存储在内存中,因此我想将其保留为输出流。
我的第一次尝试:
type condensingWriter struct {
writer io.Writer
lastLineIsEmpty bool
}
func (c condensingWriter) Write(b []byte) (n int, err error){
thisLineIsEmpty := strings.TrimSpace(string(b)) == ""
defer func(){
c.lastLineIsEmpty = thisLineIsEmpty
}()
if c.lastLineIsEmpty && thisLineIsEmpty{
return 0, nil
} else {
return c.writer.Write(b)
}
}
这不起作用,因为我天真地认为它会缓冲换行符,但事实并非如此。
有关如何使其工作的任何建议?
繁星点点滴滴
相关分类