@brodybits/remark-parse 第8版 页面存档备份,存于互联网档案馆
与 trim@ 1.x 在依赖中更新
解析器 页:1 统一。 。 。 . 将标记降为 目标数 语法树. 用于 评论 处理器 但也可以单独使用. 可能会 延长 以改变Markdown的解析方式.
这个版本是 测试 带节点.js返回版本 6.0.0 npm 版本返回到( n) 3.10.7。 。 。 .
发起人
|
盖茨比 🥇 |
维塞尔 🥇
|
净化
|
|||
|
霍洛韦 |
主题 🥉 |
脚印 🥉 |
博览 🥉 |
你吗? |
|
安装
无数字 :
npm install @brodybits/remark-parse
使用
var unified = require('unified')
var createStream = require('unified-stream')
var markdown = require('@brodybits/remark-parse')
var remark2rehype = require('remark-rehype')
var html = require('rehype-stringify')
var processor = unified()
.use(markdown, {commonmark: true})
.use(remark2rehype)
.use(html)
process.stdin.pipe(createStream(processor)).pipe(process.stdout)
目录
API 密码
processor().use(parse[, options])
配置 processor 将 Markdown 读作输入和进程
目标数 语法树.
options
选项可以直接传递,也可以稍后传递
processor.data()。 。 。 .
options.gfm
GFM 模式 (boolean,默认值 : true) (中文(简体) ).
hello ~~hi~~ world
打开 :
options.commonmark
普通马克模式( C)boolean,默认值 : false) (中文(简体) ).
This is a paragraph
and this is also part of the preceding paragraph.
允许 :
- 拆分块引用的空行
- 括号( E)
(财务报告和审定财务报表)围绕链接和图像标题 - 任何逃脱者 ASCII 标出 字符
- 关闭括号
))作为命令列表标记 - 块引用中的 URL 定义
丢弃 :
- 直接跟随段落的缩进代码块
- ATX标题
# Hash headings打开散列后无间隔,或 关闭散列前 - 设置下一个标题( E)
Underline headings\n---) 后一段时 - 链接和图像标题中的新行
- 链接中的白空间和自动链接中的图像 URL(括号中的链接,
<财务报告和审定财务报表>(中文(简体) ) - 懒惰块引出续作,行前不超过
字符( c)
>),用于列表、代码和专题间断
options.pedantic
Pedantic以前用来模仿旧式的Markdown模式:没有表格,没有 有栅栏的密码 还有很多窃听器. 但请不要使用 未来.
options.blocks
块数( E)Array.<string>,默认值: 块 HTML 元素) (中文(简体) ).
<block>foo
</block>
定义哪些 HTML 元素被视为块级.
parse.Parser
进入 解析器如果你需要的话.
扩展 Parser
一般情况下,使用 变压器 操作语法树 实现预期产出. 有时,例如,在引入新的、带有某种 优先, 需要与 parser 接口 .
如果 remark-parse 插件被使用, 它添加了一个 Parser 构造器
函数到 processor。 。 。 .
其他插件可以在其原型中添加活化器来改变Markdown的特性
解说.
以下插件添加一个 指示器 为了纪念.
module.exports = mentions
function mentions() {
var Parser = this.Parser
var tokenizers = Parser.prototype.inlineTokenizers
var methods = Parser.prototype.inlineMethods
// Add an inline tokenizer (defined in the following example).
tokenizers.mention = tokenizeMention
// Run it just before `text`.
methods.splice(methods.indexOf('text'), 0, 'mention')
}
Parser#blockTokenizers
姓名地图 指示器s (单位:千美元)Object.<Function>) (中文(简体) ).
这些标志剂(例如: fencedCode, (中文(简体) ), table,以及 paragraph吃从
开始到行结束的值.
见 #blockMethods 以下列出默认列入的方法.
Parser#blockMethods
清单 blockTokenizers 名称 (Array.<string>) (中文(简体) ).
指定显示器运行的顺序.
默认块法的优先权如下:
blankLineindentedCodefencedCodeblockquoteatxHeadingthematicBreaklistsetextHeadinghtmldefinitiontableparagraph
Parser#inlineTokenizers
姓名地图 指示器s (单位:千美元)Object.<Function>) (中文(简体) ).
这些标志剂(例如: url, (中文(简体) ), reference,以及 emphasis从头开始吃
价值.
为了提高业绩,他们依赖 定位器编号.
见 #inlineMethods 以下列出默认列入的方法.
Parser#inlineMethods
清单 inlineTokenizers 名称 (Array.<string>) (中文(简体) ).
指定显示器运行的顺序.
默认内线方法的优先顺序如下:
escapeautoLinkurlemailhtmllinkreferencestrongemphasisdeletioncodebreaktext
function tokenizer(eat, value, silent)
活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活. 两者都是功能,工作相同,但内含的活化剂必须具有 定位器。 。 。 .
以下示例显示引用后添加的内置指示器 上面的插件 .
tokenizeMention.notInLink = true
tokenizeMention.locator = locateMention
function tokenizeMention(eat, value, silent) {
var match = /^@(\w+)/.exec(value)
if (match) {
if (silent) {
return true
}
return eat(match[0])({
type: 'link',
url: 'https://social-network/' + match[1],
children: [{type: 'text', value: match[0]}]
})
}
}
切换器 测试 文档是否从某个合成实体开始. 单位 无声 模式,他们返回 无论测试通过. 单位 常规 模式,它们会消耗这个符号,这个过程被称为“吃”.
定位器通过提供下一个位置,使内置指示器能够更快地运行 实体可能发生.
签署
Node? = tokenizer(eat, value)boolean? = tokenizer(eat, value, silent)
参数
eat(单位:千美元)Function——在适用情况下,吃一个实体value(单位:千美元)string——可启动实体的价值silent(单位:千美元)boolean——是检测还是消费
属性
locator(单位:千美元)Function) - 内置活化剂所需onlyAtStart(单位:千美元)boolean) — 节点是否只能在开头找到 文件编号notInBlock(单位:千美元)boolean)——节点是否不能在块引用或列表中notInList(单位:千美元)boolean)——节点是否不能列在列表中notInLink(单位:千美元)boolean) — 节点不能在链接中
回返
boolean?输入 无声 模式——在开始时是否可以找到一个节点valueNode?输入 常规 模式 - 如果可以在开始时找到value
tokenizer.locator(value, fromIndex)
内置活化活化器需要定位器. 他们的作用是继续分析表演者.
下面的示例显示一个位置符,该位置符由引用的标注符所添加 见上文.
function locateMention(value, fromIndex) {
return value.indexOf('@', fromIndex)
}
定位器通过提供下列信息,使内置的标识器能够更快地运行: 下一个实体的位置 可能 发生. 定位器可能是错误的, 如果实际上没有节点可以找到 索引它们返回.
参数
value(单位:千美元)string——可能包含一个实体的价值fromIndex(单位:千美元)number—— 开始搜索的位置
回返
number 实体可开始使用的指数,以及 -1 否则.
eat(subvalue)
var add = eat('foo')
吃饭 subvalue,此字符串在开始 符号化
value。 。 。 .
参数
subvalue(单位:千美元)string- 食用价值
回返
add。 。 。 .
add(node[, parent])
var add = eat('foo')
add({type: 'text', value: 'foo'})
添加 职位信息 改为 node 添加 node 改为 parent。 。 。 .
参数
回返
Node - 给定的 node。 。 。 .
add.test()
拿着 职位信息 将补丁到 node 以
add。 。 。 .
回返
Position。 。 。 .
add.reset(node[, parent])
add,但重新设置内部位置.
例如,在列表中,同一内容首先被用于列表,
以及后来的清单项目.
参数
回返
Node - 给定的节点.
关掉一个标识器
在某些情况下,你可能想要关闭一个示意器 以避免分析 综合特征.
最好是使用 remark-disable-tokenizers
关闭指示器的插件 .
或者,可以将标语替换为:
blockTokenizers (或 blockMethods)或(或) inlineTokenizers (或
inlineMethods) (中文(简体) ).
以下示例关闭缩进的代码块:
remarkParse.Parser.prototype.blockTokenizers.indentedCode = indentedCode
function indentedCode() {
return true
}
警卫
由于Markdown有时被用于 HTML, 不当使用 HTML 可以打开您
改为 跨站点脚本( XSS) 攻击、言论的使用也可能不安全.
到 HTML 时,请结合 复韵
生态系统和用途 rehype-sanitize 让树安全.
使用备注插件也可以为您打开其它攻击功能 . 仔细评估每个插件以及使用它们所涉及的风险.
贡献
见 contributing.md 内 remarkjs/.github 办法
要开始.
见 support.md 为了寻求帮助.
对新插件和工具的想法可以发布于 remarkjs/ideas。 。 。 .
优秀的言论资源清单可见于 厉害 评论。 。 。 .
这个项目有一个 行为守则。 。 。 . 通过与这个寄存器,组织或社区的互动,你同意 遵守它的规定.

