parserDefaults = {
magic: {
PAGENAME: mw.config.get( 'wgPageName' ),
- PAGENAMEE: mw.util.wikiUrlencode( mw.config.get( 'wgPageName' ) ),
- SITENAME: mw.config.get( 'wgSiteName' )
+ PAGENAMEE: mw.util.wikiUrlencode( mw.config.get( 'wgPageName' ) )
},
// Whitelist for allowed HTML elements in wikitext.
// Self-closing tags are not currently supported.
function getFailableParserFn( options ) {
return function ( args ) {
var fallback,
+ // eslint-disable-next-line new-cap
parser = new mw.jqueryMsg.parser( options ),
key = args[ 0 ],
argsArray = $.isArray( args[ 1 ] ) ? args[ 1 ] : slice.call( args, 1 );
* parsers, pass the relevant options to mw.jqueryMsg.parser.
*
* @private
- * @param {Object} data
+ * @param {Object} data New data to extend parser defaults with
+ * @param {boolean} [deep=false] Whether the extend is done recursively (deep)
*/
- mw.jqueryMsg.setParserDefaults = function ( data ) {
- $.extend( parserDefaults, data );
+ mw.jqueryMsg.setParserDefaults = function ( data, deep ) {
+ if ( deep ) {
+ $.extend( true, parserDefaults, data );
+ } else {
+ $.extend( parserDefaults, data );
+ }
};
/**
}
return function () {
+ var failableResult;
if ( !failableParserFn ) {
failableParserFn = getFailableParserFn( options );
}
- var failableResult = failableParserFn( arguments );
+ failableResult = failableParserFn( arguments );
if ( format === 'text' || format === 'escaped' ) {
return failableResult.text();
} else {
var failableParserFn;
return function () {
+ var $target;
if ( !failableParserFn ) {
failableParserFn = getFailableParserFn( options );
}
- var $target = this.empty();
+ $target = this.empty();
appendWithoutParsing( $target, failableParserFn( arguments ) );
return $target;
};
this.settings.onlyCurlyBraceTransform = ( this.settings.format === 'text' || this.settings.format === 'escaped' );
this.astCache = {};
+ // eslint-disable-next-line new-cap
this.emitter = new mw.jqueryMsg.htmlEmitter( this.settings.language, this.settings.magic );
};
/**
* Starts the parse
*
- * @param {Function} rootExpression root parse function
+ * @param {Function} rootExpression Root parse function
+ * @return {Array|null}
*/
function start( rootExpression ) {
var result = nOrMore( 0, rootExpression )();
/**
* htmlEmitter - object which primarily exists to emit HTML from parser ASTs
+ *
+ * @param {Object} language
+ * @param {Object} magic
*/
mw.jqueryMsg.htmlEmitter = function ( language, magic ) {
- this.language = language;
var jmsg = this;
+ this.language = language;
$.each( magic, function ( key, val ) {
jmsg[ key.toLowerCase() ] = function () {
return val;
* It may, though, if the wikitext appears in extension-controlled content.
*
* @param {string[]} nodes
+ * @return {jQuery}
*/
wikilink: function ( nodes ) {
var page, anchor, url, $el;
* @return {number|string} Formatted number
*/
formatnum: function ( nodes ) {
- var isInteger = ( nodes[ 1 ] && nodes[ 1 ] === 'R' ) ? true : false,
+ var isInteger = !!nodes[ 1 ] && nodes[ 1 ] === 'R',
number = nodes[ 0 ];
return this.language.convertNumber( number, isInteger );
return function () {
return reusableParent.msg( this.key, this.parameters ).contents().detach();
};
- } )();
+ }() );
}( mediaWiki, jQuery ) );