atool-doc
Version:
Static demo site generator based on atool-build & dora.
45 lines (35 loc) • 1.55 kB
JavaScript
;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var marked = require('marked');
var highlight = require('highlight.js');
function generateArray(array) {
return (array || []).map(function (each) {
return generateLine(each || {});
}).join('\n'); /* eslint no-use-before-define: "warn"*/
}
function generateCode(code, lang) {
var result = lang && highlight.getLanguage(lang) ? highlight.highlight(lang, code) : highlight.highlightAuto(code);
return '<div class="highlight">\n <pre><code language=' + result.language + '>' + result.value + '</code></pre>\n </div>';
}
function generateLine(each) {
if (typeof each.children === 'string') {
if (each.type === 'code') {
return generateCode(each.children, each.props.lang);
}
return '<' + each.type + '>' + each.children + '</' + each.type + '>';
}
return '<' + each.type + '>' + generateArray(each.children) + '</' + each.type + '>';
}
module.exports = function (markdown) {
if (typeof markdown === 'string') {
var render = new marked.Renderer();
render.code = generateCode;
marked.setOptions({
renderer: render
});
return marked(markdown);
} else if ((typeof markdown === 'undefined' ? 'undefined' : _typeof(markdown)) === 'object') {
return generateArray(markdown);
}
return false;
};