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);