Tchanders has uploaded a new change for review.

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

Change subject: Add csshint, jshint and jscs to math extension
......................................................................

Add csshint, jshint and jscs to math extension

Also adds the corrections made to various js files when jscs
was run, and removes an old version of .jshintrc. Only
VisualEditor files are checked by csshint due to clashes with
an upstream bug in the csslint parser. This could be looked
into in the future.

Bug: T112576
Change-Id: I611901040d3b38ae3ef707deb8d25771f043b1d8
---
A .csslintrc
A .jscsrc
A .jshintrc
M Gruntfile.js
D modules/.jshintrc
M modules/VisualEditor/ve.ce.MWMathNode.js
M modules/VisualEditor/ve.ui.MWMathInspector.js
M modules/VisualEditor/ve.ui.MWMathInspectorTool.js
M modules/ext.math.editbutton.js
M modules/ext.math.js
M package.json
11 files changed, 133 insertions(+), 58 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Math 
refs/changes/46/238346/1

diff --git a/.csslintrc b/.csslintrc
new file mode 100644
index 0000000..68d60d2
--- /dev/null
+++ b/.csslintrc
@@ -0,0 +1,13 @@
+{
+       "adjoining-classes": false,
+       "box-model": false,
+       "box-sizing": false,
+       "fallback-colors": false,
+       "important": false,
+       "outline-none": false,
+       "qualified-headings": false,
+       "unique-headings": false,
+       "universal-selector": false,
+       "unqualified-attributes": false,
+       "gradients": false
+}
diff --git a/.jscsrc b/.jscsrc
new file mode 100644
index 0000000..1959eea
--- /dev/null
+++ b/.jscsrc
@@ -0,0 +1,21 @@
+{
+       "preset": "wikimedia",
+
+       "jsDoc": {
+               "checkAnnotations": {
+                       "preset": "jsduck5",
+                       "extra": {
+                               "this": true,
+                               "source": true,
+                               "see": true
+                       }
+               },
+               "checkTypes": "strictNativeCase",
+               "checkParamNames": true,
+               "checkRedundantAccess": true,
+               "checkRedundantReturns": true,
+               "requireNewlineAfterDescription": true,
+               "requireParamTypes": true,
+               "requireReturnTypes": true
+       }
+}
diff --git a/.jshintrc b/.jshintrc
new file mode 100644
index 0000000..b0a9b23
--- /dev/null
+++ b/.jshintrc
@@ -0,0 +1,25 @@
+{
+       // Enforcing
+       "bitwise": true,
+       "eqeqeq": true,
+       "freeze": true,
+       "latedef": true,
+       "noarg": true,
+       "nonew": true,
+       "undef": true,
+       "unused": true,
+       "strict": false,
+
+       // Relaxing
+       "es5": false,
+
+       // Environment
+       "browser": true,
+       "jquery": true,
+
+       "globals": {
+               "mediaWiki": false,
+               "OO": false,
+               "ve": false
+       }
+}
diff --git a/Gruntfile.js b/Gruntfile.js
index 9c56558..efe32d6 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -2,6 +2,10 @@
 module.exports = function ( grunt ) {
        grunt.loadNpmTasks( 'grunt-banana-checker' );
        grunt.loadNpmTasks( 'grunt-jsonlint' );
+       grunt.loadNpmTasks( 'grunt-contrib-csslint' );
+       grunt.loadNpmTasks( 'grunt-contrib-jshint' );
+       grunt.loadNpmTasks( 'grunt-contrib-watch' );
+       grunt.loadNpmTasks( 'grunt-jscs' );
 
        grunt.initConfig( {
                banana: {
@@ -12,9 +16,43 @@
                                '**/*.json',
                                '!node_modules/**'
                        ]
+               },
+               csslint: {
+                       options: {
+                               csslintrc: '.csslintrc'
+                       },
+                       all: 'modules/VisualEditor/*.css'
+               },
+               jshint: {
+                       options: {
+                               jshintrc: true
+                       },
+                       all: [
+                               '*.js',
+                               'modules/**/*.js'
+                       ]
+               },
+               watch: {
+                       files: [
+                               '.{csslintrc,jscsrc,jshintignore,jshintrc}',
+                               '<%= jshint.all %>',
+                               '<%= csslint.all %>'
+                       ],
+                       tasks: 'test'
+               },
+               jscs: {
+                       fix: {
+                               options: {
+                                       fix: true
+                               },
+                               src: '<%= jshint.all %>'
+                       },
+                       main: {
+                               src: '<%= jshint.all %>'
+                       }
                }
        } );
 
