From 4559185ae816f316f9244ecfcab7a995b2b13eb0 Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sat, 20 Jun 2015 07:17:23 +0100 Subject: [PATCH] Remove use of $.escapeRE in favour of mw.RegExp.escape Removes dependency on the generic jquery.mwExtension module I wrote in 2011 which has rotten and contains largely unused utilities. Change-Id: Id7025dc2be958840735f4a9a5b020bd876011740 --- resources/Resources.php | 13 +++++++------ resources/src/jquery/jquery.accessKeyLabel.js | 2 +- resources/src/jquery/jquery.highlightText.js | 6 +++--- resources/src/jquery/jquery.tablesorter.js | 8 ++++---- .../src/mediawiki.page/mediawiki.page.watch.ajax.js | 2 +- resources/src/mediawiki/mediawiki.htmlform.js | 2 +- resources/src/mediawiki/mediawiki.inspect.js | 3 +-- resources/src/mediawiki/mediawiki.util.js | 2 +- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/resources/Resources.php b/resources/Resources.php index 0f2fc945e5..d75c8a180c 100644 --- a/resources/Resources.php +++ b/resources/Resources.php @@ -148,7 +148,7 @@ return array( 'scripts' => 'resources/src/jquery/jquery.accessKeyLabel.js', 'dependencies' => array( 'jquery.client', - 'jquery.mwExtension', + 'mediawiki.RegExp', ), 'messages' => array( 'brackets', 'word-separator' ), 'targets' => array( 'mobile', 'desktop' ), @@ -247,7 +247,7 @@ return array( ), 'jquery.highlightText' => array( 'scripts' => 'resources/src/jquery/jquery.highlightText.js', - 'dependencies' => 'jquery.mwExtension', + 'dependencies' => 'mediawiki.RegExp', 'targets' => array( 'desktop', 'mobile' ), ), 'jquery.hoverIntent' => array( @@ -309,7 +309,7 @@ return array( 'styles' => 'resources/src/jquery/jquery.tablesorter.css', 'messages' => array( 'sort-descending', 'sort-ascending' ), 'dependencies' => array( - 'jquery.mwExtension', + 'mediawiki.RegExp', 'mediawiki.language.months', ), ), @@ -954,7 +954,7 @@ return array( 'mediawiki.htmlform' => array( 'scripts' => 'resources/src/mediawiki/mediawiki.htmlform.js', 'dependencies' => array( - 'jquery.mwExtension', + 'mediawiki.RegExp', 'jquery.byteLimit', ), 'messages' => array( @@ -978,6 +978,7 @@ return array( 'scripts' => 'resources/src/mediawiki/mediawiki.inspect.js', 'dependencies' => array( 'jquery.byteLength', + 'mediawiki.RegExp', 'json', ), 'targets' => array( 'desktop', 'mobile' ), @@ -1089,7 +1090,7 @@ return array( 'scripts' => 'resources/src/mediawiki/mediawiki.util.js', 'dependencies' => array( 'jquery.accessKeyLabel', - 'jquery.mwExtension', + 'mediawiki.RegExp', 'mediawiki.notify', ), 'position' => 'top', // For $wgPreloadJavaScriptMwUtil @@ -1381,7 +1382,7 @@ return array( 'mediawiki.page.startup', 'mediawiki.util', 'jquery.accessKeyLabel', - 'jquery.mwExtension', + 'mediawiki.RegExp', ), 'messages' => array( 'watch', diff --git a/resources/src/jquery/jquery.accessKeyLabel.js b/resources/src/jquery/jquery.accessKeyLabel.js index 867c25e74a..1ac34a5271 100644 --- a/resources/src/jquery/jquery.accessKeyLabel.js +++ b/resources/src/jquery/jquery.accessKeyLabel.js @@ -112,7 +112,7 @@ function getAccessKeyLabel( element ) { */ function updateTooltipOnElement( element, titleElement ) { var array = ( mw.msg( 'word-separator' ) + mw.msg( 'brackets' ) ).split( '$1' ), - regexp = new RegExp( $.map( array, $.escapeRE ).join( '.*?' ) + '$' ), + regexp = new RegExp( $.map( array, mw.RegExp.escape ).join( '.*?' ) + '$' ), oldTitle = titleElement.title, rawTitle = oldTitle.replace( regexp, '' ), newTitle = rawTitle, diff --git a/resources/src/jquery/jquery.highlightText.js b/resources/src/jquery/jquery.highlightText.js index 13382182b7..8deb669151 100644 --- a/resources/src/jquery/jquery.highlightText.js +++ b/resources/src/jquery/jquery.highlightText.js @@ -3,7 +3,7 @@ * TODO: Add a function for restoring the previous text. * TODO: Accept mappings for converting shortcuts like WP: to Wikipedia:. */ -( function ( $ ) { +( function ( $, mw ) { $.highlightText = { @@ -29,7 +29,7 @@ // non latin characters can make regex think a new word has begun: do not use \b // http://stackoverflow.com/questions/3787072/regex-wordwrap-with-utf8-characters-in-js // look for an occurrence of our pattern and store the starting position - match = node.data.match( new RegExp( '(^|\\s)' + $.escapeRE( pat ), 'i' ) ); + match = node.data.match( new RegExp( '(^|\\s)' + mw.RegExp.escape( pat ), 'i' ) ); if ( match ) { pos = match.index + match[1].length; // include length of any matched spaces // create the span wrapper for the matched text @@ -70,4 +70,4 @@ } ); }; -}( jQuery ) ); +}( jQuery, mediaWiki ) ); diff --git a/resources/src/jquery/jquery.tablesorter.js b/resources/src/jquery/jquery.tablesorter.js index 3278ad5352..c8e3cb39bf 100644 --- a/resources/src/jquery/jquery.tablesorter.js +++ b/resources/src/jquery/jquery.tablesorter.js @@ -497,7 +497,7 @@ // Construct regex for number identification for ( i = 0; i < ascii.length; i++ ) { ts.transformTable[localised[i]] = ascii[i]; - digits.push( $.escapeRE( localised[i] ) ); + digits.push( mw.RegExp.escape( localised[i] ) ); } } digitClass = '[' + digits.join( '', digits ) + ']'; @@ -518,13 +518,13 @@ for ( i = 0; i < 12; i++ ) { name = mw.language.months.names[i].toLowerCase(); ts.monthNames[name] = i + 1; - regex.push( $.escapeRE( name ) ); + regex.push( mw.RegExp.escape( name ) ); name = mw.language.months.genitive[i].toLowerCase(); ts.monthNames[name] = i + 1; - regex.push( $.escapeRE( name ) ); + regex.push( mw.RegExp.escape( name ) ); name = mw.language.months.abbrev[i].toLowerCase().replace( '.', '' ); ts.monthNames[name] = i + 1; - regex.push( $.escapeRE( name ) ); + regex.push( mw.RegExp.escape( name ) ); } // Build piped string diff --git a/resources/src/mediawiki.page/mediawiki.page.watch.ajax.js b/resources/src/mediawiki.page/mediawiki.page.watch.ajax.js index d252f0e480..50f280ab7e 100644 --- a/resources/src/mediawiki.page/mediawiki.page.watch.ajax.js +++ b/resources/src/mediawiki.page/mediawiki.page.watch.ajax.js @@ -86,7 +86,7 @@ if ( actionPaths.hasOwnProperty( key ) ) { parts = actionPaths[key].split( '$1' ); for ( i = 0; i < parts.length; i++ ) { - parts[i] = $.escapeRE( parts[i] ); + parts[i] = mw.RegExp.escape( parts[i] ); } m = new RegExp( parts.join( '(.+)' ) ).exec( url ); if ( m && m[1] ) { diff --git a/resources/src/mediawiki/mediawiki.htmlform.js b/resources/src/mediawiki/mediawiki.htmlform.js index 4a4a97e9f2..7fdaa6ec3d 100644 --- a/resources/src/mediawiki/mediawiki.htmlform.js +++ b/resources/src/mediawiki/mediawiki.htmlform.js @@ -413,7 +413,7 @@ $ul = $( this ).prev( 'ul.mw-htmlform-cloner-ul' ); html = $ul.data( 'template' ).replace( - new RegExp( $.escapeRE( $ul.data( 'uniqueId' ) ), 'g' ), + new RegExp( mw.RegExp.escape( $ul.data( 'uniqueId' ) ), 'g' ), 'clone' + ( ++cloneCounter ) ); diff --git a/resources/src/mediawiki/mediawiki.inspect.js b/resources/src/mediawiki/mediawiki.inspect.js index 22d3cbb31b..31cd6c46d3 100644 --- a/resources/src/mediawiki/mediawiki.inspect.js +++ b/resources/src/mediawiki/mediawiki.inspect.js @@ -261,8 +261,7 @@ */ grep: function ( pattern ) { if ( typeof pattern.test !== 'function' ) { - // Based on Y.Escape.regex from YUI v3.15.0 - pattern = new RegExp( pattern.replace( /[\-$\^*()+\[\]{}|\\,.?\s]/g, '\\$&' ), 'g' ); + pattern = new RegExp( mw.RegExp.escape( pattern ), 'g' ); } return $.grep( inspect.getLoadedModules(), function ( moduleName ) { diff --git a/resources/src/mediawiki/mediawiki.util.js b/resources/src/mediawiki/mediawiki.util.js index 6723e5f96f..13bf455933 100644 --- a/resources/src/mediawiki/mediawiki.util.js +++ b/resources/src/mediawiki/mediawiki.util.js @@ -159,7 +159,7 @@ url = location.href; } // Get last match, stop at hash - var re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' ), + var re = new RegExp( '^[^#]*[&?]' + mw.RegExp.escape( param ) + '=([^&#]*)' ), m = re.exec( url ); if ( m ) { // Beware that decodeURIComponent is not required to understand '+' -- 2.20.1