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