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);
+ }
+ }
+}