Author: cbrisson
Date: Thu Apr 26 12:42:39 2012
New Revision: 1330815

URL: http://svn.apache.org/viewvc?rev=1330815&view=rev
Log:
Expressions as method arguments (VELOCITY-706)

Added:
    
velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/ExpressionAsMethodArgumentTestCase.java
Modified:
    velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt

Modified: velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt
URL: 
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt?rev=1330815&r1=1330814&r2=1330815&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt 
(original)
+++ velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt Thu 
Apr 26 12:42:39 2012
@@ -1011,7 +1011,7 @@ TOKEN :
 }
 
 
-<DIRECTIVE>
+<DIRECTIVE,REFMOD2>
 TOKEN :
 {
     <MINUS: "-">
@@ -1711,7 +1711,7 @@ void Parameter() #void: {}
  */
 void Method() : {}
 {
-   Identifier() <LPAREN> [ Parameter() ( <COMMA> Parameter() )* ] 
<REFMOD2_RPAREN>
+   Identifier() <LPAREN> [ Expression() ( <COMMA> Expression() )* ] 
<REFMOD2_RPAREN>
 }
 
 

Added: 
velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/ExpressionAsMethodArgumentTestCase.java
URL: 
http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/ExpressionAsMethodArgumentTestCase.java?rev=1330815&view=auto
==============================================================================
--- 
velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/ExpressionAsMethodArgumentTestCase.java
 (added)
+++ 
velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/ExpressionAsMethodArgumentTestCase.java
 Thu Apr 26 12:42:39 2012
@@ -0,0 +1,55 @@
+package org.apache.velocity.test;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    
+ */
+
+import org.apache.velocity.VelocityContext;
+
+/**
+ * This class tests passing expressions as method arguments
+ */
+
+public class ExpressionAsMethodArgumentTestCase extends BaseTestCase
+{
+    public ExpressionAsMethodArgumentTestCase(final String name)
+    {
+        super(name);
+    }
+
+    protected void setUpContext(VelocityContext context)
+    {
+        context.put("tool",new MyAbsTool());
+        context.put("foo",2);
+        context.put("bar",-3);
+    }
+
+    public void testExpressionAsMethod()
+    {
+        assertEvalEquals("6","$tool.abs( $foo * $bar )");
+        assertEvalEquals("12","$tool.abs( $foo * $tool.abs( $foo * $bar ) )");
+    }
+
+    public static class MyAbsTool
+    {
+        public int abs(int num)
+        {
+            return Math.abs(num);
+        }
+    }
+}


Reply via email to