Documentation ¶
Index ¶
- func NewMarkdown(options ...any) *_Markdown
- type AssetFinder
- type ContextPreparer
- type EnteringWalker
- type HTML
- type HtmlFilter
- type HtmlPrettifier
- type OpenLinksInNewTabKind
- type Option
- func WithAssetSources(fn AssetFinder) Option
- func WithDisableHTML(disable bool) Option
- func WithDisableHeadings(disable bool) Option
- func WithImageRenderer() Option
- func WithModifiedAnchorReference(relativePath string) Option
- func WithOpenLinksInNewTab(kind OpenLinksInNewTabKind) Option
- func WithRemoveTitleHeading() Option
- func WithXHTML() Option
- func WithoutRendering() Option
- func WithoutTransform() Option
- type Option2
- type OptionNoError
- type Renderer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewMarkdown ¶
func NewMarkdown(options ...any) *_Markdown
Types ¶
type AssetFinder ¶
type ContextPreparer ¶
type EnteringWalker ¶
type EnteringWalker interface {
WalkEntering(n ast.Node) (ast.WalkStatus, error)
}
type HtmlFilter ¶
非常低效的接口。。。
type HtmlPrettifier ¶
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 WithImageRenderer ¶
func WithImageRenderer() Option
func WithModifiedAnchorReference ¶
修改锚点页内引用(#)的指向为绝对地址。 https://github.com/movsb/taoblog/blob/5c86466f3c1ab2f1543c3a5be4abc24f9c60c532/docs/TODO.md
func WithOpenLinksInNewTab ¶
func WithOpenLinksInNewTab(kind OpenLinksInNewTabKind) Option
新窗口打开链接。 TODO 目前只能针对 Markdown 链接, HTML 标签链接不可用。 注意:锚点 (#section)这种始终不会在新窗口打开。
func WithoutRendering ¶
func WithoutRendering() Option
不动态计算图片大小。适用于提交的时候,只会检查合法性。计算是在返回的时候进行。 不渲染,只解析,并判断合法性。不返回内容。
func WithoutTransform ¶
func WithoutTransform() Option
type Option2 ¶
type Option2 = any
后面统一改成 Option。
func WithHashTags ¶
自动解析 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)