Omit link's text if it's equal to the URL it's pointing to

This commit is contained in:
Christian Muehlhaeuser
2019-12-05 17:45:38 +01:00
parent c4b02ad80d
commit e608d2e25e
+16 -3
View File
@@ -10,6 +10,8 @@ type LinkElement struct {
}
func (e *LinkElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error {
var textRendered bool
if node.LastChild != nil {
if node.LastChild.Type == bf.Image {
el := tr.NewElement(node.LastChild)
@@ -18,7 +20,9 @@ func (e *LinkElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error
return err
}
}
if len(node.LastChild.Literal) > 0 {
if len(node.LastChild.Literal) > 0 &&
string(node.LastChild.Literal) != string(node.LinkData.Destination) {
textRendered = true
el := &BaseElement{
Token: string(node.LastChild.Literal),
Style: tr.style[LinkText],
@@ -29,11 +33,20 @@ func (e *LinkElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error
}
}
}
if len(node.LinkData.Destination) > 0 {
style := *tr.style[Link]
pre := " "
if !textRendered {
pre = ""
style.Prefix = ""
style.Suffix = ""
}
el := &BaseElement{
Token: resolveRelativeURL(tr.BaseURL, string(node.LinkData.Destination)),
Prefix: " ",
Style: tr.style[Link],
Prefix: pre,
Style: &style,
}
err := el.Render(w, node, tr)
if err != nil {