Showdown.js扩展名修改html

时间:2014-02-02 23:37:47

标签: javascript html showdown

another SO question on this topic的帮助下,我正在尝试一个不能在html上工作的Showdown.js扩展(如果我只想替换文本,它可以正常工作,但我想修改html)。

我想改变

<img src="/path/to/image/image1.jpg" alt="bloo bap" title="" />
<img src="/path/to/image/image2.jpg" alt="shoo ba doo" title="" />

<img class="foo" src="/path/to/image/image1.jpg" alt="bloo bap" title="" />
<img class="foo" src="/path/to/image/image2.jpg" alt="shoo ba doo" title="" />

我的扩展名是

var demo = function(converter) {
    return [
        {
            type    : 'lang', 
            regex   : '<img src=(.*)\/>', 
            replace : '<img class="foo" src=$1>'
        }
    ];
}

var converter = new Showdown.converter({extensions: [demo]});

但没有雪茄。

3 个答案:

答案 0 :(得分:1)

摊牌扩展适用于html。试试这个:

type: 'html',
regex: '<img src=(.*)\/>',
replace: '<img class="foo" src=$1>'

答案 1 :(得分:0)

从我的测试中,我认为Showdown扩展仅适用于文本,而不适用于html。也就是说,在 Showdown接管之前,扩展会被称为。我没有创建扩展,而是使用了以下代码,它就像一个魅力

var postProcess = function(text) {
    return text.replace(/<img src=(.*)\/>/g, '<img class="foo" src=$1>');
}

postProcess(converter.makeHtml(text));

答案 2 :(得分:0)

有点晚了,但是对于那些通过google来到这里的人:

您需要的是output扩展名,而不是lang扩展名。

这是一个lang扩展名。它将.md文件的链接替换为.html文件的链接,这是您的降价代码的第一步

return [
    {
        type    : 'lang', 
        regex   : /\[(.*)\]\((.*)\.md\)/g, 
        replace : '[$1]($2.html)'
    }
];

这是输出扩展名。它将为所有图像添加一个class属性,当所有HTML生成后的最后一步

return [
    {
        type    : 'output', 
        regex   : '<img (.*)/>', 
        replace : '<img class="foo" $1>'
    }
];

详细信息在这里:https://github.com/showdownjs/showdown/wiki/extensions