You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@velocity.apache.org by jc...@apache.org on 2001/02/09 04:48:54 UTC
cvs commit: jakarta-velocity/xdocs vtl-reference-guide.xml user-guide.xml
jcastura 01/02/08 19:48:54
Modified: xdocs vtl-reference-guide.xml user-guide.xml
Log:
vtl-reference-guide: added sections for if/elseif/end, stop, include. Amended other sections.
user-guide: added equivalent operator, plus some edits.
Revision Changes Path
1.20 +69 -76 jakarta-velocity/xdocs/vtl-reference-guide.xml
Index: vtl-reference-guide.xml
===================================================================
RCS file: /home/cvs/jakarta-velocity/xdocs/vtl-reference-guide.xml,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- vtl-reference-guide.xml 2001/01/26 02:51:14 1.19
+++ vtl-reference-guide.xml 2001/02/09 03:48:54 1.20
@@ -13,19 +13,6 @@
<body>
-<!--
-
-Some of the user's guide info should be moved into
-this reference guide and links should be made from
-the user's guide to this document
-
-I now envision the user guide to be pedagogical
-in nature and the VTL guide to be a distillation of VTL for
-expert users and fast learners. I'd like each directive to
-have an identical format. -JC
-
--->
-
<s1 title="About this Guide">
<p>
@@ -117,6 +104,27 @@
<p/>
+ <li><strong>#if / #ifelse / #else</strong> - output conditional on truth of statements.</li>
+ <p/>
+ Format:
+ <p/>
+ <strong>#if(</strong> [condition] <strong>)</strong> [output] [ <strong>#elseif( </strong>[condition] <strong>)</strong> [output] ]* [ <strong>#else( </strong>[condition] <strong>)</strong> [output] ] <strong>#end</strong>
+ <p/>
+ Usage:
+ <br/>
+ <vtl>condition</vtl> - If a boolean, considered true if it has a true false; if not a boolean, considered true if not null. Examples of conditions are listed below:<br/>
+ <ul>
+ <li>Equivalent Operator: #if( $foo == $bar )</li>
+ <li>Greater Than: #if( $foo > 42 )</li>
+ <li>Less Than: #if( $foo < 42 )</li>
+ <li>Greater Than or Equal To: #if( $foo >= 42 )</li>
+ <li>Less Than or Equal To: #if( $foo <= 42 )</li>
+ <li>Equals Number: #if( $foo = 42 )</li>
+ <li>Equals String: #if( $foo = "bar" )</li>
+ </ul>
+ <vtl>output</vtl> - May contain VTL.
+ <p/>
+
<li><strong>#foreach</strong> - Loops through a list of objects.</li>
<p/>
Format:
@@ -152,89 +160,74 @@
]]></source>
</p>
- <li><strong>#parse</strong> - Imports a local template that is parsed and rendered by Velocity.</li>
+ <li><strong>#include</strong> - Renders local file(s) that are not parsed by Velocity.</li>
<p/>
-
Format:
<p/>
- <strong>#parse( "</strong>template.vm<strong>" )</strong>
+ <strong>#include( </strong>arg[, arg2, ... argn]<strong> )</strong>
<p/>
- Like the <vtldirective>#include</vtldirective> directive, <vtldirective>#parse</vtldirective>
- can take a variable rather than a template. Any templates to which <vtldirective>#parse</vtldirective>
- refers must be included under TEMPLATE_ROOT. Unlike the <vtldirective>#include</vtldirective> directive,
- <vtldirective>#parse</vtldirective> will only take a single argument.
+ <vtl>arg</vtl> - Refers to a valid file under TEMPLATE_ROOT. Can be one of two types:
+ <br/>
+ <ul>
+ <li>String: #include( "disclaimer.txt", "opinion.txt" )</li>
+ <li>Variable: #include( $foo, $bar )</li>
+ </ul>
<p/>
- VTL templates can have <vtldirective>#parse</vtldirective> statements referring to templates that in turn
- have <vtldirective>#parse</vtldirective> statements. By default set to 10, the <vtl>parse_directive.maxdepth</vtl>
- line of the <filename>velocity.properties</filename> allows users to customize maximum number of
- <vtldirective>#parse</vtldirective> referrals that can occur from a single
- template. (Note: If the <vtl>parse_directive.maxdepth</vtl> property is absent from the
- <filename>velocity.properties</filename> file, Velocity will set this default to 10.)
- Recursion is permitted, for example, if the template <filename>dofoo.vm</filename> contains the following lines:
-
- <p>
- <source><![CDATA[
- Count down.
- #set( $count = 8 )
- #parse( "parsefoo.vm" )
- All done with dofoo.vm!
- ]]></source>
- </p>
-
- <p>
- It would reference the template <filename>parsefoo.vm</filename>, which might contain the following VTL:
- </p>
- <p>
- <source><![CDATA[
- $count
- #set( $count = $count - 1 )
- #if( $count > 0 )
- #parse( "parsefoo.vm" )
- #else
- All done with parsefoo.vm!
- #end
- ]]></source>
- </p>
+ <li><strong>#parse</strong> - Renders a local template that is parsed by Velocity.</li>
+ <p/>
- <p>
- After "Count down." is displayed, Velocity passes through <filename>parsefoo.vm</filename>, counting down from 8.
- When the count reaches 0, it will display the "All done with parsefoo.vm!" message. At this point, Velocity will return to
- <filename>dofoo.vm</filename> and output the "All done with dofoo.vm!" message.
- </p>
+ Format:
+ <p/>
+ <strong>#parse( </strong>arg<strong> )</strong>
+ <p/>
+ <vtl>arg</vtl> - Refers to a template under TEMPLATE_ROOT. Can be one of two types:
+ <br/>
+ <ul>
+ <li>String: #parse( "lecorbusier.vm" )</li>
+ <li>Variable: #parse( $foo )</li>
+ </ul>
+ <p/>
+ Recursion permitted. See <vtl>parse_directive.maxdepth</vtl> in <filename>velocity.properties</filename>
+ to change from parse depth. (The default parse depth is 10.)
+ <p/>
+ <li><strong>#stop</strong> - Stops the template engine.</li>
+ <p/>
+ Format:
+ <p/>
+ #stop
+ <p/>
+ Usage:
+ <br/>
+ Intended for debugging purposes.
+ <p/>
<li><strong>#macro</strong> - Allows users to define a Velocimacro (VM), a repeated segment of a VTL template, as required.</li>
<p/>
Format:
<p/>
- <strong>#macro(</strong> vmname $arg1 [ $arg2, $arg3, ... $argn ] <strong>)</strong> [ VM VTL code... ] <strong>#end</strong>
- <p/>
- <vtl>vmname</vtl> - The name that will be used to call the VM (<vtl>#vmname</vtl>)<br/>
- <vtl>$arg1 $arg2 [ ... ]</vtl> - Arguments to the VM. A VM can have any number of argumentss, but the number used at invocation must match the number specified in the definition.<br/>
- <vtl>[ VM VTL code... ]</vtl> - Any valid VTL code, anything you can put into a template, can be put into a VM.<br/>
+ <strong>#macro(</strong> vmname $arg1[, $arg2, $arg3, ... $argn ] <strong>)</strong> [ VM VTL code... ] <strong>#end</strong>
<p/>
+ <vtl>vmname</vtl> - Name used to call the VM (<vtl>#vmname</vtl>)<br/>
+ <vtl>$arg1 $arg2 [ ... ]</vtl> - Arguments to the VM. There can be any number of argumentss, but the number used at invocation must match the number specified in the definition.<br/>
+ <vtl>[ VM VTL code... ]</vtl> - Any valid VTL code, anything you can put into a template, can be put into a VM.
+ <p/>
- <p>
- Once defined, the VM is used like any other VTL directive in your template.
- </p>
+ Once defined, the VM is used like any other VTL directive in a template.
+ <p/>
- <p>
<source><![CDATA[
#vmname( $arg1 $arg2 )
]]></source>
- </p>
- <p>
- VMs can be defined in a 'global library', a 'local library', or
- 'inline' in a template. Both global library and local libraries can be
- accessed by any template. The global library contains VMs pre-packaged
- with Velocity; the local library allows end users to supplement the
- pre-packaged VMs with customized, site-specific VMs. Inline VM
- definitions are those found in regular 'user' templates, although
- these can only be used when the <vtl>velocimacro.permissions.allowInline=true</vtl>
- in the <filename>velocity.properties</filename> file.
- </p>
+ <p/>
+ VMs can be defined in one of three places:
+ <br/>
+ <i>Global library:</i> VMs pre-packaged with Velocity; available from any template<br/>
+ <i>Local library:</i> customized, user-defined, site-specific VMs; availabe from any template<br/>
+ <i>Inline:</i> found in regular templates, only usable when <vtl>velocimacro.permissions.allowInline=true</vtl> in <filename>velocity.properties</filename>.
+ <p/>
</ul>
1.28 +23 -14 jakarta-velocity/xdocs/user-guide.xml
Index: user-guide.xml
===================================================================
RCS file: /home/cvs/jakarta-velocity/xdocs/user-guide.xml,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -r1.27 -r1.28
--- user-guide.xml 2001/01/19 01:25:10 1.27
+++ user-guide.xml 2001/02/09 03:48:54 1.28
@@ -869,17 +869,7 @@
<code>stringliterals.interpolate=false</code>.
</p>
- <p>
- <em>Note:</em> Although the <vtldirective>set</vtldirective> does not currently require that brackets
- enclose the accompanying expression, this won't be the case for long. To help users to
- update their templates to use brackets with the <vtldirective>set</vtldirective> directive,
- Velocity will generate warnings in the runtime log when a <vtldirective>set</vtldirective> is
- used without brackets. Note also that any <vtldirective>#set</vtldirective> statement used without
- brackets cannot be used inline; the assignment <em>must</em> be terminated by an end of line character
- (obtained by pressing the Enter key).
- </p>
-
<s1 title="Conditionals">
<strong>If / ElseIf / Else</strong>
@@ -939,12 +929,31 @@
</p>
<p>
- <strong>Logical Operators</strong>
+ <strong>Relational and Logical Operators</strong>
</p>
+
+
+ <p>
+ Velocity uses the equivalent operator to determine the relationships between variables.
+ Here is a simple example to illustrate how the equivalent operator is used.
+ </p>
+ <p>
+ <source><![CDATA[
+ #set ($foo = "deoxyribonucleic acid")
+ #set ($bar = "ribonucleic acid")
+
+ #if ($foo == $bar)
+ In this case it's clear they don't equate. So...
+ #else
+ They do not equate! And this will be the output.
+ #end
+ ]]></source>
+ </p>
+
<p>
- Two kinds of logical operators, logical AND and logical OR, are expected to be added to Velocity soon. Below is an example of an if statement using
- logical AND.
+ Two kinds of logical operators, logical AND and logical OR, are expected to be added to Velocity soon.
+ Below is an example of an if statement using logical AND.
</p>
<p>
@@ -1060,7 +1069,7 @@
<p>
<source><![CDATA[
- #include( "greetings.txt",$seasonalstock )
+ #include( "greetings.txt", $seasonalstock )
]]></source>
</p>