mirror of
https://github.com/rwinkhart/glamour-temp-MUTN.git
synced 2026-09-05 08:27:18 -04:00
Decouple render elements from blackfriday parser
This commit is contained in:
@@ -2,40 +2,56 @@ package gold
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
bf "gopkg.in/russross/blackfriday.v2"
|
||||
)
|
||||
|
||||
type LinkElement struct {
|
||||
Text string
|
||||
BaseURL string
|
||||
URL string
|
||||
Child ElementRenderer // FIXME
|
||||
}
|
||||
|
||||
func (e *LinkElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error {
|
||||
ctx := tr.context
|
||||
|
||||
func (e *LinkElement) Render(w io.Writer, ctx RenderContext) error {
|
||||
var textRendered bool
|
||||
if node.LastChild != nil {
|
||||
if node.LastChild.Type == bf.Image {
|
||||
el := tr.NewElement(node.LastChild)
|
||||
err := el.Renderer.Render(w, node.LastChild, tr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(e.Text) > 0 &&
|
||||
e.Text != e.URL {
|
||||
textRendered = true
|
||||
|
||||
el := &BaseElement{
|
||||
Token: e.Text,
|
||||
Style: ctx.style[LinkText],
|
||||
}
|
||||
if len(node.LastChild.Literal) > 0 &&
|
||||
string(node.LastChild.Literal) != string(node.LinkData.Destination) {
|
||||
textRendered = true
|
||||
el := &BaseElement{
|
||||
Token: string(node.LastChild.Literal),
|
||||
Style: ctx.style[LinkText],
|
||||
}
|
||||
err := el.Render(w, node.LastChild, tr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err := el.Render(w, ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if len(node.LinkData.Destination) > 0 {
|
||||
/*
|
||||
if node.LastChild != nil {
|
||||
if node.LastChild.Type == bf.Image {
|
||||
el := tr.NewElement(node.LastChild)
|
||||
err := el.Renderer.Render(w, node.LastChild, tr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
if len(node.LastChild.Literal) > 0 &&
|
||||
string(node.LastChild.Literal) != string(node.LinkData.Destination) {
|
||||
textRendered = true
|
||||
el := &BaseElement{
|
||||
Token: string(node.LastChild.Literal),
|
||||
Style: ctx.style[LinkText],
|
||||
}
|
||||
err := el.Render(w, node.LastChild, tr)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
if len(e.URL) > 0 {
|
||||
pre := " "
|
||||
style := ctx.style[Link]
|
||||
if !textRendered {
|
||||
@@ -45,11 +61,11 @@ func (e *LinkElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error
|
||||
}
|
||||
|
||||
el := &BaseElement{
|
||||
Token: resolveRelativeURL(tr.BaseURL, string(node.LinkData.Destination)),
|
||||
Token: resolveRelativeURL(e.BaseURL, e.URL),
|
||||
Prefix: pre,
|
||||
Style: style,
|
||||
}
|
||||
err := el.Render(w, node, tr)
|
||||
err := el.Render(w, ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user