Author: cbrisson
Date: Sat Oct 13 22:32:15 2018
New Revision: 1843798

URL: http://svn.apache.org/viewvc?rev=1843798&view=rev
Log:
[site/engine] Document alternate values (and other minor fixes) => prod

Modified:
    velocity/site/production/engine/devel/changes.html
    velocity/site/production/engine/devel/developer-guide.html
    velocity/site/production/engine/devel/user-guide.html
    velocity/site/production/engine/devel/vtl-reference.html

Modified: velocity/site/production/engine/devel/changes.html
URL: 
http://svn.apache.org/viewvc/velocity/site/production/engine/devel/changes.html?rev=1843798&r1=1843797&r2=1843798&view=diff
==============================================================================
--- velocity/site/production/engine/devel/changes.html (original)
+++ velocity/site/production/engine/devel/changes.html Sat Oct 13 22:32:15 2018
@@ -236,6 +236,11 @@ h2:hover > .headerlink, h3:hover > .head
     </thead>
     <tbody>
       <tr>
+        <td>2.1</td>
+        <td>In subversion</td>
+        <td/>
+      </tr>
+      <tr>
         <td>2.0</td>
         <td>2017-08-06</td>
         <td/>
@@ -303,7 +308,54 @@ h2:hover > .headerlink, h3:hover > .head
     </tbody>
   </table>
 </p>
-<h3>Release 2.0 - 2017-08-06</h3><p>
+<h3>Release 2.1 - In subversion</h3><p>
+  <table class="standard">
+    <thead>
+      <tr>
+        <th>Type</th>
+        <th>Changes</th>
+        <th>Bye</th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr>
+        <td>
+          <img src="images/add.png"/>
+        </td>
+        <td> Alternate reference values: <code> ${foo|'foo'} </code> evaluates 
to false whenever boolean evaluation of $foo is false . Fixes <a 
href="https://issues.apache.org/jira/browse/VELOCITY-898";>VELOCITY-898</a>. 
</td>
+        <td>cbrisson</td>
+      </tr>
+      <tr>
+        <td>
+          <img src="images/fix.png"/>
+        </td>
+        <td> Fix parser regression in #macro whitespaces handling . Fixes <a 
href="https://issues.apache.org/jira/browse/VELOCITY-889";>VELOCITY-889</a>. 
</td>
+        <td>cbrisson</td>
+      </tr>
+      <tr>
+        <td>
+          <img src="images/add.png"/>
+        </td>
+        <td> Added a new 'parser.allows.dash.in.identifiers' boolean property 
(false per default) to (dis)allow '-' in reference identifiers . Fixes <a 
href="https://issues.apache.org/jira/browse/VELOCITY-542";>VELOCITY-542</a>. 
</td>
+        <td>cbrisson</td>
+      </tr>
+      <tr>
+        <td>
+          <img src="images/fix.png"/>
+        </td>
+        <td> Fix parsing of a terminal hash or dollar sign in sing litteral 
and template . Fixes <a 
href="https://issues.apache.org/jira/browse/VELOCITY-896";>VELOCITY-896</a>. 
</td>
+        <td>cbrisson</td>
+      </tr>
+      <tr>
+        <td>
+          <img src="images/fix.png"/>
+        </td>
+        <td> Implicit conversion to numbers in integer ranges . Fixes <a 
href="https://issues.apache.org/jira/browse/VELOCITY-895";>VELOCITY-895</a>. 
</td>
+        <td>cbrisson</td>
+      </tr>
+    </tbody>
+  </table>
+</p><h3>Release 2.0 - 2017-08-06</h3><p>
   <table class="standard">
     <thead>
       <tr>

Modified: velocity/site/production/engine/devel/developer-guide.html
URL: 
http://svn.apache.org/viewvc/velocity/site/production/engine/devel/developer-guide.html?rev=1843798&r1=1843797&r2=1843798&view=diff
==============================================================================
--- velocity/site/production/engine/devel/developer-guide.html (original)
+++ velocity/site/production/engine/devel/developer-guide.html Sat Oct 13 
22:32:15 2018
@@ -1107,6 +1107,7 @@ see the Javadoc API documentation.</p>
 </pre></div>
 
 
+<p>When a reference has an alternate value provided, as in 
<code>${foo.bar|'foo'}</code>, whenever <code>$foo.bar</code> is invalid, the 
invalid reference handler is called <strong>before</strong> the alternate value 
(and the alternate value will be used only if the value returned by the handler 
evaluates to null, false, empty or zero).</p>
 <p>Available implementations include:</p>
 <ul>
 
<li><code>org.apache.velocity.app.event.implement.ReportInvalidReferences</code></li>

Modified: velocity/site/production/engine/devel/user-guide.html
URL: 
http://svn.apache.org/viewvc/velocity/site/production/engine/devel/user-guide.html?rev=1843798&r1=1843797&r2=1843798&view=diff
==============================================================================
--- velocity/site/production/engine/devel/user-guide.html (original)
+++ velocity/site/production/engine/devel/user-guide.html Sat Oct 13 22:32:15 
2018
@@ -246,6 +246,7 @@ h2:hover > .headerlink, h3:hover > .head
 </ul>
 </li>
 <li><a href="#formal-reference-notation">Formal Reference Notation</a></li>
+<li><a href="#alternate-values">Alternate values</a></li>
 <li><a href="#quiet-reference-notation">Quiet Reference Notation</a></li>
 <li><a href="#strict-reference-mode">Strict Reference Mode</a></li>
 <li><a href="#case-substitution">Case Substitution</a></li>
@@ -541,6 +542,13 @@ h2:hover > .headerlink, h3:hover > .head
 
 
 <p>Now Velocity knows that <em>$vice</em>, not <em>$vicemaniac</em>, is the 
reference. Formal notation is often useful when references are directly 
adjacent to text in a template.</p>
+<h2 id="alternate-values">Alternate values<a class="headerlink" 
href="#alternate-values" title="Permanent link">&para;</a></h2>
+<p>Formal reference notations can also be used to provide an <em>alternate 
value</em> whenever the boolean evaluation of a reference is false.</p>
+<div class="codehilite"><pre><span class="x">My name is </span><span 
class="p">${</span><span class="nv">name</span><span class="x">|&#39;John 
Doe&#39;}</span>
+</pre></div>
+
+
+<p>If $name is null, empty, false or zero (see <a 
href="#conditionals">Conditionals</a>), then the altername string <code>'John 
Doe'</code> will be displayed.</p>
 <h2 id="quiet-reference-notation">Quiet Reference Notation<a 
class="headerlink" href="#quiet-reference-notation" title="Permanent 
link">&para;</a></h2>
 <p>When Velocity encounters an undefined reference, its normal behavior is to 
output the image of the reference. For example, suppose the following reference 
appears as part of a VTL template.</p>
 <div class="codehilite"><pre><span class="p">&lt;</span><span 
class="nt">input</span> <span class="na">type</span><span 
class="o">=</span><span class="s">&quot;text&quot;</span> <span 
class="na">name</span><span class="o">=</span><span 
class="s">&quot;email&quot;</span> <span class="na">value</span><span 
class="o">=</span><span class="s">&quot;</span><span class="p">$</span><span 
class="nv">email</span><span class="s">&quot;</span><span class="p">/&gt;</span>
@@ -618,7 +626,7 @@ h2:hover > .headerlink, h3:hover > .head
 <p>Note: <em>References to instance variables in a template are not 
resolved.</em> Only references to the attribute equivalents of JavaBean 
getter/setter methods are resolved (i.e. <code>$foo.Name</code> does resolve to 
the class Foo's <code>getName()</code> instance method, but not to a public 
<code>Name</code> instance variable of Foo).</p>
 <h2 id="directives">Directives<a class="headerlink" href="#directives" 
title="Permanent link">&para;</a></h2>
 <p>References allow template designers to generate dynamic content for web 
sites, while <em>directives</em> -- easy to use script elements that can be 
used to creatively manipulate the output of Java code -- permit web designers 
to truly take charge of the appearance and content of the web site.</p>
-<p>Directives always begin with a <code>#</code>.  Like references, the name 
of the directive may be bracketed by a <code>{</code> and a <code>}</code> 
symbol.  This is useful with directives that are immediately followed by text.  
For example the following produces an error:</p>
+<p>Directives always begin with a <code>#</code>.  Like references, the name 
of the directive may be bracketed by a <code>{</code> and a <code>}</code> 
symbol.  This is useful with directives that are immediately followed by text.  
For example the following will display <code>true enough#elseno way!</code>, 
which probably isn't the expected behavior.</p>
 <div class="codehilite"><pre><span class="cp">#</span><span 
class="nf">if</span><span class="p">($</span><span class="nv">a</span><span 
class="o">==</span><span class="m">1</span><span class="p">)</span><span 
class="x">true enough</span><span class="cp">#</span><span 
class="nf">elseno</span><span class="x"> way!</span><span 
class="cp">#</span><span class="nf">end</span><span class="x"></span>
 </pre></div>
 

Modified: velocity/site/production/engine/devel/vtl-reference.html
URL: 
http://svn.apache.org/viewvc/velocity/site/production/engine/devel/vtl-reference.html?rev=1843798&r1=1843797&r2=1843798&view=diff
==============================================================================
--- velocity/site/production/engine/devel/vtl-reference.html (original)
+++ velocity/site/production/engine/devel/vtl-reference.html Sat Oct 13 
22:32:15 2018
@@ -226,41 +226,60 @@ h2:hover > .headerlink, h3:hover > .head
 <h2 id="about-this-guide">About this Guide<a class="headerlink" 
href="#about-this-guide" title="Permanent link">&para;</a></h2>
 <p>This guide is the reference for the Velocity Template Language (VTL). For 
more information, please also refer to the <a href="user-guide.html">Velocity 
User Guide</a>.</p>
 <h2 id="references">References<a class="headerlink" href="#references" 
title="Permanent link">&para;</a></h2>
+<p>In the following syntax references, <em>identifier</em> refers to:</p>
+<p>( <strong>a..z</strong>, <strong>A..Z</strong>, <strong>_</strong> ) [ ( 
<strong>a..z</strong>, <strong>A..Z</strong>, <strong>0..9</strong>, 
<strong>_</strong> ) , ( <strong>a..z</strong>, <strong>A..Z</strong>, 
<strong>0..9</strong>, <strong>_</strong> ), ... ]</p>
+<p>that is, a letter or an underscore followed by any number of letters, 
numbers and underscores.</p>
+<p>If the <code>parser.allows.dash.identifiers</code> configuration value is 
set to true, then the <strong>-</strong> dash is also allowed in identifiers 
(and must be surrounded by spaces to be interpreted as an arithmetic minus 
operator).</p>
 <h3 id="variables">Variables<a class="headerlink" href="#variables" 
title="Permanent link">&para;</a></h3>
 <p>Notation:</p>
-<p><strong>$</strong> [ <strong>!</strong> ][ <strong>{</strong> 
][<strong>a..z</strong>, <strong>A..Z</strong> ][ <strong>a..z</strong>, 
<strong>A..Z</strong>, <strong>0..9</strong>, <strong>_</strong> ][ 
<strong>}</strong> ]</p>
+<p><strong>$</strong> [ <strong>!</strong> ] [ <strong>{</strong> ] 
<em>identifier</em> [ [ <strong>|</strong> <em>alternate value</em> ] 
<strong>}</strong> ]</p>
+<p>Usage:</p>
+<ul>
+<li><em>alternate value</em>: alternate expression to use if the reference is 
null, empty, false or zero</li>
+</ul>
 <p>Examples:</p>
 <ul>
 <li>Shorthand notation: <code>$mudSlinger_9</code></li>
 <li>Silent Shorthand notation: <code>$!mudSlinger_9</code></li>
 <li>Formal notation: <code>${mudSlinger_9}</code></li>
 <li>Silent Formal notation: <code>$!{mudSlinger_9}</code></li>
+<li>Alternate value: <code>${mudSlinger_9|$otherWheels}</code></li>
 </ul>
 <p><em>Note that for backward compatibility reasons, it's possible to enable 
'<strong><code>-</code></strong>' as a valid character in variables 
identifiers, <a href="configuration.html#parser-configuration">see the parser 
configuration section</a>.</em></p>
 <h3 id="properties">Properties<a class="headerlink" href="#properties" 
title="Permanent link">&para;</a></h3>
 <p>Notation:</p>
-<p><strong>$</strong> [ <strong>{</strong> ][ <strong>a..z</strong>, 
<strong>A..Z</strong> ][ <strong>a..z</strong>, <strong>A..Z</strong>, 
<strong>0..9</strong>, <strong>_</strong> ]<em> 
<strong>.</strong>[<strong>a..z</strong>, <strong>A..Z</strong> 
][<strong>a..z</strong>, <strong>A-Z</strong>, <strong>0..9</strong>, 
<strong>_</strong> ]</em> [ <strong>}</strong> ]</p>
+<p><strong>$</strong> [ <strong>{</strong> ] <em>identifier</em> 
<strong>.</strong> <em>identifier</em> [ [ <strong>|</strong> <em>alternate 
value</em> ] <strong>}</strong> ]</p>
+<p>Usage:</p>
+<ul>
+<li><em>alternate value</em>: alternate expression to use if the property is 
null, empty, false or zero</li>
+</ul>
 <p>Examples:</p>
 <ul>
-<li>Regular Notation: <code>$customer.Address</code>
+<li>Regular Notation: <code>$customer.Address</code></li>
 <li>Formal Notation: <code>${purchase.Total}</code></li>
+<li>Alternate Value: <code>${person.name|'John Doe'}</code></li>
 </ul>
 <h3 id="methods">Methods<a class="headerlink" href="#methods" title="Permanent 
link">&para;</a></h3>
 <p>Notation:</p>
-<p><strong>$</strong> [ <strong>{</strong> ][ <strong>a..z</strong>, 
<strong>A..Z</strong> ][ <strong>a..z</strong>, <strong>A..Z</strong>, 
<strong>0..9</strong>, <strong>_</strong> ]<em> <strong>.</strong>[ 
<strong>a..z</strong>, <strong>A..Z</strong> ][<strong>a..z</strong>, 
<strong>A..Z</strong>, <strong>0..9</strong>, <strong>_</strong> 
]<strong><em>(</em><em> [</em>optional parameter list...* ] </strong>)<strong> 
[</strong> } </em>*]</p>
+<p><strong>$</strong> [ <strong>{</strong> ] <em>identifier</em> 
<strong>.</strong> <em>identifier</em> <strong>(</strong> [ <em>parameter 
list...</em> ] <strong>)</strong> [ [ <strong>|</strong> <em>alternate 
value</em> ] <strong>}</strong> ]</p>
+<p>Usage:</p>
+<ul>
+<li><em>alternate value</em>: alternate expression to use if the method 
returns null, empty, false or zero</li>
+<li><em>parameter list</em>: optional coma-separated list of expressions</li>
+</ul>
 <p>Examples:</p>
 <ul>
 <li>Regular Notation: <code>$customer.getAddress()</code></li>
 <li>Formal Notation: <code>${purchase.getTotal()}</code></li>
 <li>Regular Notation with Parameter List: <code>$page.setTitle( "My Home Page" 
)</code></li>
+<li>Alternate value: <code>${page.getTitle()|'Blank Page'}</code></li>
 </ul>
 <p>VTL Properties can be used as a shorthand notation for VTL Methods that 
take <em>get</em> and <em>set</em>. Either <em>$object.getMethod()</em> or 
<em>$object.setMethod()</em> can be abbreviated as <em>$object.Method</em>. It 
is generally preferable to use a Property when available. The main difference 
between Properties and Methods is that you can specify a parameter list to a 
Method.</p>
 <p>Each method argument can be any valid VTL expression.</p>
 <h2 id="directives">Directives<a class="headerlink" href="#directives" 
title="Permanent link">&para;</a></h2>
 <h3 id="set-establishes-the-value-of-a-reference">#set - Establishes the value 
of a reference<a class="headerlink" 
href="#set-establishes-the-value-of-a-reference" title="Permanent 
link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>set</strong> [ 
<strong>}</strong> ] <strong> ( $</strong>ref <strong>=</strong> [ 
<strong>"</strong>,
-    <strong>'</strong> ]arg[ <strong>"</strong>, <strong>'</strong> ] )</p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>set</strong> [ 
<strong>}</strong> ] <strong>(</strong> <em>$ref</em> <strong>=</strong> [ 
<strong>"</strong>, <strong>'</strong> ] <em>arg</em> [ <strong>"</strong>, 
<strong>'</strong> ] )</p>
 <p>Usage:</p>
 <ul>
 <li><em>$ref</em> - The LHS of the assignment must be a variable reference or 
a property reference.</li>
@@ -287,7 +306,7 @@ h2:hover > .headerlink, h3:hover > .head
 </ul>
 <h3 
id="ifelseifelse-output-conditional-on-truth-of-statements">#if/#elseif/#else - 
Output conditional on truth of statements<a class="headerlink" 
href="#ifelseifelse-output-conditional-on-truth-of-statements" title="Permanent 
link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>if</strong> [ 
<strong>}</strong> ] <strong>(</strong> [condition] <strong>)</strong> [output] 
[<strong>#</strong> [ <strong>{</strong> ] <strong>elseif</strong> [ 
<strong>}</strong> ] <strong>( </strong>[condition] <strong>)</strong> [output] 
]* [<strong>#</strong> [ <strong>{</strong> ] <strong>else</strong> [ 
<strong>}</strong> ]  [output] ] <strong>#</strong> [ <strong>{</strong> ] 
<strong>end</strong> [ <strong>}</strong> ]</p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>if</strong> [ 
<strong>}</strong> ] <strong>(</strong> <em>condition</em> <strong>)</strong> 
<em>output</em> [<strong>#</strong> [ <strong>{</strong> ] 
<strong>elseif</strong> [ <strong>}</strong> ] <strong>(</strong> 
<em>condition</em> <strong>)</strong> <em>output</em> ] [ <strong>#</strong> [ 
<strong>{</strong> ] <strong>else</strong> [ <strong>}</strong> ]  
<em>output</em> ] <strong>#</strong> [ <strong>{</strong> ] 
<strong>end</strong> [ <strong>}</strong> ]</p>
 <p>Usage:</p>
 <ul>
 <li>
@@ -378,7 +397,7 @@ h2:hover > .headerlink, h3:hover > .head
 </table>
 <p>Notes:</p>
 <ol>
-<li>The == operator can be used to compare numbers, strings, objects of the 
same class, or objects of different classes.  In the last case (when objects 
are of different classes), the toString() method is called on each object and 
the resulting Strings are compared.</li>
+<li>The == operator can be used to compare numbers, strings, objects of the 
same class, or objects of different classes.  In the last case (when objects 
are of different classes), if at least one the two objects cannot be converted 
to a number, the toString() method is called on each object and the resulting 
Strings are compared.</li>
 <li>You can also use brackets to delimit directives.  This is especially 
useful when text immediately follows an <code>#else</code> directive.<div 
class="codehilite"><pre><span class="cp">#</span><span 
class="nf">if</span><span class="p">($</span><span class="nv">foo</span> <span 
class="o">==</span> <span class="p">$</span><span class="nv">bar</span><span 
class="p">)</span><span class="x">it&#39;s true!</span><span 
class="cp">#{</span><span class="nf">else</span><span class="cp">}</span><span 
class="x">it&#39;s not!</span><span class="cp">#</span><span 
class="nf">end</span><span class="x"></span>
 </pre></div>
 
@@ -387,7 +406,7 @@ h2:hover > .headerlink, h3:hover > .head
 </ol>
 <h3 id="foreach-loops-through-a-list-of-objects">#foreach - Loops through a 
list of objects<a class="headerlink" 
href="#foreach-loops-through-a-list-of-objects" title="Permanent 
link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>foreach</strong> [ 
<strong>}</strong> ] 
<strong>(<strong><em>$ref</em></strong>in<strong><em>arg</em></strong>)<strong><em>statement</em></strong>#</strong>
 [ <strong>{</strong> ] <strong>end</strong> [ <strong>}</strong> ]</p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>foreach</strong> [ 
<strong>}</strong> ] <strong>(</strong> <em>$ref</em> <strong>in</strong> 
<em>arg</em> <strong>)</strong> <em>statement</em> <strong>#</strong> [ 
<strong>{</strong> ] <strong>end</strong> [ <strong>}</strong> ]</p>
 <p>Usage:</p>
 <ul>
 <li><em>$ref</em> - The first variable reference is the item.</li>
@@ -417,7 +436,7 @@ h2:hover > .headerlink, h3:hover > .head
 
 <h3 id="include-renders-local-files-that-are-not-parsed-by-velocity">#include 
- Renders local file(s) that are not parsed by Velocity<a class="headerlink" 
href="#include-renders-local-files-that-are-not-parsed-by-velocity" 
title="Permanent link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>include</strong> [ 
<strong>}</strong> ] <strong>( </strong>arg[ arg2  ... argn]<strong> 
)</strong></p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>include</strong> [ 
<strong>}</strong> ] <strong>(</strong> <em>arg</em> [ <em>arg2</em>  ... 
<em>argn</em> ] <strong>)</strong></p>
 <p>Usage:</p>
 <ul>
 <li><em>arg</em> - Refers to a valid file under TEMPLATE_ROOT.</li>
@@ -429,7 +448,7 @@ h2:hover > .headerlink, h3:hover > .head
 </ul>
 <h3 id="parse-renders-a-local-template-that-is-parsed-by-velocity">#parse - 
Renders a local template that is parsed by Velocity<a class="headerlink" 
href="#parse-renders-a-local-template-that-is-parsed-by-velocity" 
title="Permanent link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>parse</strong> [ 
<strong>}</strong> ] <strong>(</strong> arg <strong>)</strong></p></p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>parse</strong> [ 
<strong>}</strong> ] <strong>(</strong> <em>arg</em> <strong>)</strong></p></p>
 <p>Usage:</p>
 <ul>
 <li><em>arg</em> - Refers to a template under TEMPLATE_ROOT.</li>
@@ -452,7 +471,7 @@ h2:hover > .headerlink, h3:hover > .head
 <p>This will break execution of the current content directive. This is good 
for exiting a #foreach loop early, but also works in other scopes. You can even 
pass the scope control reference for a specific outer scope to break execution 
of all scopes outward to the specified one.</p>
 <h3 id="evaluate-dynamically-evaluates-a-string-or-reference">#evaluate - 
Dynamically evaluates a string or reference<a class="headerlink" 
href="#evaluate-dynamically-evaluates-a-string-or-reference" title="Permanent 
link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>evaluate</strong> [ 
<strong>}</strong> ] <strong>( </strong>arg<strong> )</strong></p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>evaluate</strong> [ 
<strong>}</strong> ] <strong>(</strong> <em>arg</em> <strong>)</strong></p>
 <p>Usage:</p>
 <ul>
 <li><em>arg</em> - String literal or reference to be dynamically 
evaluated.</li>
@@ -464,7 +483,7 @@ h2:hover > .headerlink, h3:hover > .head
 </ul>
 <h3 id="define-assigns-a-block-of-vtl-to-a-reference">#define - Assigns a 
block of VTL to a reference<a class="headerlink" 
href="#define-assigns-a-block-of-vtl-to-a-reference" title="Permanent 
link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>define</strong> [ 
<strong>}</strong> ] <strong>( <strong><em>$ref</em></strong> 
)<strong><em>statement</em></strong>#</strong> [ <strong>{</strong> ] 
<strong>end</strong> [ <strong>}</strong> ]</p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>define</strong> [ 
<strong>}</strong> ] <strong>(<em> </em>$ref* </strong>)<strong> 
<em>statement</em> </strong>#<strong> [ </strong>{<strong> ] 
</strong>end<strong> [ </strong>}** ]</p>
 <p>Usage:</p>
 <ul>
 <li><em>$ref</em> - Reference that is assigned the VTL block as a value.</li>
@@ -476,13 +495,13 @@ h2:hover > .headerlink, h3:hover > .head
 </ul>
 <h3 
id="macro-allows-users-to-define-a-velocimacro-vm-a-repeated-segment-of-a-vtl-template-as-required">#macro
 - Allows users to define a Velocimacro (VM), a repeated segment of a VTL 
template, as required<a class="headerlink" 
href="#macro-allows-users-to-define-a-velocimacro-vm-a-repeated-segment-of-a-vtl-template-as-required"
 title="Permanent link">&para;</a></h3>
 <p>Format:</p>
-<p><strong>#</strong> [ <strong>{</strong> ] <strong>macro</strong> [ 
<strong>}</strong> ] <strong>(</strong> vmname $arg1 [ = def1 ] [ $arg2 [ = 
def2 ] $arg3 [ = def3 ] ... $argn [ = defn ] ] <strong>)</strong> [ VM VTL 
code... ] <strong>#</strong> [ <strong>{</strong> ] <strong>end</strong> [ 
<strong>}</strong> ]</p>
+<p><strong>#</strong> [ <strong>{</strong> ] <strong>macro</strong> [ 
<strong>}</strong> ] <strong>(</strong> <em>vmname</em> <em>$arg1</em> [ 
<strong>=</strong> <em>def1</em> ] [ <em>$arg2</em> [ <strong>=</strong> 
<em>def2</em> ] <em>$arg3</em> [ <strong>=</strong> def3 ] ... <em>$argn</em> [ 
<strong>=</strong> <em>defn</em> ] ] <strong>)</strong> [ <em>VTL code</em> ] 
<strong>#</strong> [ <strong>{</strong> ] <strong>end</strong> [ 
<strong>}</strong> ]</p>
 <p>Usage:</p>
 <ul>
 <li><em>vmname</em> - Name used to call the VM (<em>#vmname</em>)</li>
 <li><em>$arg1 $arg2 [ ... ]</em> - Arguments to the VM. There can be any 
number of arguments, but the number used at invocation must match the number 
specified in the definition, unless there is a default value provided for 
missing parameters.</li>
 <li><em>def1, def2, ...</em> - Optional default values provided for macro 
arguments. If a default value is provided for an argument, a default value must 
also be provided to all subsequent arguments.</li>
-<li><em>[ VM VTL code... ]</em> - Any valid VTL code, anything you can put 
into a template, can be put into a VM.</li>
+<li><em>VTL code</em> - Any valid VTL code, anything you can put into a 
template, can be put into a VM.</li>
 </ul>
 <p>Once defined, the VM is used like any other VTL directive in a template.</p>
 <div class="codehilite"><pre><span class="cp">#</span><span 
class="nf">vmname</span><span class="p">(</span> <span class="p">$</span><span 
class="nv">arg1</span> <span class="p">$</span><span class="nv">arg2</span> 
<span class="p">)</span><span class="x"></span>
@@ -509,7 +528,7 @@ h2:hover > .headerlink, h3:hover > .head
 
 <h3 id="multi-line-comments">Multi Line Comments<a class="headerlink" 
href="#multi-line-comments" title="Permanent link">&para;</a></h3>
 <p>Example:</p>
-<div class="codehilite"><pre><span class="cp">#</span><span class="c">**</span>
+<div class="codehilite"><pre><span class="cp">#</span><span class="c">*</span>
 <span class="c">  This is a multiline comment.</span>
 <span class="c">  This is the second line.</span>
 <span class="c">*</span><span class="cp">#</span><span class="x"></span>


Reply via email to