使用以下代码,我得到了工作输出:
<html>
<head>
<script type="text/javascript" src="/js/showdown.js"></script>
</head>
<body>
<script type="text/javascript">
var converter = new Showdown.converter();
alert(converter.makeHtml('*test* abc'));
</script>
</body>
</html>
返回<p><em>test</em> abc</p>
我现在想添加一个扩展名。 github page建议可以通过以下方式完成:
<script src="src/extensions/twitter.js" />
var converter = new Showdown.converter({ extensions: 'twitter' });
但是,将我的代码修改为:
<html>
<head>
<script type="text/javascript" src="/js/showdown.js"></script>
<script type="text/javascript" src="/js/twitter.js"></script>
</head>
<body>
<script type="text/javascript">
var converter = new Showdown.converter({ extensions: 'twitter' });
alert(converter.makeHtml('*test* abc'));
</script>
</body>
</html>
产生错误
"Uncaught Extension 'undefined' could not be loaded. It was either not found or is not a valid extension."
添加以下代码(在Filter example下列出)
var demo = function(converter) {
return [
// Replace escaped @ symbols
{ type: 'lang', function(text) {
return text.replace(/\\@/g, '@');
}}
];
}
产生错误Uncaught SyntaxError: Unexpected token (
我想创建一个类似https://github.com/rennat/python-markdown-oembed的扩展来解释![video](youtube_link)
,但目前还不清楚如何开始添加此支持。
答案 0 :(得分:3)
在你的最后一个块中,你在'lang'之后有一个逗号,然后立即使用一个函数。这不是有效的json。
修改的
看来自述文件不正确。我不得不传递一个字符串'twitter'的数组。
var converter = new Showdown.converter({extensions: ['twitter']});
converter.makeHtml('whatever @meandave2020');
// output "<p>whatever <a href="http://twitter.com/meandave2020">@meandave2020</a></p>"
我提交了拉取请求以更新此内容。
答案 1 :(得分:0)
我们编写扩展程序的方式发生了变化,我在以下过滤器示例中找到了一些帮助:http://codepen.io/tivie/pen/eNqOzP
showdown.extension("example", function() {
'use strict';
return [
{
type: 'lang',
filter: function(text, converter, options) {
var mainRegex = new RegExp("(^[ \t]*:>[ \t]?.+\n(.+\n)*\n*)+", "gm");
text = text.replace(mainRegex, function(match, content) {
content = content.replace(/^([ \t]*):>([ \t])?/gm, "");
var foo = converter.makeHtml(content);
return '\n<blockquote class="foo">' + foo + '</blockquote>\n';
});
return text;
}
}
]
});