vue-carousel-3d
Version:
Beautiful, flexible and touch supported 3D Carousel for Vue.js
55 lines (44 loc) • 1.27 kB
JavaScript
;
var marked = require('marked');
var assign = require('object-assign');
var stripIndent = require('strip-indent');
var util = require('hexo-util');
var highlight = util.highlight;
var stripHTML = util.stripHTML;
var MarkedRenderer = marked.Renderer;
function Renderer() {
MarkedRenderer.apply(this);
this._headingId = {};
}
require('util').inherits(Renderer, MarkedRenderer);
// Add id attribute to headings
Renderer.prototype.heading = function(text, level) {
var id = anchorId(stripHTML(text));
var headingId = this._headingId;
// Add a number after id if repeated
if (headingId[id]) {
id += '-' + headingId[id]++;
} else {
headingId[id] = 1;
}
// add headerlink
return '<h' + level + ' id="' + id + '"><a href="#' + id + '" class="headerlink" title="' + stripHTML(text) + '"></a>' + text + '</h' + level + '>';
};
function anchorId(str) {
return util.slugize(str.trim());
}
marked.setOptions({
langPrefix: '',
highlight: function(code, lang) {
return highlight(stripIndent(code), {
lang: lang,
gutter: false,
wrap: false
});
}
});
module.exports = function(data, options) {
return marked(data.text, assign({
renderer: new Renderer()
}, this.config.marked, options));
};