-
Notifications
You must be signed in to change notification settings - Fork 118
Closed
Description
我发现 Ink 并没有直接 import "github.com/russross/blackfriday",而是 import 了自己 fork 的 blackfriday,故有此问。
因为 blackfriday v2 多了可定制选项 blackfriday.WithRenderer,经过不停地搜索学习,我这两天用这个特性实现了自定义 TOC 生成的功能:
.md 的头部 meta 信息里,用 toc: true 来生成 TOC(目录)。
title: "不问罪福 念佛皆生"
date: 2015-05-23 18:01:00 +0800
author: 释慧净
toc: true
tags:
- 净土宗丛书
- 随身书
preview:
---
上面有了 toc: true 的定义,就会在正文之前生成目录(已实现,基于 blackfriday v2):
import "gopkg.in/russross/blackfriday.v2"下面大部分代码是抄来的:
type inkRenderer struct {
defaultR *blackfriday.HTMLRenderer
}
func (r *inkRenderer) RenderHeader(w io.Writer, ast *blackfriday.Node) {
r.defaultR.RenderHeader(w, ast)
}
func (r *inkRenderer) RenderFooter(w io.Writer, ast *blackfriday.Node) {
r.defaultR.RenderFooter(w, ast)
}
func (r *inkRenderer) RenderNode(w io.Writer, node *blackfriday.Node, entering bool) blackfriday.WalkStatus {
return r.defaultR.RenderNode(w, node, entering)
}
func ParseMarkdownWithToc(markdown string) template.HTML {
defaultR := blackfriday.NewHTMLRenderer(blackfriday.HTMLRendererParameters{Flags: blackfriday.TOC,})
r := inkRenderer{defaultR: defaultR}
html := blackfriday.Run([]byte(markdown), blackfriday.WithRenderer(&r))
return template.HTML(html)
}
func ParseMarkdown(markdown string) template.HTML {
// html.UnescapeString
return template.HTML(blackfriday.Run([]byte(markdown)))
}后面调用:
if config.Toc {
article.Content = ParseMarkdownWithToc(content)
} else {
article.Content = ParseMarkdown(content)
}请问 Ink 用的 blackfriday v1.5 可否升级为 v2?
Metadata
Metadata
Assignees
Labels
No labels