Home

Awesome

russross/blackfriday translate-svg

<!-- [![explain]][source] --> <!-- [![size-img]][size] -->

「 Blackfriday{黑色星期五}是一个markdown处理器,用Go实现. 」

中文 | english


校对 🀄️

<!-- doc-templite START generated --> <!-- repo = 'russross/blackfriday' --> <!-- commit = '05f3235734ad95d0016f6a23902f06461fcf567a' --> <!-- time = '2018-09-17' -->
翻译的原文与日期最新更新更多
commit⏰ 2018-09-17last中文翻译
<!-- doc-templite END generated -->

贡献

欢迎 👏 勘误/校对/更新贡献 😊 具体贡献请看

生活

If help, buy me coffee —— 营养跟不上了,给我来瓶营养快线吧! 💰


BlackfridayBuild StatusGodoc

Blackfriday{黑色星期五}是一个markdown处理器,用Go实现. 它对输入是偏执严格的(所以你可以安全地提供用户提供的数据),且它很快,它支持常见的扩展(表格,智能标点符号替换等).并且它对所有 utf-8(unicode)输入都是安全的.

目前支持 HTML 输出以及 Smartypants 扩展.

该 Smartypants 扩展,将 ascii 中的引号,连接号,省略号转换为对应的 HTML 等价表示。

它起源于 C 的sundown, 并翻译翻译成 Go.

目录

<!-- START doctoc generated TOC please keep comment here to allow auto update --> <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> <!-- END doctoc generated TOC please keep comment here to allow auto update -->

安装

Blackfriday 与任何现代 Go 版本兼容. 安装 Go 和 git 后:

go get -u gopkg.in/russross/blackfriday.v2

将下载,编译和安装包到您的$GOPATH目录层次结构

版本

目前维护和推荐版本的 Blackfriday 是v2.它正在自己的分支上开发:https://github.com/russross/blackfriday/tree/v2, 并且文档可在以下处获得https://godoc.org/gopkg.in/russross/blackfriday.v2.

若使用go get获取,它是通过gopkg.in 网站gopkg.in/russross/blackfriday.v2, 但我们强烈建议使用包管理工具dep要么Glide并利用语义版本控制. 使用包管理,您应该导入github.com/russross/blackfriday并指定您使用的是 2.0.0 版.

与 v1 相比,版本 2 提供了许多改进:

潜在的缺点:

如果你仍然对遗产v1感兴趣,你可以从github.com/russross/blackfriday中导入它.可以在此处找到旧版 v1 的文档:https://godoc.org/github.com/russross/blackfriday

dep 已知问题

存在 Blackfriday v1以及dep的已知问题.目前dep将 semver 版本优先于其他任何版本,并选择最新版本,加上它不适用[[constraint]]说明者可以传递包裹.因此,如果您使用的是 Blackfriday v1 的东西,则有些东西不能使用dep然而,你会得到 Blackfriday v2, 你的第一个依赖将无法建立.

它有几个修复,在这里记录:https://github.com/golang/dep/blob/master/docs/FAQ.md#how-do-i-constrain-a-transitive-dependencys-version

与此同时,dep团队正在研究对传递依赖性问题的约束的更通用的解决方案:https://github.com/golang/dep/issues/1124.

用法

v1

对于基本用法,只需将输入,input 字节切片并调用:

output := blackfriday.MarkdownBasic(input)

这使得它没有启用扩展.要获得更有用的功能集,请改用:

output := blackfriday.MarkdownCommon(input)

v2

对于最明智的 markdown 处理,只需输入,input 字节切片并调用:

output := blackfriday.Run(input)

上面的 input 将被解析,并且输出使用一组最常用的扩展程序进行渲染 . 如果您想要最基本的功能集,与裸 Markdown 规范相对应,请使用:

output := blackfriday.Run(input, blackfriday.WithNoExtensions())

清理不受信任的内容

Blackfriday 本身无法防范恶意内容.如果您正在处理用户提供的 markdown,我们建议您通过 HTML 清理程序运行 Blackfriday 的输出,例如Bluemonday 忧愁星期一.

以下是 Blackfriday 与 Bluemonday 一起使用的简单示例:

import (
    "github.com/microcosm-cc/bluemonday"
    "gopkg.in/russross/blackfriday.v2"
)

// ...
unsafe := blackfriday.Run(input)
html := bluemonday.UGCPolicy().SanitizeBytes(unsafe)

自定义选项,v1

如果你想自定义选项集,首先得到一个渲染器(目前只有 HTML 输出引擎),然后用它来调用更通用Markdown功能.例如,请参阅的实现MarkdownBasicMarkdownCommonmarkdown.go.

自定义选项,v2

如果要自定义选项集,请使用blackfriday.WithExtensions,blackfriday.WithRendererblackfriday.WithRefOverride.

blackfriday-tool

你也可以看看blackfriday-tool,有关如何使用它的更完整示例. 使用以下命令下载并安装:

go get github.com/russross/blackfriday-tool

这是一个简单的命令行工具,允许您使用独立程序处理 markdown 文件.如果您只是在寻找一些示例代码,您还可以直接在 github 上浏览源代码:

请注意,如果您还没有 Blackfriday, 那可以先安装blackfriday-tool,因为除了工具本身之外,还会下载和安装 blackfriday. 工具二进制文件将安装在$GOPATH/bin.这是一个静态链接的二进制文件,可以将其复制到您需要的任何位置,而无需担心依赖项和库版本.

消毒的 anchor 名称

作用如: This is a header => this-is-a-header

Blackfriday 包括,一个用于创建与给定输入文本相对应的已消毒 anchor 名称的算法 .该算法用于为标题创建 anchor 点,若EXTENSION_AUTO_HEADER_IDS已启用. 该算法具有规范, 因此其他包可以创建兼容的 anchor 名称和到这些 anchor 的链接.

规范位于https://godoc.org/github.com/russross/blackfriday#hdr-Sanitized_Anchor_Names.

SanitizedAnchorName正是公开的函数,并可用于创建 blackfriday 生成的 anchor 名称的兼容链接.该算法也在一个小的独立包中实现github.com/shurcooL/sanitized_anchor_name.它对于需要小包,并且不需要 blackfriday 的完整功能的客户来说非常有用.

特征

支持sundown的所有功能,包括:

扩展

除了标准的 markdown 语法之外,此包还实现了以下扩展:

其他渲染器

Blackfriday 的结构允许替代渲染引擎.以下是一些关注的项目:

TODO

执照

Blackfriday 根据简化 BSD 许可证分发