renderers

package
v1.0.1-0...-8cc9c27 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 15, 2024 License: MIT Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewMarkdown

func NewMarkdown(options ...any) *_Markdown

Types

type AssetFinder

type AssetFinder func(path string) (name, url, description string, found bool)

type ContextPreparer

type ContextPreparer interface {
	PrepareContext(ctx parser.Context)
}

type EnteringWalker

type EnteringWalker interface {
	WalkEntering(n ast.Node) (ast.WalkStatus, error)
}

type HTML

type HTML struct {
	Renderer
}

func (*HTML) Render

func (me *HTML) Render(source string) (string, error)

type HtmlFilter

type HtmlFilter interface {
	FilterHtml(doc *html.Node) ([]byte, error)
}

非常低效的接口。。。

type HtmlPrettifier

type HtmlPrettifier interface {
	PrettifyHtml(doc *html.Node) ([]byte, error)
}

type OpenLinksInNewTabKind

type OpenLinksInNewTabKind int
const (
	OpenLinksInNewTabKindKeep     OpenLinksInNewTabKind = iota // 不作为。
	OpenLinksInNewTabKindNever                                 // 全部链接在当前窗口打开。
	OpenLinksInNewTabKindAll                                   // 全部链接在新窗口打开,适用于评论预览时。
	OpenLinksInNewTabKindExternal                              // 仅外站链接在新窗口打开。
)

type Option

type Option func(me *_Markdown) error

TODO 不要返回 error。 apply 的时候统一 catch 并返回初始化失败。

func WithAssetSources

func WithAssetSources(fn AssetFinder) Option

提供文章附件的引用来源

func WithDisableHTML

func WithDisableHTML(disable bool) Option

不允许使用 HTML 标签。

func WithDisableHeadings

func WithDisableHeadings(disable bool) Option

不允许评论中存在任何级别的“标题”。

func WithImageRenderer

func WithImageRenderer() Option

func WithModifiedAnchorReference

func WithModifiedAnchorReference(relativePath string) Option

修改锚点页内引用(#)的指向为绝对地址。 https://github.com/movsb/taoblog/blob/5c86466f3c1ab2f1543c3a5be4abc24f9c60c532/docs/TODO.md

func WithOpenLinksInNewTab

func WithOpenLinksInNewTab(kind OpenLinksInNewTabKind) Option

新窗口打开链接。 TODO 目前只能针对 Markdown 链接, HTML 标签链接不可用。 注意:锚点 (#section)这种始终不会在新窗口打开。

func WithRemoveTitleHeading

func WithRemoveTitleHeading() Option

移除 Markdown 中的标题(适用于文章)。

func WithXHTML

func WithXHTML() Option

func WithoutRendering

func WithoutRendering() Option

不动态计算图片大小。适用于提交的时候,只会检查合法性。计算是在返回的时候进行。 不渲染,只解析,并判断合法性。不返回内容。

func WithoutTransform

func WithoutTransform() Option

type Option2

type Option2 = any

后面统一改成 Option。

func WithHashTags

func WithHashTags(resolve func(tag string) string, tags *[]string) Option2

自动解析 HashTags。 tags: 包含 #。 resolve:把标签解析成链接。

func WithHtmlPrettifier

func WithHtmlPrettifier() Option2

简化并美化 Markdown 的展示。 比如: - 不显示复杂的链接、图片、表格、代码块等元素。 - 不显示脚注。

NOTE 因为 Markdown 只能解析而不能还原,所以这里处理的是 HTML 内容。 HTML 可以在 NODE 之间等价转换。 而由于 Markdown 目前在转换成 HTML 时采用了后端渲染代码。 所以 chroma 把 code 包裹在了 table 中。需要特别处理。

https://yari-demos.prod.mdn.mozit.cloud/en-US/docs/Web/HTML/Inline_elements

func WithLazyLoadingFrames

func WithLazyLoadingFrames() Option2

油管的分享视频 iframe 竟然默认不是 lazy lading 的,有点儿无语😓。 目前碎碎念是全部加载的,有好几个视频,会严重影响页面加载速度。

做法是解析 HTML Block,判断是否为 iframe,然后添加属性。

NOTE:Markdown 虽然允许 html 和 markdown 交叉混写。但是处理这种交叉的内容 非常复杂(涉及不完整 html 的解析与还原),所以暂时不支持这种情况。 这种情况很少,像是 <iframe 油管视频> 都是在一行内。就算可以多行,也不会和 markdown 交织。 虽然 iframe 是 inline 类型的元素,但是应该没人放在段落内吧?都是直接粘贴成为一段的。否则不能处理。

https://developer.mozilla.org/en-US/docs/Web/Performance/Lazy_loading#loading_attribute

func WithReserveListItemMarkerStyle

func WithReserveListItemMarkerStyle() Option2

保留列表样式。

只是增加类名,前端通过类名自行决定怎么展示。

type OptionNoError

type OptionNoError func(me *_Markdown)

func WithTitle

func WithTitle(title *string) OptionNoError

获取从 Markdown 中解析得到的一级标题。

type Renderer

type Renderer interface {
	Render(source string) (string, error)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL