6

我正在使用可以从https://github.com/showdownjs/showdown/下载的 showdown.js

问题是我试图只允许某些格式?例如,只允许使用粗体格式,其余的不转换并且格式被丢弃,例如

如果我写的文本是下面的Markdown 表达式

"Text attributes _italic_, *italic*, __bold__, **bold**, `monospace`."

以上的输出将低于

<p>Text attributes <em>italic</em>, <em>italic</em>, <strong>bold</strong>, <strong>bold</strong>, <code>monospace</code>.

转换后。现在我想要的是在转换时,它应该只转换它应该丢弃的其余表达式的粗体表达式。

我正在使用下面的代码将降价表达式转换为下面的普通文本

var converter = new showdown.Converter(),
//Converting the response received in to html format 
html = converter.makeHtml("Text attributes _italic_, *italic*, __bold__, **bold**, `monospace`.");

谢谢!

4

1 回答 1

1

showdown.js 无法实现开箱即用。这需要从源代码创建 showdown.js 的自定义构建,删除您不想要的 subParsers。

还有其他机制可以用来让摊牌只转换粗体降价,比如在解析前和解析后监听调度的事件,但由于你想要粗体转换,这不是我会采用的方法,因为它需要编写一个只需要几行代码的东西的大量代码。

您可以做的是使用showdown.js 中解析/转换粗体部分的部分,如下所示:

function markdown_bold(text) {
    html = text;
    //underscores
    html = html.replace(/(^|\s|>|\b)__(?=\S)([^]+?)__(?=\b|<|\s|$)/gm, '$1<strong>$2</strong>');
    //asterisks
    html = html.replace(/(\*\*)(?=\S)([^\r]*?\S[*]*)\1/g, '<strong>$2</strong>');
    return html;
}

来源

于 2016-06-08T09:26:51.097 回答