@brodybits/remark-parse

中文文档
8.0.6发布于 2021/07/07MITTypeScript近 30 天下载 3.6万

解析 Markdown 的注释插件

中文使用文档
文档目录22 节
  1. 发起人
  2. 安装
  3. 使用
  4. 目录
  5. API 密码
  6. processor().use(parse[, options])
  7. parse.Parser
  8. 扩展 Parser
  9. Parser#blockTokenizers
  10. Parser#blockMethods
  11. Parser#inlineTokenizers
  12. Parser#inlineMethods
  13. function tokenizer(eat, value, silent)
  14. tokenizer.locator(value, fromIndex)
  15. eat(subvalue)
  16. add(node[, parent])
  17. add.test()
  18. add.reset(node[, parent])
  19. 关掉一个标识器
  20. 警卫
  21. 贡献
  22. 许可证

@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 密码

见 统一 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>) (中文(简体) ). 指定显示器运行的顺序.

默认块法的优先权如下:

  • blankLine
  • indentedCode
  • fencedCode
  • blockquote
  • atxHeading
  • thematicBreak
  • list
  • setextHeading
  • html
  • definition
  • table
  • paragraph

Parser#inlineTokenizers

姓名地图 指示器s (单位:千美元)Object.<Function>) (中文(简体) ). 这些标志剂(例如: url, (中文(简体) ), reference,以及 emphasis从头开始吃 价值. 为了提高业绩,他们依赖 定位器编号.

见 #inlineMethods 以下列出默认列入的方法.

Parser#inlineMethods

清单 inlineTokenizers 名称 (Array.<string>) (中文(简体) ). 指定显示器运行的顺序.

默认内线方法的优先顺序如下:

  • escape
  • autoLink
  • url
  • email
  • html
  • link
  • reference
  • strong
  • emphasis
  • deletion
  • code
  • break
  • text

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?输入 无声 模式——在开始时是否可以找到一个节点 value
  • Node?输入 常规 模式 - 如果可以在开始时找到 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) - 连接位置并添加的节点
  • parent (单位:千美元)Parent,可选) - 要添加的位置 node 改为 语法树. 默认当前处理的节点
回返

Node - 给定的 node。 。 。 .

add.test()

拿着 职位信息 将补丁到 node 以 add。 。 。 .

回返

Position。 。 。 .

add.reset(node[, parent])

add,但重新设置内部位置. 例如,在列表中,同一内容首先被用于列表, 以及后来的清单项目.

参数
  • node (单位:千美元)Node) - 连接位置并插入的节点
  • parent (单位:千美元)Node,可选) - 要添加的位置 node 改为 语法树. 默认当前处理的节点
回返

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。 。 。 .

优秀的言论资源清单可见于 厉害 评论。 。 。 .

这个项目有一个 行为守则。 。 。 . 通过与这个寄存器,组织或社区的互动,你同意 遵守它的规定.

许可证

麻省理工学院 © Titus 虫类

版本与发布记录

@brodybits/remark-parse 共发布 4 个版本,首次发布于 2021/06/15;过去 12 个月发布了 0 个版本。

版本发布日期距今
8.0.6latest2021/07/075 年前
5.0.12021/06/155 年前
8.0.52021/06/155 年前
8.0.42021/06/155 年前

关于 @brodybits/remark-parse 的常见问题

@brodybits/remark-parse 是什么?

解析 Markdown 的注释插件

如何安装 @brodybits/remark-parse?

在项目目录运行 npm install @brodybits/remark-parse,或使用 pnpm add / yarn add / bun add。

@brodybits/remark-parse 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@brodybits/remark-parse 可以商用吗?

@brodybits/remark-parse 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@brodybits/remark-parse 的下载量有多少?

根据 npm 官方下载统计,@brodybits/remark-parse 在 2026/10/09 – 2026/11/07 这 30 天内被下载 35,880 次,日均约 1,196 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@brodybits/remark-parse 还在维护吗?

最新版本 8.0.6 发布于 2021/07/07(5 年前);至今共发布 4 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/06/15。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。