Fix Bug 33653 -JqueryMsg parser should support templates without replacements
authorSanthosh Thottingal <santhosh.thottingal@gmail.com>
Mon, 2 Apr 2012 11:12:40 +0000 (16:42 +0530)
committerSanthosh Thottingal <santhosh.thottingal@gmail.com>
Tue, 3 Apr 2012 05:23:52 +0000 (10:53 +0530)
- 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
resources/mediawiki/mediawiki.jqueryMsg.peg

index 6c00bd1..a8d4a3a 100644 (file)
                                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] );
index 74c57e4..e059ed1 100644 (file)
@@ -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]; }