@@ -26,51 +26,59 @@ func (r *TextRender) Render(w io.Writer, source []byte, n ast.Node) error {
2626 }
2727
2828 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 :
3230 doubleSpace (out )
33- return ast .WalkContinue , nil
31+ out .Write (node .Text (source ))
32+ return ast .WalkSkipChildren , nil
3433 case * ast.ThematicBreak :
3534 doubleSpace (out )
3635 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
3743 case * ast.FencedCodeBlock :
3844 doubleSpace (out )
3945 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 )
4153 return ast .WalkContinue , nil
4254 case * ast.Paragraph :
4355 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+ }
4661 return ast .WalkSkipChildren , nil
4762 }
4863 return ast .WalkContinue , nil
4964 case * extAST.Strikethrough :
50- out .Write (node .Lines (). Value (source ))
65+ out .Write (node .Text (source ))
5166 return ast .WalkContinue , nil
5267 case * ast.AutoLink :
5368 out .Write (node .URL (source ))
5469 return ast .WalkSkipChildren , nil
70+ case * ast.CodeSpan :
71+ out .Write (node .Text (source ))
72+ return ast .WalkSkipChildren , nil
5573 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 ))
6675 if ! isRelativeLink (node .Destination ) {
6776 out .WriteString (" " )
6877 out .Write (node .Destination )
6978 }
70-
71- return ast .WalkSkipChildren , nil
79+ return ast .WalkSkipChildren , err
7280 case * ast.Text :
73- out .Write (node .Value (source ))
81+ out .Write (node .Text (source ))
7482 if node .SoftLineBreak () {
7583 doubleSpace (out )
7684 }
0 commit comments