使用enduro.js在markdown中的按钮

时间:2016-08-09 07:51:28

标签: javascript markdown enduro.js

我按照本指南的说明如何在enduro.js中启用markdown:http://www.endurojs.com/docs/using-markdown

这没关系,但我希望有按钮而不是普通的锚链接。我的降价看起来像这样:

## Title
Paragraph text

[read more](/linktofullarticle)

我希望readmore链接为<button>而不是<a>

摘要看起来像这样:

// placeholder abstractor
var abstractor = function () {}

// vendor dependencies
var marked = require('marked')
marked.setOptions({
    renderer: new marked.Renderer(),
    gfm: true,
    tables: true,
    breaks: false,
    pedantic: true,
    sanitize: true,
    smartLists: true,
    smartypants: false
})

abstractor.prototype.init = function(context) {
    return new Promise(function(resolve, reject) {

        // initialize abstractor
        resolve()
    })
}

abstractor.prototype.abstract = function(context) {
    return new Promise(function(resolve, reject) {

        context['$markdowned_text_hidden'] = true

        // creates the markdowned context
        context.markdowned_text = marked(context.text)

        // abstract directive
        return resolve()

    })
}

module.exports = new abstractor()

注意:我还想保留标准链接,因为有时链接应该是一个按钮,有时则是一个链接。

1 个答案:

答案 0 :(得分:0)

我建议您在标准降价之上添加自定义降价规则。

例如,获取按钮的降价可能如下所示

## Title
Paragraph text

..[read more](/linktofullarticle)

然后抓住它并在你的抽象代码中用正则表达式替换:

context.markdowned_text = marked(context.text)
context.markdowned_text = context.markdowned_text
    .replace(/\.\.\[(.*?)\]\((.*?)\)/g, '<a class="btn" href="$2">$1</a>')

注意:在这种情况下使用<button>可能不起作用,因为您希望用户在单击按钮后重定向。只需将<a>class="btn"一起使用,然后将其设置为按钮。