/* === SHOWDOWN HIGHLIGHT === */ /* this is an extension for showdown, a markdown to html converter. */ /* this extension adds syntax highlighting using highlightJS (a dependency) */ /* from: https://github.com/showdownjs/showdown/issues/215#issuecomment-168679324 */ define(['showdown', 'highlight'], function (showdown, hljs) { return showdown.extension('highlight', function() { var htmlunencode = function (text) { return ( text .replace(/&/g, '&') .replace(/</g, '<') .replace(/>/g, '>') ); }; var extension = { type: 'output', filter: function (text, converter, options) { // use showdown's regexp engine to conditionally parse codeblocks var left = '
]*>',
                    right = '
', flags = 'g', replacement = function (wholeMatch, match, left, right) { // unescape match to prevent double escaping match = htmlunencode(match); return left + hljs.highlightAuto(match).value + right; }; return showdown.helper.replaceRecursiveRegExp(text, replacement, left, right, flags); } }; return [ extension ]; }) });