From: Bartosz Dziewoński Date: Mon, 28 Sep 2015 21:13:54 +0000 (+0200) Subject: mediawiki.jqueryMsg: Allow more than one thing inside a wikilink X-Git-Tag: 1.31.0-rc.0~9673^2 X-Git-Url: https://git.cyclocoop.org/%27.WWW_URL.%27admin/?a=commitdiff_plain;h=ad9d610dc39bf093dce3555e913db22c87463581;p=lhc%2Fweb%2Fwiklou.git mediawiki.jqueryMsg: Allow more than one thing inside a wikilink So that [[foo|bar {{SITENAME}}]] becomes parseable. Change-Id: Idf825e4df24cb9a10cac136811936e54e8fce7b6 --- diff --git a/resources/src/mediawiki/mediawiki.jqueryMsg.js b/resources/src/mediawiki/mediawiki.jqueryMsg.js index ce92423d89..9463ac8d86 100644 --- a/resources/src/mediawiki/mediawiki.jqueryMsg.js +++ b/resources/src/mediawiki/mediawiki.jqueryMsg.js @@ -614,9 +614,9 @@ var result = sequence( [ wikilinkPage, pipe, - expression + nOrMore( 1, expression ) ] ); - return result === null ? null : [ result[ 0 ], result[ 2 ] ]; + return result === null ? null : [ result[ 0 ], [ 'CONCAT' ].concat( result[ 2 ] ) ]; } wikilinkContents = choice( [ @@ -1052,7 +1052,9 @@ return $( '' ).attr( { title: page, href: url - } ).text( anchor ); + } ) + // FIXME This means that you can't have anything with formatting inside a wikilink. + .text( anchor.jquery ? anchor.text() : anchor ); }, /** diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js index 161b8e1b85..f287caa6ca 100644 --- a/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js @@ -1,5 +1,6 @@ ( function ( mw, $ ) { - var formatText, formatParse, formatnumTests, specialCharactersPageName, expectedListUsers, expectedEntrypoints, + var formatText, formatParse, formatnumTests, specialCharactersPageName, expectedListUsers, + expectedListUsersSitename, expectedEntrypoints, mwLanguageCache = {}, hasOwn = Object.hasOwnProperty; @@ -16,6 +17,8 @@ specialCharactersPageName = '"Who" wants to be a millionaire & live on \'Exotic Island\'?'; expectedListUsers = '注册用户'; + expectedListUsersSitename = '注册用户' + + mw.config.get( 'wgSiteName' ) + ''; expectedEntrypoints = 'index.php'; @@ -52,6 +55,7 @@ 'see-portal-url': '{{Int:portal-url}} is an important community page.', 'jquerymsg-test-statistics-users': '注册[[Special:ListUsers|用户]]', + 'jquerymsg-test-statistics-users-sitename': '注册[[Special:ListUsers|用户{{SITENAME}}]]', 'jquerymsg-test-version-entrypoints-index-php': '[https://www.mediawiki.org/wiki/Manual:index.php index.php]', @@ -339,7 +343,7 @@ process( tasks, QUnit.start ); } ); - QUnit.test( 'Links', 6, function ( assert ) { + QUnit.test( 'Links', 7, function ( assert ) { var expectedDisambiguationsText, expectedMultipleBars, expectedSpecialCharacters; @@ -395,6 +399,12 @@ expectedSpecialCharacters, 'Special characters' ); + + assert.htmlEqual( + formatParse( 'jquerymsg-test-statistics-users-sitename' ), + expectedListUsersSitename, + 'Piped wikilink with parser function in the text' + ); } ); // Tests that {{-transformation vs. general parsing are done as requested