jenkins-bot has submitted this change and it was merged. Change subject: [jshint] Enable `freeze` option ......................................................................
[jshint] Enable `freeze` option Change-Id: I733a9e5697d3db49ac1d4607049918ca2787342b --- M .jshintrc M lib/html2wt/escapeWikitext.js M lib/utils/Util.js M lib/wt2html/parser.defines.js M lib/wt2html/tt/AttributeExpander.js M lib/wt2html/tt/ParagraphWrapper.js M lib/wt2html/tt/PreHandler.js M lib/wt2html/tt/Sanitizer.js M lib/wt2html/tt/TokenStreamPatcher.js 9 files changed, 36 insertions(+), 47 deletions(-) Approvals: Subramanya Sastry: Looks good to me, approved jenkins-bot: Verified diff --git a/.jshintrc b/.jshintrc index 1f1718a..b73be56 100644 --- a/.jshintrc +++ b/.jshintrc @@ -7,6 +7,7 @@ "bitwise": true, "curly": true, "eqeqeq": true, + "freeze": true, "latedef": true, "laxbreak": true, "loopfunc": true, diff --git a/lib/html2wt/escapeWikitext.js b/lib/html2wt/escapeWikitext.js index ed1381e..9c30413 100644 --- a/lib/html2wt/escapeWikitext.js +++ b/lib/html2wt/escapeWikitext.js @@ -3,6 +3,7 @@ var wtConsts = require('../config/WikitextConstants.js'); var DU = require('../utils/DOMUtils.js').DOMUtils; +var Util = require('../utils/Util.js').Util; var PegTokenizer = require('../wt2html/tokenizer.js').PegTokenizer; var pd = require('../wt2html/parser.defines.js'); var SanitizerConstants = require('../wt2html/tt/Sanitizer.js').SanitizerConstants; @@ -246,7 +247,7 @@ var tc = t.constructor; // Ignore non-whitelisted html tags - if (t.isHTMLTag()) { + if (Util.isHTMLTag(t)) { if (linksOnly) { continue; } @@ -340,7 +341,7 @@ continue; } // Ignore table tokens outside of tables - if (t.name in {td: 1, tr: 1, th: 1} && !t.isHTMLTag() && state.wikiTableNesting === 0) { + if (t.name in {td: 1, tr: 1, th: 1} && !Util.isHTMLTag(t) && state.wikiTableNesting === 0) { continue; } diff --git a/lib/utils/Util.js b/lib/utils/Util.js index 412d5a8..f637b21 100644 --- a/lib/utils/Util.js +++ b/lib/utils/Util.js @@ -1292,6 +1292,27 @@ } return md5.digest('hex'); }, + + /** + * Determine whether the current token was an HTML tag in wikitext. + * + * @return {boolean} + */ + isHTMLTag: function(token) { + switch (token.constructor) { + case String: + case pd.NlTk: + case pd.CommentTk: + case pd.EOFTk: + return false; + case pd.TagTk: + case pd.EndTagTk: + case pd.SelfclosingTagTk: + return token.dataAttribs.stx === 'html'; + default: + console.assert(false, 'Unhandled token type'); + } + }, }; // FIXME: There is also a DOMUtils.getJSONAttribute. Consolidate diff --git a/lib/wt2html/parser.defines.js b/lib/wt2html/parser.defines.js index 003f495..bc640b2 100644 --- a/lib/wt2html/parser.defines.js +++ b/lib/wt2html/parser.defines.js @@ -9,10 +9,6 @@ } }; // initialized later to avoid circular dependency -// To support isHTMLTag querying -String.prototype.isHTMLTag = function() { - return false; -}; /** * @class @@ -229,17 +225,6 @@ /** * @member Token * - * Determine whether the current token was an HTML tag in wikitext. - * - * @return {boolean} - */ - isHTMLTag: function() { - return this.dataAttribs.stx === 'html'; - }, - - /** - * @member Token - * * Get the wikitext source of a token. * * @param {MWParserEnvironment} env @@ -317,7 +302,7 @@ */ TagTk.prototype.toString = function(compact) { requireUtil(); - if (this.isHTMLTag()) { + if (Util.isHTMLTag(this)) { if (compact) { return "<HTML:" + this.name + ">"; } else { @@ -371,7 +356,7 @@ * @return {string} */ EndTagTk.prototype.toString = function() { - if (this.isHTMLTag()) { + if (Util.isHTMLTag(this)) { return "</HTML:" + this.name + ">"; } else { return "</" + this.name + ">"; @@ -557,7 +542,7 @@ * @return {string} */ SelfclosingTagTk.prototype.toString = function(compact, indent) { - if (this.isHTMLTag()) { + if (Util.isHTMLTag(this)) { return "<HTML:" + this.name + " />"; } else { var f = SelfclosingTagTk.prototype.tagToStringFns[this.name]; @@ -607,17 +592,6 @@ toString: function() { return "\\n"; }, - - /** - * @method - * - * Tell the caller that this isn't an HTML tag. - * - * @return {boolean} Always false - */ - isHTMLTag: function() { - return false; - }, }; /** @@ -645,10 +619,6 @@ toString: function() { return "<!--" + this.value + "-->"; }, - - isHTMLTag: function() { - return false; - }, }; /* -------------------- EOFTk -------------------- */ @@ -662,10 +632,6 @@ toString: function() { return ""; - }, - - isHTMLTag: function() { - return false; }, }; diff --git a/lib/wt2html/tt/AttributeExpander.js b/lib/wt2html/tt/AttributeExpander.js index a458ae2..08b6e6c 100644 --- a/lib/wt2html/tt/AttributeExpander.js +++ b/lib/wt2html/tt/AttributeExpander.js @@ -237,7 +237,7 @@ var newAttrs = null; var nlTkPos = -1; var i, l; - var nlTkOkay = !(!token.isHTMLTag() && Util.isTableTag(token)); + var nlTkOkay = !(!Util.isHTMLTag(token) && Util.isTableTag(token)); // Identify attributes that were generated in full or in part using templates for (i = 0, l = oldAttrs.length; i < l; i++) { diff --git a/lib/wt2html/tt/ParagraphWrapper.js b/lib/wt2html/tt/ParagraphWrapper.js index 115be0b..b62b1ba 100644 --- a/lib/wt2html/tt/ParagraphWrapper.js +++ b/lib/wt2html/tt/ParagraphWrapper.js @@ -91,9 +91,9 @@ var newRes = null; for (var i = 0, n = res.length; i < n; i++) { var t = res[i]; - if (i + 2 < n && t.constructor === TagTk && t.name === 'p' && !t.isHTMLTag() && + if (i + 2 < n && t.constructor === TagTk && t.name === 'p' && !Util.isHTMLTag(t) && Consts.HTML.FormattingTags.has((res[i + 1].name || '').toUpperCase()) && - res[i + 2].constructor === EndTagTk && res[i + 2].name === 'p' && !res[i + 2].isHTMLTag()) { + res[i + 2].constructor === EndTagTk && res[i + 2].name === 'p' && !Util.isHTMLTag(res[i + 2])) { // Init newRes if (newRes === null) { newRes = i === 0 ? [] : res.slice(0, i); @@ -509,7 +509,7 @@ } // Deal with HTML P-tokens. - if (token.name === 'p' && token.isHTMLTag()) { + if (token.name === 'p' && Util.isHTMLTag(token)) { if (tc === TagTk) { // Close unclosed HTML P-tag. if (this.hasOpenHTMLPTag) { diff --git a/lib/wt2html/tt/PreHandler.js b/lib/wt2html/tt/PreHandler.js index f67bc42..b781a0f 100644 --- a/lib/wt2html/tt/PreHandler.js +++ b/lib/wt2html/tt/PreHandler.js @@ -382,7 +382,7 @@ if (Util.isSolTransparent(env, token)) { // continue watching this.solTransparentTokens.push(token); } else if (Util.isTableTag(token) || - (token.isHTMLTag() && Util.isBlockTag(token.name))) { + (Util.isHTMLTag(token) && Util.isBlockTag(token.name))) { ret = this.getResultAndReset(token); this.moveToIgnoreState(); } else { diff --git a/lib/wt2html/tt/Sanitizer.js b/lib/wt2html/tt/Sanitizer.js index 2a658f9..65f20a2 100644 --- a/lib/wt2html/tt/Sanitizer.js +++ b/lib/wt2html/tt/Sanitizer.js @@ -684,7 +684,7 @@ var attribs = token.attribs; var noEndTagSet = this.constants.noEndTagSet; - if (token.isHTMLTag && token.isHTMLTag() && + if (Util.isHTMLTag(token) && (!WikitextConstants.Sanitizer.TagWhiteList.has(token.name.toUpperCase()) || (token.constructor === EndTagTk && noEndTagSet.has(token.name))) ) { // unknown tag -- convert to plain text diff --git a/lib/wt2html/tt/TokenStreamPatcher.js b/lib/wt2html/tt/TokenStreamPatcher.js index 461b671..4228777 100644 --- a/lib/wt2html/tt/TokenStreamPatcher.js +++ b/lib/wt2html/tt/TokenStreamPatcher.js @@ -229,7 +229,7 @@ case TagTk: if (token.getAttribute("typeof") === "mw:Nowiki") { this.inNowiki = true; - } else if (this.atTopLevel && !token.isHTMLTag()) { + } else if (this.atTopLevel && !Util.isHTMLTag(token)) { if (token.name === 'table') { this.wikiTableNesting++; } else if (this.wikiTableNesting === 0 && @@ -243,7 +243,7 @@ case EndTagTk: if (token.getAttribute("typeof") === "mw:Nowiki") { this.inNowiki = false; - } else if (this.atTopLevel && !token.isHTMLTag() && token.name === 'table') { + } else if (this.atTopLevel && !Util.isHTMLTag(token) && token.name === 'table') { if (this.wikiTableNesting > 0) { this.wikiTableNesting--; } else { -- To view, visit https://gerrit.wikimedia.org/r/255329 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I733a9e5697d3db49ac1d4607049918ca2787342b Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/services/parsoid Gerrit-Branch: master Gerrit-Owner: Arlolra <abrea...@wikimedia.org> Gerrit-Reviewer: Cscott <canan...@wikimedia.org> Gerrit-Reviewer: Subramanya Sastry <ssas...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits