 -----
 Doxia Site Renderer Velocity Context
 -----
 Hervé Boutemy
 -----
 2015-12-20
 -----

~~ 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.

~~ NOTE: For help with the syntax of this file, see:
~~ http://maven.apache.org/doxia/references/apt-format.html

Doxia Site Renderer Velocity Context

  See {{{http://maven.apache.org/doxia/doxia-sitetools/doxia-site-renderer/} doxia-site-renderer}}.

  We have the following keys in the context (automatically extracted and sorted):

*-----------------------*-------------------------------------------------------*-----*
|| variable             || class                                                || value
*-----------------------+-------------------------------------------------------+-----+
#foreach( $key in $sorter.sort( $context.keys ) )
#set( $value = $context.get($key) )
| <<<$key>>>            | <<<#if ($value)$value.class.name#else?#end>>> | #if ($key != "decoration")<<<$value>>>#end |  
*-----------------------+-------------------------------------------------------+-----+
#end

  Handwritten classification:

* Document Variables

*-----------------------*-------------------------------------------------------*
|| variable             || examples                                             ||
*-----------------------+-------------------------------------------------------+
| <<<alignedFileName>>> | = <<<$alignedFileName>>>
*-----------------------+-------------------------------------------------------+
| <<<decoration>>>      | <<<decoration.name>>> = <<< $decoration.name>>>
*-----------------------+-------------------------------------------------------+
| <<<currentDate>>>     | = <<<$currentDate>>> \
|                       | <<<dateFormat.format(currentDate)>>> = <<<$dateFormat.format($currentDate)>>>
*-----------------------+-------------------------------------------------------+
| <<<currentFileName>>> | = <<<$currentFileName>>>
*-----------------------+-------------------------------------------------------+
| <<<dateFormat>>>      | = <<<$dateFormat>>>
*-----------------------+-------------------------------------------------------+
| <<<dateRevision>>>    | = <<<$dateRevision>>>
*-----------------------+-------------------------------------------------------+
| <<<doxiaSiteRendererVersion>>> | = <<<$doxiaSiteRendererVersion>>>
*-----------------------+-------------------------------------------------------+
| <<<locale>>>          | = <<<$locale>>>
*-----------------------+-------------------------------------------------------+
| <<<publishDate>>>     | = <<< $publishDate>>>
*-----------------------+-------------------------------------------------------+
| <<<relativePath>>>    | = <<<$relativePath>>>
*-----------------------+-------------------------------------------------------+
| <<<supportedLocales>>> | = <<<$supportedLocales>>>
*-----------------------+-------------------------------------------------------+

* Tools

*-----------------------*-------------------------------------------------------*
|| variable             || examples                                             ||
*-----------------------+-------------------------------------------------------+
| <<<FileUtils>>>       | = <<<$FileUtils>>>
*-----------------------+-------------------------------------------------------+
| <<<i18n>>>            | = <<<$i18n>>>
*-----------------------+-------------------------------------------------------+
| <<<PathTool>>>        | = <<<$PathTool>>>
*-----------------------+-------------------------------------------------------+
| <<<StringUtils>>>     | = <<<$StringUtils>>>
*-----------------------+-------------------------------------------------------+
| <<<plexus>>>          | = <<<$plexus>>> \
|                       | plexus.lookup("org.apache.maven.Maven") = <<<$plexus.lookup("org.apache.maven.Maven")>>>
*-----------------------+-------------------------------------------------------+

* Maven Site Plugin

*-----------------------*-------------------------------------------------------*
|| variable             || examples                                             ||
*-----------------------+-------------------------------------------------------+
| <<<inputEncoding>>>   | = <<<$inputEncoding>>>
*-----------------------+-------------------------------------------------------+
| <<<outputEncoding>>>  | = <<<$outputEncoding>>>
*-----------------------+-------------------------------------------------------+
| <<<project>>>         | = <<<$project>>>, \
|                       | <<<project.version>>> = <<<$project.version>>>
*-----------------------+-------------------------------------------------------+
| <<<property-project-version>>> | = <<<${property-project-version}>>>
*-----------------------+-------------------------------------------------------+
| (attributes) <<<att1>>> | = <<<${att1}>>>
*-----------------------+-------------------------------------------------------+

* Velocity GenericTools

  See {{{http://velocity.apache.org/tools/releases/2.0/generic.html} Velocity GenericTools documentation}} for more details:

*-----------------------*-------------------------------------------------------*
|| variable             || examples                                             ||
*-----------------------+-------------------------------------------------------+
| <<<alternator>>>      | = <<<$alternator>>>
*-----------------------+-------------------------------------------------------+
| <<<context>>>         | = <<<$context>>>
*-----------------------+-------------------------------------------------------+
| <<<convert>>>         | = <<<$convert>>>
*-----------------------+-------------------------------------------------------+
| <<<date>>>            | = <<<$date>>> \
|                       | <<< \$date.format('yyyy-MM-dd', \$currentDate) = $date.format('yyyy-MM-dd', $currentDate)>>>
*-----------------------+-------------------------------------------------------+
| <<<display>>>         | = <<<$display>>>
*-----------------------+-------------------------------------------------------+
| <<<esc>>>             | = <<<$esc>>>, <<<esc.q>>> = <<<$esc.q>>>
*-----------------------+-------------------------------------------------------+
| <<<field>>>           | = <<<$field>>>
*-----------------------+-------------------------------------------------------+
| <<<loop>>>            | = <<<$loop>>>
*-----------------------+-------------------------------------------------------+
| <<<link>>>            | = <<< \$link.relative('MyPage.vm') = >>><<<$link.relative('MyPage.vm')>>>
*-----------------------+-------------------------------------------------------+
| <<<math>>>            | = <<<$math>>>
*-----------------------+-------------------------------------------------------+
| <<<number>>>          | = <<<$number>>>
*-----------------------+-------------------------------------------------------+
| <<<render>>>          | = <<<$render>>>
*-----------------------+-------------------------------------------------------+
| <<<text>>>            | = <<<$text>>>
*-----------------------+-------------------------------------------------------+
| <<<sorter>>>          | = <<<$sorter>>>
*-----------------------+-------------------------------------------------------+
| <<<xml>>>             | = <<<$xml>>>
*-----------------------+-------------------------------------------------------+

* Velocity custom tool declared in <<</META-INF/maven/site-tools.xml>>>

 <<<custom>>> = <<<$custom>>>

 <<<custom.test()>>> = <<<$custom.test()>>>
