* @return {string} return.return Rendered HTML.
*/
mw.jqueryMsg.getMessageFunction = function ( options ) {
- var failableParserFn = getFailableParserFn( options ),
- format;
+ var failableParserFn, format;
if ( options && options.format !== undefined ) {
format = options.format;
}
return function () {
+ if ( !failableParserFn ) {
+ failableParserFn = getFailableParserFn( options );
+ }
var failableResult = failableParserFn( arguments );
if ( format === 'text' || format === 'escaped' ) {
return failableResult.text();
* @return {jQuery} return.return
*/
mw.jqueryMsg.getPlugin = function ( options ) {
- var failableParserFn = getFailableParserFn( options );
+ var failableParserFn;
return function () {
+ if ( !failableParserFn ) {
+ failableParserFn = getFailableParserFn( options );
+ }
var $target = this.empty();
appendWithoutParsing( $target, failableParserFn( arguments ) );
return $target;
assert.equal( logSpy.callCount, 2, 'mw.log.warn calls' );
} );
+ QUnit.test( 'Integration', 4, function ( assert ) {
+ var expected, logSpy;
+
+ expected = '<b><a title="Bold" href="/wiki/Bold">Bold</a>!</b>';
+ mw.messages.set( 'integration-test', '<b>[[Bold]]!</b>' );
+
+ this.suppressWarnings();
+ logSpy = this.sandbox.spy( mw.log, 'warn' );
+ assert.equal(
+ window.gM( 'integration-test' ),
+ expected,
+ 'Global function gM() works correctly'
+ );
+ assert.equal( logSpy.callCount, 1, 'mw.log.warn called' );
+ this.restoreWarnings();
+
+ assert.equal(
+ mw.message( 'integration-test' ).parse(),
+ expected,
+ 'mw.message().parse() works correctly'
+ );
+
+ assert.equal(
+ $( '<span>' ).msg( 'integration-test' ).html(),
+ expected,
+ 'jQuery plugin $.fn.msg() works correctly'
+ );
+ } );
+
}( mediaWiki, jQuery ) );