Documentation ¶
Overview ¶
Lute - 一款结构化的 Markdown 引擎,支持 Go 和 JavaScript Copyright (c) 2019-present, b3log.org
Lute is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at:
http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. 原始地址 https://github.com/88250/lute/blob/master/render/protyle_preview_renderer.go
Index ¶
- func EChartsMindmap(listContent []byte) []byte
- func EChartsMindmapStr(listContent string) string
- func FindAttr(attrs [][]string, name string) (string, int, error)
- func HeadingID(heading *ast.Node) (ret string)
- func NewTerms() (ret map[string]string)
- func RenderHeadingText(n *ast.Node) (ret string)
- func Space0(text string) (ret string)
- func SubStr(str string, length int) (ret string)
- type BaseRenderer
- func (r *BaseRenderer) FixTermTypo(tokens []byte) []byte
- func (r *BaseRenderer) LinkPath(dest []byte) []byte
- func (r *BaseRenderer) LinkTextAutoSpaceNext(node *ast.Node)
- func (r *BaseRenderer) LinkTextAutoSpacePrevious(node *ast.Node)
- func (r *BaseRenderer) Newline()
- func (r *BaseRenderer) NoHighlight(language string) bool
- func (r *BaseRenderer) NodeAttrs(node *ast.Node) (ret [][]string)
- func (r *BaseRenderer) NodeAttrsStr(node *ast.Node) (ret string)
- func (r *BaseRenderer) NodeID(node *ast.Node) (ret string)
- func (r *BaseRenderer) PrefixPath(dest []byte) []byte
- func (r *BaseRenderer) RelativePath(dest []byte) []byte
- func (r *BaseRenderer) Render() (output []byte)
- func (r *BaseRenderer) Space(tokens []byte) []byte
- func (r *BaseRenderer) Tag(name string, attrs [][]string, selfclosing bool)
- func (r *BaseRenderer) Text(node *ast.Node) (ret string)
- func (r *BaseRenderer) TextAutoSpaceNext(node *ast.Node)
- func (r *BaseRenderer) TextAutoSpacePrevious(node *ast.Node)
- func (r *BaseRenderer) Write(content []byte)
- func (r *BaseRenderer) WriteByte(c byte)
- func (r *BaseRenderer) WriteString(content string)
- type Context
- type ExtRendererFunc
- type Heading
- type HtmlRenderer
- type OceanPressRender
- func (r *OceanPressRender) FindFileEntityFromID(id string) (structAll.FileEntity, structAll.StructInfo, error)
- func (r *OceanPressRender) HTML2Text(dom string) string
- func (r *OceanPressRender) Render() (html string, xml string)
- func (r *OceanPressRender) RenderFootnotes() []byte
- func (r *OceanPressRender) RenderLevel() int
- func (r *OceanPressRender) RssXmlRender(ids []string) (xml string)
- func (r *OceanPressRender) SqlRender(sql string, headerIncludes bool, removeDuplicate bool) string
- func (r *OceanPressRender) Tag(name string, attrs [][]string, selfclosing bool)
- type Options
- type Renderer
- type RendererFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EChartsMindmap ¶
func EChartsMindmapStr ¶
func RenderHeadingText ¶
Types ¶
type BaseRenderer ¶
type BaseRenderer struct { Options *Options // 渲染选项 RendererFuncs map[ast.NodeType]RendererFunc // 渲染器 DefaultRendererFunc RendererFunc // 默认渲染器,在 RendererFuncs 中找不到节点渲染器时会使用该默认渲染器进行渲染 ExtRendererFuncs map[ast.NodeType]ExtRendererFunc // 用户自定义的渲染器 Writer *bytes.Buffer // 输出缓冲 LastOut byte // 最新输出的一个字节 Tree *parse.Tree // 待渲染的树 DisableTags int // 标签嵌套计数器,用于判断不可能出现标签嵌套的情况,比如语法树允许图片节点包含链接节点,但是 HTML <img> 不能包含 <a> FootnotesDefs []*ast.Node // 脚注定义集 RenderingFootnotes bool // 是否正在渲染脚注定义 }
BaseRenderer 描述了渲染器结构。
func NewBaseRenderer ¶
func NewBaseRenderer(tree *parse.Tree, options *Options) *BaseRenderer
NewBaseRenderer 构造一个 BaseRenderer。
func (*BaseRenderer) FixTermTypo ¶
func (r *BaseRenderer) FixTermTypo(tokens []byte) []byte
FixTermTypo 修正 tokens 中出现的术语拼写问题。
func (*BaseRenderer) LinkPath ¶
func (r *BaseRenderer) LinkPath(dest []byte) []byte
func (*BaseRenderer) LinkTextAutoSpaceNext ¶
func (r *BaseRenderer) LinkTextAutoSpaceNext(node *ast.Node)
func (*BaseRenderer) LinkTextAutoSpacePrevious ¶
func (r *BaseRenderer) LinkTextAutoSpacePrevious(node *ast.Node)
func (*BaseRenderer) NoHighlight ¶
func (r *BaseRenderer) NoHighlight(language string) bool
func (*BaseRenderer) NodeAttrsStr ¶
func (r *BaseRenderer) NodeAttrsStr(node *ast.Node) (ret string)
func (*BaseRenderer) PrefixPath ¶
func (r *BaseRenderer) PrefixPath(dest []byte) []byte
func (*BaseRenderer) RelativePath ¶
func (r *BaseRenderer) RelativePath(dest []byte) []byte
func (*BaseRenderer) Space ¶
func (r *BaseRenderer) Space(tokens []byte) []byte
Space 会把 tokens 中的中西文之间加上空格。
func (*BaseRenderer) Tag ¶
func (r *BaseRenderer) Tag(name string, attrs [][]string, selfclosing bool)
func (*BaseRenderer) TextAutoSpaceNext ¶
func (r *BaseRenderer) TextAutoSpaceNext(node *ast.Node)
func (*BaseRenderer) TextAutoSpacePrevious ¶
func (r *BaseRenderer) TextAutoSpacePrevious(node *ast.Node)
func (*BaseRenderer) WriteString ¶
func (r *BaseRenderer) WriteString(content string)
WriteString 输出指定的字符串 content。
type Context ¶
type Context struct { Db sqlite.DbResult FindFileEntityFromID func(id string) (structAll.FileEntity, structAll.StructInfo, error) StructToHTML func(interface{}) string RefID string // 第一层级的引用 TopRefId *[]string BaseEntity structAll.FileEntity LuteEngine *lute.Lute // contains filtered or unexported fields }
type ExtRendererFunc ¶
ExtRendererFunc 描述了用户自定义的渲染器函数签名。
type HtmlRenderer ¶
type HtmlRenderer struct {
*BaseRenderer
}
HtmlRenderer 描述了 HTML 渲染器。
func NewHtmlRenderer ¶
func NewHtmlRenderer(tree *parse.Tree, options *Options) *HtmlRenderer
NewHtmlRenderer 创建一个 HTML 渲染器。
func (*HtmlRenderer) Render ¶
func (r *HtmlRenderer) Render() (output []byte)
func (*HtmlRenderer) RenderFootnotes ¶
func (r *HtmlRenderer) RenderFootnotes() []byte
type OceanPressRender ¶
type OceanPressRender struct { *BaseRenderer // contains filtered or unexported fields }
func NewOceanPressRenderer ¶
func NewOceanPressRenderer(tree *parse.Tree, options *Options, context *Context, ) *OceanPressRender
func (*OceanPressRender) FindFileEntityFromID ¶
func (r *OceanPressRender) FindFileEntityFromID(id string) (structAll.FileEntity, structAll.StructInfo, error)
FindFileEntityFromID 附加了人性化警告
func (*OceanPressRender) HTML2Text ¶
func (r *OceanPressRender) HTML2Text(dom string) string
HTML2Text 自定义的,与lute 的相比较会将 code 的内容也返回
func (*OceanPressRender) Render ¶
func (r *OceanPressRender) Render() (html string, xml string)
func (*OceanPressRender) RenderFootnotes ¶
func (r *OceanPressRender) RenderFootnotes() []byte
func (*OceanPressRender) RenderLevel ¶
func (r *OceanPressRender) RenderLevel() int
RenderLevel 返回当前渲染处于第几个层级
func (*OceanPressRender) RssXmlRender ¶
func (r *OceanPressRender) RssXmlRender(ids []string) (xml string)
RssXmlRender 通过 id 将 node 渲染成 xml
type Options ¶
type Options struct { // SoftBreak2HardBreak 设置是否将软换行(\n)渲染为硬换行(<br />)。 SoftBreak2HardBreak bool // AutoSpace 设置是否对普通文本中的中西文间自动插入空格。 // https://github.com/sparanoid/chinese-copywriting-guidelines AutoSpace bool // RenderListStyle 设置在渲染 OL、UL 时是否添加 data-style 属性 https://github.com/88250/lute/issues/48 RenderListStyle bool // CodeSyntaxHighlight 设置是否对代码块进行语法高亮。 CodeSyntaxHighlight bool // CodeSyntaxHighlightDetectLang bool CodeSyntaxHighlightDetectLang bool // CodeSyntaxHighlightInlineStyle 设置语法高亮是否为内联样式,默认不内联。 CodeSyntaxHighlightInlineStyle bool // CodeSyntaxHightLineNum 设置语法高亮是否显示行号,默认不显示。 CodeSyntaxHighlightLineNum bool // CodeSyntaxHighlightStyleName 指定语法高亮样式名,默认为 "github"。 CodeSyntaxHighlightStyleName string // Vditor 所见即所得支持。 VditorWYSIWYG bool // Vditor 即时渲染支持。 VditorIR bool // Vditor 分屏预览支持。 VditorSV bool // Protyle 所见即所得支持。 ProtyleWYSIWYG bool // KramdownBlockIAL 设置是否打开 kramdown 块级内联属性列表支持。 https://kramdown.gettalong.org/syntax.html#inline-attribute-lists KramdownBlockIAL bool // KramdownSpanIAL 设置是否打开 kramdown 行级内联属性列表支持。 KramdownSpanIAL bool // ImageLazyLoading 设置图片懒加载时使用的图片路径,配置该字段后将启用图片懒加载。 // 图片 src 的值会复制给新属性 data-src,然后使用该参数值作为 src 的值 https://github.com/88250/lute/issues/55 ImageLazyLoading string // ChineseParagraphBeginningSpace 设置是否使用传统中文排版“段落开头空两格”。 ChineseParagraphBeginningSpace bool // Sanitize 设置是否启用 XSS 安全过滤 https://github.com/88250/lute/issues/51 Sanitize bool // FixTermTypo 设置是否对普通文本中出现的术语进行修正。 // https://github.com/sparanoid/chinese-copywriting-guidelines // 注意:开启术语修正的话会默认在中西文之间插入空格。 FixTermTypo bool // Terms 将传入的 terms 合并覆盖到已有的 Terms 字典。 Terms map[string]string // ToC 设置是否打开“目录”支持。 ToC bool // HeadingID 设置是否打开“自定义标题 ID”支持。 HeadingID bool // KramdownIALIDRenderName 设置 kramdown 内联属性列表中出现 id 属性时渲染 id 属性用的 name(key) 名称,默认为 "id"。 // 仅在 HTML 渲染器 HtmlRenderer 中支持。 KramdownIALIDRenderName string // HeadingAnchor 设置是否对标题生成链接锚点。 HeadingAnchor bool // GFMTaskListItemClass 作为 GFM 任务列表项类名,默认为 "vditor-task"。 GFMTaskListItemClass string // VditorCodeBlockPreview 设置 Vditor 代码块是否需要渲染预览部分 VditorCodeBlockPreview bool // VditorMathBlockPreview 设置 Vditor 数学公式块是否需要渲染预览部分 VditorMathBlockPreview bool // VditorHTMLBlockPreview 设置 Vditor HTML 块是否需要渲染预览部分 VditorHTMLBlockPreview bool // LinkBase 设置链接、图片的基础路径。如果用户在链接或者图片地址中使用相对路径(没有协议前缀且不以 / 开头)并且 LinkBase 不为空则会用该值作为前缀。 // 比如 LinkBase 设置为 http://domain.com/,对于 ![foo](bar.png) 则渲染为 <img src="http://domain.com/bar.png" alt="foo" /> LinkBase string // LinkPrefix 设置连接、图片的路径前缀。一旦设置该值,链接渲染将强制添加该值作为链接前缀,这有别于 LinkBase。 // 比如 LinkPrefix 设置为 http://domain.com,对于使用绝对路径的 ![foo](/local/path/bar.png) 则渲染为 <img src="http://domain.com/local/path/bar.png" alt="foo" />; // 在 LinkBase 和 LinkPrefix 同时设置的情况下,会先处理 LinkBase 逻辑,最后再在 LinkBase 处理结果上加上 LinkPrefix。 LinkPrefix string // NodeIndexStart 用于设置块级节点编号起始值。 NodeIndexStart int // ProtyleContenteditable 设置 Protyle 渲染时标签中的 contenteditable 属性。 ProtyleContenteditable bool }
Options 描述了渲染选项。
func NewOptions ¶
func NewOptions() *Options
type Renderer ¶
type Renderer interface { // Render 渲染输出。 Render() (output []byte) }
Renderer 描述了渲染器接口。
type RendererFunc ¶
type RendererFunc func(n *ast.Node, entering bool) ast.WalkStatus
RendererFunc 描述了渲染器函数签名。