Use EnllighterJS with marked
markdown, gfm, javascript, nodejs
marked is one of the most popular markdown parsers written in javascript. It’s quite easy to integrate EnlighterJS within, just pass a custom highlight function as option.
Promised based highlighting#
File: markdown.js
const _marked = require('marked');
const _renderer = new _marked.Renderer();
// escape html specialchars
function escHtml(s){
return s.replace(/&/g, '&')
.replace(/"/g, '"')
.replace(/</g, '<')
.replace(/>/g, '>');
}
// EnlighterJS Codeblocks
_renderer.code = function(code, lang){
return `<pre data-enlighter-language="${lang}">${escHtml(code)}</pre>`;
};
const _options = {
// gfm style line breaks
breaks: true,
// custom renderer
renderer: _renderer
};
// promise proxy
function render(content){
return new Promise(function(resolve, reject){
// async rendering
_marked(content, _options, function(e, html){
if (e){
reject(e);
}else{
resolve(html);
}
});
});
}
module.exports = {
render: render
};
Usage#
const _markdown = require('markdown');
// fetch markdown based content
const rawCode = getMarkdownContent(..);
// render content
const html = await _markdown.render(rawCode);