仅使用showdown.js Markdown表达式库仅限制某些格式

时间:2016-06-08 06:48:29

标签: javascript html markdown showdown

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

下载的showdown.js

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

如果我正在撰写 Markdown Expression

以下的文字
"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>.
转换后

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

我使用以下代码将markdown表达式转换为

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

还有其他一些机制可以用于showdown只转换粗体降价,比如在解析之前和之后收听调度事件,但是因为想要粗体转换这不是我会采取的方法,因为它需要编写大量代码,只需几行代码。

你可以做的是使用showndown.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;
}

Source