2

我尝试过在线搜索,但似乎涵盖该主题的主题非常稀缺,而且——缺少PageDown 的 Google Code page上的信息,似乎没有太多关于该主题的内容(更不用说任何全面的内容了) )

我正在尝试使用 或 将自定义格式添加到 PageDown preBlockGamutpreSpanGamut这两者都没有完成我希望它做的事情。

我想要做的应该很简单:我希望在两个波浪号之间出现的任何文本都在<del>标签之间进行格式化。

到目前为止,我已经尝试了各种方法preBlockGamut,其中一个提供了最接近我正在寻找的东西:

converter.hooks.chain("preBlockGamut", function (text, rbg) {
  return text.replace(/~(.*?)~/, function (whole, inner) {
    return "<del>" + inner +"</del>";
  });
});

这仅在某种程度上按预期工作,因为它围绕文本的第一个实例,如下所示<del>T{inner text}</del>T:这只发生在第一个实例上,我也不知道 T 来自哪里,因为 - 据我的代码所知 - 它不在正则表达式或替换的任何地方。

我知道这preBlockGamut应该用于块级语句,所以我尝试了类似的方法preSpanGamut,但没有更好的运气。

这里有没有人有这方面的经验,可以提供一些关于这个问题的见解?我显然做错了什么,但我似乎无法弄清楚在哪里。

4

1 回答 1

2

在浏览了 PageDown 的文件后,我找到了问题的根源。

Markdown.Converter.js有以下几行:

// attacklab: Replace ~ with ~T
// This lets us use tilde as an escape char to avoid md5 hashes
// The choice of character is arbitray; anything that isn't
// magic in Markdown will work.
text = text.replace(/~/g, "~T");

这在钩子生效之前执行preBlockGamut,导致~{inner text}~变成~T{inner text}~Twhich 然后被解析为<del>T{inner text}</del>T.

于 2014-06-05T18:09:25.463 回答