@@ -26,59 +26,51 @@ 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.Heading :
29
+ case * ast.Blockquote , * ast.CodeSpan :
30
+ return ast .WalkContinue , nil
31
+ case * ast.Heading , * ast.CodeBlock , * ast.List :
30
32
doubleSpace (out )
31
- out .Write (node .Text (source ))
32
- return ast .WalkSkipChildren , nil
33
+ return ast .WalkContinue , nil
33
34
case * ast.ThematicBreak :
34
35
doubleSpace (out )
35
36
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
43
37
case * ast.FencedCodeBlock :
44
38
doubleSpace (out )
45
39
doubleSpace (out )
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 )
40
+ out .Write (node .Lines ().Value (source ))
53
41
return ast .WalkContinue , nil
54
42
case * ast.Paragraph :
55
43
doubleSpace (out )
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
- }
44
+ if node .Lines ().Value (source )[0 ] == '|' { // Write tables as-is.
45
+ out .Write (node .Lines ().Value (source ))
61
46
return ast .WalkSkipChildren , nil
62
47
}
63
48
return ast .WalkContinue , nil
64
49
case * extAST.Strikethrough :
65
- out .Write (node .Text (source ))
50
+ out .Write (node .Lines (). Value (source ))
66
51
return ast .WalkContinue , nil
67
52
case * ast.AutoLink :
68
53
out .Write (node .URL (source ))
69
54
return ast .WalkSkipChildren , nil
70
- case * ast.CodeSpan :
71
- out .Write (node .Text (source ))
72
- return ast .WalkSkipChildren , nil
73
55
case * ast.Link :
74
- _ , err := out .Write (node .Text (source ))
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
+
75
66
if ! isRelativeLink (node .Destination ) {
76
67
out .WriteString (" " )
77
68
out .Write (node .Destination )
78
69
}
79
- return ast .WalkSkipChildren , err
70
+
71
+ return ast .WalkSkipChildren , nil
80
72
case * ast.Text :
81
- out .Write (node .Text (source ))
73
+ out .Write (node .Value (source ))
82
74
if node .SoftLineBreak () {
83
75
doubleSpace (out )
84
76
}
0 commit comments