@@ -26,51 +26,59 @@ func (r *TextRender) Render(w io.Writer, source []byte, n ast.Node) error {
26
26
}
27
27
28
28
switch node := node .(type ) {
29
- case * ast.Blockquote , * ast.CodeSpan :
30
- return ast .WalkContinue , nil
31
- case * ast.Heading , * ast.CodeBlock , * ast.List :
29
+ case * ast.Blockquote , * ast.Heading :
32
30
doubleSpace (out )
33
- return ast .WalkContinue , nil
31
+ out .Write (node .Text (source ))
32
+ return ast .WalkSkipChildren , nil
34
33
case * ast.ThematicBreak :
35
34
doubleSpace (out )
36
35
return ast .WalkSkipChildren , nil
36
+ case * ast.CodeBlock :
37
+ doubleSpace (out )
38
+ for i := 0 ; i < node .Lines ().Len (); i ++ {
39
+ line := node .Lines ().At (i )
40
+ out .Write (line .Value (source ))
41
+ }
42
+ return ast .WalkSkipChildren , nil
37
43
case * ast.FencedCodeBlock :
38
44
doubleSpace (out )
39
45
doubleSpace (out )
40
- out .Write (node .Lines ().Value (source ))
46
+ for i := 0 ; i < node .Lines ().Len (); i ++ {
47
+ line := node .Lines ().At (i )
48
+ _ , _ = out .Write (line .Value (source ))
49
+ }
50
+ return ast .WalkSkipChildren , nil
51
+ case * ast.List :
52
+ doubleSpace (out )
41
53
return ast .WalkContinue , nil
42
54
case * ast.Paragraph :
43
55
doubleSpace (out )
44
- if node .Lines ().Value (source )[0 ] == '|' { // Write tables as-is.
45
- out .Write (node .Lines ().Value (source ))
56
+ if node .Text (source )[0 ] == '|' { // Write tables as-is.
57
+ for i := 0 ; i < node .Lines ().Len (); i ++ {
58
+ line := node .Lines ().At (i )
59
+ out .Write (line .Value (source ))
60
+ }
46
61
return ast .WalkSkipChildren , nil
47
62
}
48
63
return ast .WalkContinue , nil
49
64
case * extAST.Strikethrough :
50
- out .Write (node .Lines (). Value (source ))
65
+ out .Write (node .Text (source ))
51
66
return ast .WalkContinue , nil
52
67
case * ast.AutoLink :
53
68
out .Write (node .URL (source ))
54
69
return ast .WalkSkipChildren , nil
70
+ case * ast.CodeSpan :
71
+ out .Write (node .Text (source ))
72
+ return ast .WalkSkipChildren , nil
55
73
case * ast.Link :
56
- // we want to write the text of the
57
- // link before the url
58
- child := node .FirstChild ()
59
- if child != nil {
60
- t , ok := child .(* ast.Text )
61
- if ok {
62
- out .Write (t .Value (source ))
63
- }
64
- }
65
-
74
+ _ , err := out .Write (node .Text (source ))
66
75
if ! isRelativeLink (node .Destination ) {
67
76
out .WriteString (" " )
68
77
out .Write (node .Destination )
69
78
}
70
-
71
- return ast .WalkSkipChildren , nil
79
+ return ast .WalkSkipChildren , err
72
80
case * ast.Text :
73
- out .Write (node .Value (source ))
81
+ out .Write (node .Text (source ))
74
82
if node .SoftLineBreak () {
75
83
doubleSpace (out )
76
84
}
0 commit comments