/* === 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 ];
})
});