From 06c50db571691e2a3a5fcae01bf758f903881c08 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Bartosz=20Dziewo=C5=84ski?= Date: Wed, 2 Nov 2016 21:00:40 +0100 Subject: [PATCH] Make /*jshint -W024*/ global to allow 'static' as property We use it all over the place in things that use OOjs, which uses the 'static' property internally. While we support some non-ES5 browsers, this ES5 feature (being able to parse code that uses a reserved word as an object property name) works in all of them too. Change-Id: If641642242292fe38c95f690a9409edaf3683a9f --- .jshintrc | 1 + .../DateTimeFormatter.js | 20 +++++------ .../DateTimeInputWidget.js | 2 +- .../DiscordianDateTimeFormatter.js | 2 +- .../ProlepticGregorianDateTimeFormatter.js | 34 +++++++++---------- .../mw.widgets.CalendarWidget.js | 2 -- .../mw.widgets.CategoryCapsuleItemWidget.js | 4 --- .../mw.widgets.ComplexTitleInputWidget.js | 3 -- resources/src/mediawiki/htmlform/hide-if.js | 2 -- .../src/mediawiki/htmlform/multiselect.js | 1 - .../src/mediawiki/mediawiki.Upload.Dialog.js | 3 -- resources/src/mediawiki/mediawiki.feedback.js | 1 - .../mediawiki/mediawiki.Title.test.js | 1 - .../resources/mediawiki/mediawiki.Uri.test.js | 1 - .../resources/mediawiki/mediawiki.test.js | 1 - 15 files changed, 28 insertions(+), 50 deletions(-) diff --git a/.jshintrc b/.jshintrc index 441c4e310b..518d5cbec1 100644 --- a/.jshintrc +++ b/.jshintrc @@ -15,6 +15,7 @@ // Relaxing "laxbreak": true, "multistr": true, + "-W024": false, // Environment "browser": true, diff --git a/resources/src/mediawiki.widgets.datetime/DateTimeFormatter.js b/resources/src/mediawiki.widgets.datetime/DateTimeFormatter.js index 1c542341d3..90398d553c 100644 --- a/resources/src/mediawiki.widgets.datetime/DateTimeFormatter.js +++ b/resources/src/mediawiki.widgets.datetime/DateTimeFormatter.js @@ -21,23 +21,21 @@ * Defaults to the current date and time (with 0 milliseconds). */ mw.widgets.datetime.DateTimeFormatter = function MwWidgetsDatetimeDateTimeFormatter( config ) { - var statick = this.constructor[ 'static' ]; - - statick.setupDefaults(); + this.constructor.static.setupDefaults(); config = $.extend( { format: '@default', local: false, - fullZones: statick.fullZones, - shortZones: statick.shortZones + fullZones: this.constructor.static.fullZones, + shortZones: this.constructor.static.shortZones }, config ); // Mixin constructors OO.EventEmitter.call( this ); // Properties - if ( statick.formats[ config.format ] ) { - this.format = statick.formats[ config.format ]; + if ( this.constructor.static.formats[ config.format ] ) { + this.format = this.constructor.static.formats[ config.format ]; } else { this.format = config.format; } @@ -70,7 +68,7 @@ * @inheritable * @property {Object} */ - mw.widgets.datetime.DateTimeFormatter[ 'static' ].formats = {}; + mw.widgets.datetime.DateTimeFormatter.static.formats = {}; /** * Default time zone indicators @@ -79,7 +77,7 @@ * @inheritable * @property {string[]} */ - mw.widgets.datetime.DateTimeFormatter[ 'static' ].fullZones = null; + mw.widgets.datetime.DateTimeFormatter.static.fullZones = null; /** * Default abbreviated time zone indicators @@ -88,9 +86,9 @@ * @inheritable * @property {string[]} */ - mw.widgets.datetime.DateTimeFormatter[ 'static' ].shortZones = null; + mw.widgets.datetime.DateTimeFormatter.static.shortZones = null; - mw.widgets.datetime.DateTimeFormatter[ 'static' ].setupDefaults = function () { + mw.widgets.datetime.DateTimeFormatter.static.setupDefaults = function () { if ( !this.fullZones ) { this.fullZones = [ mw.msg( 'timezone-utc' ), diff --git a/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js b/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js index a3088ec5ca..9388f0daff 100644 --- a/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js +++ b/resources/src/mediawiki.widgets.datetime/DateTimeInputWidget.js @@ -177,7 +177,7 @@ /* Static properties */ - mw.widgets.datetime.DateTimeInputWidget[ 'static' ].supportsSimpleLabel = false; + mw.widgets.datetime.DateTimeInputWidget.static.supportsSimpleLabel = false; /* Events */ diff --git a/resources/src/mediawiki.widgets.datetime/DiscordianDateTimeFormatter.js b/resources/src/mediawiki.widgets.datetime/DiscordianDateTimeFormatter.js index fbf323844b..b280eadc03 100644 --- a/resources/src/mediawiki.widgets.datetime/DiscordianDateTimeFormatter.js +++ b/resources/src/mediawiki.widgets.datetime/DiscordianDateTimeFormatter.js @@ -32,7 +32,7 @@ /** * @inheritdoc */ - mw.widgets.datetime.DiscordianDateTimeFormatter[ 'static' ].formats = { + mw.widgets.datetime.DiscordianDateTimeFormatter.static.formats = { '@time': '${hour|0}:${minute|0}:${second|0}', '@date': '$!{dow|full}${not-intercalary|1|, }${season|full}${not-intercalary|1| }${day|#}, ${year|#}', '@datetime': '$!{dow|full}${not-intercalary|1|, }${season|full}${not-intercalary|1| }${day|#}, ${year|#} ${hour|0}:${minute|0}:${second|0} $!{zone|short}', diff --git a/resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js b/resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js index f60b34bdcc..9e9b15ff26 100644 --- a/resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js +++ b/resources/src/mediawiki.widgets.datetime/ProlepticGregorianDateTimeFormatter.js @@ -26,13 +26,11 @@ * @cfg {number} [weekStartsOn=0] What day the week starts on: 0 is Sunday, 1 is Monday, 6 is Saturday. */ mw.widgets.datetime.ProlepticGregorianDateTimeFormatter = function MwWidgetsDatetimeProlepticGregorianDateTimeFormatter( config ) { - var statick = this.constructor[ 'static' ]; - - statick.setupDefaults(); + this.constructor.static.setupDefaults(); config = $.extend( { weekStartsOn: 0, - hour12Periods: statick.hour12Periods + hour12Periods: this.constructor.static.hour12Periods }, config ); if ( config.fullMonthNames && !config.shortMonthNames ) { @@ -60,11 +58,11 @@ }.bind( this ) ); } config = $.extend( { - fullMonthNames: statick.fullMonthNames, - shortMonthNames: statick.shortMonthNames, - fullDayNames: statick.fullDayNames, - shortDayNames: statick.shortDayNames, - dayLetters: statick.dayLetters + fullMonthNames: this.constructor.static.fullMonthNames, + shortMonthNames: this.constructor.static.shortMonthNames, + fullDayNames: this.constructor.static.fullDayNames, + shortDayNames: this.constructor.static.shortDayNames, + dayLetters: this.constructor.static.dayLetters }, config ); // Parent constructor @@ -89,7 +87,7 @@ /** * @inheritdoc */ - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].formats = { + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.formats = { '@time': '${hour|0}:${minute|0}:${second|0}', '@date': '$!{dow|short} ${day|#} ${month|short} ${year|#}', '@datetime': '$!{dow|short} ${day|#} ${month|short} ${year|#} ${hour|0}:${minute|0}:${second|0} $!{zone|short}', @@ -103,7 +101,7 @@ * @inheritable * @property {Object} */ - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].fullMonthNames = null; + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.fullMonthNames = null; /** * Default abbreviated month names. @@ -112,7 +110,7 @@ * @inheritable * @property {Object} */ - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].shortMonthNames = null; + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.shortMonthNames = null; /** * Default full day of week names. @@ -121,7 +119,7 @@ * @inheritable * @property {Object} */ - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].fullDayNames = null; + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.fullDayNames = null; /** * Default abbreviated day of week names. @@ -130,7 +128,7 @@ * @inheritable * @property {Object} */ - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].shortDayNames = null; + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.shortDayNames = null; /** * Default day letters. @@ -139,7 +137,7 @@ * @inheritable * @property {string[]} */ - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].dayLetters = null; + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.dayLetters = null; /** * Default AM/PM indicators @@ -148,10 +146,10 @@ * @inheritable * @property {string[]} */ - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].hour12Periods = null; + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.hour12Periods = null; - mw.widgets.datetime.ProlepticGregorianDateTimeFormatter[ 'static' ].setupDefaults = function () { - mw.widgets.datetime.DateTimeFormatter[ 'static' ].setupDefaults.call( this ); + mw.widgets.datetime.ProlepticGregorianDateTimeFormatter.static.setupDefaults = function () { + mw.widgets.datetime.DateTimeFormatter.static.setupDefaults.call( this ); if ( this.fullMonthNames && !this.shortMonthNames ) { this.shortMonthNames = {}; diff --git a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js index 3daa70ace0..3e0d91d095 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.CalendarWidget.js @@ -520,9 +520,7 @@ */ mw.widgets.CalendarWidget.prototype.onKeyDown = function ( e ) { var - /*jshint -W024*/ dir = OO.ui.Element.static.getDir( this.$element ), - /*jshint +W024*/ nextDirectionKey = dir === 'ltr' ? OO.ui.Keys.RIGHT : OO.ui.Keys.LEFT, prevDirectionKey = dir === 'ltr' ? OO.ui.Keys.LEFT : OO.ui.Keys.RIGHT, changed = true; diff --git a/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js b/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js index 4d86cfd596..c4a86645d9 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.CategoryCapsuleItemWidget.js @@ -146,7 +146,6 @@ this.$label.replaceWith( this.$link ); this.setLabelElement( this.$link ); - /*jshint -W024*/ if ( !this.constructor.static.pageExistenceCaches[ this.apiUrl ] ) { this.constructor.static.pageExistenceCaches[ this.apiUrl ] = new PageExistenceCache( new mw.ForeignApi( this.apiUrl ) ); @@ -156,7 +155,6 @@ .done( function ( exists ) { widget.setMissing( !exists ); } ); - /*jshint +W024*/ }; /* Setup */ @@ -165,7 +163,6 @@ /* Static Properties */ - /*jshint -W024*/ /** * Map of API URLs to PageExistenceCache objects. * @@ -176,7 +173,6 @@ mw.widgets.CategoryCapsuleItemWidget.static.pageExistenceCaches = { '': new PageExistenceCache() }; - /*jshint +W024*/ /* Methods */ diff --git a/resources/src/mediawiki.widgets/mw.widgets.ComplexTitleInputWidget.js b/resources/src/mediawiki.widgets/mw.widgets.ComplexTitleInputWidget.js index ddae9b1f7f..8f48ec3d50 100644 --- a/resources/src/mediawiki.widgets/mw.widgets.ComplexTitleInputWidget.js +++ b/resources/src/mediawiki.widgets/mw.widgets.ComplexTitleInputWidget.js @@ -51,7 +51,6 @@ OO.inheritClass( mw.widgets.ComplexTitleInputWidget, OO.ui.Widget ); /* Static Methods */ - /*jshint -W024*/ /** * @inheritdoc @@ -85,8 +84,6 @@ return state; }; - /*jshint +W024*/ - /* Methods */ /** diff --git a/resources/src/mediawiki/htmlform/hide-if.js b/resources/src/mediawiki/htmlform/hide-if.js index 0fbbcbe5d3..c4513d53ed 100644 --- a/resources/src/mediawiki/htmlform/hide-if.js +++ b/resources/src/mediawiki/htmlform/hide-if.js @@ -4,8 +4,6 @@ */ ( function ( mw, $ ) { - /*jshint -W024*/ - /** * Helper function for hide-if to find the nearby form field. * diff --git a/resources/src/mediawiki/htmlform/multiselect.js b/resources/src/mediawiki/htmlform/multiselect.js index 9ab253262c..791b8eaca6 100644 --- a/resources/src/mediawiki/htmlform/multiselect.js +++ b/resources/src/mediawiki/htmlform/multiselect.js @@ -98,7 +98,6 @@ modules.push.apply( modules, extraModules ); } mw.loader.using( modules, function () { - /*jshint -W024*/ convertCheckboxesWidgetToCapsules( OO.ui.FieldLayout.static.infuse( $el ) ); } ); } else { diff --git a/resources/src/mediawiki/mediawiki.Upload.Dialog.js b/resources/src/mediawiki/mediawiki.Upload.Dialog.js index a719ffe0b6..8bda6019c7 100644 --- a/resources/src/mediawiki/mediawiki.Upload.Dialog.js +++ b/resources/src/mediawiki/mediawiki.Upload.Dialog.js @@ -57,7 +57,6 @@ * @inheritdoc * @property title */ - /*jshint -W024*/ mw.Upload.Dialog.static.title = mw.msg( 'upload-dialog-title' ); /** @@ -97,8 +96,6 @@ } ]; - /*jshint +W024*/ - /* Methods */ /** diff --git a/resources/src/mediawiki/mediawiki.feedback.js b/resources/src/mediawiki/mediawiki.feedback.js index 0b3ea043e8..e0785b6100 100644 --- a/resources/src/mediawiki/mediawiki.feedback.js +++ b/resources/src/mediawiki/mediawiki.feedback.js @@ -6,7 +6,6 @@ * @author Moriel Schottlender, 2015 * @since 1.19 */ -/*jshint esversion:5 */ /*global OO*/ ( function ( mw, $ ) { /** diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js index 886e2b6f04..910bcc1989 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js @@ -1,4 +1,3 @@ -/*jshint -W024 */ ( function ( mw, $ ) { var repeat = function ( input, multiplier ) { return new Array( multiplier + 1 ).join( input ); diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js index b12803d6c7..97185fca73 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js @@ -1,4 +1,3 @@ -/*jshint -W024 */ ( function ( mw, $ ) { QUnit.module( 'mediawiki.Uri', QUnit.newMwEnvironment( { setup: function () { diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.test.js index 067a42311b..bac8274fef 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.test.js @@ -1,4 +1,3 @@ -/*jshint -W024 */ ( function ( mw ) { var specialCharactersPageName, // Can't mock SITENAME since jqueryMsg caches it at load -- 2.20.1