From 1db56c66a533e1abf57a692fb529006db55991d7 Mon Sep 17 00:00:00 2001 From: Santhosh Thottingal Date: Mon, 2 Apr 2012 16:42:40 +0530 Subject: [PATCH] Fix Bug 33653 -JqueryMsg parser should support templates without replacements - The patch was already reviewed but was in jsgrammar branch of svn. - Relavant revisions from svn: r111629 Change-Id: I946d3c8da9261d4c04963abf7d30cdb06448212c --- resources/mediawiki/mediawiki.jqueryMsg.js | 13 ++++++++++++- resources/mediawiki/mediawiki.jqueryMsg.peg | 4 ++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/resources/mediawiki/mediawiki.jqueryMsg.js b/resources/mediawiki/mediawiki.jqueryMsg.js index 6c00bd15a1..a8d4a3add3 100644 --- a/resources/mediawiki/mediawiki.jqueryMsg.js +++ b/resources/mediawiki/mediawiki.jqueryMsg.js @@ -407,12 +407,23 @@ return result === null ? null : [ result[0], result[2] ]; } + function templateWithOutReplacement() { + var result = sequence( [ + templateName, + colon, + paramExpression + ] ); + return result === null ? null : [ result[0], result[2] ]; + } + var colon = makeStringParser(':'); var templateContents = choice( [ function() { var res = sequence( [ - templateWithReplacement, + // templates can have placeholders for dynamic replacement eg: {{PLURAL:$1|one car|$1 cars}} + // or no placeholders eg: {{GRAMMAR:genitive|{{SITENAME}}} + choice( [ templateWithReplacement, templateWithOutReplacement ] ), nOrMore( 0, templateParam ) ] ); return res === null ? null : res[0].concat( res[1] ); diff --git a/resources/mediawiki/mediawiki.jqueryMsg.peg b/resources/mediawiki/mediawiki.jqueryMsg.peg index 74c57e4b2a..e059ed1d9e 100644 --- a/resources/mediawiki/mediawiki.jqueryMsg.peg +++ b/resources/mediawiki/mediawiki.jqueryMsg.peg @@ -22,11 +22,15 @@ template templateContents = twr:templateWithReplacement p:templateParam* { return twr.concat(p) } + / twr:templateWithOutReplacement p:templateParam* { return twr.concat(p) } / t:templateName p:templateParam* { return p.length ? [ t, p ] : [ t ] } templateWithReplacement = t:templateName ":" r:replacement { return [ t, r ] } +templateWithOutReplacement + = t:templateName ":" p:paramExpression { return [ t, p ] } + templateParam = "|" e:paramExpression* { return e.length > 1 ? [ "CONCAT" ].concat(e) : e[0]; } -- 2.20.1