This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/lib/highlight-syntax.js.es6
Penar Musaraj a953b71797 FEATURE: allow custom HighlightJS languages
Adds pluginApi function that allows themes and plugins to register languages for HighlightJS.
2019-01-02 19:07:36 -05:00

36 lines
812 B
JavaScript

/*global hljs:true */
let _moreLanguages = [];
import loadScript from "discourse/lib/load-script";
export default function highlightSyntax($elem) {
const selector = Discourse.SiteSettings.autohighlight_all_code
? "pre code"
: "pre code[class]",
path = Discourse.HighlightJSPath;
if (!path) {
return;
}
$(selector, $elem).each(function(i, e) {
$(e).removeClass("lang-auto");
loadScript(path).then(() => {
customHighlightJSLanguages();
hljs.highlightBlock(e);
});
});
}
export function registerHighlightJSLanguage(name, fn) {
_moreLanguages.push({ name: name, fn: fn });
}
function customHighlightJSLanguages() {
_moreLanguages.forEach(l => {
if (hljs.getLanguage(l.name) === undefined) {
hljs.registerLanguage(l.name, l.fn);
}
});
}