/*\ title: $:/plugins/tiddlywiki/highlight/highlightblock.js type: application/javascript module-type: widget Wraps up the fenced code blocks parser for highlight and use in TiddlyWiki5 \*/ (function() { /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; var CodeBlockWidget = require("$:/core/modules/widgets/codeblock.js").codeblock; //register languages requires hljs for us var hljs = require("$:/plugins/tiddlywiki/highlight/registerlanguages.js").hljs; hljs.configure({tabReplace: " "}); CodeBlockWidget.prototype.postRender = function() { var domNode = this.domNodes[0]; if($tw.browser && this.document !== $tw.fakeDocument && this.language) { domNode.className = this.language.toLowerCase(); hljs.highlightBlock(domNode); } else if(!$tw.browser && this.language && this.language.indexOf("/") == -1 ){ try{ domNode.className = this.language.toLowerCase() + " hljs"; domNode.children[0].innerHTML = hljs.fixMarkup(hljs.highlight(this.language, this.getAttribute("code")).value); } catch(err) { //can't easily tell if a language is registered or not in the packed version of hightlight.js //so we silently fail and the codeblock remains unchanged } } }; })();