-       grunt.registerTask( 'test', [ 'jsonlint', 'banana' ] );
+       grunt.registerTask( 'test', [ 'jshint', 'jscs:main', 'csslint', 
'jsonlint', 'banana' ] );
        grunt.registerTask( 'default', 'test' );
 };
diff --git a/modules/.jshintrc b/modules/.jshintrc
deleted file mode 100644
index df12825..0000000
--- a/modules/.jshintrc
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-       "predef": [
-               "mediaWiki",
-               "jQuery"
-       ],
-
-       "bitwise": true,
-       "camelcase": true,
-       "curly": true,
-       "eqeqeq": true,
-       "forin": false,
-       "immed": true,
-       "latedef": true,
-       "newcap": true,
-       "noarg": true,
-       "noempty": true,
-       "nonew": true,
-       "quotmark": "single",
-       "regexp": false,
-       "undef": true,
-       "unused": true,
-       "strict": false,
-       "trailing": true,
-
-       "smarttabs": true,
-
-       "browser": true,
-
-       "nomen": true,
-       "onevar": true
-}
diff --git a/modules/VisualEditor/ve.ce.MWMathNode.js 
b/modules/VisualEditor/ve.ce.MWMathNode.js
index aa523a9..bf62660 100644
--- a/modules/VisualEditor/ve.ce.MWMathNode.js
+++ b/modules/VisualEditor/ve.ce.MWMathNode.js
@@ -53,7 +53,7 @@
        if ( this.$element.is( 'span.tex' ) ) {
                // MathJax
                MathJax.Hub.Queue(
-                       [ 'Typeset', MathJax.Hub, this.$element[0] ],
+                       [ 'Typeset', MathJax.Hub, this.$element[ 0 ] ],
                        [ this, this.emit, 'rerender' ]
                );
        } else {
diff --git a/modules/VisualEditor/ve.ui.MWMathInspector.js 
b/modules/VisualEditor/ve.ui.MWMathInspector.js
index d00644e..12d1ec0 100644
--- a/modules/VisualEditor/ve.ui.MWMathInspector.js
+++ b/modules/VisualEditor/ve.ui.MWMathInspector.js
@@ -45,6 +45,8 @@
  * @inheritdoc
  */
 ve.ui.MWMathInspector.prototype.initialize = function () {
+       var inputField, displayField, idField;
+
        // Parent method
        ve.ui.MWMathInspector.super.prototype.initialize.call( this );
 
@@ -71,18 +73,18 @@
 
        this.idInput = new OO.ui.TextInputWidget();
 
-       var inputField = new OO.ui.FieldLayout( this.input, {
-                       align: 'top',
-                       label: ve.msg( 
'math-visualeditor-mwmathinspector-title' )
-               } ),
-               displayField = new OO.ui.FieldLayout( this.displaySelect, {
-                       align: 'top',
-                       label: ve.msg( 
'math-visualeditor-mwmathinspector-display' )
-               } ),
-               idField = new OO.ui.FieldLayout( this.idInput, {
-                       align: 'top',
-                       label: ve.msg( 'math-visualeditor-mwmathinspector-id' )
-               } );
+       inputField = new OO.ui.FieldLayout( this.input, {
+               align: 'top',
+               label: ve.msg( 'math-visualeditor-mwmathinspector-title' )
+       } );
+       displayField = new OO.ui.FieldLayout( this.displaySelect, {
+               align: 'top',
+               label: ve.msg( 'math-visualeditor-mwmathinspector-display' )
+       } );
+       idField = new OO.ui.FieldLayout( this.idInput, {
+               align: 'top',
+               label: ve.msg( 'math-visualeditor-mwmathinspector-id' )
+       } );
 
        // Initialization
        this.$content.addClass( 've-ui-mwMathInspector-content' );
@@ -117,11 +119,13 @@
  * @inheritdoc
  */
 ve.ui.MWMathInspector.prototype.updateMwData = function ( mwData ) {
+       var display, id;
+
        // Parent method
        ve.ui.MWMathInspector.super.prototype.updateMwData.call( this, mwData );
 
-       var display = this.displaySelect.getSelectedItem().getData(),
-               id = this.idInput.getValue();
+       display = this.displaySelect.getSelectedItem().getData();
+       id = this.idInput.getValue();
 
        mwData.attrs.display = display !== 'default' ? display : undefined;
        mwData.attrs.id = id || undefined;
diff --git a/modules/VisualEditor/ve.ui.MWMathInspectorTool.js 
b/modules/VisualEditor/ve.ui.MWMathInspectorTool.js
index 0280fe7..f70ec7d 100644
--- a/modules/VisualEditor/ve.ui.MWMathInspectorTool.js
+++ b/modules/VisualEditor/ve.ui.MWMathInspectorTool.js
@@ -32,6 +32,6 @@
 ve.ui.commandRegistry.register(
        new ve.ui.Command(
                'math', 'window', 'open',
-               { args: ['math'], supportedSelections: ['linear'] }
+               { args: [ 'math' ], supportedSelections: [ 'linear' ] }
        )
 );
diff --git a/modules/ext.math.editbutton.js b/modules/ext.math.editbutton.js
index c2742d5..2db5b38 100644
--- a/modules/ext.math.editbutton.js
+++ b/modules/ext.math.editbutton.js
@@ -1,6 +1,7 @@
 ( function ( mw ) {
+       var iconPath;
        if ( mw.toolbar ) {
-               var iconPath = mw.config.get( 'wgExtensionAssetsPath' ) + 
'/Math/images/';
+               iconPath = mw.config.get( 'wgExtensionAssetsPath' ) + 
'/Math/images/';
                mw.toolbar.addButton( {
                        imageFile: iconPath + 'button_math.png',
                        speedTip: mw.msg( 'math_tip' ),
diff --git a/modules/ext.math.js b/modules/ext.math.js
index bf4b326..085260d 100644
--- a/modules/ext.math.js
+++ b/modules/ext.math.js
@@ -3,7 +3,7 @@
        var img, url;
 
        // If MathPlayer is installed we show the MathML rendering.
-       if (navigator.userAgent.indexOf('MathPlayer') > -1) {
+       if ( navigator.userAgent.indexOf( 'MathPlayer' ) > -1 ) {
                $( '.mwe-math-mathml-a11y' ).removeClass( 
'mwe-math-mathml-a11y' );
                $( '.mwe-math-fallback-image-inline, 
.mwe-math-fallback-image-display' ).css( 'display', 'none' );
                return;
@@ -11,18 +11,18 @@
 
        // We verify whether SVG as <img> is supported and otherwise use the
        // PNG fallback. See 
https://github.com/Modernizr/Modernizr/blob/master/feature-detects/svg/asimg.js
-       if 
(!document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#Image',
 '1.1')) {
-               $( '.mwe-math-fallback-image-inline, 
.mwe-math-fallback-image-display' ).each(function() {
+       if ( !document.implementation.hasFeature( 
'http://www.w3.org/TR/SVG11/feature#Image', '1.1' ) ) {
+               $( '.mwe-math-fallback-image-inline, 
.mwe-math-fallback-image-display' ).each( function () {
                        // Create a new PNG image to use as the fallback.
-                       img = document.createElement('img');
-                       url = 
this.style.backgroundImage.match(/url\('?([^']*)'?\)/)[1];
-                       img.setAttribute( 'src', url.replace('mode=' + 
'mathml', 'mode=' + 'png') );
-                       img.setAttribute( 'class', 'tex 
mwe-math-fallback-image-' + ($( this 
).hasClass('mwe-math-fallback-image-inline') ? 'inline' : 'display') );
+                       img = document.createElement( 'img' );
+                       url = this.style.backgroundImage.match( 
/url\('?([^']*)'?\)/ )[ 1 ];
+                       img.setAttribute( 'src', url.replace( 'mode=' + 
'mathml', 'mode=' + 'png' ) );
+                       img.setAttribute( 'class', 'tex 
mwe-math-fallback-image-' + ( $( this ).hasClass( 
'mwe-math-fallback-image-inline' ) ? 'inline' : 'display' ) );
                        img.setAttribute( 'aria-hidden', 'true' );
                        this.parentNode.insertBefore( img, this );
 
                        // Hide the SVG fallback.
                        $( this ).css( 'display', 'none' );
-               });
+               } );
        }
 }( jQuery ) );
diff --git a/package.json b/package.json
index 76e8a82..a01e7aa 100644
--- a/package.json
+++ b/package.json
@@ -7,6 +7,10 @@
     "grunt": "0.4.5",
     "grunt-cli": "0.1.13",
     "grunt-banana-checker": "0.2.2",
-    "grunt-jsonlint": "1.0.4"
+    "grunt-jsonlint": "1.0.4",
+    "grunt-contrib-csslint": "0.5.0",
+    "grunt-contrib-jshint": "0.11.3",
+    "grunt-contrib-watch": "0.6.1",
+    "grunt-jscs": "2.1.0"
   }
 }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I611901040d3b38ae3ef707deb8d25771f043b1d8
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Math
Gerrit-Branch: master
Gerrit-Owner: Tchanders <thalia.e.c...@googlemail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to