From: jdlrobson Date: Thu, 24 Dec 2015 00:10:46 +0000 (-0800) Subject: mediawiki.util: Add module export to support require() X-Git-Tag: 1.31.0-rc.0~3651 X-Git-Url: http://git.cyclocoop.org/?a=commitdiff_plain;h=77908537e95baaad78227207e6951ceaf96fad80;p=lhc%2Fweb%2Fwiklou.git mediawiki.util: Add module export to support require() This allows mediawiki.util to be used with require() and to bring attention to an alternative code pattern that other developers may wish to adopt. Bug: T140384 Change-Id: I8a4323bd56476caccb559b15ca543d64c5281f7c --- diff --git a/resources/src/mediawiki/mediawiki.util.js b/resources/src/mediawiki/mediawiki.util.js index 78634f6474..67e2ebb7bf 100644 --- a/resources/src/mediawiki/mediawiki.util.js +++ b/resources/src/mediawiki/mediawiki.util.js @@ -168,7 +168,7 @@ * This function returns the styleSheet object for convience (due to cross-browsers * difference as to where it is located). * - * var sheet = mw.util.addCSS( '.foobar { display: none; }' ); + * var sheet = util.addCSS( '.foobar { display: none; }' ); * $( foo ).click( function () { * // Toggle the sheet on and off * sheet.disabled = !sheet.disabled; @@ -238,12 +238,12 @@ * (e.g. `document.getElementById( 'foobar' )`) or a jQuery-selector * (e.g. `'#foobar'`) for that item. * - * mw.util.addPortletLink( + * util.addPortletLink( * 'p-tb', 'https://www.mediawiki.org/', * 'mediawiki.org', 't-mworg', 'Go to mediawiki.org', 'm', '#t-print' * ); * - * var node = mw.util.addPortletLink( + * var node = util.addPortletLink( * 'p-tb', * new mw.Title( 'Special:Example' ).getUrl(), * 'Example' @@ -554,5 +554,6 @@ }, 'Use mw.notify instead.' ); mw.util = util; + module.exports = util; }( mediaWiki, jQuery ) ); diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js index 01665e5b0c..0e88740172 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js @@ -1,5 +1,5 @@ ( function ( mw, $ ) { - var + var util = require( 'mediawiki.util' ), // Based on IPTest.php > testisIPv4 IPV4_CASES = [ [ false, false, 'Boolean false is not an IP' ], @@ -89,7 +89,7 @@ } ) ); QUnit.test( 'rawurlencode', function ( assert ) { - assert.equal( mw.util.rawurlencode( 'Test:A & B/Here' ), 'Test%3AA%20%26%20B%2FHere' ); + assert.equal( util.rawurlencode( 'Test:A & B/Here' ), 'Test%3AA%20%26%20B%2FHere' ); } ); QUnit.test( 'escapeId', function ( assert ) { @@ -113,12 +113,12 @@ 'Test:A & B/Here': 'Test:A_.26_B.2FHere', 'A&B&C&amp;D&amp;amp;E': 'A.26B.26amp.3BC.26amp.3Bamp.3BD.26amp.3Bamp.3Bamp.3BE' }, function ( input, output ) { - assert.equal( mw.util.escapeId( input ), output ); + assert.equal( util.escapeId( input ), output ); } ); } ); QUnit.test( 'wikiUrlencode', function ( assert ) { - assert.equal( mw.util.wikiUrlencode( 'Test:A & B/Here' ), 'Test:A_%26_B/Here' ); + assert.equal( util.wikiUrlencode( 'Test:A & B/Here' ), 'Test:A_%26_B/Here' ); // See also wfUrlencodeTest.php#provideURLS $.each( { '+': '%2B', @@ -132,7 +132,7 @@ '<>': '%3C%3E', '\'': '%27' }, function ( input, output ) { - assert.equal( mw.util.wikiUrlencode( input ), output ); + assert.equal( util.wikiUrlencode( input ), output ); } ); } ); @@ -144,48 +144,48 @@ wgPageName: 'Foobar' } ); - href = mw.util.getUrl( 'Sandbox' ); + href = util.getUrl( 'Sandbox' ); assert.equal( href, '/wiki/Sandbox', 'simple title' ); - href = mw.util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' ); + href = util.getUrl( 'Foo:Sandbox? 5+5=10! (test)/sub ' ); assert.equal( href, '/wiki/Foo:Sandbox%3F_5%2B5%3D10!_(test)/sub_', 'complex title' ); // T149767 - href = mw.util.getUrl( 'My$$test$$$$$title' ); + href = util.getUrl( 'My$$test$$$$$title' ); assert.equal( href, '/wiki/My$$test$$$$$title', 'title with multiple consecutive dollar signs' ); - href = mw.util.getUrl(); + href = util.getUrl(); assert.equal( href, '/wiki/Foobar', 'default title' ); - href = mw.util.getUrl( null, { action: 'edit' } ); + href = util.getUrl( null, { action: 'edit' } ); assert.equal( href, '/w/index.php?title=Foobar&action=edit', 'default title with query string' ); - href = mw.util.getUrl( 'Sandbox', { action: 'edit' } ); + href = util.getUrl( 'Sandbox', { action: 'edit' } ); assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'simple title with query string' ); // Test fragments - href = mw.util.getUrl( 'Foo:Sandbox#Fragment', { action: 'edit' } ); + href = util.getUrl( 'Foo:Sandbox#Fragment', { action: 'edit' } ); assert.equal( href, '/w/index.php?title=Foo:Sandbox&action=edit#Fragment', 'namespaced title with query string and fragment' ); - href = mw.util.getUrl( 'Sandbox#', { action: 'edit' } ); + href = util.getUrl( 'Sandbox#', { action: 'edit' } ); assert.equal( href, '/w/index.php?title=Sandbox&action=edit', 'title with query string and empty fragment' ); - href = mw.util.getUrl( 'Sandbox', {} ); + href = util.getUrl( 'Sandbox', {} ); assert.equal( href, '/wiki/Sandbox', 'title with empty query string' ); - href = mw.util.getUrl( '#Fragment' ); + href = util.getUrl( '#Fragment' ); assert.equal( href, '/wiki/#Fragment', 'empty title with fragment' ); - href = mw.util.getUrl( '#Fragment', { action: 'edit' } ); + href = util.getUrl( '#Fragment', { action: 'edit' } ); assert.equal( href, '/w/index.php?action=edit#Fragment', 'epmty title with query string and fragment' ); - href = mw.util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } ); + href = util.getUrl( 'Foo:Sandbox \xC4#Fragment \xC4', { action: 'edit' } ); assert.equal( href, '/w/index.php?title=Foo:Sandbox_%C3%84&action=edit#Fragment_.C3.84', 'title with query string, fragment, and special characters' ); - href = mw.util.getUrl( 'Foo:%23#Fragment', { action: 'edit' } ); + href = util.getUrl( 'Foo:%23#Fragment', { action: 'edit' } ); assert.equal( href, '/w/index.php?title=Foo:%2523&action=edit#Fragment', 'title containing %23 (#), fragment, and a query string' ); - href = mw.util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } ); + href = util.getUrl( '#+&=:;@$-_.!*/[]<>\'§', { action: 'edit' } ); assert.equal( href, '/w/index.php?action=edit#.2B.26.3D:.3B.40.24-_..21.2A.2F.5B.5D.3C.3E.27.C2.A7', 'fragment with various characters' ); } ); @@ -198,23 +198,23 @@ wgScriptPath: '/w' } ); - assert.equal( mw.util.wikiScript(), mw.config.get( 'wgScript' ), + assert.equal( util.wikiScript(), mw.config.get( 'wgScript' ), 'wikiScript() returns wgScript' ); - assert.equal( mw.util.wikiScript( 'index' ), mw.config.get( 'wgScript' ), + assert.equal( util.wikiScript( 'index' ), mw.config.get( 'wgScript' ), 'wikiScript( index ) returns wgScript' ); - assert.equal( mw.util.wikiScript( 'load' ), mw.config.get( 'wgLoadScript' ), + assert.equal( util.wikiScript( 'load' ), mw.config.get( 'wgLoadScript' ), 'wikiScript( load ) returns wgLoadScript' ); - assert.equal( mw.util.wikiScript( 'api' ), '/w/api.php', 'API path' ); + assert.equal( util.wikiScript( 'api' ), '/w/api.php', 'API path' ); } ); QUnit.test( 'addCSS', function ( assert ) { var $el, style; $el = $( '
' ).attr( 'id', 'mw-addcsstest' ).appendTo( '#qunit-fixture' ); - style = mw.util.addCSS( '#mw-addcsstest { visibility: hidden; }' ); + style = util.addCSS( '#mw-addcsstest { visibility: hidden; }' ); assert.equal( typeof style, 'object', 'addCSS returned an object' ); assert.strictEqual( style.disabled, false, 'property "disabled" is available and set to false' ); @@ -228,22 +228,22 @@ var url; url = 'http://example.org/?foo=wrong&foo=right#&foo=bad'; - assert.equal( mw.util.getParamValue( 'foo', url ), 'right', 'Use latest one, ignore hash' ); - assert.strictEqual( mw.util.getParamValue( 'bar', url ), null, 'Return null when not found' ); + assert.equal( util.getParamValue( 'foo', url ), 'right', 'Use latest one, ignore hash' ); + assert.strictEqual( util.getParamValue( 'bar', url ), null, 'Return null when not found' ); url = 'http://example.org/#&foo=bad'; - assert.strictEqual( mw.util.getParamValue( 'foo', url ), null, 'Ignore hash if param is not in querystring but in hash (T29427)' ); + assert.strictEqual( util.getParamValue( 'foo', url ), null, 'Ignore hash if param is not in querystring but in hash (T29427)' ); url = 'example.org?' + $.param( { TEST: 'a b+c' } ); - assert.strictEqual( mw.util.getParamValue( 'TEST', url ), 'a b+c', 'T32441: getParamValue must understand "+" encoding of space' ); + assert.strictEqual( util.getParamValue( 'TEST', url ), 'a b+c', 'T32441: getParamValue must understand "+" encoding of space' ); url = 'example.org?' + $.param( { TEST: 'a b+c d' } ); // check for sloppy code from r95332 :) - assert.strictEqual( mw.util.getParamValue( 'TEST', url ), 'a b+c d', 'T32441: getParamValue must understand "+" encoding of space (multiple spaces)' ); + assert.strictEqual( util.getParamValue( 'TEST', url ), 'a b+c d', 'T32441: getParamValue must understand "+" encoding of space (multiple spaces)' ); } ); QUnit.test( '$content', function ( assert ) { - assert.ok( mw.util.$content instanceof jQuery, 'mw.util.$content instance of jQuery' ); - assert.strictEqual( mw.util.$content.length, 1, 'mw.util.$content must have length of 1' ); + assert.ok( util.$content instanceof jQuery, 'mw.util.$content instance of jQuery' ); + assert.strictEqual( util.$content.length, 1, 'mw.util.$content must have length of 1' ); } ); /** @@ -281,13 +281,13 @@ $( '#qunit-fixture' ).append( pTestTb, pCustom, vectorTabs ); - tbRL = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/ResourceLoader', + tbRL = util.addPortletLink( 'p-test-tb', '//mediawiki.org/wiki/ResourceLoader', 'ResourceLoader', 't-rl', 'More info about ResourceLoader on MediaWiki.org ', 'l' ); assert.ok( tbRL && tbRL.nodeType, 'addPortletLink returns a DOM Node' ); - tbMW = mw.util.addPortletLink( 'p-test-tb', '//mediawiki.org/', + tbMW = util.addPortletLink( 'p-test-tb', '//mediawiki.org/', 'MediaWiki.org', 't-mworg', 'Go to MediaWiki.org', 'm', tbRL ); $tbMW = $( tbMW ); @@ -312,7 +312,7 @@ assert.equal( $tbMW.closest( '.portlet' ).attr( 'id' ), 'p-test-tb', 'Link was inserted within correct portlet' ); assert.strictEqual( $tbMW.next()[ 0 ], tbRL, 'Link is in the correct position (nextnode as Node object)' ); - cuQuux = mw.util.addPortletLink( 'p-test-custom', '#', 'Quux', null, 'Example [shift-x]', 'q' ); + cuQuux = util.addPortletLink( 'p-test-custom', '#', 'Quux', null, 'Example [shift-x]', 'q' ); $cuQuux = $( cuQuux ); assert.equal( $cuQuux.find( 'a' ).attr( 'title' ), 'Example [test-q]', 'Existing accesskey is stripped and updated' ); @@ -323,64 +323,64 @@ 'addPortletLink did not add the item to all