From d4d0a3e3132dbcb503af8d30c152fe280fc3a429 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 28 Nov 2019 02:28:06 +0100 Subject: [PATCH] Let users define their own element prefix/suffix in styles --- baselement.go | 56 ++++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/baselement.go b/baselement.go index 5ff03d3..f064566 100644 --- a/baselement.go +++ b/baselement.go @@ -16,31 +16,8 @@ type BaseElement struct { Style StyleType } -func (e *BaseElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error { - if e.Prefix != "" { - fmt.Fprintf(w, "%s", e.Prefix) - } - defer func() { - if e.Suffix != "" { - fmt.Fprintf(w, "%s", e.Suffix) - } - }() - - rules := tr.style[e.Style] - if rules == nil { - fmt.Fprintf(w, "%s", e.Token) - return nil - } - if rules.Prefix != "" { - fmt.Fprintf(w, "%s", rules.Prefix) - } - defer func() { - if rules.Suffix != "" { - fmt.Fprintf(w, "%s", rules.Suffix) - } - }() - - out := aurora.Reset(e.Token) +func (e *BaseElement) renderText(w io.Writer, rules *ElementStyle, s string) error { + out := aurora.Reset(s) if rules.Color != "" { i, err := strconv.Atoi(rules.Color) if err == nil && i >= 0 && i <= 255 { @@ -53,6 +30,7 @@ func (e *BaseElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error out = out.Index(uint8(i)) } } + if rules.Underline { out = out.Underline() } @@ -78,3 +56,31 @@ func (e *BaseElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error _, err := w.Write([]byte(aurora.Sprintf("%s", out))) return err } + +func (e *BaseElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error { + if e.Prefix != "" { + fmt.Fprintf(w, "%s", e.Prefix) + } + defer func() { + if e.Suffix != "" { + fmt.Fprintf(w, "%s", e.Suffix) + } + }() + + rules := tr.style[e.Style] + if rules == nil { + fmt.Fprintf(w, "%s", e.Token) + return nil + } + + if rules.Prefix != "" { + e.renderText(w, rules, rules.Prefix) + } + defer func() { + if rules.Suffix != "" { + e.renderText(w, rules, rules.Suffix) + } + }() + + return e.renderText(w, rules, e.Token) +}