Commit b8851ad7 authored by Robert Griesemer's avatar Robert Griesemer

go/doc: fix ToText

Fixes #6769.

LGTM=bradfitz
R=bgarcia, rsc, bradfitz
CC=golang-codereviews
https://golang.org/cl/84220044
parent c274ff67
...@@ -392,7 +392,9 @@ func ToText(w io.Writer, text string, indent, preIndent string, width int) { ...@@ -392,7 +392,9 @@ func ToText(w io.Writer, text string, indent, preIndent string, width int) {
case opPre: case opPre:
w.Write(nl) w.Write(nl)
for _, line := range b.lines { for _, line := range b.lines {
if !isBlank(line) { if isBlank(line) {
w.Write([]byte("\n"))
} else {
w.Write([]byte(preIndent)) w.Write([]byte(preIndent))
w.Write([]byte(line)) w.Write([]byte(line))
} }
......
...@@ -42,8 +42,9 @@ func TestIsHeading(t *testing.T) { ...@@ -42,8 +42,9 @@ func TestIsHeading(t *testing.T) {
} }
var blocksTests = []struct { var blocksTests = []struct {
in string in string
out []block out []block
text string
}{ }{
{ {
in: `Para 1. in: `Para 1.
...@@ -59,6 +60,22 @@ Para 3. ...@@ -59,6 +60,22 @@ Para 3.
pre1 pre1
Para 4. Para 4.
pre
pre1
pre2
Para 5.
pre
pre1
pre2
Para 6.
pre pre
pre2 pre2
`, `,
...@@ -69,8 +86,44 @@ Para 4. ...@@ -69,8 +86,44 @@ Para 4.
{opPara, []string{"Para 3.\n"}}, {opPara, []string{"Para 3.\n"}},
{opPre, []string{"pre\n", "pre1\n"}}, {opPre, []string{"pre\n", "pre1\n"}},
{opPara, []string{"Para 4.\n"}}, {opPara, []string{"Para 4.\n"}},
{opPre, []string{"pre\n", "pre1\n", "\n", "pre2\n"}},
{opPara, []string{"Para 5.\n"}},
{opPre, []string{"pre\n", "\n", "\n", "pre1\n", "pre2\n"}},
{opPara, []string{"Para 6.\n"}},
{opPre, []string{"pre\n", "pre2\n"}}, {opPre, []string{"pre\n", "pre2\n"}},
}, },
text: `. Para 1. Para 1 line 2.
. Para 2.
. Section
. Para 3.
$ pre
$ pre1
. Para 4.
$ pre
$ pre1
$ pre2
. Para 5.
$ pre
$ pre1
$ pre2
. Para 6.
$ pre
$ pre2
`,
}, },
} }
...@@ -83,6 +136,17 @@ func TestBlocks(t *testing.T) { ...@@ -83,6 +136,17 @@ func TestBlocks(t *testing.T) {
} }
} }
func TestToText(t *testing.T) {
var buf bytes.Buffer
for i, tt := range blocksTests {
ToText(&buf, tt.in, ". ", "$\t", 40)
if have := buf.String(); have != tt.text {
t.Errorf("#%d: mismatch\nhave: %s\nwant: %s\nhave vs want:\n%q\n%q", i, have, tt.text, have, tt.text)
}
buf.Reset()
}
}
var emphasizeTests = []struct { var emphasizeTests = []struct {
in string in string
out string out string
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment