mirror of
https://github.com/rwinkhart/glamour-temp-MUTN.git
synced 2026-09-02 06:57:30 -04:00
Use a Renderer interface instead of rendering fragments
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package gold
|
||||
|
||||
import (
|
||||
"io"
|
||||
|
||||
"github.com/alecthomas/chroma/quick"
|
||||
bf "gopkg.in/russross/blackfriday.v2"
|
||||
)
|
||||
|
||||
type CodeBlockElement struct {
|
||||
Code string
|
||||
Language string
|
||||
}
|
||||
|
||||
func (e *CodeBlockElement) Render(w io.Writer, node *bf.Node, tr *TermRenderer) error {
|
||||
var theme string
|
||||
rules := tr.style[CodeBlock]
|
||||
if rules != nil {
|
||||
theme = rules.Theme
|
||||
}
|
||||
|
||||
if len(theme) > 0 {
|
||||
return quick.Highlight(w, e.Code, e.Language, "terminal16m", theme)
|
||||
}
|
||||
|
||||
// fallback rendering
|
||||
el := &BaseElement{
|
||||
Token: string(node.Literal),
|
||||
Style: CodeBlock,
|
||||
}
|
||||
return el.Render(w, node, tr)
|
||||
}
|
||||
Reference in New Issue
Block a user