UNPKG

atool-doc

Version:

Static demo site generator based on atool-build & dora.

45 lines (35 loc) 1.55 kB
'use strict'; 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; };