Subramanya Sastry has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/251303

Change subject: T117566: Optimize insertion of transclusion shadow metas further
......................................................................

T117566: Optimize insertion of transclusion shadow metas further

* Followup to 2ce5fc292
* You only need a single transclusions shadow meta for every run
  of string and newline nodes. No need to add a new meat for every
  string and newline token.

Change-Id: I9270844ad7ca09c1815a95d623aec883d5254b5d
---
M lib/wt2html/HTML5TreeBuilder.js
1 file changed, 13 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/services/parsoid 
refs/changes/03/251303/1

diff --git a/lib/wt2html/HTML5TreeBuilder.js b/lib/wt2html/HTML5TreeBuilder.js
index 01acde6..37ba269 100644
--- a/lib/wt2html/HTML5TreeBuilder.js
+++ b/lib/wt2html/HTML5TreeBuilder.js
@@ -78,6 +78,10 @@
         * -------------------------------------------------------------------- 
*/
        this.tableDepth = 0;
 
+       // Have we inserted a transclusion shadow meta already?
+       // We only need one for every run of strings and newline tokens.
+       this.haveTransclusionShadow = false;
+
        if (!this._treeBuilder) {
                // Set up a new tree builder
                this._treeBuilder = new HTML5.DOMTreeBuilder(domino);
@@ -162,7 +166,7 @@
                                data = '\n' + data;
                        }
                        this.emit('token', { type: 'Characters', data: data });
-                       if (this.inTransclusion && this.tableDepth > 0) {
+                       if (this.inTransclusion && this.tableDepth > 0 && 
!this.haveTransclusionShadow) {
                                // If inside a table and a transclusion, add a 
meta tag
                                // after every text node so that we can detect
                                // fostered content that came from a 
transclusion.
@@ -172,6 +176,7 @@
                                        name: 'meta',
                                        data: [{ nodeName: "typeof", nodeValue: 
"mw:TransclusionShadow" }],
                                });
+                               this.haveTransclusionShadow = true;
                        }
                        break;
                case TagTk:
@@ -318,6 +323,13 @@
                        break;
        }
 
+       // If we encountered a non-string non-nl token, we have broken
+       // a run of string+nl content and the next occurence of one of
+       // those tokens will need transclusion shadow protection again.
+       if (token.constructor !== String && token.constructor !== NlTk) {
+               this.haveTransclusionShadow = false;
+       }
+
        // Keep track of preceeding by pre
        if (token.constructor === TagTk) {
                if (token.name === "pre") {

-- 
To view, visit https://gerrit.wikimedia.org/r/251303
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9270844ad7ca09c1815a95d623aec883d5254b5d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/services/parsoid
Gerrit-Branch: master
Gerrit-Owner: Subramanya Sastry <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to