npm 包 mdast-util-phrasing 使用教程

阅读时长 10 分钟读完

简介: mdast-util-phrasing 是一款基于 mdast 的 npm 包,主要用于在 markdown 语法的 AST(抽象语法树)中查找、操作和转换 phrasing content。

phrasing content,即“语气词”,是指用于定义行内元素段的 markdown 语法格式,例如:链接、强调、加粗等。

在前端项目开发中,mdast-util-phrasing 可以用于实现 markdown 文章内容的解析、渲染和样式控制等多个功能,非常适合于前端工程师的学习和使用。

下面,我们来详细了解和学习 mdast-util-phrasing 的使用方法和实例。

安装和引入

使用 npm 命令即可安装 mdast-util-phrasing:

引入 mdast-util-phrasing:

API 函数

mdast-util-phrasing 提供了多个 API 函数,用于查找、操作和转换 phrasing content。

1. findPhrasingContent(node, test)

该函数用于查找 AST 中的 phrasing-content,返回匹配的 node 数组或空数组。

参数说明:

  • node: AST 节点;
  • test: function(node) -> boolean,用于测试 phrasing-content 是否符合条件,返回 boolean 类型。

函数示例:

-- -------------------- ---- -------
----- ------------------- - ---------------------------------------------------

----- ---- - -
  ----- ------------
  --------- -
    ------ ------- ------ --------
    ------ --------- --------- ------- ------- ------ ----------
    ------ ------- ------ -----
    ------ ----- --------- ------- ------- ------ ----------
    ------ ------- ------ -----
  --
-

------------------------------------- - -- ------ --- ---------
------------------------------------- - -- ------ --- -----------
------------------------------------- - -- ------ --- ---------

输出结果:

-- -------------------- ---- -------
-
  ------ ------- ------ --------
  ------ ------- ------ -----
  ------ ------- ------ -----
-
-
  ------ --------- --------- ------- ------- ------ ----------
-
--

2. removePhrasingContent(node, test)

该函数用于删除 AST 中的一些符合条件的 phrasing-content,返回删除后的 AST 节点。

参数说明:

  • node: AST 节点;
  • test: function(node) -> boolean,用于测试 phrasing-content 是否符合条件,返回 boolean 类型。

函数示例:

-- -------------------- ---- -------
----- --------------------- - -----------------------------------------------------

----- ---- - -
  ----- ------------
  --------- -
    ------ ------- ------ --------
    ------ --------- --------- ------- ------- ------ ----------
    ------ ------- ------ -----
    ------ ----- --------- ------- ------- ------ ----------
    ------ ------- ------ -----
  --
-

--------------------------------------- - -- ------ --- -----------

输出结果:

-- -------------------- ---- -------
-
  ------- ------------
  ----------- -
    -
      ------- -------
      -------- ------
    --
    -
      ------- -------
      -------- ---
    --
    -
      ------- -----
      ----------- -
        -
          ------- -------
          -------- ------
        -
      -
    --
    -
      ------- -------
      -------- ---
    -
  -
-

3. wrapPhrasingContent(node, before, after)

该函数用于包装 AST 中的一些 phrasing-content,返回包装后的 AST 节点。

参数说明:

  • node: AST 节点;
  • before: 包装前缀节点;
  • after: 包装后缀节点。

函数示例:

-- -------------------- ---- -------
----- ------------------- - ---------------------------------------------------

----- ---- - -
  ----- ------------
  --------- -
    ------ ------- ------ --------
    ------ ----- --------- ------- ------- ------ ----------
    ------ ------- ------ -----
  --
-

------------------------------------- ------ ---------- ------ ------------

输出结果:

-- -------------------- ---- -------
-
  ------- ------------
  ----------- -
    -
      ------- -------
      -------- ------
    --
    -
      ------- ---------
      ----------- -
        -
          ------- -----
          ----------- -
            -
              ------- -------
              -------- ------
            -
          -
        -
      -
    --
    -
      ------- -------
      -------- ---
    -
  -
-

4. mergeAdjacentPhrasingContent(node)

该函数用于合并 AST 中相邻的 phrasing-content,返回合并后的 AST 节点。

参数说明:

  • node: AST 节点。

函数示例:

-- -------------------- ---- -------
----- ---------------------------- - ------------------------------------------------------------

----- ---- - -
  ----- ------------
  --------- -
    ------ ------- ------ --------
    ------ ----------- --------- ------- ------- ------ ----------
    ------ --------- --------- ------- ------- ------ ----------
    ------ ------- ------ -----
  --
-

------------------------------------------------

输出结果:

-- -------------------- ---- -------
-
  ------- ------------
  ----------- -
    -
      ------- -------
      -------- ------
    --
    -
      ------- -----------
      ----------- -
        -
          ------- -------
          -------- ------
        -
      -
    --
    -
      ------- ---------
      ----------- -
        -
          ------- -------
          -------- ------
        -
      -
    --
    -
      ------- -------
      -------- ---
    -
  -
-

示例代码

下面是一个使用 mdast-util-phrasing 进行解析、渲染和样式控制的示例。

-- -------------------- ---- -------
----- ------- - -------------------
----- -------- - ------------------------
----- ------------- - -------------------------
----- ---- - ----------------------------
----- -------- - -------------------------------

----- --------- - ---------
  --------------
  -------------------
  -----------

----- ------------ - ---------------
----- --- - ------------------------------

-- ------
--------------------------------- - -- ------ --- ---------------------- -- -
  --------- - --------- -- ---
  --------------------- - ------- --------
---
--------------------------------- - -- ------ --- ------------------------ -- -
  --------- - --------- -- ---
  --------------------- - ------- ----------
---

--------------------------------------

输出结果:

总结

通过学习和使用 mdast-util-phrasing,我们可以更加方便地解析和操作 markdown 文本内容,从而实现丰富的前端项目功能和视觉效果。

同时,我们也应该深入理解和应用其他相关的前端技术和工具,例如:markdown 渲染器、CSS 样式、React 组件等,从而不断提升自己的前端技术能力和综合素质。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f058d6a403f2923b035befb

纠错
反馈