Skip to content

Instantly share code, notes, and snippets.

@kyleconroy
Created September 24, 2017 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kyleconroy/52564ab2524d0ecb08f50921fc199dcc to your computer and use it in GitHub Desktop.
Save kyleconroy/52564ab2524d0ecb08f50921fc199dcc to your computer and use it in GitHub Desktop.
type Renderer struct {
html *blackfriday.HTMLRenderer
}
func (r *Renderer) RenderHeader(w io.Writer, ast *blackfriday.Node) {}
func (r *Renderer) RenderFooter(w io.Writer, ast *blackfriday.Node) {}
func (r *Renderer) RenderNode(w io.Writer, node *blackfriday.Node, entering bool) blackfriday.WalkStatus {
switch node.Type {
case blackfriday.CodeBlock:
lexer := lexers.Analyse(string(node.Literal))
if lexer == nil {
lexer = lexers.Get("go")
}
if lexer == nil {
lexer = lexers.Fallback
}
style := styles.Get("manni")
if style == nil {
style = styles.Fallback
}
iterator, err := lexer.Tokenise(nil, string(node.Literal))
if err != nil {
panic(err)
}
formatter := html.New()
err = formatter.Format(w, style, iterator)
if err != nil {
panic(err)
}
return blackfriday.GoToNext
}
return r.html.RenderNode(w, node, entering)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment