Author: cbrisson
Date: Fri Jan 24 09:39:13 2020
New Revision: 1873094

URL: http://svn.apache.org/viewvc?rev=1873094&view=rev
Log:
[site/engine] Fix doc about velocimacros argument passing convention for 2.x

Modified:
    velocity/site/cms/trunk/content/engine/2.0/user-guide.mdtext
    velocity/site/cms/trunk/content/engine/2.1/user-guide.mdtext
    velocity/site/cms/trunk/content/engine/2.2/user-guide.mdtext
    velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext

Modified: velocity/site/cms/trunk/content/engine/2.0/user-guide.mdtext
URL: 
http://svn.apache.org/viewvc/velocity/site/cms/trunk/content/engine/2.0/user-guide.mdtext?rev=1873094&r1=1873093&r2=1873094&view=diff
==============================================================================
--- velocity/site/cms/trunk/content/engine/2.0/user-guide.mdtext (original)
+++ velocity/site/cms/trunk/content/engine/2.0/user-guide.mdtext Fri Jan 24 
09:39:13 2020
@@ -817,7 +817,7 @@ Velocimacros can take as arguments any o
 + boolean value true
 + boolean value false
 
-When passing references as arguments to Velocimacros, please note that 
references are passed 'by name'. This means that their value is 'generated' at 
each use inside the Velocimacro.  This feature allows you to pass references 
with method calls and have the method called at each use.  For example, when 
calling the following Velocimacro as shown
+Since 2.0, Velocimacros arguments are passed by value (or, more precisely, the 
result of their evaluation is passed by reference). This means that they are 
evaluated only once, even when used several times inside the macro. It means 
that in the following example:
 
     :::velocity
     #macro( callme $a )
@@ -826,16 +826,7 @@ When passing references as arguments to
 
     #callme( $foo.bar() )
 
-results in the method bar() of the reference $foo being called 3 times.
-
-At first glance, this feature appears surprising, but when you take into 
consideration the original motivation behind Velocimacros -- to eliminate 
cut'n'paste duplication of commonly used VTL -- it makes sense.  It allows you 
to do things like pass stateful objects, such as an object that generates 
colors in a repeating sequence for coloring table rows, into the Velocimacro.
-
-If you need to circumvent this feature, you can always just get the value from 
the method as a new reference and pass that :
-
-    :::velocity
-    #set( $myval = $foo.bar() )
-    #callme( $myval )
-
+the method bar() of the reference $foo is only called once.
 
 #### Velocimacro Properties
 

Modified: velocity/site/cms/trunk/content/engine/2.1/user-guide.mdtext
URL: 
http://svn.apache.org/viewvc/velocity/site/cms/trunk/content/engine/2.1/user-guide.mdtext?rev=1873094&r1=1873093&r2=1873094&view=diff
==============================================================================
--- velocity/site/cms/trunk/content/engine/2.1/user-guide.mdtext (original)
+++ velocity/site/cms/trunk/content/engine/2.1/user-guide.mdtext Fri Jan 24 
09:39:13 2020
@@ -828,7 +828,7 @@ Velocimacros can take as arguments any o
 + boolean value true
 + boolean value false
 
-When passing references as arguments to Velocimacros, please note that 
references are passed 'by name'. This means that their value is 'generated' at 
each use inside the Velocimacro.  This feature allows you to pass references 
with method calls and have the method called at each use.  For example, when 
calling the following Velocimacro as shown
+Since 2.0, Velocimacros arguments are passed by value (or, more precisely, the 
result of their evaluation is passed by reference). This means that they are 
evaluated only once, even when used several times inside the macro. It means 
that in the following example:
 
     :::velocity
     #macro( callme $a )
@@ -837,16 +837,7 @@ When passing references as arguments to
 
     #callme( $foo.bar() )
 
-results in the method bar() of the reference $foo being called 3 times.
-
-At first glance, this feature appears surprising, but when you take into 
consideration the original motivation behind Velocimacros -- to eliminate 
cut'n'paste duplication of commonly used VTL -- it makes sense.  It allows you 
to do things like pass stateful objects, such as an object that generates 
colors in a repeating sequence for coloring table rows, into the Velocimacro.
-
-If you need to circumvent this feature, you can always just get the value from 
the method as a new reference and pass that :
-
-    :::velocity
-    #set( $myval = $foo.bar() )
-    #callme( $myval )
-
+the method bar() of the reference $foo is only called once.
 
 #### Velocimacro Properties
 

Modified: velocity/site/cms/trunk/content/engine/2.2/user-guide.mdtext
URL: 
http://svn.apache.org/viewvc/velocity/site/cms/trunk/content/engine/2.2/user-guide.mdtext?rev=1873094&r1=1873093&r2=1873094&view=diff
==============================================================================
--- velocity/site/cms/trunk/content/engine/2.2/user-guide.mdtext (original)
+++ velocity/site/cms/trunk/content/engine/2.2/user-guide.mdtext Fri Jan 24 
09:39:13 2020
@@ -828,7 +828,7 @@ Velocimacros can take as arguments any o
 + boolean value true
 + boolean value false
 
-When passing references as arguments to Velocimacros, please note that 
references are passed 'by name'. This means that their value is 'generated' at 
each use inside the Velocimacro.  This feature allows you to pass references 
with method calls and have the method called at each use.  For example, when 
calling the following Velocimacro as shown
+Since 2.0, Velocimacros arguments are passed by value (or, more precisely, the 
result of their evaluation is passed by reference). This means that they are 
evaluated only once, even when used several times inside the macro. It means 
that in the following example:
 
     :::velocity
     #macro( callme $a )
@@ -837,16 +837,7 @@ When passing references as arguments to
 
     #callme( $foo.bar() )
 
-results in the method bar() of the reference $foo being called 3 times.
-
-At first glance, this feature appears surprising, but when you take into 
consideration the original motivation behind Velocimacros -- to eliminate 
cut'n'paste duplication of commonly used VTL -- it makes sense.  It allows you 
to do things like pass stateful objects, such as an object that generates 
colors in a repeating sequence for coloring table rows, into the Velocimacro.
-
-If you need to circumvent this feature, you can always just get the value from 
the method as a new reference and pass that :
-
-    :::velocity
-    #set( $myval = $foo.bar() )
-    #callme( $myval )
-
+the method bar() of the reference $foo is only called once.
 
 #### Velocimacro Properties
 

Modified: velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext
URL: 
http://svn.apache.org/viewvc/velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext?rev=1873094&r1=1873093&r2=1873094&view=diff
==============================================================================
--- velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext (original)
+++ velocity/site/cms/trunk/content/engine/devel/user-guide.mdtext Fri Jan 24 
09:39:13 2020
@@ -828,7 +828,7 @@ Velocimacros can take as arguments any o
 + boolean value true
 + boolean value false
 
-When passing references as arguments to Velocimacros, please note that 
references are passed 'by name'. This means that their value is 'generated' at 
each use inside the Velocimacro.  This feature allows you to pass references 
with method calls and have the method called at each use.  For example, when 
calling the following Velocimacro as shown
+Since 2.0, Velocimacros arguments are passed by value (or, more precisely, the 
result of their evaluation is passed by reference). This means that they are 
evaluated only once, even when used several times inside the macro. It means 
that in the following example:
 
     :::velocity
     #macro( callme $a )
@@ -837,16 +837,7 @@ When passing references as arguments to
 
     #callme( $foo.bar() )
 
-results in the method bar() of the reference $foo being called 3 times.
-
-At first glance, this feature appears surprising, but when you take into 
consideration the original motivation behind Velocimacros -- to eliminate 
cut'n'paste duplication of commonly used VTL -- it makes sense.  It allows you 
to do things like pass stateful objects, such as an object that generates 
colors in a repeating sequence for coloring table rows, into the Velocimacro.
-
-If you need to circumvent this feature, you can always just get the value from 
the method as a new reference and pass that :
-
-    :::velocity
-    #set( $myval = $foo.bar() )
-    #callme( $myval )
-
+the method bar() of the reference $foo is only called once.
 
 #### Velocimacro Properties
 


Reply via email to