diff --git a/editions/clientserver/tiddlywiki.info b/editions/clientserver/tiddlywiki.info index 3bb57f163..d78fc0f08 100644 --- a/editions/clientserver/tiddlywiki.info +++ b/editions/clientserver/tiddlywiki.info @@ -2,7 +2,8 @@ "plugins": [ "tiddlywiki/tiddlyweb", "tiddlywiki/filesystem", - "tiddlywiki/codemirror" + "tiddlywiki/codemirror", + "tiddlywiki/highlight" ], "themes": [ "tiddlywiki/vanilla", @@ -17,4 +18,4 @@ "includeWikis": [ "../tw5.com" ] -} \ No newline at end of file +} diff --git a/plugins/tiddlywiki/highlight/highlightblock.js b/plugins/tiddlywiki/highlight/highlightblock.js index f672c723c..1eef6f1bd 100644 --- a/plugins/tiddlywiki/highlight/highlightblock.js +++ b/plugins/tiddlywiki/highlight/highlightblock.js @@ -14,15 +14,28 @@ Wraps up the fenced code blocks parser for highlight and use in TiddlyWiki5 var CodeBlockWidget = require("$:/core/modules/widgets/codeblock.js").codeblock; - CodeBlockWidget.prototype.postRender = function() { - var self = this, - lang = this.domNodes[0].getElementsByTagName('code')[0].className, - hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js").hljs; + CodeBlockWidget.prototype.render = function(parent,nextSibling) { + var hljs, lang; - if($tw.browser && lang !== 'no-highlight') { - hljs.tabReplace = ' '; - hljs.highlightBlock(this.domNodes[0]); - } + this.parentDomNode = parent; + this.computeAttributes(); + this.execute(); + var codeNode = this.document.createElement("code"); + if(this.getAttribute("language")) { + lang = this.getAttribute("language"); + } + + var domNode = this.document.createElement("pre"); + codeNode.appendChild(this.document.createTextNode(this.getAttribute("code"))); + domNode.appendChild(codeNode); + parent.insertBefore(domNode,nextSibling); + this.domNodes.push(domNode); + + if($tw.browser && lang !== 'no-highlight') { + hljs = require("$:/plugins/tiddlywiki/highlight/highlight.js").hljs, + hljs.tabReplace = ' '; + hljs.highlightBlock(domNode); + } }; })(); diff --git a/plugins/tiddlywiki/highlight/license.tid b/plugins/tiddlywiki/highlight/license.tid new file mode 100644 index 000000000..882509b46 --- /dev/null +++ b/plugins/tiddlywiki/highlight/license.tid @@ -0,0 +1,27 @@ +title: $:/plugins/tiddlywiki/highlight/license +type: text/plain + +Copyright (c) 2006, Ivan Sagalaev +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of highlight.js nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.