var nl = []byte("\n")
var space = []byte(" ")
+var prefix = []byte("// ")
func (l *lineWrapper) write(text string) {
if l.n == 0 && l.printed {
}
l.printed = true
+ needsPrefix := false
+ isComment := strings.HasPrefix(text, "//")
for _, f := range strings.Fields(text) {
w := utf8.RuneCountInString(f)
// wrap if line is too long
l.out.Write(nl)
l.n = 0
l.pendSpace = 0
+ needsPrefix = isComment
}
if l.n == 0 {
l.out.Write([]byte(l.indent))
}
+ if needsPrefix {
+ l.out.Write(prefix)
+ needsPrefix = false
+ }
l.out.Write(space[:l.pendSpace])
l.out.Write([]byte(f))
l.n += l.pendSpace + w
},
text: ". Para.\n\n$ should not be ``escaped''",
},
+ {
+ in: "// A very long line of 46 char for line wrapping.",
+ out: []block{
+ {opPara, []string{"// A very long line of 46 char for line wrapping."}},
+ },
+ text: `. // A very long line of 46 char for line
+. // wrapping.
+`,
+ },
+ {
+ in: `/* A very long line of 46 char for line wrapping.
+A very long line of 46 char for line wrapping. */`,
+ out: []block{
+ {opPara, []string{"/* A very long line of 46 char for line wrapping.\n", "A very long line of 46 char for line wrapping. */"}},
+ },
+ text: `. /* A very long line of 46 char for line
+. wrapping. A very long line of 46 char
+. for line wrapping. */
+`,
+ },
}
func TestBlocks(t *testing.T) {