在 Markdown 元素之间转换

2023-11-21

解析 Markdown 文档并处理其元素以输出另一个 Markdown 文档的选项有哪些?

咱们来说说吧

```
# unaffected #
```

# H1 #

H1
==

## H2 ##

H2
--

### H3 ###

应转换为

```
# unaffected #
```

## H1 ##

H1
--

### H2 ###

### H2 ###

#### H3 ####

在节点环境中。目标元素可能会有所不同(例如,#### 可能会转换为 **)。

该文档可能包含其他应不受影响的标记元素。

如何获得?显然,不适用于正则表达式(使用正则表达式而不是成熟的词法分析器会影响# unaffected #)。我本来希望使用marked但它似乎只能输出 HTML,不能输出 Markdown。


这是一个带有外部 Markdown 解析器的解决方案,pandoc。它允许自定义过滤器在 haskell 或 python 中修改输入(还有一个Node.js 端口)。这是一个 python 过滤器,它将每个标头增加一级。让我们将其另存为header_increase.py.

from pandocfilters import toJSONFilter, Header

def header_increase(key, value, format, meta):
    if key == 'Header' and value[0] < 7:
        value[0] = value[0] + 1
        return Header(value[0], value[1], value[2])

if __name__ == "__main__":
    toJSONFilter(header_increase)

它不会影响代码块。然而,它可能会转变setex 样式标头对于 h1 和 h2 元素(使用=== or ---)到 atx 样式的标头中(使用#),反之亦然。

要使用该脚本,可以从命令行调用 pandoc:

pandoc input.md --filter header_increase.py -o output.md -t markdown

使用node.js,您可以使用pdc打电话给pandoc。

var pdc = require('pdc');
pdc(input_md, 'markdown', 'markdown', [ '--filter', './header_increase.py' ], function(err, result) {
  if (err)
    throw err;

  console.log(result);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Markdown 元素之间转换 的相关文章

  • 非法的break语句(Node.js)

    尝试在 Node js 和 MongoDB 中查找唯一 ID 方法是创建一个 while 循环来查询 MongoDB 中的现有 ID 直到找到唯一值 如果 ID 已被使用 则最后的数字会递增 直到 Mongo 不返回任何内容 一切正常 除了
  • Angular 2延迟加载模块-服务不是单例

    我已经在我的应用程序中实现了延迟加载模块 app module ts 配置正确 NgModule declarations AppComponent HeaderComponent HomeComponent imports Browser
  • 检查用户是否已从 Node.js(云功能)登录 Firebase Auth

    我正在尝试在 Node js 上创建 Express 动态网页 我想在路径上的服务器 Firebase Cloud Functions 上执行以下逻辑 如果客户端已登录 Firebase Auth 则呈现主页my home page htm
  • 替换后正确的子串位置

    我有一个由用户提供的这样的函数 function replace function string return string replace smile g replace foo bar baz g text 1 我有这样的输入字符串 v
  • Javascript 将即时生成的 BLOB 文件下载到特定文件夹中

    所以我正在尝试编写一个 Firefox Webextension 我想将网页的标题 网址和个人评论保存到文件中 myfile txt 这就是我得出的结论 我不希望我的 下载 文件夹很快变满 因此我想将它们下载到 下载 文件夹中包含的文件夹中
  • HTML5 画布在缩放和旋转后平移

    我正在尝试用画布做一些事情 首先 我让用户上传图像 如果图像比我想要的大 我需要将其缩小 那部分工作得很好 最近我们遇到了 iPhone 用户上传图像的问题 这些都存在方向问题 我已经弄清楚如何提取方向 我的问题是当我操纵画布中的图像时会发
  • 一种用javascript创建随机噪声背景图像(png)的方法?

    YouTube的新布局添加了我非常喜欢的背景随机噪声 在其他网站上看到了几乎完全相同的效果 所以我计划在我的网页原型中使用相同的技术 或者至少在其中使用这个 技巧 我的工具箱以供将来使用 图片是这样的 取自http g raphaeljs
  • npm i 导致许多 ERESOLVE 问题

    我收到此错误npm i npm ERR code ERESOLVE npm ERR ERESOLVE unable to resolve dependency tree npm ERR npm ERR Found email protect
  • 在 X 轴刻度上渲染 HTML

    我想在 D3 图表的 x 轴上渲染 HTML 基本上 我希望轴上的每个标签都是到数据中另一列的超链接 我试过了 x domain data map function d return a href d Name a 但它根本不起作用 我得到
  • 设置 D3 力定向图

    致尊敬的读者 我对 javascript 相当陌生 我也遇到过这个问题 我正在尝试实现这个力导向图的修改版本 http mbostock github com d3 ex force html http mbostock github co
  • Vim、Javascript、DoctorJS (jsctags) 和 Taglist(源代码浏览)

    我已经安装了DoctorJS http doctorjs org 之前jsctags 试图为 Vim 获得一些好的源代码浏览 标签列表 使用Taglist http www vim org scripts script php script
  • Javascript TypeError:无法读取未定义的属性“indexOf”

    在此代码中 我想从cart products array var cart products 17 1 19 1 18 1 var product 17 each cart products function key item if ite
  • Angular 中的动态子组件

    我正在构建一个具有一致的元素列表设计模式的应用程序 如果我有一个 A 类型的对象 我会创建AComponent它接受a作为输入 然后创建另一个组件来迭代 A 列表 AListComponent 那么如果我有一个对象 B 我需要做同样的事情
  • 使用 multer 上传来自不同字段的多个文件?

    如何让 multer 接受来自多个文件类型字段的文件 我有以下代码 使用 node js 中的 multer 上传单个文件 var storage multer diskStorage destination function req fi
  • 如何检查令牌过期和注销用户?

    当用户单击注销按钮时 他 她可以自己注销 但是如果令牌过期 他 她就无法注销 因为在我的应用程序中 令牌在服务器端和前端都使用 当用户单击注销按钮时 如果令牌有效 则服务器和浏览器中的令牌都会被清除 当用户未注销并且他 她的令牌过期但未在浏
  • 访问影子 DOM 中的元素

    是否有可能查找 Shadow DOM 中的元素与蟒蛇硒 示例用例 我有这个input with type date
  • 根据唯一测试提取站点地图 URL 和 cy.request() 每个 URL (Cypress) [重复]

    这个问题在这里已经有答案了 将 Cypress 与 TypeScript 结合使用 我的代码目标是提取 sitemap xml 中的所有 URL 和 cy request 每个 URL 的状态 200 这个版本的工作原理 describe
  • HTTPS 网站上的 ShareThis 按钮不可点击

    我已将 共享此 按钮添加到我的安全站点 现在单击它们时会产生错误 下面提到了错误 以前有人遇到过这个问题吗 阻止加载混合活动内容 http w sharethis com button buttons js http w sharethis
  • React 不适用于 Android 4.4.2 Web 视图浏览器

    React 在我的 Android 手机上不起作用 我不认为这是我的代码错误 因为即使我写的唯一内容是 p hello world p 它仍然没有显示 在 chrome 远程吊顶上查看后 这显示了 Map is not defined 以前
  • 如何在 Firefox 插件上使用 jQuery 1.5.2+?

    首先 我创建了一个接收参数并返回 jQuery 的函数 例如 function getjQuery window jquery code window return window jQuery 但后来我收到了一封评论电子邮件 他们告诉我必须

随机推荐

  • 循环phpmailer

    当我发送电子邮件时 我收到两封电子邮件 但它应该将电子邮件发送到各自的电子邮件 乱跳问题 array values Array 0 gt Array 0 gt uname1 1 gt fullname1 2 gt email 1 1 gt
  • 运行时获取DLL路径

    我想得到一个dll s其代码中的目录 或文件 路径 不是程序的 exe文件路径 我尝试了一些我发现的方法 GetCurrentDir 获取当前目录路径 GetModuleFileName 获取可执行文件的路径 那么我怎样才能找到代码在哪个d
  • 将值传递给 loadURL - Android

    是否可以将值传递给 webView loadUrl 中提到的 URL 像这样的东西 webView loadUrl file android asset www index html value value 或者有什么方法可以将 Java
  • 他们是如何做到的呢?主屏幕上的对话框

    我正在编写一个 Android 应用程序 我想在主屏幕上放置一个对话框或视图 以便用户可以输入文本而无需跳转到我的完整应用程序 我似乎无法让它发挥作用 如果我呈现一个对话框 即使在透明活动中 我的应用程序就会启动 如果您不知道我在说什么 请
  • 什么时候最适合使用 Python 中的类?

    我对 python 和一般编程都很陌生 所以非常感谢对这一点的任何澄清 例如 在以下代码中 Using a class class Monster object def init self level damage duration pri
  • 分割给定字符串并准备 case 语句

    Table 表名 create table table name given dates timestamp set name varchar 插入记录 insert into table name values 2001 01 01 20
  • 如何让 Xcode 使用 clang 的替代版本?

    我如何设置 Xcode 以使用由以下人员分发的 clangllvm org而不是苹果发货的那个 如果我下载clang 二进制文件并安装到 usr local然后将我的编译器设置为Other gt usr local bin clang在 X
  • 在需要表达式的地方放置一个大括号括起来的块的 C++ 语法是什么?

    我遇到了这个奇怪的 C 程序 include
  • 在 Eclipse Juno (4.2) 中安装 Google AppEngine 插件时出错

    当我尝试安装 GAE 的 eclipse 插件时 出现错误 无法完成安装 因为找不到一项或多项所需的项目 正在安装的软件 Google App Engine Java SDK 1 6 4 1 6 4 v201203300216r37 com
  • NHibernate 使用 AppFabric 进行二级缓存

    有人使用 AppFabric 进行二级缓存吗 我知道它遵循与 Velocity 相同的 api nhibernate caches velocity 但想知道是否有人已经有一些使用它的生产经验 以及他们是否知道任何特定的技巧或问题 我目前知
  • Node.js Express Router 中的正则表达式

    我试图找到一种方法 将正则表达式输入到快速路由 URL 中 然后通过请求对象访问 URL 的变量部分 具体来说 我想路由到网址 posts 任意数量的数字 有没有办法做到这一点 例子 posts 54 posts 2 posts 546 这
  • firebase 的“一个子值的大小”限制 10Mb 的含义

    firebase 文档指定 一个子值的大小 的限制为 10Mb 这是否意味着该子项的 JSON 对象的大小 例如 使用文档中的示例 users mchen friends brinchen true name Mary Chen our c
  • fetch_add(0, memory_order_relaxed/release) 到 mfence + mov 的转换合法吗?

    论文N4455 没有健全的编译器会优化原子讨论编译器可以应用于原子的各种优化 在该部分下围绕原子进行优化 对于 seqlock 示例 它提到了在 LLVM 中实现的转换 其中fetch add 0 std memory order rele
  • 数据分组 - 每月(月底)

    我很难尝试按月对数据进行分组 我什至以编程方式过滤数据 仅返回该月的最后一天并计算每月值 我试图找到有关 dataGrouping 属性的良好解释 但未能理解它或正确实现它 每个结果每天都会返回我的系列 我的问题如下 数据分组是否需要最少数
  • 如何将 ASP.Net MVC 路由段中的 1 或 0 映射到布尔操作方法输入参数

    我们有一些 PHP 和 Javascript 应用程序调用一些 ASP NET MVC 端点 假设我们有这个端点 public ActionResult DoSomething bool flag 我希望它与 flag 的值匹配 无论我传入
  • Spring Mvc -- typeMismatch 的自定义验证消息

    我有一个领域需要double 如果您输入String 默认消息类似于 Failed to convert property value of type java lang String to required type java lang
  • Spring Condition 无法从属性文件读取值

    我正在尝试实现 Spring Conditionorg springframework context annotation Condition如下 public class APIScanningDecisionMaker impleme
  • 将变量设置为 Mongoose Find 的结果

    我正在尝试做这样的事情 function retrieveUser uname var user User find uname uname function err users if err console log err return
  • Android ICS 原生锁屏

    这两天我一直在SW google等上寻找 我正在寻找一种方法来实现原生 Android ICS 锁屏附带的活动 如下面的屏幕所示 这些屏幕来自专业玩家但我注意到其他玩家也 玩家专业版例如 具有看起来完全相同的相同功能 这就是为什么我认为它是
  • 在 Markdown 元素之间转换

    解析 Markdown 文档并处理其元素以输出另一个 Markdown 文档的选项有哪些 咱们来说说吧 unaffected H1 H1 H2 H2 H3 应转换为 unaffected H1 H1 H2 H2 H3 在节点环境中 目标元素