Replace highlightSeparateLines by wscSplitIntoLines
authorTim Düsterhus <duesterhus@woltlab.com>
Wed, 28 Nov 2018 12:27:04 +0000 (13:27 +0100)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 29 Nov 2018 14:42:41 +0000 (15:42 +0100)
This allows to perform the two steps in different idle callbacks.

see #2752

wcfsetup/install/files/js/WoltLabSuite/Core/Bbcode/Code.js
wcfsetup/install/files/js/WoltLabSuite/Core/Prism.js

index daf77966d569da572ee6bc1c36cebe90dd773501..c8985beff1c98611482525ad84dcdc86a585192a 100644 (file)
@@ -69,7 +69,17 @@ define(['WoltLabSuite/Core/Prism', 'prism/prism-meta'], function(Prism, PrismMet
                        
                        return require(['prism/components/prism-' + PrismMeta[this.language].file])
                        .then(idleify(function () {
-                               var highlighted = Prism.highlightSeparateLines(this.codeContainer.textContent, this.language);
+                               var grammar = Prism.languages[this.language];
+                               if (!grammar) {
+                                       throw new Error('Invalid language ' + language + ' given.');
+                               }
+                               
+                               var container = elCreate('div');
+                               container.innerHTML = Prism.highlight(this.codeContainer.textContent, grammar, this.language);
+                               return container;
+                       }.bind(this)))
+                       .then(idleify(function (container) {
+                               var highlighted = Prism.wscSplitIntoLines(container);
                                var highlightedLines = elBySelAll('[data-number]', highlighted);
                                var originalLines = elBySelAll('.codeBoxLine > span', this.codeContainer);
                                
index 76195f89290aefc00f46aff069747108169bf9ad..7a5d3290fe81786d017f7014e1ff2aa9e60c18a9 100644 (file)
@@ -11,10 +11,10 @@ window.Prism = window.Prism || {}
 window.Prism.manual = true
 
 define(['prism/prism'], function () {
-       Prism.highlightSeparateLines = function (text, language) {
-               var     frag = new DocumentFragment(),
-                       lineNo = 1,
-                       it, node, line, grammar, container;
+       Prism.wscSplitIntoLines = function (container) {
+               var frag = new DocumentFragment();
+               var lineNo = 1;
+               var it, node, line;
                
                function newLine() {
                        var line = elCreate('span');
@@ -24,18 +24,6 @@ define(['prism/prism'], function () {
                        return line;
                }
                
-               function highlightStringIntoContainer() {
-                       var container = elCreate('div');
-                       container.innerHTML = Prism.highlight(text, grammar, language);
-                       return container;
-               }
-               
-               grammar = Prism.languages[language];
-               if (!grammar) {
-                       throw new Error('Invalid language ' + language + ' given.');
-               }
-               
-               container = highlightStringIntoContainer();
                it = document.createNodeIterator(container, NodeFilter.SHOW_TEXT);
                
                line = newLine(lineNo);