You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/03/13 10:57:37 UTC

[01/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Repository: incubator-freemarker-site
Updated Branches:
  refs/heads/asf-site 127455e59 -> 52c070a95


http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_imperative_formal.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_imperative_formal.html b/builds/2.3.26-nightly/xgui_imperative_formal.html
new file mode 100644
index 0000000..324910a
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_imperative_formal.html
@@ -0,0 +1,545 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Details - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Details">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_imperative_formal.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_imperative_formal.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_imperative.html"><span itemprop="name">Imperative XML processing</span></a></li><li class="step
 -3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_imperative_formal.html"><span itemprop="name">Details</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Imperative XML processing","Details"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_imperative_learn.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_declarative.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="xgui_imperative_formal" itemprop="headline">Details</h1>
+</div></div><p>Every variable that corresponds to a single node in the DOM tree
+        is a multi-type variable of type node and type hash (for programmers:
+        implements both <code class="inline-code">TemplateNodeModel</code> and
+        <code class="inline-code">TemplateHashModel</code>). Thus, you can use the <a href="ref_builtins_node.html">node built-ins</a> with them. Hash keys
+        are interpreted as XPath expressions, except the special keys shown in
+        the table below. Some of the node variables also have string type, so
+        you can use them as string variables (for programmers: they implement
+        <code class="inline-code">TemplateScalarModel</code>).</p><a name="misc.xguiTable"></a>  <div class="table-responsive">
+    <table class="table">
+
+          <thead>
+            <tr>
+              <th>Node type (<code class="inline-code">?node_type</code>)</th>
+
+
+              <th>Node name (<code class="inline-code">?node_name</code>)</th>
+
+
+              <th>String value (e.g.�<code class="inline-code">&lt;p&gt;${node}</code>)</th>
+
+
+              <th>Special hash keys</th>
+
+            </tr>
+
+          </thead>
+
+
+          <tbody>
+            <tr>
+              <td><code class="inline-code">&quot;document&quot;</code></td>
+
+
+              <td><code class="inline-code">&quot;@document&quot;</code></td>
+
+
+              <td>No string value. (Error when you try to use it as
+              string.)</td>
+
+
+              <td><code class="inline-code"><em class="code-color">elementName</em></code>,
+              <code class="inline-code">&quot;<em class="code-color">prefix</em>:<em class="code-color">elementName</em>&quot;</code>,
+              <code class="inline-code">*</code>, <code class="inline-code">**</code>,
+              <code class="inline-code">@@markup</code>, <code class="inline-code">@@nested_markup</code>,
+              <code class="inline-code">@@text</code>, <code class="inline-code">@@local_name</code>,
+              <code class="inline-code">@@qname</code>, <code class="inline-code">@@namespace</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">&quot;element&quot;</code></td>
+
+
+              <td><code class="inline-code">&quot;<em class="code-color">name</em>&quot;</code>: the
+              name of the element. This is the local name (i.e. name without
+              namespace prefix).</td>
+
+
+              <td>If it has no element children, the text of all text node
+              children concatenated together. Error otherwise, when you try to
+              use it as string.</td>
+
+
+              <td><code class="inline-code"><em class="code-color">elementName</em></code>,
+              <code class="inline-code">&quot;<em class="code-color">prefix</em>:<em class="code-color">elementName</em>&quot;</code>,
+              <code class="inline-code">*</code>, <code class="inline-code">**</code>,
+              <code class="inline-code">@<em class="code-color">attrName</em></code>,
+              <code class="inline-code">&quot;@<em class="code-color">prefix</em>:<em class="code-color">attrName</em>&quot;</code>,
+              <code class="inline-code">@@</code>, <code class="inline-code">&quot;@*&quot;</code>,
+              <code class="inline-code">@@start_tag</code>, <code class="inline-code">@@end_tag</code>,
+              <code class="inline-code">@@attributes_markup</code>,
+              <code class="inline-code">@@next_sibling_element</code>,
+              <code class="inline-code">@@previous_sibling_element</code>,
+              <code class="inline-code">@@markup</code>, <code class="inline-code">@@nested_markup</code>,
+              <code class="inline-code">@@text</code>, <code class="inline-code">@@local_name</code>,
+              <code class="inline-code">@@qname</code>, <code class="inline-code">@@namespace</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">&quot;text&quot;</code></td>
+
+
+              <td><code class="inline-code">&quot;@text&quot;</code></td>
+
+
+              <td>The text itself.</td>
+
+
+              <td><code class="inline-code">@@markup</code>,
+              <code class="inline-code">@@nested_markup</code>, <code class="inline-code">@@text</code>,
+              <code class="inline-code">@@local_name</code>, <code class="inline-code">@@qname</code>,
+              <code class="inline-code">@@namespace</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">&quot;pi&quot;</code></td>
+
+
+              <td><code class="inline-code">&quot;@pi$<em class="code-color">target</em>&quot;</code></td>
+
+
+              <td>The part between the target name and the
+              <code class="inline-code">?&gt;</code>.</td>
+
+
+              <td><code class="inline-code">@@markup</code>,
+              <code class="inline-code">@@nested_markup</code>, <code class="inline-code">@@text</code>,
+              <code class="inline-code">@@local_name</code>, <code class="inline-code">@@qname</code>,
+              <code class="inline-code">@@namespace</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">&quot;comment&quot;</code></td>
+
+
+              <td><code class="inline-code">&quot;@comment&quot;</code></td>
+
+
+              <td>The text of the comment, without the delimiters
+              <code class="inline-code">&lt;!--</code> and <code class="inline-code">--&gt;</code>.</td>
+
+
+              <td><code class="inline-code">@@markup</code>,
+              <code class="inline-code">@@nested_markup</code>, <code class="inline-code">@@text</code>,
+              <code class="inline-code">@@local_name</code>, <code class="inline-code">@@qname</code>,
+              <code class="inline-code">@@namespace</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">&quot;attribute&quot;</code></td>
+
+
+              <td><code class="inline-code">&quot;<em class="code-color">name</em>&quot;</code>: the
+              name of the attribute. This is the local name (i.e. name without
+              namespace prefix).</td>
+
+
+              <td>The value of the attribute.</td>
+
+
+              <td><code class="inline-code">@@markup</code>,
+              <code class="inline-code">@@nested_markup</code>, <code class="inline-code">@@text</code>,
+              <code class="inline-code">@@qname</code>, <code class="inline-code">@@local_name</code>,
+              <code class="inline-code">@@qname</code>, <code class="inline-code">@@namespace</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">&quot;document_type&quot;</code></td>
+
+
+              <td><code class="inline-code">&quot;@document_type$<em class="code-color">name</em>&quot;</code>:
+              <code class="inline-code"><em class="code-color">name</em></code> is the name
+              of the document element.</td>
+
+
+              <td>No string value. (Error when you try to use it as
+              string.)</td>
+
+
+              <td><code class="inline-code">@@markup</code>,
+              <code class="inline-code">@@nested_markup</code>, <code class="inline-code">@@text</code>,
+              <code class="inline-code">@@local_name</code>, <code class="inline-code">@@qname</code>,
+              <code class="inline-code">@@namespace</code></td>
+
+            </tr>
+
+          </tbody>
+
+            </table>
+  </div>
+<p>Notes:</p><ul>
+          <li>
+            <p>There is no CDATA type. CDATA nodes are transparently
+            considered as text nodes.</p>
+          </li>
+
+          <li>
+            <p>These variables do <em>not</em> support
+            <code class="inline-code">?keys</code> and <code class="inline-code">?values</code>.</p>
+          </li>
+
+          <li>
+            <p>Element and attribute node names are local names, that is,
+            they do not contain the namespace prefix. The URI of the namespace
+            the node belongs to can be queried with the
+            <code class="inline-code">?node_namespace</code> built-in.</p>
+          </li>
+
+          <li>
+            <p>XPath expression needs Jaxen (recommended, but please use
+            1.1-beta-8 or later; <a href="http://jaxen.org/">download
+            it here</a>) or Apache Xalan classes available, or an error
+            will stop template execution. Note, however, that as some special
+            hash keys hide the XPath expressions of the same meaning, those
+            XPath expressions will work even if there is no XPath
+            implementation available. <span class="marked-for-programmers">If both
+            Xalan and Jaxen is available, FreeMarker will use Xalan, unless
+            you choose Jaxen by calling
+            <code class="inline-code">freemarker.ext.dom.NodeModel.useJaxenXPathSupport()</code>
+            from Java.</span></p>
+          </li>
+
+          <li>
+            <p>If Jaxen is used for the XPath support (not Xalan), then
+            FreeMarker variables are visible with XPath variable references
+            (e.g.
+            <code class="inline-code">doc[&quot;book/chapter[title=$currentTitle]&quot;]</code>).</p>
+          </li>
+        </ul><p>Meaning of special hash keys:</p><ul>
+          <li>
+            <p><code class="inline-code"><em class="code-color">elementName</em></code>,
+            <code class="inline-code">&quot;<em class="code-color">prefix</em>:<em class="code-color">elementName</em>&quot;</code>:
+            Returns the sequence of child nodes that are elements of name
+            <code class="inline-code"><em class="code-color">elementName</em></code>. (Note
+            that the term "child" means
+            <em>immediate</em> descendant.) The selection is XML
+            name-space aware, unless the XML document was persed with an XML
+            parser that was not in namespace aware mode. In XML name-space
+            aware mode, names without prefix
+            (<em>elementName</em>) selects only elements
+            that doesn&#39;t belong to any XML name-space (unless you have
+            registered a default XML namespace), and names with prefix
+            (<em>prefix</em>:<em>elementName</em>)
+            selects only elements that are belonging to the XML namespace
+            denoted by the prefix. The registration of prefixes and the
+            setting of the default XML namespace is done with the
+            <code class="inline-code">ns_prefixes</code> parameter of the <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
+            directive</a>.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">*</code>: Returns the sequence of all child
+            (direct descendant) <em>element</em> nodes. The
+            sequence will contain the elements in the "document
+            order", that is, in the order in which the first character
+            of the XML representation of each node occurs (after expansion of
+            general entities).</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">**</code>: Returns the sequence of all
+            descendant <em>element</em> nodes. The sequence will
+            contain the elements in the document order.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@<em class="code-color">attName</em></code>,
+            <code class="inline-code">&quot;@<em class="code-color">prefix</em>:<em class="code-color">attrName</em>&quot;</code>:
+            Returns the attribute
+            <code class="inline-code"><em class="code-color">attName</em></code> of the
+            element as a sequence of size 1 that contains the attribute node,
+            or as an empty sequence if the attribute does not exist (so to
+            check if an attribute exists use
+            <code class="inline-code">foo.@<em class="code-color">attName</em>[0]??</code>,
+            <em>not</em>
+            <code class="inline-code">foo.@<em class="code-color">attName</em>??</code>). As
+            with special key
+            <code class="inline-code">&quot;<em class="code-color">elementName</em>&quot;</code>, if
+            the length of the sequence is 1, then it also acts as its first
+            subvariable. If no
+            <code class="inline-code"><em class="code-color">prefix</em></code> is used, then
+            it returns only attribute that does not use XML namespace (even if
+            you have set a default XML namespace). If a
+            <code class="inline-code"><em class="code-color">prefix</em></code> is used, it
+            returns only the attribute that belongs to the XML namespace
+            associated with the
+            <code class="inline-code"><em class="code-color">prefix</em></code>. The
+            registration of prefixes is done with the
+            <code class="inline-code">ns_prefixes</code> parameter of the <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
+            directive</a>.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@</code> or <code class="inline-code">&quot;@*&quot;</code>: Returns
+            the sequence of attribute nodes belonging to the parent element.
+            This is the same as XPath <code class="inline-code">@*</code>.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@qname</code>: Returns the full-qualified name
+            of the element (such as <code class="inline-code">e:book</code>, in contrast to
+            the local name returned by <code class="inline-code">?node_name</code> that is
+            <code class="inline-code">book</code>) . The prefix used (as
+            <code class="inline-code">e</code>) is chosen based on the prefix registered in
+            the current namespace with the <code class="inline-code">ns_prefixes</code>
+            parameter of the <code class="inline-code">ftl</code> directive, and not
+            influenced by the prefix used in the source XML document. If you
+            have set a default XML namespace, then for nodes that use that,
+            prefix <code class="inline-code">D</code> will be used. For nodes that does not
+            belong to an XML namespace, no prefix is used (even if you have
+            set a default namespace). If there is no prefix registered for the
+            namespace of the node, the result is a non-existent variable
+            (<code class="inline-code">node.@@qname??</code> is
+            <code class="inline-code">false</code>).</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@local_mame</code>: The name of the node
+            without the namespace prefix.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@namespace</code>: The namespace URL (not the
+            namespace prefix) of the node.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@markup</code>: This returns the full XML
+            markup of a node, as a string. (Full XML markup means that it also
+            contains the markup of the child nodes, and the markup of the
+            children of the child nodes, and so on.) The markup you get is not
+            necessary the same as the markup in the source XML file, it&#39;s just
+            semantically identical. Especially, note that CDATA sections will
+            become to plain text. Also note that depending on how did you
+            wrapped the original XML document with FreeMarker, comment or
+            processing instruction nodes may were removed, and then they will
+            be missing from the output of course. The first outputted start
+            tag will contain
+            <code class="inline-code">xmlns:<em class="code-color">prefix</em></code>
+            attributes for each XML name-spaces used in the outputted XML
+            fragment, and those prefixes will be used in the outputted element
+            and attribute names. These prefixes will be the same as the
+            prefixes registered with the <code class="inline-code">ns_prefixes</code>
+            parameter of the <code class="inline-code">ftl</code> directive (no prefix will
+            be used for <code class="inline-code">D</code>, as it will be registered as the
+            default name-space with an <code class="inline-code">xmlns</code> attribute), or
+            if no prefix was assigned for a XML name-space with that, then an
+            arbitrary chosen unused prefix is used.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@nested_markup</code>: This is similar to
+            <code class="inline-code">@@markup</code>, but it returns the XML markup of an
+            element without its opening and closing tags. For the document
+            node, it returns the same as <code class="inline-code">@@markup</code>. For
+            other node types (text, processing instruction, etc.), it returns
+            an empty string. Unlike with <code class="inline-code">@@markup</code>, no
+            <code class="inline-code">xmlns:<em class="code-color">prefix</em></code>
+            attributes will be placed into the output, but regarding the
+            prefixes used in element and attribute names the rules are the
+            same.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@text</code>: This returns the value of all
+            text nodes that occur within the node (all descendant text nodes,
+            not just direct children), concatenated together into a single
+            string. If the node has no text node children, then the result is
+            an empty string.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@start_tag</code>: Returns the markup of the
+            <a href="gloss.html#gloss.startTag">start-tag</a> of the element
+            node. As with <code class="inline-code">@@markup</code>, the output is not
+            necessary the same as in the original XML document, but it is
+            semantically equivalent with that. Regarding the XML name-spaces
+            (<code class="inline-code">xmlns:<em class="code-color">prefix</em></code>
+            attributes in the output, etc.) the rules are the same as with
+            <code class="inline-code">&quot;@@markup&quot;</code></p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@end_tag</code>: Returns the markup of the
+            <a href="gloss.html#gloss.endTag">end-tag</a> of the element node.
+            As with <code class="inline-code">@@markup</code>, the output is not necessary
+            the same as in the original XML document, but it is semantically
+            equivalent with that.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@attributes_markup</code>: Returns the markup
+            of the <a href="gloss.html#gloss.attribute">attributes</a> of the
+            element node. As with <code class="inline-code">@@markup</code>, the output is
+            not necessary the same as in the original XML document, but it is
+            semantically equivalent with that.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@next_sibling_element</code> (since 2.3.26):
+            The following sibling element of an element node or an empty node
+            sequence if there&#39;s no such element. An element counts as a
+            sibling of another element if they are on the same hierarchical
+            level, and there&#39;s no other element or non-whitespace character
+            data (text or CDATA) between the two elements. For example in
+            <code class="inline-code">&lt;a/&gt;&lt;!-- comment
+            --&gt;#&amp;x20;&lt;b/&gt;</code> the two elements are
+            siblings, but not in <code class="inline-code">&lt;a/&gt;text&lt;b/&gt;</code>
+            or <code class="inline-code">&lt;a/&gt;&lt;x/&gt;&lt;b/&gt;</code>.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">@@previous_sibling_element</code> (since
+            2.3.26): The previous sibling element of an element node or an
+            empty node sequence if there&#39;s no such element. See the last point
+            for the meaning of sibling.</p>
+          </li>
+        </ul>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_151">Node sequences</h2>
+
+
+          <p>Many of the special hash keys (indicated in the above list),
+          and XPath expressions that result in node-sets (see the <a href="http://www.w3.org/TR/xpath">XPath recommendation</a>)
+          return a sequence of nodes.</p>
+
+          <p>These node sequences, if they store exactly 1 subvariable,
+          will also act as the subvariable itself. For example,
+          <code class="inline-code">${book.title[0]}</code> will do the same as
+          <code class="inline-code">${book.title}</code>, if there is only one
+          <code class="inline-code">title</code> element child of element
+          <code class="inline-code">book</code>.</p>
+
+          <p>Returning an empty node sequence is a normal situation. For
+          example, if in a concrete XML document, element
+          <code class="inline-code">book</code> has no child element
+          <code class="inline-code">chapter</code>, then <code class="inline-code">book.chapter</code>
+          results in an empty node sequence. Beware! This also means, that
+          <code class="inline-code">book.chaptre</code> (note the typo) will also return
+          empty node sequence, and will not stop with error. Also,
+          <code class="inline-code">book.chaptre??</code> (note the typo) will return
+          <code class="inline-code">true</code> because the empty sequence exists, so you
+          have to use <code class="inline-code">book.chaptre[0]??</code> for the
+          check.</p>
+
+          <p>Node sequences that store not 1 nodes (but 0 or more than 1
+          nodes) also support some of the hash keys described above. Namely,
+          the following special keys are supported:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code"><em class="code-color">elementName</em></code>,
+              <code class="inline-code">&quot;<em class="code-color">prefix</em>:<em class="code-color">elementName</em>&quot;</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">@<em class="code-color">attrName</em></code>,
+              <code class="inline-code">&quot;@<em class="code-color">prefix</em>:<em class="code-color">attrName</em>&quot;</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">@@markup</code>,
+              <code class="inline-code">@@nested_markup</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">@@text</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">*</code>, <code class="inline-code">**</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">@@</code>, <code class="inline-code">&quot;@*&quot;</code></p>
+            </li>
+          </ul>
+
+          <p>When you apply one of the above special keys on a node
+          sequence that contains more than 1 or 0 nodes, then for each node in
+          the sequence (where the special key does make sense, e.g. text nodes
+          will be skipped for key <code class="inline-code">*</code> or
+          <code class="inline-code">@foo</code>), the special key will be applied as it was
+          explained for single nodes, and the results will be concatenated to
+          form the final result. The results will be concatenated in the order
+          as the corresponding nodes occur in the node sequence. The
+          concatenation means string or sequence concatenation depending on
+          the type of the results. If the special key would result in a string
+          for a single node, then for multiple nodes the result is a single
+          string too (the results for the single nodes concatenated), and if
+          the special key would return a sequence for a single node, then for
+          multiple nodes the result is a single sequence too. If there are 0
+          nodes in the sequence you apply the special key on, the string
+          result is an empty string or an empty sequence respectively.</p>
+
+          <p>XPath expressions can be used with node sequences. However,
+          for 0 or more than 1 nodes it will work only if you use Jaxen
+          instead of Xalan, because of the limitations of the Xalan XPath
+          implementation.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_imperative_learn.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_declarative.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_imperative_learn.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_imperative_learn.html b/builds/2.3.26-nightly/xgui_imperative_learn.html
new file mode 100644
index 0000000..05c3205
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_imperative_learn.html
@@ -0,0 +1,656 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Basics - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Basics">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_imperative_learn.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_imperative_learn.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_imperative.html"><span itemprop="name">Imperative XML processing</span></a></li><li class="step
 -3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_imperative_learn.html"><span itemprop="name">Basics</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Imperative XML processing","Basics"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_imperative.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_imperative_formal.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="xgui_imperative_learn" itemprop="headline">Basics</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_145" data-menu-target="autoid_145">Accessing elements by name</a></li><li><a class="page-menu-link" href="#autoid_146" data-menu-target="autoid_146">Accessing attributes</a></li><li><a class="page-menu-link" href="#autoid_147" data-menu-target="autoid_147">Exploring the tree</a></li><li><a class="page-menu-link" href="#autoid_148" data-menu-target="autoid_148">Using XPath expressions</a></li><li><a class="page-menu-link" href="#autoid_149" data-menu-target="autoid_149">XML namespaces</a></li><li><a class="page-menu-link" href="#autoid_150" data-menu-target="autoid_150">Don&#39;t forget escaping!</a></li></ul> </div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>This section uses the DOM tree and the variable made in the
+          <a href="xgui_expose.html">previous chapter</a>.</p>
+          </div>
+<p>Assume that the programmer has put the XML document into the
+        data-model as variable <code class="inline-code">doc</code>. This variable
+        corresponds to the root of the <a href="xgui_expose_dom.html">DOM
+        tree</a>, the "document". The actual variable
+        structure behind <code class="inline-code">doc</code> is wily enough, and only
+        roughly resembles the DOM tree. So instead of getting lost in the
+        details, let&#39;s see how to use it by example.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_145">Accessing elements by name</h2>
+
+
+          <p>This FTL prints the title of the book:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;h1&gt;${doc.book.title}&lt;/h1&gt;</pre></div>
+
+          <p>The output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;h1&gt;Test Book&lt;/h1&gt;</pre></div>
+
+          <p>As you see, both <code class="inline-code">doc</code> and
+          <code class="inline-code">book</code> can be used as hashes; you get their child
+          nodes as sub variables. Basically, you describe the path by which
+          you reach the target (element <code class="inline-code">title</code>) in the DOM
+          tree. You may notice that there was some swindle above: with
+          <code class="inline-code">${doc.book.title}</code>, it seems that we instruct
+          FreeMarker to print the <code class="inline-code">title</code> element itself, but
+          we should print its child text node (check the <a href="xgui_expose_dom.html">DOM tree</a>). It still works, because
+          elements are not only hash variables, but string variables as well.
+          The scalar value of an element node is the string resulting from the
+          concatenation of all its text child nodes. However, trying to use an
+          element as scalar will cause error if the element has child
+          elements. For example <code class="inline-code">${doc.book}</code> would stop with
+          error.</p>
+
+          <p>This FTL prints the titles of the two chapters:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;h2&gt;${doc.book.chapter[0].title}&lt;/h2&gt;
+&lt;h2&gt;${doc.book.chapter[1].title}&lt;/h2&gt;</pre></div>
+
+          <p>Here, as <code class="inline-code">book</code> has 2
+          <code class="inline-code">chapter</code> element children,
+          <code class="inline-code">doc.book.chapter</code> is a sequence that stores the
+          two element nodes. Thus, we can generalize the above FTL, so it
+          works with any number of chapters:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list doc.book.chapter as ch&gt;
+  &lt;h2&gt;${ch.title}&lt;/h2&gt;
+&lt;/#list&gt;</pre></div>
+
+          <p>But what&#39;s if there is only one chapter? Actually, when you
+          access an element as hash subvariable, it is
+          <em>always</em> a sequence as well (not only hash and
+          string), but if the sequence contains exactly 1 item, then the
+          variable also acts as that item itself. So, returning to the first
+          example, this would print the book title as well:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;h1&gt;${doc.book[0].title[0]}&lt;/h1&gt;</pre></div>
+
+          <p>But you know that there is exactly 1 <code class="inline-code">book</code>
+          element, and that a book has exactly 1 title, so you can omit the
+          <code class="inline-code">[0]</code>-s.
+          <code class="inline-code">${doc.book.chapter.title}</code> would work too, if the
+          book happen to have only 1 <code class="inline-code">chapter</code>-s (otherwise
+          it is ambiguous: how is it to know if the <code class="inline-code">title</code>
+          of which <code class="inline-code">chapter</code> you want? So it stops with an
+          error.). But since a book can have multiple chapters, you don&#39;t use
+          this form. If the element <code class="inline-code">book</code> has no
+          <code class="inline-code">chapter</code> child, then
+          <code class="inline-code">doc.book.chapter</code> will be a 0 length sequence, so
+          the FTL with <code class="inline-code">&lt;#list ...&gt;</code> will still
+          work.</p>
+
+          <p>It is important to realize the consequence that, for example,
+          if <code class="inline-code">book</code> has no <code class="inline-code">chapter</code>-s then
+          <code class="inline-code">book.chapter</code> is an empty sequence, so
+          <code class="inline-code">doc.book.chapter??</code> will <em>not</em>
+          be <code class="inline-code">false</code>, it will be always
+          <code class="inline-code">true</code>! Similarly,
+          <code class="inline-code">doc.book.somethingTotallyNonsense??</code> will not be
+          <code class="inline-code">false</code> either. To check if there was no children
+          found, use <code class="inline-code">doc.book.chapter[0]??</code> (or
+          <code class="inline-code">doc.book.chapter?size == 0</code>). Of course you can
+          use similarly all the <a href="dgui_template_exp.html#dgui_template_exp_missing">missing value handler
+          operators</a> (e.g.
+          <code class="inline-code">doc.book.author[0]!&quot;Anonymous&quot;</code>), just don&#39;t
+          forget that <code class="inline-code">[0]</code>.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The rule with sequences of size 1 is a convenience feature
+            of the XML wrapper (implemented via multi-type FTL variables). It
+            will not work with other sequences in general.</p>
+            </div>
+
+
+          <p>Now we finish the example by printing all the
+          <code class="inline-code">para</code>-s of each chapter:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;h1&gt;${doc.book.title}&lt;/h1&gt;
+&lt;#list doc.book.chapter as ch&gt;
+  &lt;h2&gt;${ch.title}&lt;/h2&gt;
+  &lt;#list ch.para as p&gt;
+    &lt;p&gt;${p}
+  &lt;/#list&gt;
+&lt;/#list&gt;</pre></div>
+
+          <p>this will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;h1&gt;Test&lt;/h1&gt;
+  &lt;h2&gt;Ch1&lt;/h2&gt;
+    &lt;p&gt;p1.1
+    &lt;p&gt;p1.2
+    &lt;p&gt;p1.3
+  &lt;h2&gt;Ch2&lt;/h2&gt;
+    &lt;p&gt;p2.1
+    &lt;p&gt;p2.2</pre></div>
+
+          <p>The above FTL could be written more nicely as:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign book = doc.book&gt;
+&lt;h1&gt;${book.title}&lt;/h1&gt;
+&lt;#list book.chapter as ch&gt;
+  &lt;h2&gt;${ch.title}&lt;/h2&gt;
+  &lt;#list ch.para as p&gt;
+    &lt;p&gt;${p}
+  &lt;/#list&gt;
+&lt;/#list&gt;</pre></div>
+
+          <p>Finally, a generalized usage of the child selector mechanism:
+          this template lists all <code class="inline-code">para</code>-s of the example XML
+          document:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list doc.book.chapter.para as p&gt;
+  &lt;p&gt;${p}
+&lt;/#list&gt;</pre></div>
+
+          <p>The output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;p1.1
+  &lt;p&gt;p1.2
+  &lt;p&gt;p1.3
+  &lt;p&gt;p2.1
+  &lt;p&gt;p2.2
+  </pre></div>
+
+          <p>This example shows that hash sub variables select the children
+          of a sequence of notes (just in the earlier examples that sequence
+          happened to be of size 1). In this concrete case, subvariable
+          <code class="inline-code">chapter</code> returns a sequence of size 2 (since there
+          are two <code class="inline-code">chapter</code>-s), and then subvariable
+          <code class="inline-code">para</code> selects the <code class="inline-code">para</code> child
+          nodes of all nodes in that sequence.</p>
+
+          <p>A negative consequence of this mechanism is that things like
+          <code class="inline-code">doc.somethingNonsense.otherNonsesne.totalNonsense</code>
+          will just evaluate to an empty sequence, and you don&#39;t get any error
+          messages.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_146">Accessing attributes</h2>
+
+
+          <p>This XML is the same as the original, except that it uses
+          attributes for the titles, instead of elements:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;!-- THIS XML IS USED FOR THE &quot;Accessing attributes&quot; CHAPTER ONLY! --&gt;
+&lt;!-- Outside this chapter examples use the XML from earlier.       --&gt;
+
+&lt;book title=&quot;Test&quot;&gt;
+  &lt;chapter title=&quot;Ch1&quot;&gt;
+    &lt;para&gt;p1.1&lt;/para&gt;
+    &lt;para&gt;p1.2&lt;/para&gt;
+    &lt;para&gt;p1.3&lt;/para&gt;
+  &lt;/chapter&gt;
+  &lt;chapter title=&quot;Ch2&quot;&gt;
+    &lt;para&gt;p2.1&lt;/para&gt;
+    &lt;para&gt;p2.2&lt;/para&gt;
+  &lt;/chapter&gt;
+&lt;/book&gt;</pre></div>
+
+          <p>The attributes of an element can be accessed in the same way
+          as the child elements of the element, except that you put an at-sign
+          (@) before the name of the attribute:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign book = doc.book&gt;
+&lt;h1&gt;${book.@title}&lt;/h1&gt;
+&lt;#list book.chapter as ch&gt;
+  &lt;h2&gt;${ch.@title}&lt;/h2&gt;
+  &lt;#list ch.para as p&gt;
+    &lt;p&gt;${p}
+  &lt;/#list&gt;
+&lt;/#list&gt;</pre></div>
+
+          <p>This will print exactly the same as the previous
+          example.</p>
+
+          <p>Getting attributes follows the same logic as getting child
+          elements, so the result of <code class="inline-code">ch.@title</code> above is a
+          sequence of size 1. If there were no <code class="inline-code">title</code>
+          attribute, then the result would be a sequence of size 0. So be
+          ware, using existence built-ins is tricky here too: if you are
+          curious if <code class="inline-code">foo</code> has attribute
+          <code class="inline-code">bar</code> then you have to write
+          <code class="inline-code">foo.@bar[0]??</code>. (<code class="inline-code">foo.@bar??</code> is
+          wrong, because it always returns <code class="inline-code">true</code>.)
+          Similarly, if you want a default value for the
+          <code class="inline-code">bar</code> attribute, then you have to write
+          <code class="inline-code">foo.@bar[0]!&quot;theDefaultValue&quot;</code>.</p>
+
+          <p>As with child elements, you can select the attributes of
+          multiple nodes. For example, this template prints the titles of all
+          chapters:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list doc.book.chapter.@title as t&gt;
+  ${t}
+&lt;/#list&gt;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_147">Exploring the tree</h2>
+
+
+          <p>This FTL will enumerate all child nodes of the book
+          element:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list doc.book?children as c&gt;
+- ${c?node_type} &lt;#if c?node_type == &#39;element&#39;&gt;${c?node_name}&lt;/#if&gt;
+&lt;/#list&gt;</pre></div>
+
+          <p>this will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">- text
+- element title
+- text
+- element chapter
+- text
+- element chapter
+- text</pre></div>
+
+          <p>The meaning of <code class="inline-code">?node_type</code> is probably clear
+          without explanation. There are several node types that can occur in
+          a DOM tree, such as <code class="inline-code">&quot;element&quot;</code>,
+          <code class="inline-code">&quot;text&quot;</code>, <code class="inline-code">&quot;comment&quot;</code>,
+          <code class="inline-code">&quot;pi&quot;</code>, ...etc.</p>
+
+          <p>The <code class="inline-code">?node_name</code> returns the name of element
+          for element nodes. For other node types, it also returns something,
+          but that&#39;s mainly useful for declarative XML processing, which will
+          be discussed in a <a href="xgui_declarative.html">later
+          chapter</a>.</p>
+
+          <p>If the book element had attributes, they would
+          <em>not</em> appear in the above list, for practical
+          reasons. But you can get a list that contains all attributes of the
+          element, with subvariable <code class="inline-code">@@</code> of the element
+          variable. If you modify the first line of the XML to this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;book foo=&quot;Foo&quot; bar=&quot;Bar&quot; baaz=&quot;Baaz&quot;&gt;</pre></div>
+
+          <p>and run this FTL:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list doc.book.@@ as attr&gt;
+- ${attr?node_name} = ${attr}
+&lt;/#list&gt;</pre></div>
+
+          <p>then you get this output (or something similar):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">- baaz = Baaz
+- bar = Bar
+- foo = Foo</pre></div>
+
+          <p>Returning to the listing of children, there is a convenience
+          subvariable to list only the element children of an element:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list doc.book.* as c&gt;
+- ${c?node_name}
+&lt;/#list&gt;</pre></div>
+
+          <p>This will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">- title
+- chapter
+- chapter</pre></div>
+
+          <p>You get the parent of an element with the
+          <code class="inline-code">parent</code> built-in:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign e = doc.book.chapter[0].para[0]&gt;
+&lt;#-- Now e is the first para of the first chapter --&gt;
+${e?node_name}
+${e?parent?node_name}
+${e?parent?parent?node_name}
+${e?parent?parent?parent?node_name}</pre></div>
+
+          <p>This will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">para
+chapter
+book
+@document</pre></div>
+
+          <p>In the last line you have reached the root of the DOM tree,
+          the document node. It&#39;s not an element, and this is why it has that
+          strange name; don&#39;t deal with it now. Obviously, the document node
+          has no parent.</p>
+
+          <p>You can quickly go back to the document node using the
+          <code class="inline-code">root</code> built-in:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign e = doc.book.chapter[0].para[0]&gt;
+${e?root?node_name}
+${e?root.book.title}</pre></div>
+
+          <p>This will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">@document
+Test Book</pre></div>
+
+          <p>For the complete list of built-ins you can use to navigate in
+          the DOM tree, read the <a href="ref_builtins_node.html">reference
+          of node built-ins</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_148">Using XPath expressions</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>XPath expressions work only if <a href="http://jaxen.org/">Jaxen</a> (recommended, but use
+            at least Jaxen 1.1-beta-8, not older) or <a href="http://xml.apache.org/xalan/">Apache Xalan</a>
+            classes are available. (Apache Xalan classes are included in Sun
+            J2SE 1.4, 1.5 and 1.6 (and maybe later too); no separate Xalan jar
+            is needed.)</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Don&#39;t use the sample XML from the previous section, where
+            <code class="inline-code">title</code> is an attribute; that applies only to
+            that section.</p>
+            </div>
+
+
+          <p>If a hash key used with a node variable can&#39;t be interpreted
+          otherwise (see the <a href="xgui_imperative_formal.html">next
+          section</a> for the precise definition), then it will by
+          interpreted as an XPath expression. For more information on XPath,
+          please visit <a href="http://www.w3.org/TR/xpath">http://www.w3.org/TR/xpath</a>.</p>
+
+          <p>For example, here we list the <code class="inline-code">para</code> elements
+          of the chapter with <code class="inline-code">title</code> element (not
+          attribute!) content &quot;Ch1&#39;&#39;:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list doc[&quot;book/chapter[title=&#39;Ch1&#39;]/para&quot;] as p&gt;
+  &lt;p&gt;${p}
+&lt;/#list&gt;</pre></div>
+
+          <p>It will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;p1.1
+  &lt;p&gt;p1.2
+  &lt;p&gt;p1.3</pre></div>
+
+          <p>The rule with sequences of length 1 (explained in earlier
+          sections) stands for XPath results as well. That is, if the
+          resulting sequence contains exactly 1 node, it also acts as the node
+          itself. For example, print the first paragraph of chapter
+          "Ch1":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${doc[&quot;book/chapter[title=&#39;Ch1&#39;]/para[1]&quot;]}</pre></div>
+
+          <p>which prints the same as:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${doc[&quot;book/chapter[title=&#39;Ch1&#39;]/para[1]&quot;][0]}</pre></div>
+
+          <p>The context node of the XPath expression is the node (or
+          sequence of nodes) whose hash subvariable is used to issue the XPath
+          expression. Thus, this prints the same as the previous
+          example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${doc.book[&quot;chapter[title=&#39;Ch1&#39;]/para[1]&quot;]}</pre></div>
+
+          <p>Note that currently you can use a sequence of 0 or multiple
+          (more than 1) nodes as context only if the programmer has set up
+          FreeMarker to use Jaxen instead of Xalan.</p>
+
+          <p>Also note that XPath indexes sequence items from 1, while FTL
+          indexes sequence items from 0. Thus, to select the first chapter,
+          the XPath expression is <code class="inline-code">&quot;/book/chapter[1]&quot;</code>, while
+          the FTL expression is <code class="inline-code">book.chapter[0]</code>.</p>
+
+          <p>If the programmer has set up FreeMarker to use Jaxen instead
+          of Xalan, then FreeMarker variables are visible with XPath variable
+          references:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign <strong>currentTitle</strong> = &quot;Ch1&quot;&gt;
+&lt;#list doc[&quot;book/chapter[title=<strong>$currentTitle</strong>]/para&quot;] as p&gt;
+<em>...</em></pre></div>
+
+          <p>Note that <code class="inline-code">$currentTitle</code> is not a FreeMarker
+          interpolation, as there are no <code class="inline-code">{</code> and
+          <code class="inline-code">}</code> there. That&#39;s an XPath expression.</p>
+
+          <p>The result of some XPath expressions is not a node-set, but a
+          string, a number, or a boolean. For those XPath expressions, the
+          result is an FTL string, number, or boolean variable respectively.
+          For example, the following will count the total number of
+          <code class="inline-code">para</code> elements in the XML document, so the result
+          is a number:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${x[&quot;count(//para)&quot;]}</pre></div>
+
+          <p>The output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">5</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_149">XML namespaces</h2>
+
+
+          
+
+          <p>Be default, when you write something like
+          <code class="inline-code">doc.book</code>, then it will select the element with
+          name <code class="inline-code">book</code> that does not belongs to any XML
+          namespace (similarly to XPath). If you want to select an element
+          that is inside an XML namespace, you must register a prefix and use
+          that. For example, if element <code class="inline-code">book</code> is in XML
+          namespace <code class="inline-code">http://example.com/ebook</code>, then you have
+          to associate a prefix with it at the top of the template with the
+          <code class="inline-code">ns_prefixes</code> parameter of the <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
+          directive</a>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl ns_prefixes={&quot;e&quot;:&quot;http://example.com/ebook&quot;}&gt;</pre></div>
+
+          <p>And now you can write expressions as
+          <code class="inline-code">doc[&quot;e:book&quot;]</code>. (The usage of square bracket
+          syntax was required because the colon would confuse FreeMarker
+          otherwise.)</p>
+
+          <p>As the value of <code class="inline-code">ns_prefixes</code> is a hash, you
+          can register multiple prefixes:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl ns_prefixes={
+    &quot;e&quot;:&quot;http://example.com/ebook&quot;,
+    &quot;f&quot;:&quot;http://example.com/form&quot;,
+    &quot;vg&quot;:&quot;http://example.com/vectorGraphics&quot;}
+&gt;</pre></div>
+
+          <p>The <code class="inline-code">ns_prefixes</code> parameter affects the whole
+          <a href="dgui_misc_namespace.html">FTL namespace</a>. This means
+          in practice that the prefixes you have registered in the main page
+          template will be visible in all <code class="inline-code">&lt;#include
+          ...&gt;</code>-d templates, but not in <code class="inline-code">&lt;#imported
+          ...&gt;</code>-d templates (often referred as FTL libraries). Or
+          from another point of view, an FTL library can register XML
+          namespace prefixes for it&#39;s own use, without interfering with the
+          prefix registrations of the main template and other
+          libraries.</p>
+
+          <p>Note that, if an input document is dominated by a given XML
+          namespace, you can set that as the default namespace for
+          convenience. This means that if you don&#39;t use prefix, as in
+          <code class="inline-code">doc.book</code>, then it selects element that belongs to
+          the default namespace. The setting of the default namespace happens
+          with reserved prefix <code class="inline-code">D</code>, for example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl ns_prefixes={&quot;D&quot;:&quot;http://example.com/ebook&quot;}&gt;</pre></div>
+
+          <p>Now expression <code class="inline-code">doc.book</code> select the
+          <code class="inline-code">book</code> element that belongs to XML namespace
+          <code class="inline-code">http://example.com/ebook</code>. Unfortunately, XPath
+          does not support this idea of a default namespace. Thus, in XPath
+          expressions, element names without prefixes always select the
+          elements that does not belong to any XML namespace. However, to
+          access elements in the default namespace you can directly use prefix
+          <code class="inline-code">D</code>, for example:
+          <code class="inline-code">doc[&quot;D:book/D:chapter[title=&#39;Ch1&#39;]&quot;]</code>.</p>
+
+          <p>Note that when you use a default namespace, then you can
+          select elements that does not belong to any node namespace with
+          reserved prefix <code class="inline-code">N</code>, for example
+          <code class="inline-code">doc.book[&quot;N:foo&quot;]</code>. It doesn&#39;t go for XPath
+          expressions, where the above can be witten as
+          <code class="inline-code">doc[&quot;D:book/foo&quot;]</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_150">Don&#39;t forget escaping!</h2>
+
+
+          <p>As we generate output of HTML format in these examples, and
+          HTML format reserves characters as <code class="inline-code">&lt;</code>,
+          <code class="inline-code">&amp;</code>, etc., we have to ensure that those will be
+          escaped. For that, either FreeMarker has to be <a href="pgui_config_outputformatsautoesc.html">properly
+          configured</a>, or add <code class="inline-code">output_format=&quot;HTML&quot;</code> in
+          the template to the <code class="inline-code">ftl</code> directive calls.</p>
+
+          <p>So if the book title is &quot;Romeo &amp; Juliet&quot;, the resulting
+          HTML output will be correctly:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output"><em>...</em>
+&lt;h1&gt;Romeo &amp;amp; Juliet&lt;/h1&gt;
+<em>...</em></pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_imperative.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_imperative_formal.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_preface.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_preface.html b/builds/2.3.26-nightly/xgui_preface.html
new file mode 100644
index 0000000..8e1ad39
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_preface.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-preface">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Preface - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Preface">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_preface.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_preface.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_preface.html"><span itemprop="name">Preface</span></a></li></ul><div class="bookmarks" title="B
 ookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Preface"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_expose.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="xgui_preface" itemprop="headline">Preface</h1>
+</div></div><p>Although FreeMarker was originally designed as a web page template
+      engine, as of version 2.3 it also targets another application domain:
+      transforming XML into arbitrary textual output (e.g. HTML files). Thus,
+      in many cases, FreeMarker is an XSLT alternative.</p><p>Technically, there is nothing special in transforming XML
+      documents. It&#39;s just like when you do anything else with FreeMarker: you
+      drop the XML document into the data-model (and possibly other
+      variables), and then you merge the data-model with the FTL template(s)
+      that generate the output text. The extra features introduced for better
+      XML processing are the node FTL variable type (symbolizes a node in
+      generic tree structures, usable not only for XML) and the built-ins and
+      directives dealing with them, and the XML wrapper you get out-of-the-box
+      that exposes XML documents as FTL variables for the templates.</p><p>What&#39;s the difference between using FreeMarker or XSLT? The FTL
+      language has the usual imperative/procedural logic. On the other hand,
+      XSLT is a language with declarative style, designed by &quot;too clever&quot;
+      people, so it&#39;s not easy to adopt its logic, nor to use it in many
+      cases. Also its syntax is terribly verbose. However, XSLT&#39;s
+      &quot;apply-templates&quot; method can be very handy when you process XML
+      documents, thus FreeMarker supports something similar called the
+      "visitor pattern". So in many applications, it is much
+      easier to write FTL stylesheets than XSLT style-sheets. Another
+      fundamental difference is that FTL &quot;transforms&quot; the node tree to text,
+      while XSLT transforms the tree to another tree. So you cannot always use
+      FreeMarker where you can use XSLT.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_expose.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[26/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_node.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_node.html b/builds/2.3.26-nightly/ref_builtins_node.html
new file mode 100644
index 0000000..f615ae0
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_node.html
@@ -0,0 +1,287 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-ins for nodes (for XML) - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-ins for nodes (for XML)">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_node.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_node.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_node.html"><span itemprop="name">Built-ins for nodes (for XML)</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Built-ins for nodes (for XML)"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_hash.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_loop_var.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_node" itemprop="headline">Built-ins for nodes (for XML)</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_ancestors" data-menu-target="ref_builtin_ancestors">ancestors</a></li><li><a class="page-menu-link" href="#ref_builtin_children" data-menu-target="ref_builtin_children">children</a></li><li><a class="page-menu-link" href="#ref_builtin_node_name" data-menu-target="ref_builtin_node_name">node_name</a></li><li><a class="page-menu-link" href="#ref_builtin_next_sibling" data-menu-target="ref_builtin_next_sibling">next_sibling</a></li><li><a class="page-menu-link" href="#ref_builtin_node_namespace" data-menu-target="ref_builtin_node_namespace">node_namespace</a></li><li><a class="page-menu-link" href="#ref_builtin_node_type" data-menu-target="ref_builtin_node_type">node_type</a></li><li><a class="page-menu-link" href="#ref_builtin_parent" data-menu-target="ref_builtin_parent">parent</a></li><li><a class="page-menu-link" href="#ref_builtin_previous_sibling" data-menu-target="ref_builtin_previous_sibling">previous_sibling</a></li><li><a c
 lass="page-menu-link" href="#ref_builtin_root" data-menu-target="ref_builtin_root">root</a></li></ul> </div><p>Note that the variables returned by these built-ins are
+        generated by the node variable implementation it is used with. This
+        means that the returned variables can have extra features in
+        additional to what it stated here, for example, with the <a href="xgui_expose_dom.html">XML DOM nodes</a> the sequence retuned by
+        the <code class="inline-code">children</code> built-in also can be used as hash and
+        maybe as string, as it is described in the <a href="xgui.html">part
+        about XML processing</a>.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_ancestors">ancestors</h2>
+
+
+          
+
+          <p>A sequence that contains all the node&#39;s ancestors, starting
+          with the immediate parent and ending with the root node. The result
+          of this built-in is also a method, by which you can filter the
+          result with the <a href="gloss.html#gloss.fullQualifiedName">full-qualified name</a> of the
+          node. For example as <code class="inline-code">node?ancestors(&quot;section&quot;)</code> to
+          get the sequence of all ancestors with name
+          <code class="inline-code">section</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_children">children</h2>
+
+
+          
+
+          <p>A sequence that contains all of this node&#39;s child nodes (i.e.
+          immediate descendant nodes).</p>
+
+          <p>XML: This is almost the same as special hash key
+          <code class="inline-code">*</code>, except that it returns all nodes, not only
+          elements. So the possible children are element nodes, text nodes,
+          comment nodes, processing instruction nodes, etc. but
+          <em>not</em> attribute nodes. Attribute nodes are
+          excluded from the sequence.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_node_name">node_name</h2>
+
+
+          
+
+          <p>Returns the string that is used to determine what user-defined
+          directive to invoke to handle this node when it is
+          "visited". See: the <a href="ref_directive_visit.html#ref.directive.visit">visit</a> and <a href="ref_directive_visit.html#ref.directive.recurse">recurse</a> directives.</p>
+
+          <p>XML: If the node is an element or attribute, then the string
+          will be the local (prefix free) name of the element or attribute.
+          Otherwise the name usually starts with <code class="inline-code">@</code> followed
+          by the node type. See <a href="xgui_imperative_formal.html#misc.xguiTable">this
+          table</a>. Note that this node name is not the same as the node
+          name returned in the DOM API; the goal of FreeMarker node names is
+          to give the name of the used-defined directive that will process the
+          node.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_next_sibling">next_sibling</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is only available since 2.3.26</p>
+            </div>
+
+
+          <p>Returns the following sibling node of the node. (Two nodes in
+          a tree are said to be siblings if they are on the same level and are
+          directly next to each other.) If there&#39;s no such node, the
+          expression
+          <code class="inline-code"><em class="code-color">node</em>?next_sibling??</code>
+          evaluates to <code class="inline-code">false</code>.</p>
+
+          <p>XML: Note that the value returned by this built-in is also a
+          sequence of length 1 (same as the result of some XPath expressions),
+          however if there&#39;s no next sibling, the result is a missing value
+          (null) instead of an empty sequence. Also note that for XML element
+          nodes you can also use
+          <code class="inline-code"><em class="code-color">node</em>.@@next_sibling_element</code>,
+          which is practical if you want to ignore the whitespace that
+          separates two apparently sibling elements; see more <a href="xgui_imperative_formal.html">here...</a></p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>For custom node implementations this built-in is only
+            supported if that implements the
+            <code class="inline-code">freemarker.template.TemplateNodeModelEx</code>
+            interface.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_node_namespace">node_namespace</h2>
+
+
+          
+
+          <p>Returns the namespace string of the node. FreeMarker does not
+          define the exact meaning of node namespace; it depends on what your
+          node variables are modeling. It&#39;s possible that a node doesn&#39;t have
+          any node namespace defined. In this case, the built-in should
+          evaluate to undefined variable (i.e.
+          <code class="inline-code">node?<em class="code-color">node_namespace</em>??</code>
+          is <code class="inline-code">false</code>), so you can&#39;t use the returned
+          value.</p>
+
+          <p>XML: In the case of XML, it&#39;s the XML namespace URI (such as
+          <code class="inline-code">&quot;http://www.w3.org/1999/xhtml&quot;</code>). If an element or
+          attribute node does not use XML namespace, then this built-in
+          evaluates to an empty string. For other XML nodes this built-in
+          always return undefined variable.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_node_type">node_type</h2>
+
+
+          
+
+          <p>A string that describes the type of the node. FreeMarker does
+          not define the exact meaning of node type; it depends on what your
+          variables are modeling. It&#39;s possible that a node doesn&#39;t support
+          node type at all. In this case, the built-in evaluates to an
+          undefined value, so you can&#39;t use the returned value. (You can still
+          check if a node supports the type property with
+          <code class="inline-code"><em class="code-color">node</em>?node_type??</code>.)</p>
+
+          <p>XML: The possible values are: <code class="inline-code">&quot;attribute&quot;</code>,
+          <code class="inline-code">&quot;text&quot;</code>, <code class="inline-code">&quot;comment&quot;</code>,
+          <code class="inline-code">&quot;document_fragment&quot;</code>,
+          <code class="inline-code">&quot;document&quot;</code>, <code class="inline-code">&quot;document_type&quot;</code>,
+          <code class="inline-code">&quot;element&quot;</code>, <code class="inline-code">&quot;entity&quot;</code>,
+          <code class="inline-code">&quot;entity_reference&quot;</code>,
+          <code class="inline-code">&quot;notation&quot;</code>, <code class="inline-code">&quot;pi&quot;</code>. Note that a
+          there is no <code class="inline-code">&quot;cdata&quot;</code> type, because CDATA is
+          considered as plain text node.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_parent">parent</h2>
+
+
+          
+
+          <p>Returns the node that is this node&#39;s immediate parent in the
+          node tree. The root node has no parent node, so for the root node,
+          the expression
+          <code class="inline-code"><em class="code-color">node</em>?parent??</code>
+          evaluates to <code class="inline-code">false</code>.</p>
+
+          <p>XML: Note that the value returned by this built-in is also a
+          sequence (same as the result of XPath expression
+          <code class="inline-code">..</code>, when you write
+          <code class="inline-code">someNode[&quot;..&quot;]</code>), however if there&#39;s no parent,
+          the result is a missing value (null) instead of an empty sequence.
+          Also note that for attribute nodes, it returns the element the
+          attribute belongs to, despite that attribute nodes are not counted
+          as children of the element.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_previous_sibling">previous_sibling</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is only available since 2.3.26</p>
+            </div>
+
+
+          <p>Returns the previous sibling node of the node. Apart from the
+          direction, this is the same as <code class="inline-code">next_sibling</code>, so
+          see more details <a href="#ref_builtin_next_sibling">there...</a></p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>For custom node implementations this built-in is only
+            supported if that implements the
+            <code class="inline-code">freemarker.template.TemplateNodeModelEx</code>
+            interface.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_root">root</h2>
+
+
+          
+
+          <p>The node that is the root of the tree of nodes to which this
+          node belongs.</p>
+
+          <p>XML: According to W3C, the root of an XML document is not the
+          topmost element node, but the document itself, which is the parent
+          of the topmost element. For example, if you want to get the topmost
+          <em>element</em> of the XML (the so called
+          "document element"; do not mix it with the
+          "document"), which is called <code class="inline-code">foo</code>,
+          then you have to write <code class="inline-code">someNode?root.foo</code>. If you
+          write just <code class="inline-code">someNode?root</code>, then you get the
+          document itself, and not the document element.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_hash.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_loop_var.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_number.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_number.html b/builds/2.3.26-nightly/ref_builtins_number.html
new file mode 100644
index 0000000..4c99464
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_number.html
@@ -0,0 +1,797 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-ins for numbers - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-ins for numbers">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_number.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_number.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_number.html"><span itemprop="name">Built-ins for numbers</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Built-ins for numbers"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_string.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_date.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_number" itemprop="headline">Built-ins for numbers</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_abs" data-menu-target="ref_builtin_abs">abs</a></li><li><a class="page-menu-link" href="#ref_builtin_c" data-menu-target="ref_builtin_c">c (when used with numerical value)</a></li><li><a class="page-menu-link" href="#ref_builtin_is_infinite" data-menu-target="ref_builtin_is_infinite">is_infinite</a></li><li><a class="page-menu-link" href="#ref_builtin_is_nan" data-menu-target="ref_builtin_is_nan">is_nan</a></li><li><a class="page-menu-link" href="#ref_builtin_lower_abc" data-menu-target="ref_builtin_lower_abc">lower_abc</a></li><li><a class="page-menu-link" href="#ref_builtin_rounding" data-menu-target="ref_builtin_rounding">round, floor, ceiling</a></li><li><a class="page-menu-link" href="#ref_builtin_string_for_number" data-menu-target="ref_builtin_string_for_number">string (when used with a numerical value)</a></li><li><a class="page-menu-link" href="#ref_builtin_upper_abc" data-menu-target="ref_builtin_upper_abc">upper_abc</a>
 </li></ul> </div><p>Related FAQs: Do you have things like 1,000,000 or 1�000�000
+        instead of 1000000, or something like 3.14 instead of 3,14 or vice
+        versa? See <a href="app_faq.html#faq_number_grouping">this</a> and <a href="app_faq.html#faq_number_decimal_point">this</a> FAQ entry, also note
+        the <code class="inline-code">c</code> built-in above.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_abs">abs</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.20.</p>
+            </div>
+
+
+          <p>Gives the absolute value of a number. For example
+          <code class="inline-code">x?abs</code> , if <code class="inline-code">x</code> is -5, will
+          evaluate to 5.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_c">c (when used with numerical value)</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.3.</p>
+            </div>
+
+
+          <p>This built-in converts a number to string for a
+          "computer language" as opposed to for human audience.
+          That is, it formats with the rules that programming languages used
+          to use, which is independent of all the locale and number format
+          settings of FreeMarker. It always uses dot as decimal separator, and
+          it never uses grouping separators (like 3,000,000), nor exponential
+          form (like 5E20), nor superfluous leading or trailing 0-s (like 03
+          or 1.0), nor + sign (like +1). It will print at most 16 digits after
+          the decimal dot, and thus numbers whose absolute value is less than
+          1E-16 will be shown as 0. This built-in is crucial because be
+          default (like with <code class="inline-code">${x}</code>) numbers are converted to
+          strings with the locale (language, country) specific number
+          formatting, which is for human readers (like 3000000 is possibly
+          printed as 3,000,000). When the number is printed not for human
+          audience (e.g., for a database record ID used as the part of an URL,
+          or as invisible field value in a HTML form, or for printing
+          CSS/JavaScript numerical literals) this built-in must be used to
+          print the number (i.e., use <code class="inline-code">${x?c}</code> instead of
+          <code class="inline-code">${x}</code>), or else the output will be possibly broken
+          depending on the current number formatting settings and locale (like
+          the decimal point is not dot, but comma in many countries) and the
+          value of the number (like big numbers are possibly
+          "damaged" by grouping separators).</p>
+
+          <p>If the <code class="inline-code">incompatible_imporvements</code> FreeMarker
+          configuration setting is set to 2.3.24 or higher (also if it&#39;s set
+          to 2.3.20 or higher and you are outside a string literal), this
+          built-in will return <code class="inline-code">&quot;INF&quot;</code>,
+          <code class="inline-code">&quot;-INF&quot;</code> and <code class="inline-code">&quot;NaN&quot;</code> for
+          positive/negative infinity and IEEE floating point Not-a-Number,
+          respectively. These are the XML Schema compatible representations of
+          these special values. (Earlier it has returned what
+          <code class="inline-code">java.text.DecimalFormat</code> did with US locale, none
+          of which is understood by any (common) computer language.)</p>
+
+          <p>Note that this built-in <a href="ref_builtins_boolean.html#ref_builtin_c_boolean">also works on
+          booleans</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_is_infinite">is_infinite</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.20.</p>
+            </div>
+
+
+          <p>Tells if a number is floating point infinite (according to
+          IEEE 754). For example, <code class="inline-code">someNumber?is_infinite</code>
+          evaluates to <code class="inline-code">true</code> or <code class="inline-code">false</code>
+          depending on if the value of <code class="inline-code">someNumber</code> is
+          infinite or not. Of course, if the underlying number is not of
+          floating point type, this will always return
+          <code class="inline-code">false</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_is_nan">is_nan</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.20.</p>
+            </div>
+
+
+          <p>Tells if a number is floating point NaN (according to IEEE
+          754). For example, <code class="inline-code">someNumber?is_nan</code> evaluates to
+          <code class="inline-code">true</code> or <code class="inline-code">false</code> depending on if
+          the value of <code class="inline-code">someNumber</code> is NaN or not. Of course,
+          if the underlying number is not of floating point type, this will
+          always return <code class="inline-code">false</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_lower_abc">lower_abc</h2>
+
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.22.</p>
+            </div>
+
+
+          <p>Converts <code class="inline-code">1</code>, <code class="inline-code">2</code>,
+          <code class="inline-code">3</code>, etc., to the string <code class="inline-code">&quot;a&quot;</code>,
+          <code class="inline-code">&quot;b&quot;</code>, <code class="inline-code">&quot;c&quot;</code>, etc. When reaching
+          <code class="inline-code">&quot;z&quot;</code>, it continues like <code class="inline-code">&quot;aa&quot;</code>,
+          <code class="inline-code">&quot;ab&quot;</code>, etc. This is the same logic that you can
+          see in column labels in spreadsheet applications (like Excel or
+          Calc). The lowest allowed number is <code class="inline-code">1</code>. There&#39;s no
+          upper limit. If the number is <code class="inline-code">0</code> or less or it
+          isn&#39;t an integer number then the template processing will be aborted
+          with error.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list 1..30 as n&gt;${n?lower_abc} &lt;/#list&gt;</pre></div>
+
+          <p>Prints:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad </pre></div>
+
+          <p>See also: <a href="#ref_builtin_upper_abc"><code>upper_abc</code></a></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_rounding">round, floor, ceiling</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The rounding built-ins exist since FreeMarker 2.3.13.</p>
+            </div>
+
+
+          <p>Converts a number to a whole number using the specified
+          rounding rule:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">round</code>: Rounds to the nearest whole
+              number. If the number ends with .5, then it rounds upwards
+              (i.e., towards positive infinity)</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">floor</code>: Rounds the number downwards
+              (i.e., towards neagative infinity)</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">ceiling</code>: Rounds the number upwards
+              (i.e., towards positive infinity)</p>
+            </li>
+          </ul>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign testlist=[
+  0, 1, -1, 0.5, 1.5, -0.5,
+  -1.5, 0.25, -0.25, 1.75, -1.75]&gt;
+&lt;#list testlist as result&gt;
+    ${result} ?floor=${result?floor} ?ceiling=${result?ceiling} ?round=${result?round}
+&lt;/#list&gt;</pre></div>
+
+          <p>Prints:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">    0 ?floor=0 ?ceiling=0 ?round=0
+    1 ?floor=1 ?ceiling=1 ?round=1
+    -1 ?floor=-1 ?ceiling=-1 ?round=-1
+    0.5 ?floor=0 ?ceiling=1 ?round=1
+    1.5 ?floor=1 ?ceiling=2 ?round=2
+    -0.5 ?floor=-1 ?ceiling=0 ?round=0
+    -1.5 ?floor=-2 ?ceiling=-1 ?round=-1
+    0.25 ?floor=0 ?ceiling=1 ?round=0
+    -0.25 ?floor=-1 ?ceiling=0 ?round=0
+    1.75 ?floor=1 ?ceiling=2 ?round=2
+    -1.75 ?floor=-2 ?ceiling=-1 ?round=-2</pre></div>
+
+          <p>These built-ins may be useful in pagination operations and
+          like. If you just want to <em>display</em> numbers in
+          rounded form, then you should rather use the <a href="#ref_builtin_string_for_number"><code>string</code>
+          built-in</a> or the <a href="ref_directive_setting.html#ref.setting.number_format"><code>number_format</code>
+          setting</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_string_for_number">string (when used with a numerical value)</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          <p>Converts a number to a string. In its simplest form
+          (<code class="inline-code"><em class="code-color">expression</em>?string</code>) it
+          uses the default format that the programmer has specified via the
+          <code class="inline-code">number_format</code> and the <code class="inline-code">locale</code>
+          configuration settings. You can also specify a number format
+          explicitly with this built-in, as it will be shown later.</p>
+
+          <p>There are four predefined number formats:
+          <code class="inline-code">computer</code>, <code class="inline-code">currency</code>,
+          <code class="inline-code">number</code>, and <code class="inline-code">percent</code>. The exact
+          meaning of these is locale (nationality) specific, and is controlled
+          by the Java platform installation, not by FreeMarker, except for
+          <code class="inline-code">computer</code>, which uses the same formatting as <a href="#ref_builtin_c">the <code>c</code> built-in</a>.
+          There can also be programmer-defined formats, whose name starts with
+          <code class="inline-code">@</code> (programmers <a href="pgui_config_custom_formats.html">see more here...</a>). You
+          can use these predefined formats like this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x=42&gt;
+${x}
+${x?string}  &lt;#-- the same as ${x} --&gt;
+${x?string.number}
+${x?string.currency}
+${x?string.percent}
+${x?string.computer}</pre></div>
+
+          <p>If your locale is US English, this will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">42
+42
+42
+$42.00
+4,200%
+42</pre></div>
+
+          <p>The output of first three expressions is identical because the
+          first two expressions use the default format, which is
+          "number" here. You can change this default using a
+          setting:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#setting number_format=&quot;currency&quot;&gt;
+&lt;#assign x=42&gt;
+${x}
+${x?string}  &lt;#-- the same as ${x} --&gt;
+${x?string.number}
+${x?string.currency}
+${x?string.percent}</pre></div>
+
+          <p>Will now output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">$42.00
+$42.00
+42
+$42.00
+4,200%</pre></div>
+
+          <p>since the default number format was set to
+          "currency".</p>
+
+          <p>You can also refer to named custom formats that were defined
+          when configuring FreeMarker (programmers <a href="pgui_config_custom_formats.html">see more here</a>),
+          like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${x?string.@price}
+${x?string.@weight}</pre></div>
+
+          <p>where the custom format names were "price" and
+          "weight". This way the templates can just refer to the
+          application-domain meaning, and the exact format can be specified
+          outside the templates, on a single central place. (Programmers can
+          read about <a href="pgui_config_custom_formats.html">defining such
+          named formats here...</a>)</p>
+
+          <p>Beside named formats, you can specify number format patterns
+          directly, using the <a href="http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html">Java
+          decimal number format syntax</a> (with some FreeMarker-specific
+          extensions; <a href="#topic.extendedJavaDecimalFormat">see
+          later</a>):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = 1.234&gt;
+${x?string[&quot;0&quot;]}
+${x?string[&quot;0.#&quot;]}
+${x?string[&quot;0.##&quot;]}
+${x?string[&quot;0.###&quot;]}
+${x?string[&quot;0.####&quot;]}
+
+${1?string[&quot;000.00&quot;]}
+${12.1?string[&quot;000.00&quot;]}
+${123.456?string[&quot;000.00&quot;]}
+
+${1.2?string[&quot;0&quot;]}
+${1.8?string[&quot;0&quot;]}
+${1.5?string[&quot;0&quot;]} &lt;-- 1.5, rounded towards even neighbor
+${2.5?string[&quot;0&quot;]} &lt;-- 2.5, rounded towards even neighbor
+
+${12345?string[&quot;0.##E0&quot;]}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">1
+1.2
+1.23
+1.234
+1.234
+
+001.00
+012.10
+123.46
+
+1
+2
+2 &lt;-- 1.5, rounded towards even neighbor
+2 &lt;-- 2.5, rounded towards even neighbor
+
+1.23E4</pre></div>
+
+          <p>Note that as in FreeMarker <code class="inline-code">foo.bar</code> is
+          equivalent with <code class="inline-code">foo[&quot;bar&quot;]</code>, you could also write
+          <code class="inline-code">x?string.currency</code> as
+          <code class="inline-code">x?string[&quot;currency&quot;]</code>, but of course that wouldn&#39;t
+          be practical. But in the above examples we have to use the square
+          bracket syntax, because the characters involved (numbers, dot,
+          <code class="inline-code">#</code>) aren&#39;t allowed syntactically after the dot
+          operator.</p>
+
+          <p>For historical reasons, you could also write things like
+          <code class="inline-code">x?string(&quot;0.#&quot;)</code>, which does exactly the same as
+          <code class="inline-code">x?string[&quot;0.#&quot;]</code>.</p>
+
+          <p>Following the financial and statistics practice, by default
+          the rounding goes according the so called half-even rule, which
+          means rounding towards the nearest "neighbor", unless
+          both neighbors are equidistant, in which case, it rounds towards the
+          even neighbor. This was visible in the above example if you look at
+          the rounding of 1.5 and of 2.5, as both were rounded to 2, since 2
+          is even, but 1 and 3 are odds. The other popular rounding rule,
+          where we always round up when the neighbors are equidistant (and so
+          2.5 is rounded to 3) is called the half-up rule, and it can be
+          activated as <a href="#topic.extendedJavaDecimalFormat">described
+          later</a>.</p>
+
+          <p>As it was shown for the predefined formats earlier, the
+          default formatting of the numbers can be set in the template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#setting number_format=&quot;0.##&quot;&gt;
+${1.234}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">1.23</pre></div>
+
+          <p>The default number format also can be specified outside the
+          templates with the FreeMarker API (like with
+          <code class="inline-code">Configuration.setNumberFormat(String)</code>).</p>
+
+          <p>Note that as number formatting is locale sensitive, the locale
+          setting also plays role in the formatting:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#setting number_format=&quot;,##0.00&quot;&gt;
+&lt;#setting locale=&quot;en_US&quot;&gt;
+US people write:     ${12345678}
+&lt;#setting locale=&quot;hu&quot;&gt;
+German people write: ${12345678}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">US people write:     12,345,678.00
+German people write: 12.345.678,00</pre></div>
+
+          
+            
+
+
+
+<h3 class="content-header header-simplesect" id="topic.extendedJavaDecimalFormat">Extended Java decimal format</h3>
+
+
+            
+
+            <p>FreeMarker extends the Java decimal format patterns with
+            extra options. These options are name-value pairs, specified after
+            two semicolons (<code class="inline-code">;;</code>) at the end of the format
+            string, or if you had a negative pattern (which is separated from
+            the normal patter with a semicolon, like in <code class="inline-code">&quot;0.0;minus
+            0.0&quot;</code>), the after only one semicolon. For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">Standard decimal format: ${10002.5?string[&quot;,000&quot;]}
+Extended decimal format: ${10002.5?string[&quot;,000<strong>;; roundingMode=halfUp groupingSeparator=_</strong>&quot;]}</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">Standard decimal format: 10,002
+Extended decimal format: 10<strong>_</strong>00<strong>3</strong></pre></div>
+
+            <p>Above, in the extended decimal format, we have specified
+            half-up rounding mode and group separator <code class="inline-code">&quot;_&quot;</code>.
+            The table of all options follows (note that these are defined by
+            <code class="inline-code">java.text.DecimalFormat</code> and
+            <code class="inline-code">java.text.DecimalFormatSymbols</code>, not by
+            FreeMarker):</p>
+
+              <div class="table-responsive">
+    <table class="table">
+
+              <thead>
+                <tr>
+                  <th>Name</th>
+
+
+                  <th>Meaning / value</th>
+
+                </tr>
+
+              </thead>
+
+
+              <tbody>
+                <tr>
+                  <td><code class="inline-code">roundingMode</code></td>
+
+
+                  <td>The value is one of <code class="inline-code">up</code>,
+                  <code class="inline-code">down</code>, <code class="inline-code">ceiling</code>,
+                  <code class="inline-code">floor</code>, <code class="inline-code">halfUp</code>,
+                  <code class="inline-code">halfDown</code>, <code class="inline-code">halfEven</code>,
+                  and <code class="inline-code">unnecessary</code>. The behavior that most
+                  people learns in school is <code class="inline-code">halfUp</code>, but
+                  the Java default is <code class="inline-code">halfEven</code> (also called
+                  bankers&#39; rounding). (See <a href="http://docs.oracle.com/javase/7/docs/api/java/math/RoundingMode.html">the
+                  <code>java.math.RoundingMode</code> API</a> for
+                  explanations.)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">multipier</code></td>
+
+
+                  <td>The number will be shown after multiplied with this
+                  integer number.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">decimalSeparator</code></td>
+
+
+                  <td>The character separating the integer part from the
+                  fraction part (like <code class="inline-code">&quot;.&quot;</code> in
+                  <code class="inline-code">3.14</code>).</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">monetaryDecimalSeparator</code></td>
+
+
+                  <td>This is used instead of
+                  <code class="inline-code">decimalSeparator</code> when the pattern
+                  contains parts that make it a monetary format. (See the
+                  <a href="http://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html">Java
+                  decimal number format documentation</a> for more.)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">groupingSeparator</code></td>
+
+
+                  <td>The single character used for grouping the integer part
+                  (like <code class="inline-code">&quot;,&quot;</code> in
+                  <code class="inline-code">1,000,000</code>) Note that grouping is turned
+                  on by using <code class="inline-code">&quot;,&quot;</code> in the pattern, as shown
+                  in the earlier example. If it&#39;s not turned on, this option
+                  won&#39;t have visible effect.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">exponentSeparator</code></td>
+
+
+                  <td>This string (of arbitrary length) is used to separate
+                  the exponent from the part before it. (like
+                  <code class="inline-code">&quot;E&quot;</code> in <code class="inline-code">1.23E6</code>). Only
+                  has visible effect if the pattern specifies exponential
+                  (also known as scientific) format, like
+                  <code class="inline-code">&quot;0.##E0&quot;</code>.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">minusSign</code></td>
+
+
+                  <td>The single character used as minus sign (like
+                  <code class="inline-code">&quot;-&quot;</code> in <code class="inline-code">-1</code>).</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">infinity</code></td>
+
+
+                  <td>The string (of arbitrary length) used to show
+                  infinity.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">nan</code></td>
+
+
+                  <td>The string (of arbitrary length) used to show
+                  not-a-number (NaN).</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">percent</code></td>
+
+
+                  <td>The single character used as the percent symbol (like
+                  <code class="inline-code">&quot;%&quot;</code> in <code class="inline-code">50%</code>). Only has
+                  visible effect if the pattern contains
+                  <code class="inline-code">%</code>.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">perMill</code></td>
+
+
+                  <td>The single character used as the per-mill symbol (like
+                  <code class="inline-code">&quot;\u2030&quot;</code> in <code class="inline-code">50021\u2030</code>). Only
+                  has visible effect if the pattern contains
+                  <code class="inline-code">\u2030</code>.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">zeroDigit</code></td>
+
+
+                  <td>The first character in the 10 character range (of
+                  character codes) that contains the digits to be used. For
+                  example, if this is <code class="inline-code">A</code>, then 1 will
+                  <code class="inline-code">B</code>, 2 will be <code class="inline-code">C</code>, and so
+                  on.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">currencyCode</code></td>
+
+
+                  <td>Currency ISO 4217 code. Only has effect when the pattern
+                  contains parts that make it a monetary format. It&#39;s an error
+                  to specify a code that&#39;s not a known ISO 4217 code in the
+                  Java installation.</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">currencySymbol</code></td>
+
+
+                  <td>Currency symbol; shown where the localized currency name
+                  is present in the pattern. Overrides the symbol determined
+                  based on the <code class="inline-code">currencyCode</code>.</td>
+
+                </tr>
+
+              </tbody>
+
+                </table>
+  </div>
+
+
+            <p>Regarding the syntax of the options:</p>
+
+            <ul>
+              <li>
+                <p>The option name and value are separated by equals
+                character (<code class="inline-code">=</code>).</p>
+              </li>
+
+              <li>
+                <p>Options are separated by whitespace and/or optional
+                comma (<code class="inline-code">,</code>)</p>
+              </li>
+
+              <li>
+                <p>The option value can be quoted with apostrophe
+                (<code class="inline-code">&#39;</code>) or normal quotation mark
+                (<code class="inline-code">&quot;</code>) , like
+                <code class="inline-code">exponentSeparator=&#39;*10^&#39;</code> or
+                <code class="inline-code">exponentSeparator=&quot;*10^&quot;</code>. If the value
+                itself has to contain the character used for quotation, then
+                it has to be entered twice (like <code class="inline-code">infinity=&#39;It&#39;&#39;s
+                infinite&#39;</code>, but you could also write
+                <code class="inline-code">infinity=&quot;It&#39;s infinite&quot;</code>). Backslash has no
+                special meaning.</p>
+              </li>
+
+              <li>
+                <p>Non-string values must not be quoted. Strings only has
+                to be quoted if they contain punctuation or whitespace, or any
+                other non-letter non-digit non-<code class="inline-code">&quot;_&quot;</code>
+                non-<code class="inline-code">&quot;$&quot;</code> characters. Thus, for example, both
+                <code class="inline-code">roundingMode=down</code> and
+                <code class="inline-code">roundingMode=&quot;down&quot;</code> are legal.</p>
+              </li>
+            </ul>
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_upper_abc">upper_abc</h2>
+
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.22.</p>
+            </div>
+
+
+          <p>Same as <a href="#ref_builtin_lower_abc"><code>lower_abc</code></a>,
+          but converts to upper case letters, like <code class="inline-code">&quot;A&quot;</code>,
+          <code class="inline-code">&quot;B&quot;</code>, <code class="inline-code">&quot;C&quot;</code>, \u2026,
+          <code class="inline-code">&quot;AA&quot;</code>, <code class="inline-code">&quot;AB&quot;</code>, etc.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_string.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_date.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_sequence.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_sequence.html b/builds/2.3.26-nightly/ref_builtins_sequence.html
new file mode 100644
index 0000000..a3fe4ba
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_sequence.html
@@ -0,0 +1,577 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-ins for sequences - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-ins for sequences">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_sequence.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_sequence.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_sequence.html"><span itemprop="name">Built-ins for sequences</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Built-ins for sequences"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_boolean.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_hash.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_sequence" itemprop="headline">Built-ins for sequences</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_chunk" data-menu-target="ref_builtin_chunk">chunk</a></li><li><a class="page-menu-link" href="#ref_builtin_first" data-menu-target="ref_builtin_first">first</a></li><li><a class="page-menu-link" href="#ref_builtin_join" data-menu-target="ref_builtin_join">join</a></li><li><a class="page-menu-link" href="#ref_builtin_last" data-menu-target="ref_builtin_last">last</a></li><li><a class="page-menu-link" href="#ref_builtin_reverse" data-menu-target="ref_builtin_reverse">reverse</a></li><li><a class="page-menu-link" href="#ref_builtin_seq_contains" data-menu-target="ref_builtin_seq_contains">seq_contains</a></li><li><a class="page-menu-link" href="#ref_builtin_seq_index_of" data-menu-target="ref_builtin_seq_index_of">seq_index_of</a></li><li><a class="page-menu-link" href="#ref_builtin_seq_last_index_of" data-menu-target="ref_builtin_seq_last_index_of">seq_last_index_of</a></li><li><a class="page-menu-link" href="#ref_builtin_size" data
 -menu-target="ref_builtin_size">size</a></li><li><a class="page-menu-link" href="#ref_builtin_sort" data-menu-target="ref_builtin_sort">sort</a></li><li><a class="page-menu-link" href="#ref_builtin_sort_by" data-menu-target="ref_builtin_sort_by">sort_by</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_chunk">chunk</h2>
+
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.3.</p>
+            </div>
+
+
+          <p>This built-in splits a sequence into multiple sequences of the
+          size given with the 1st parameter to the built-in (like
+          <code class="inline-code">mySeq?chunk(3)</code>). The result is the sequence of
+          these sequences. The last sequence is possibly shorter than the
+          given size, unless the 2nd parameter is given (like
+          <code class="inline-code">mySeq?chunk(3, &#39;-&#39;)</code>), that is the item used to
+          make up the size of the last sequence to the given size.
+          Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign seq = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;, &#39;h&#39;, &#39;i&#39;, &#39;j&#39;]&gt;
+
+&lt;#list seq?chunk(4) as row&gt;
+  &lt;#list row as cell&gt;${cell} &lt;/#list&gt;
+&lt;/#list&gt;
+
+&lt;#list seq?chunk(4, &#39;-&#39;) as row&gt;
+  &lt;#list row as cell&gt;${cell} &lt;/#list&gt;
+&lt;/#list&gt;</pre></div>
+
+          <p>The output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">
+  a b c d
+  e f g h
+  i j
+
+  a b c d
+  e f g h
+  i j - -
+ </pre></div>
+
+          <p>This built in is mostly for outputting sequnces in
+          tabular/columnar format. When used with HTML tables, the 2nd
+          parameter is often <code class="inline-code">&quot;\xA0&quot;</code> (that is the code of
+          the no-break space character, also known as "nbsp"), so
+          the border of the empty TD-s will not be missing.</p>
+
+          <p>The 1st parameter must be a number that is at least 1. If the
+          number is not integer, it will be silently rounded down to integer
+          (i.e. both 3.1 and 3.9 will be rounded to 3). The 2nd parameter can
+          be of any type and value.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_first">first</h2>
+
+
+          
+
+          <p>Returns the first item of the sequence. Thus
+          <code class="inline-code"><em class="code-color">value</em>?first</code> is the
+          same as <code class="inline-code"><em class="code-color">value</em>[0]</code>,
+          except that, since FreeMarker 2.3.26,
+          <code class="inline-code"><em class="code-color">value</em>?first</code> also works
+          if <code class="inline-code"><em class="code-color">value</em></code> doesn&#39;t
+          support getting items with numerical index, but still supports to be
+          listed (i.e., with FTL collection values).</p>
+
+          <p>If the sequence or collection is empty, the result will be a
+          missing value (as in
+          <code class="inline-code"><em class="code-color">empty</em>?first!&#39;No item was
+          found&#39;</code>).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_join">join</h2>
+
+
+          
+
+          <p>Concatenates the items of a sequence to a single string, with
+          the given separator. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign colors = [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;]&gt;
+${colors?join(&quot;, &quot;)}</pre></div>
+
+          <p>will output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">red, green, blue</pre></div>
+
+          <p>Sequence items that are not strings will be converted to
+          string with the same conversion rules as of
+          <code class="inline-code">${<em class="code-color">...</em>}</code> (except, of
+          course, no automatic escaping is applied at this stage).</p>
+
+          <p><code class="inline-code">?join(<em class="code-color">...</em>)</code> can
+          have up to 3 parameters:</p>
+
+          <div class="orderedlist"><ol type="1">
+            <li>
+              <p>Separator, required: The string that is inserted between
+              items</p>
+            </li>
+
+            <li>
+              <p>Empty value, defaults to <code class="inline-code">&quot;&quot;</code> (empty
+              string): The value used if the sequence contains no
+              items.</p>
+            </li>
+
+            <li>
+              <p>List ending, defaults to <code class="inline-code">&quot;&quot;</code> (empty
+              string): The value printed after the last value, if the list
+              sequence wasn&#39;t empty.</p>
+            </li>
+          </ol></div>
+
+          <p>So this (where <code class="inline-code">[]</code> means an empty
+          sequence):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${colors?join(&quot;, &quot;, &quot;-&quot;)}
+${[]?join(&quot;, &quot;, &quot;-&quot;)}
+
+${colors?join(&quot;, &quot;, &quot;-&quot;, &quot;.&quot;)}
+${[]?join(&quot;, &quot;, &quot;-&quot;, &quot;.&quot;)}</pre></div>
+
+          <p>will output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">red, green, blue
+-
+
+red, green, blue.
+-</pre></div>
+
+          <p class="programmers-note">Sequences coming from Java might contain
+          <code class="inline-code">null</code> values. Those values will be ignored by this
+          built-in, exactly like if they were removed from the list.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_last">last</h2>
+
+
+          
+
+          <p>The last subvariable of the sequence. Template processing will
+          die with error if the sequence is empty.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_reverse">reverse</h2>
+
+
+          
+
+          <p>The sequence with reversed order.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_seq_contains">seq_contains</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.1. It
+            doesn&#39;t exist in 2.3.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The <code class="inline-code">seq_</code> prefix is required in the
+            built-in name to differentiate it from the <a href="ref_builtins_string.html#ref_builtin_contains"><code>contains</code>
+            built-in</a> that searches a substring in a string (since a
+            variable can be both string and sequence on the same time).</p>
+            </div>
+
+
+          <p>Tells if the sequence contains the specified value. It has 1
+          parameter, the value to find. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = [&quot;red&quot;, 16, &quot;blue&quot;, &quot;cyan&quot;]&gt;
+&quot;blue&quot;: ${x?seq_contains(&quot;blue&quot;)?string(&quot;yes&quot;, &quot;no&quot;)}
+&quot;yellow&quot;: ${x?seq_contains(&quot;yellow&quot;)?string(&quot;yes&quot;, &quot;no&quot;)}
+16: ${x?seq_contains(16)?string(&quot;yes&quot;, &quot;no&quot;)}
+&quot;16&quot;: ${x?seq_contains(&quot;16&quot;)?string(&quot;yes&quot;, &quot;no&quot;)}</pre></div>
+
+          <p>The output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&quot;blue&quot;: yes
+&quot;yellow&quot;: no
+16: yes
+&quot;16&quot;: no</pre></div>
+
+          <p>To find the value the built-in uses FreeMarker&#39;s comparison
+          rules (as if you was using <a href="dgui_template_exp.html#dgui_template_exp_comparison"><code>==</code>
+          operator</a>), except that comparing two values of different
+          types or of types for which FreeMarker doesn&#39;t support comparison
+          will not cause error, just will be evaluated as the two values are
+          not equal. Thus, you can use it only to find scalar values (i.e.
+          string, number, boolean or date/time values). For other types the
+          result will be always <code class="inline-code">false</code>.</p>
+
+          <p>For fault tolerance, this built-in also works with
+          collections.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_seq_index_of">seq_index_of</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.1. It
+            doesn&#39;t exist in 2.3.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The <code class="inline-code">seq_</code> prefix is required in the
+            built-in name to differentiate it from the <a href="ref_builtins_string.html#ref_builtin_index_of"><code>index_of</code>
+            built-in</a> that searches a substring in a string (since a
+            variable can be both string and sequence on the same time).</p>
+            </div>
+
+
+          <p>Returns the index of the first occurrence of a value in the
+          sequence, or <code class="inline-code">-1</code> if the sequence doesn&#39;t contain
+          the specified value. The value to find is specified as the first
+          parameter. For example this template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign colors = [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;]&gt;
+${colors?seq_index_of(&quot;blue&quot;)}
+${colors?seq_index_of(&quot;red&quot;)}
+${colors?seq_index_of(&quot;purple&quot;)}</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">2
+0
+-1</pre></div>
+
+          <p>To find the value the built-in uses FreeMarker&#39;s comparison
+          rules (as if you was using <a href="dgui_template_exp.html#dgui_template_exp_comparison"><code>==</code>
+          operator</a>), except that comparing two values of different
+          types or of types for which FreeMarker doesn&#39;t support comparison
+          will not cause error, just will be evaluated as the two values are
+          not equal. Thus, you can use it only to find scalar values (i.e.
+          string, number, boolean or date/time values). For other types the
+          result will be always <code class="inline-code">-1</code>.</p>
+
+          <p>The index where the searching is started can be optionally
+          given as the 2nd parameter. This may be useful if the same item can
+          occur for multiple times in the same sequence. There is no
+          restriction on the numerical value of the second parameter: if it is
+          negative, it has the same effect as if it were zero, and if it is
+          greater than the length of the sequence, it has the same effect as
+          if it were equal to the length of the sequence. Decimal values will
+          be truncated to integers. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign names = [&quot;Joe&quot;, &quot;Fred&quot;, &quot;Joe&quot;, &quot;Susan&quot;]&gt;
+No 2nd param: ${names?seq_index_of(&quot;Joe&quot;)}
+-2: ${names?seq_index_of(&quot;Joe&quot;, -2)}
+-1: ${names?seq_index_of(&quot;Joe&quot;, -1)}
+ 0: ${names?seq_index_of(&quot;Joe&quot;, 0)}
+ 1: ${names?seq_index_of(&quot;Joe&quot;, 1)}
+ 2: ${names?seq_index_of(&quot;Joe&quot;, 2)}
+ 3: ${names?seq_index_of(&quot;Joe&quot;, 3)}
+ 4: ${names?seq_index_of(&quot;Joe&quot;, 4)}</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">No 2nd param: 0
+-2: 0
+-1: 0
+ 0: 0
+ 1: 2
+ 2: 2
+ 3: -1
+ 4: -1</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_seq_last_index_of">seq_last_index_of</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.1. It
+            doesn&#39;t exist in 2.3.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The <code class="inline-code">seq_</code> prefix is required in the
+            built-in name to differentiate it from the <a href="ref_builtins_string.html#ref_builtin_last_index_of"><code>last_index_of</code>
+            built-in</a> that searches a substring in a string (since a
+            variable can be both string and sequence on the same time).</p>
+            </div>
+
+
+          <p>Returns the index of the last occurrence of a value in the
+          sequence, or <code class="inline-code">-1</code> if the sequence doesn&#39;t contain
+          the specified value. That is, it is the same as <a href="#ref_builtin_seq_index_of"><code>seq_index_of</code></a>,
+          just it searches backward starting from the last item of the
+          sequence. It also supports the optional 2nd parameter that specifies
+          the index where the searching is started. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign names = [&quot;Joe&quot;, &quot;Fred&quot;, &quot;Joe&quot;, &quot;Susan&quot;]&gt;
+No 2nd param: ${names?seq_last_index_of(&quot;Joe&quot;)}
+-2: ${names?seq_last_index_of(&quot;Joe&quot;, -2)}
+-1: ${names?seq_last_index_of(&quot;Joe&quot;, -1)}
+ 0: ${names?seq_last_index_of(&quot;Joe&quot;, 0)}
+ 1: ${names?seq_last_index_of(&quot;Joe&quot;, 1)}
+ 2: ${names?seq_last_index_of(&quot;Joe&quot;, 2)}
+ 3: ${names?seq_last_index_of(&quot;Joe&quot;, 3)}
+ 4: ${names?seq_last_index_of(&quot;Joe&quot;, 4)}</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">No 2nd param: 2
+-2: -1
+-1: -1
+ 0: 0
+ 1: 0
+ 2: 2
+ 3: 2
+ 4: 2</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_size">size</h2>
+
+
+          
+
+          <p>The number of sub variables in sequence (as a numerical
+          value). The highest possible index in sequence <code class="inline-code">s</code>
+          is <code class="inline-code">s?size�-�1</code> (since the index of the first
+          subvariable is 0) assuming that the sequence has at least one
+          subvariable.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_sort">sort</h2>
+
+
+          
+
+          
+
+          <p>Returns the sequence sorted in ascending order. (For
+          descending order use this and then the <a href="#ref_builtin_reverse"><code>reverse</code> built
+          in</a>.) This will work only if all sub variables are strings, or
+          if all sub variables are numbers, or if all sub variables are date
+          values (date, time, or date+time), or if all sub variables are
+          booleans (since 2.3.17). If the sub variables are strings, it uses
+          locale (language) specific lexical sorting (which is usually not
+          case sensitive). For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign ls = [&quot;whale&quot;, &quot;Barbara&quot;, &quot;zeppelin&quot;, &quot;aardvark&quot;, &quot;beetroot&quot;]?sort&gt;
+&lt;#list ls as i&gt;${i} &lt;/#list&gt;</pre></div>
+
+          <p>will print (with US locale at least):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">aardvark Barbara beetroot whale zeppelin</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_sort_by">sort_by</h2>
+
+
+          
+
+          
+
+          <p>Returns the sequence of hashes sorted by the given hash
+          subvariable in ascending order. (For descending order use this and
+          then the <a href="#ref_builtin_reverse"><code>reverse</code> built
+          in</a>.) The rules are the same as with the <a href="#ref_builtin_sort"><code>sort</code> built-in</a>,
+          except that the sub variables of the sequence must be hashes, and
+          you have to give the name of a hash subvariable that will decide the
+          order. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign ls = [
+  {&quot;name&quot;:&quot;whale&quot;, &quot;weight&quot;:2000},
+  {&quot;name&quot;:&quot;Barbara&quot;, &quot;weight&quot;:53},
+  {&quot;name&quot;:&quot;zeppelin&quot;, &quot;weight&quot;:-200},
+  {&quot;name&quot;:&quot;aardvark&quot;, &quot;weight&quot;:30},
+  {&quot;name&quot;:&quot;beetroot&quot;, &quot;weight&quot;:0.3}
+]&gt;
+Order by name:
+&lt;#list ls?sort_by(&quot;name&quot;) as i&gt;
+- ${i.name}: ${i.weight}
+&lt;/#list&gt;
+
+Order by weight:
+&lt;#list ls?sort_by(&quot;weight&quot;) as i&gt;
+- ${i.name}: ${i.weight}
+&lt;/#list&gt;</pre></div>
+
+          <p>will print (with US locale at least):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Order by name:
+- aardvark: 30
+- Barbara: 53
+- beetroot: 0.3
+- whale: 2000
+- zeppelin: -200
+
+Order by weight:
+- zeppelin: -200
+- beetroot: 0.3
+- aardvark: 30
+- Barbara: 53
+- whale: 2000</pre></div>
+
+          <p>If the subvariable that you want to use for the sorting is on
+          a deeper level (that is, if it is a subvariable of a subvariable and
+          so on), then you can use a sequence as parameter, that specifies the
+          names of the sub variables that lead down to the desired
+          subvariable. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign members = [
+    {&quot;name&quot;: {&quot;first&quot;: &quot;Joe&quot;, &quot;last&quot;: &quot;Smith&quot;}, &quot;age&quot;: 40},
+    {&quot;name&quot;: {&quot;first&quot;: &quot;Fred&quot;, &quot;last&quot;: &quot;Crooger&quot;}, &quot;age&quot;: 35},
+    {&quot;name&quot;: {&quot;first&quot;: &quot;Amanda&quot;, &quot;last&quot;: &quot;Fox&quot;}, &quot;age&quot;: 25}]&gt;
+Sorted by name.last:
+&lt;#list members?sort_by([&#39;name&#39;, &#39;last&#39;]) as m&gt;
+- ${m.name.last}, ${m.name.first}: ${m.age} years old
+&lt;/#list&gt;</pre></div>
+
+          <p>will print (with US locale at least):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Sorted by name.last:
+- Crooger, Fred: 35 years old
+- Fox, Amanda: 25 years old
+- Smith, Joe: 40 years old</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_boolean.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_hash.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[45/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/detailed-toc.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/detailed-toc.html b/builds/2.3.26-nightly/detailed-toc.html
new file mode 100644
index 0000000..3d6ef00
--- /dev/null
+++ b/builds/2.3.26-nightly/detailed-toc.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-docgen-detailed-toc">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Apache FreeMarker Manual">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/index.html">
+<link rel="canonical" href="http://freemarker.org/docs/index.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">Table of Contents</span></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></
 div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = [];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><span class="paging-arrow disabled previous"><span>Previous</span></span><a class="paging-arrow next" href="dgui.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-book" id="autoid_1" itemprop="headline">Apache FreeMarker Manual <span class="subtitle productname">For Freemarker 2.3.26</span>
+</h1>
+</div></div><div class="page-menu">
+<ul><li><a class="page-menu-link" href="dgui.html" data-menu-target="dgui">Template Author&#39;s Guide</a><ul><li><a class="page-menu-link" href="dgui_quickstart.html" data-menu-target="dgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="dgui_quickstart_basics.html" data-menu-target="dgui_quickstart_basics">Template + data-model = output</a></li><li><a class="page-menu-link" href="dgui_quickstart_datamodel.html" data-menu-target="dgui_quickstart_datamodel">The data-model at a glance</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html" data-menu-target="dgui_quickstart_template">The template at a glance</a><ul><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_2" data-menu-target="autoid_2">Some basic directives</a><ul><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_3" data-menu-target="autoid_3">The if directive</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid
 _4" data-menu-target="autoid_4">The list directive</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_5" data-menu-target="autoid_5">The include directive</a></li></ul></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_6" data-menu-target="autoid_6">Using directives together</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_7" data-menu-target="autoid_7">Using built-ins</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#autoid_8" data-menu-target="autoid_8">Dealing with missing variables</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html#dgui_quickstart_template_autoescaping" data-menu-target="dgui_quickstart_template_autoescaping">Escaping for HTML, XML and other markup</a></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel.html" data-menu-target="dgui_datamodel">Values, Types</a><ul><li><a class="page-menu-link" href="dgui_da
 tamodel_basics.html" data-menu-target="dgui_datamodel_basics">Basics</a><ul><li><a class="page-menu-link" href="dgui_datamodel_basics.html#topic.value" data-menu-target="topic.value">What is a value?</a></li><li><a class="page-menu-link" href="dgui_datamodel_basics.html#autoid_9" data-menu-target="autoid_9">What is type?</a></li><li><a class="page-menu-link" href="dgui_datamodel_basics.html#autoid_10" data-menu-target="autoid_10">The data-model is a hash</a></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel_types.html" data-menu-target="dgui_datamodel_types">The types</a><ul><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_scalar" data-menu-target="dgui_datamodel_scalar">Scalars</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_container" data-menu-target="dgui_datamodel_container">Containers</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#autoid_11" data-menu-target="autoid_11">Subro
 utines</a><ul><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_method" data-menu-target="dgui_datamodel_method">Methods and functions</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_userdefdir" data-menu-target="dgui_datamodel_userdefdir">User-defined directives</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#autoid_12" data-menu-target="autoid_12">Function/method versus user-defined directive</a></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#autoid_13" data-menu-target="autoid_13">Miscellaneous</a><ul><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_node" data-menu-target="dgui_datamodel_node">Nodes</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html#dgui_datamodel_markupoutput" data-menu-target="dgui_datamodel_markupoutput">Markup output</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_templ
 ate.html" data-menu-target="dgui_template">The Template</a><ul><li><a class="page-menu-link" href="dgui_template_overallstructure.html" data-menu-target="dgui_template_overallstructure">Overall structure</a></li><li><a class="page-menu-link" href="dgui_template_directives.html" data-menu-target="dgui_template_directives">Directives</a></li><li><a class="page-menu-link" href="dgui_template_exp.html" data-menu-target="dgui_template_exp">Expressions</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#exp_cheatsheet" data-menu-target="exp_cheatsheet">Quick overview (cheat sheet)</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct" data-menu-target="dgui_template_exp_direct">Specify values directly</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_string" data-menu-target="dgui_template_exp_direct_string">Strings</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_e
 xp_direct_number" data-menu-target="dgui_template_exp_direct_number">Numbers</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_boolean" data-menu-target="dgui_template_exp_direct_boolean">Booleans</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_seuqence" data-menu-target="dgui_template_exp_direct_seuqence">Sequences</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_ranges" data-menu-target="dgui_template_exp_direct_ranges">Ranges</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_direct_hash" data-menu-target="dgui_template_exp_direct_hash">Hashes</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var" data-menu-target="dgui_template_exp_var">Retrieving variables</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_toplevel" data-menu-target="dgu
 i_template_exp_var_toplevel">Top-level variables</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_hash" data-menu-target="dgui_template_exp_var_hash">Retrieving data from a hash</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_sequence" data-menu-target="dgui_template_exp_var_sequence">Retrieving data from a sequence</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_var_special" data-menu-target="dgui_template_exp_var_special">Special variables</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_stringop" data-menu-target="dgui_template_exp_stringop">String operations</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation" data-menu-target="dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a></li><li><a class="page-menu-link" href="dgui_template_exp.ht
 ml#dgui_template_exp_get_character" data-menu-target="dgui_template_exp_get_character">Getting a character</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_stringop_slice" data-menu-target="dgui_template_exp_stringop_slice">String slicing (substrings)</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_sequenceop" data-menu-target="dgui_template_exp_sequenceop">Sequence operations</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat" data-menu-target="dgui_template_exp_sequenceop_cat">Concatenation</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice" data-menu-target="dgui_template_exp_seqenceop_slice">Sequence slicing</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_hashop" data-menu-target="dgui_template_exp_hashop">Hash operations</a><ul><li><a class="page-menu-li
 nk" href="dgui_template_exp.html#dgui_template_exp_hashop_cat" data-menu-target="dgui_template_exp_hashop_cat">Concatenation</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_arit" data-menu-target="dgui_template_exp_arit">Arithmetical calculations</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_comparison" data-menu-target="dgui_template_exp_comparison">Comparison</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_logicalop" data-menu-target="dgui_template_exp_logicalop">Logical operations</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_builtin" data-menu-target="dgui_template_exp_builtin">Built-ins</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_methodcall" data-menu-target="dgui_template_exp_methodcall">Method call</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_templat
 e_exp_missing" data-menu-target="dgui_template_exp_missing">Handling missing values</a><ul><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_missing_default" data-menu-target="dgui_template_exp_missing_default">Default value operator</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_missing_test" data-menu-target="dgui_template_exp_missing_test">Missing value test operator</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_assignment" data-menu-target="dgui_template_exp_assignment">Assignment Operators</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_parentheses" data-menu-target="dgui_template_exp_parentheses">Parentheses</a></li><li><a class="page-menu-link" href="dgui_template_exp.html#dgui_template_exp_whitespace" data-menu-target="dgui_template_exp_whitespace">White-space in expressions</a></li><li><a class="page-menu-link" href="dgui_tem
 plate_exp.html#dgui_template_exp_precedence" data-menu-target="dgui_template_exp_precedence">Operator precedence</a></li></ul></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html" data-menu-target="dgui_template_valueinsertion">Interpolations</a><ul><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_14" data-menu-target="autoid_14">Overview</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_15" data-menu-target="autoid_15">Automatic escaping</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_16" data-menu-target="autoid_16">Guide to inserting numerical values</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#dgui_template_valueinserion_universal_date" data-menu-target="dgui_template_valueinserion_universal_date">Guide to inserting date/time/date-time values</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_
 17" data-menu-target="autoid_17">Guide to inserting boolean values</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html#autoid_18" data-menu-target="autoid_18">Exact conversion rules</a></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_misc.html" data-menu-target="dgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html" data-menu-target="dgui_misc_userdefdir">Defining your own directives</a><ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_19" data-menu-target="autoid_19">Basics</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_20" data-menu-target="autoid_20">Parameters</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_21" data-menu-target="autoid_21">Nested content</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#dgui_misc_userdefdir_loopvar" data-menu-target="dgui_misc_userdefdir_loopvar">Macros with loop 
 variables</a></li><li><a class="page-menu-link" href="dgui_misc_userdefdir.html#autoid_22" data-menu-target="autoid_22">More about user-defined directives and macros</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc_var.html" data-menu-target="dgui_misc_var">Defining variables in the template</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html" data-menu-target="dgui_misc_namespace">Namespaces</a><ul><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_23" data-menu-target="autoid_23">Creating a library</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_24" data-menu-target="autoid_24">Writing the variables of imported namespaces</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_25" data-menu-target="autoid_25">Namespaces and data-model</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html#autoid_26" data-menu-target="autoid_26">The life-cycle of namespaces</a></li><li><a 
 class="page-menu-link" href="dgui_misc_namespace.html#autoid_27" data-menu-target="autoid_27">Auto-importing</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html" data-menu-target="dgui_misc_autoescaping">Auto-escaping and output formats</a><ul><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat" data-menu-target="dgui_misc_autoescaping_outputformat">Output formats</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_overrideoformat" data-menu-target="dgui_misc_autoescaping_overrideoformat">Overriding the output format in templates</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_disableautoesc" data-menu-target="dgui_misc_autoescaping_disableautoesc">Disabling auto escaping</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues" data-menu-target="dgui_misc_autoescaping_mo
 values">"Markup output" values</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#autoid_28" data-menu-target="autoid_28">Further details and tricky cases</a><ul><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_nonmarkupof" data-menu-target="dgui_misc_autoescaping_nonmarkupof">Non-markup output formats</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_mixingoutputformats" data-menu-target="dgui_misc_autoescaping_mixingoutputformats">Inserting markup output values from other markups</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_concatenation" data-menu-target="dgui_misc_autoescaping_concatenation">Markup output values and the "+"
+operator</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_stringliteral" data-menu-target="dgui_misc_autoescaping_stringliteral">${...} inside string literals</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html#autoid_29" data-menu-target="autoid_29">Combined output formats</a></li></ul></li></ul></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html" data-menu-target="dgui_misc_whitespace">White-space handling</a><ul><li><a class="page-menu-link" href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping" data-menu-target="dgui_misc_whitespace_stripping">White-space stripping</a></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html#autoid_30" data-menu-target="autoid_30">Using compress directive</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html" data-menu-target="dgui_misc_alternativesyntax">Alternative (square bracket) syntax</a></li></ul></li></ul></
 li><li><a class="page-menu-link" href="pgui.html" data-menu-target="pgui">Programmer&#39;s Guide</a><ul><li><a class="page-menu-link" href="pgui_quickstart.html" data-menu-target="pgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="pgui_quickstart_createconfiguration.html" data-menu-target="pgui_quickstart_createconfiguration">Create a configuration instance</a></li><li><a class="page-menu-link" href="pgui_quickstart_createdatamodel.html" data-menu-target="pgui_quickstart_createdatamodel">Create a data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_gettemplate.html" data-menu-target="pgui_quickstart_gettemplate">Get the template</a></li><li><a class="page-menu-link" href="pgui_quickstart_merge.html" data-menu-target="pgui_quickstart_merge">Merging the template with the data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_all.html" data-menu-target="pgui_quickstart_all">Putting all together</a></li></ul></li><li><a class="p
 age-menu-link" href="pgui_datamodel.html" data-menu-target="pgui_datamodel">The Data Model</a><ul><li><a class="page-menu-link" href="pgui_datamodel_basics.html" data-menu-target="pgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_datamodel_scalar.html" data-menu-target="pgui_datamodel_scalar">Scalars</a><ul><li><a class="page-menu-link" href="pgui_datamodel_scalar.html#autoid_31" data-menu-target="autoid_31">Difficulties with the "date-like" types</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html" data-menu-target="pgui_datamodel_parent">Containers</a><ul><li><a class="page-menu-link" href="pgui_datamodel_parent.html#autoid_32" data-menu-target="autoid_32">Hashes</a></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html#autoid_33" data-menu-target="autoid_33">Sequences</a></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html#autoid_34" data-menu-target="autoid_34">Collections</a></li></ul></li><li
 ><a class="page-menu-link" href="pgui_datamodel_method.html" data-menu-target="pgui_datamodel_method">Methods</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html" data-menu-target="pgui_datamodel_directive">Directives</a><ul><li><a class="page-menu-link" href="pgui_datamodel_directive.html#autoid_35" data-menu-target="autoid_35">Example 1</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html#autoid_36" data-menu-target="autoid_36">Example 2</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html#autoid_37" data-menu-target="autoid_37">Notices</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel_node.html" data-menu-target="pgui_datamodel_node">Node variables</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html" data-menu-target="pgui_datamodel_objectWrapper">Object wrappers</a><ul><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html#pgui_datamodel_defaultObjectWrappe
 r" data-menu-target="pgui_datamodel_defaultObjectWrapper">The default object wrapper</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html#pgui_datamodel_customObjectWrappingExample" data-menu-target="pgui_datamodel_customObjectWrappingExample">Custom object wrapping example</a></li></ul></li></ul></li><li><a class="page-menu-link" href="pgui_config.html" data-menu-target="pgui_config">The Configuration</a><ul><li><a class="page-menu-link" href="pgui_config_basics.html" data-menu-target="pgui_config_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_config_sharedvariables.html" data-menu-target="pgui_config_sharedvariables">Shared variables</a></li><li><a class="page-menu-link" href="pgui_config_settings.html" data-menu-target="pgui_config_settings">Settings</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html" data-menu-target="pgui_config_templateloading">Template loading</a><ul><li><a class="page-menu-link" href="pgui_c
 onfig_templateloading.html#autoid_38" data-menu-target="autoid_38">Template loaders</a><ul><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_39" data-menu-target="autoid_39">Built-in template loaders</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_40" data-menu-target="autoid_40">Loading templates from multiple locations</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_41" data-menu-target="autoid_41">Loading templates from other sources</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#autoid_42" data-menu-target="autoid_42">The template name (template path)</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_templateloading.html#pgui_config_templateloading_caching" data-menu-target="pgui_config_templateloading_caching">Template caching</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html" data-menu-target="pgui_co
 nfig_errorhandling">Error handling</a><ul><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_43" data-menu-target="autoid_43">The possible exceptions</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_44" data-menu-target="autoid_44">Customizing the behavior regarding TemplatException-s</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_45" data-menu-target="autoid_45">TemplateException logging</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html#autoid_46" data-menu-target="autoid_46">Explicit error handling in templates</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_templateconfigurations.html" data-menu-target="pgui_config_templateconfigurations">Template configurations</a></li><li><a class="page-menu-link" href="pgui_config_outputformatsautoesc.html" data-menu-target="pgui_config_outputformatsautoesc">Associating output formats with templates</a></li><li>
 <a class="page-menu-link" href="pgui_config_custom_formats.html" data-menu-target="pgui_config_custom_formats">Custom number and date/time formats</a><ul><li><a class="page-menu-link" href="pgui_config_custom_formats.html#autoid_50" data-menu-target="autoid_50">Overview</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_alg_simple" data-menu-target="pgui_config_custom_formats_ex_cust_alg_simple">Simple custom number format example</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_algo_advanced" data-menu-target="pgui_config_custom_formats_ex_cust_algo_advanced">Advanced custom number format example</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_algo_date" data-menu-target="pgui_config_custom_formats_ex_cust_algo_date">Custom date/time format example</a></li><li><a class="page-menu-link" href="pgui_con
 fig_custom_formats.html#pgui_config_custom_formats_ex_alias" data-menu-target="pgui_config_custom_formats_ex_alias">Alias format example</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html#pgui_config_custom_formats_ex_model_aware" data-menu-target="pgui_config_custom_formats_ex_model_aware">Model-aware format example</a></li></ul></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html" data-menu-target="pgui_config_incompatible_improvements">The &quot;incompatible improvements&quot; setting</a><ul><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html#autoid_51" data-menu-target="autoid_51">What does it do</a></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set" data-menu-target="pgui_config_incompatible_improvements_how_to_set">How to set it</a></li></ul></li></ul></li><li><a class="page-menu-link" href="pgui_misc.html" data-me
 nu-target="pgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="pgui_misc_var.html" data-menu-target="pgui_misc_var">Variables, scopes</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html" data-menu-target="pgui_misc_charset">Charset issues</a><ul><li><a class="page-menu-link" href="pgui_misc_charset.html#autoid_52" data-menu-target="autoid_52">The charset of the input</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html#autoid_53" data-menu-target="autoid_53">The charset of the output</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_multithreading.html" data-menu-target="pgui_misc_multithreading">Multithreading</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html" data-menu-target="pgui_misc_beanwrapper">Bean wrapper</a><ul><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#beanswrapper_hash" data-menu-target="beanswrapper_hash">TemplateHashModel functionality</a></li><li><a class="page-menu-lin
 k" href="pgui_misc_beanwrapper.html#autoid_54" data-menu-target="autoid_54">A word on security</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_55" data-menu-target="autoid_55">TemplateScalarModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_56" data-menu-target="autoid_56">TemplateNumberModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_57" data-menu-target="autoid_57">TemplateCollectionModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_58" data-menu-target="autoid_58">TemplateSequenceModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#beanswrapper_method" data-menu-target="beanswrapper_method">TemplateMethodModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#autoid_59" data-menu-target="autoid_59">Unwrapping rules</a></li><li><a class="p
 age-menu-link" href="pgui_misc_beanwrapper.html#autoid_60" data-menu-target="autoid_60">Accessing static methods</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html#jdk_15_enums" data-menu-target="jdk_15_enums">Accessing enums</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_logging.html" data-menu-target="pgui_misc_logging">Logging</a><ul><li><a class="page-menu-link" href="pgui_misc_logging.html#autoid_61" data-menu-target="autoid_61">Logging library selection</a></li><li><a class="page-menu-link" href="pgui_misc_logging.html#autoid_62" data-menu-target="autoid_62">Logging categories</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_servlet.html" data-menu-target="pgui_misc_servlet">Using FreeMarker with servlets</a><ul><li><a class="page-menu-link" href="pgui_misc_servlet.html#pgui_misc_servlet_model2" data-menu-target="pgui_misc_servlet_model2">Using FreeMarker for "Model 2"</a></li><li><a class="page-menu-link" href="pgui_misc_ser
 vlet.html#pgui_misc_servlet_include" data-menu-target="pgui_misc_servlet_include">Including content from other web application
+resources</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html#autoid_63" data-menu-target="autoid_63">Using JSP custom tags in FTL</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html#autoid_64" data-menu-target="autoid_64">Embed FTL into JSP pages</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_secureenv.html" data-menu-target="pgui_misc_secureenv">Configuring security policy for FreeMarker</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html" data-menu-target="pgui_misc_xml_legacy">Legacy XML wrapper implementation</a><ul><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_65" data-menu-target="autoid_65">TemplateScalarModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_66" data-menu-target="autoid_66">TemplateCollectionModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_67" data-menu-target="autoid_67">TemplateSequenceModel</a></li><li><a cl
 ass="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_68" data-menu-target="autoid_68">TemplateHashModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_69" data-menu-target="autoid_69">TemplateMethodModel</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html#autoid_70" data-menu-target="autoid_70">Namespace handling</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc_ant.html" data-menu-target="pgui_misc_ant">Using FreeMarker with Ant</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html" data-menu-target="pgui_misc_jythonwrapper">Jython wrapper</a><ul><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_71" data-menu-target="autoid_71">TemplateHashModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_72" data-menu-target="autoid_72">TemplateScalarModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.htm
 l#autoid_73" data-menu-target="autoid_73">TemplateBooleanModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_74" data-menu-target="autoid_74">TemplateNumberModel functionality</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html#autoid_75" data-menu-target="autoid_75">TemplateSequenceModel functionality</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="ref.html" data-menu-target="ref">Template Language Reference</a><ul><li><a class="page-menu-link" href="ref_builtins.html" data-menu-target="ref_builtins">Built-in Reference</a><ul><li><a class="page-menu-link" href="ref_builtins_alphaidx.html" data-menu-target="ref_builtins_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_builtins_string.html" data-menu-target="ref_builtins_string">Built-ins for strings</a><ul><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_boolean" data-menu-target="ref_bui
 ltin_boolean">boolean</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_cap_first" data-menu-target="ref_builtin_cap_first">cap_first</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_capitalize" data-menu-target="ref_builtin_capitalize">capitalize</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_chop_linebreak" data-menu-target="ref_builtin_chop_linebreak">chop_linebreak</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_contains" data-menu-target="ref_builtin_contains">contains</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_string_date" data-menu-target="ref_builtin_string_date">date, time, datetime</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_ends_with" data-menu-target="ref_builtin_ends_with">ends_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_ensure
 _ends_with" data-menu-target="ref_builtin_ensure_ends_with">ensure_ends_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_ensure_starts_with" data-menu-target="ref_builtin_ensure_starts_with">ensure_starts_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_esc" data-menu-target="ref_builtin_esc">esc</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_groups" data-menu-target="ref_builtin_groups">groups</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_html" data-menu-target="ref_builtin_html">html (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_index_of" data-menu-target="ref_builtin_index_of">index_of</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_j_string" data-menu-target="ref_builtin_j_string">j_string</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#r
 ef_builtin_js_string" data-menu-target="ref_builtin_js_string">js_string</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_json_string" data-menu-target="ref_builtin_json_string">json_string</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_after" data-menu-target="ref_builtin_keep_after">keep_after</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_after_last" data-menu-target="ref_builtin_keep_after_last">keep_after_last</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_before" data-menu-target="ref_builtin_keep_before">keep_before</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_keep_before_last" data-menu-target="ref_builtin_keep_before_last">keep_before_last</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_last_index_of" data-menu-target="ref_builtin_last_index_of">last_index_of<
 /a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_left_pad" data-menu-target="ref_builtin_left_pad">left_pad</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_length" data-menu-target="ref_builtin_length">length</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_lower_case" data-menu-target="ref_builtin_lower_case">lower_case</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_matches" data-menu-target="ref_builtin_matches">matches</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_no_esc" data-menu-target="ref_builtin_no_esc">no_esc</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_number" data-menu-target="ref_builtin_number">number</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_replace" data-menu-target="ref_builtin_replace">replace</a></li><li><a class="page-menu-lin
 k" href="ref_builtins_string.html#ref_builtin_right_pad" data-menu-target="ref_builtin_right_pad">right_pad</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_remove_beginning" data-menu-target="ref_builtin_remove_beginning">remove_beginning</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_remove_ending" data-menu-target="ref_builtin_remove_ending">remove_ending</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_rtf" data-menu-target="ref_builtin_rtf">rtf (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_split" data-menu-target="ref_builtin_split">split</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_starts_with" data-menu-target="ref_builtin_starts_with">starts_with</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_string_for_string" data-menu-target="ref_builtin_string_for_string">str
 ing (when used with a string value)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_substring" data-menu-target="ref_builtin_substring">substring (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_trim" data-menu-target="ref_builtin_trim">trim</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_uncap_first" data-menu-target="ref_builtin_uncap_first">uncap_first</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_upper_case" data-menu-target="ref_builtin_upper_case">upper_case</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_url" data-menu-target="ref_builtin_url">url</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_url_path" data-menu-target="ref_builtin_url_path">url_path</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_word_list" data-menu-target="ref_bui
 ltin_word_list">word_list</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_xhtml" data-menu-target="ref_builtin_xhtml">xhtml (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_xml" data-menu-target="ref_builtin_xml">xml (deprecated)</a></li><li><a class="page-menu-link" href="ref_builtins_string.html#ref_builtin_string_flags" data-menu-target="ref_builtin_string_flags">Common flags</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_number.html" data-menu-target="ref_builtins_number">Built-ins for numbers</a><ul><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_abs" data-menu-target="ref_builtin_abs">abs</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_c" data-menu-target="ref_builtin_c">c (when used with numerical value)</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_is_infinite" data-menu-target="ref_buil
 tin_is_infinite">is_infinite</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_is_nan" data-menu-target="ref_builtin_is_nan">is_nan</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_lower_abc" data-menu-target="ref_builtin_lower_abc">lower_abc</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_rounding" data-menu-target="ref_builtin_rounding">round, floor, ceiling</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_string_for_number" data-menu-target="ref_builtin_string_for_number">string (when used with a numerical value)</a></li><li><a class="page-menu-link" href="ref_builtins_number.html#ref_builtin_upper_abc" data-menu-target="ref_builtin_upper_abc">upper_abc</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_date.html" data-menu-target="ref_builtins_date">Built-ins for date/time/date-time values</a><ul><li><a class="page-menu-link" href="ref_b
 uiltins_date.html#ref_builtin_date_datetype" data-menu-target="ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+value)</a></li><li><a class="page-menu-link" href="ref_builtins_date.html#ref_builtin_date_if_unknown" data-menu-target="ref_builtin_date_if_unknown">date_if_unknown, time_if_unknown, datetime_if_unknown</a></li><li><a class="page-menu-link" href="ref_builtins_date.html#ref_builtin_date_iso" data-menu-target="ref_builtin_date_iso">iso_...</a></li><li><a class="page-menu-link" href="ref_builtins_date.html#ref_builtin_string_for_date" data-menu-target="ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_boolean.html" data-menu-target="ref_builtins_boolean">Built-ins for booleans</a><ul><li><a class="page-menu-link" href="ref_builtins_boolean.html#ref_builtin_c_boolean" data-menu-target="ref_builtin_c_boolean">c (when used with boolean)</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html#ref_builtin_string_for_boolean" data-menu-target="ref_builtin_string_for_boolean">strin
 g (when used with a boolean value)</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html#ref_builtin_then" data-menu-target="ref_builtin_then">then</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_sequence.html" data-menu-target="ref_builtins_sequence">Built-ins for sequences</a><ul><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_chunk" data-menu-target="ref_builtin_chunk">chunk</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_first" data-menu-target="ref_builtin_first">first</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_join" data-menu-target="ref_builtin_join">join</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_last" data-menu-target="ref_builtin_last">last</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_reverse" data-menu-target="ref_builtin_reverse">reverse</a></li><li><a class="
 page-menu-link" href="ref_builtins_sequence.html#ref_builtin_seq_contains" data-menu-target="ref_builtin_seq_contains">seq_contains</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_seq_index_of" data-menu-target="ref_builtin_seq_index_of">seq_index_of</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_seq_last_index_of" data-menu-target="ref_builtin_seq_last_index_of">seq_last_index_of</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_size" data-menu-target="ref_builtin_size">size</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_sort" data-menu-target="ref_builtin_sort">sort</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html#ref_builtin_sort_by" data-menu-target="ref_builtin_sort_by">sort_by</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_hash.html" data-menu-target="ref_builtins_hash">Built-ins for hashes</a><ul>
 <li><a class="page-menu-link" href="ref_builtins_hash.html#ref_builtin_keys" data-menu-target="ref_builtin_keys">keys</a></li><li><a class="page-menu-link" href="ref_builtins_hash.html#ref_builtin_values" data-menu-target="ref_builtin_values">values</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_node.html" data-menu-target="ref_builtins_node">Built-ins for nodes (for XML)</a><ul><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_ancestors" data-menu-target="ref_builtin_ancestors">ancestors</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_children" data-menu-target="ref_builtin_children">children</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_node_name" data-menu-target="ref_builtin_node_name">node_name</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_next_sibling" data-menu-target="ref_builtin_next_sibling">next_sibling</a></li><li><a class="page-menu-l
 ink" href="ref_builtins_node.html#ref_builtin_node_namespace" data-menu-target="ref_builtin_node_namespace">node_namespace</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_node_type" data-menu-target="ref_builtin_node_type">node_type</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_parent" data-menu-target="ref_builtin_parent">parent</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_previous_sibling" data-menu-target="ref_builtin_previous_sibling">previous_sibling</a></li><li><a class="page-menu-link" href="ref_builtins_node.html#ref_builtin_root" data-menu-target="ref_builtin_root">root</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html" data-menu-target="ref_builtins_loop_var">Loop variable built-ins</a><ul><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_counter" data-menu-target="ref_builtin_counter">counter</a></li><li><a class="page-m
 enu-link" href="ref_builtins_loop_var.html#ref_builtin_has_next" data-menu-target="ref_builtin_has_next">has_next</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_index" data-menu-target="ref_builtin_index">index</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_even_item" data-menu-target="ref_builtin_is_even_item">is_even_item</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_first" data-menu-target="ref_builtin_is_first">is_first</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_last" data-menu-target="ref_builtin_is_last">is_last</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_is_odd_item" data-menu-target="ref_builtin_is_odd_item">is_odd_item</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_item_cycle" data-menu-target="ref_builtin_item_cycle">item_cycle</a></li><li><a c
 lass="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_item_parity" data-menu-target="ref_builtin_item_parity">item_parity</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html#ref_builtin_item_parity_cap" data-menu-target="ref_builtin_item_parity_cap">item_parity_cap</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_type_independent.html" data-menu-target="ref_builtins_type_independent">Type independent built-ins</a><ul><li><a class="page-menu-link" href="ref_builtins_type_independent.html#ref_builtin_switch" data-menu-target="ref_builtin_switch">switch</a></li></ul></li><li><a class="page-menu-link" href="ref_builtins_expert.html" data-menu-target="ref_builtins_expert">Seldom used and expert built-ins</a><ul><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_buitin_api_and_has_api" data-menu-target="ref_buitin_api_and_has_api">api, has_api</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_nu
 mType" data-menu-target="ref_builtin_numType">byte, double, float, int, long, short</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_eval" data-menu-target="ref_builtin_eval">eval</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_has_content" data-menu-target="ref_builtin_has_content">has_content</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_interpret" data-menu-target="ref_builtin_interpret">interpret</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_isType" data-menu-target="ref_builtin_isType">is_...</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_markup_string" data-menu-target="ref_builtin_markup_string">markup_string</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_namespace" data-menu-target="ref_builtin_namespace">namespace</a></li><li><a class="page-menu-link" href="ref_builtins_expe
 rt.html#ref_builtin_new" data-menu-target="ref_builtin_new">new</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html#ref_builtin_numToDate" data-menu-target="ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directives.html" data-menu-target="ref_directives">Directive Reference</a><ul><li><a class="page-menu-link" href="ref_directive_alphaidx.html" data-menu-target="ref_directive_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_directive_assign.html" data-menu-target="ref_directive_assign">assign</a><ul><li><a class="page-menu-link" href="ref_directive_assign.html#autoid_76" data-menu-target="autoid_76">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_assign.html#autoid_77" data-menu-target="autoid_77">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_attempt.html" data-menu-target="ref_directive_attem
 pt">attempt, recover</a><ul><li><a class="page-menu-link" href="ref_directive_attempt.html#autoid_78" data-menu-target="autoid_78">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_attempt.html#autoid_79" data-menu-target="autoid_79">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_autoesc.html" data-menu-target="ref_directive_autoesc">autoesc</a><ul><li><a class="page-menu-link" href="ref_directive_autoesc.html#autoid_80" data-menu-target="autoid_80">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_autoesc.html#autoid_81" data-menu-target="autoid_81">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_compress.html" data-menu-target="ref_directive_compress">compress</a><ul><li><a class="page-menu-link" href="ref_directive_compress.html#autoid_82" data-menu-target="autoid_82">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_compress.html#autoid_83" data-menu-target="autoid
 _83">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_escape.html" data-menu-target="ref_directive_escape">escape, noescape (deprecated)</a><ul><li><a class="page-menu-link" href="ref_directive_escape.html#autoid_84" data-menu-target="autoid_84">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_escape.html#autoid_85" data-menu-target="autoid_85">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_flush.html" data-menu-target="ref_directive_flush">flush</a><ul><li><a class="page-menu-link" href="ref_directive_flush.html#autoid_86" data-menu-target="autoid_86">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_flush.html#autoid_87" data-menu-target="autoid_87">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_ftl.html" data-menu-target="ref_directive_ftl">ftl</a><ul><li><a class="page-menu-link" href="ref_directive_ftl.html#autoid_88" data-menu-target="autoid_88">S
 ynopsis</a></li><li><a class="page-menu-link" href="ref_directive_ftl.html#autoid_89" data-menu-target="autoid_89">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_function.html" data-menu-target="ref_directive_function">function, return</a><ul><li><a class="page-menu-link" href="ref_directive_function.html#autoid_90" data-menu-target="autoid_90">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_function.html#autoid_91" data-menu-target="autoid_91">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_global.html" data-menu-target="ref_directive_global">global</a><ul><li><a class="page-menu-link" href="ref_directive_global.html#autoid_92" data-menu-target="autoid_92">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_global.html#autoid_93" data-menu-target="autoid_93">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_if.html" data-menu-target="ref_directive_if">if,
  else, elseif</a><ul><li><a class="page-menu-link" href="ref_directive_if.html#autoid_94" data-menu-target="autoid_94">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_if.html#autoid_95" data-menu-target="autoid_95">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_import.html" data-menu-target="ref_directive_import">import</a><ul><li><a class="page-menu-link" href="ref_directive_import.html#autoid_96" data-menu-target="autoid_96">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_import.html#autoid_97" data-menu-target="autoid_97">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_include.html" data-menu-target="ref_directive_include">include</a><ul><li><a class="page-menu-link" href="ref_directive_include.html#autoid_98" data-menu-target="autoid_98">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_include.html#autoid_99" data-menu-target="autoid_99">Description</a><ul><li
 ><a class="page-menu-link" href="ref_directive_include.html#ref_directive_include_acquisition" data-menu-target="ref_directive_include_acquisition">Using acquisition</a></li><li><a class="page-menu-link" href="ref_directive_include.html#ref_directive_include_localized" data-menu-target="ref_directive_include_localized">Localized lookup</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_list.html" data-menu-target="ref_directive_list">list, else, items, sep, break</a><ul><li><a class="page-menu-link" href="ref_directive_list.html#autoid_100" data-menu-target="autoid_100">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_101" data-menu-target="autoid_101">Description</a><ul><li><a class="page-menu-link" href="ref_directive_list.html#autoid_102" data-menu-target="autoid_102">Simplest form</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_103" data-menu-target="autoid_103">else directive</a></li><li><a
  class="page-menu-link" href="ref_directive_list.html#autoid_104" data-menu-target="autoid_104">items directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_105" data-menu-target="autoid_105">sep directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_106" data-menu-target="autoid_106">break directive</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_107" data-menu-target="autoid_107">Accessing iteration state</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_108" data-menu-target="autoid_108">Nesting loops into each other</a></li><li><a class="page-menu-link" href="ref_directive_list.html#autoid_109" data-menu-target="autoid_109">Notes for Java programmers</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_local.html" data-menu-target="ref_directive_local">local</a><ul><li><a class="page-menu-link" href="ref_directive_local.html#autoid_110" data-me
 nu-target="autoid_110">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_local.html#autoid_111" data-menu-target="autoid_111">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_macro.html" data-menu-target="ref_directive_macro">macro, nested, return</a><ul><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_112" data-menu-target="autoid_112">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_113" data-menu-target="autoid_113">Description</a><ul><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_114" data-menu-target="autoid_114">nested</a></li><li><a class="page-menu-link" href="ref_directive_macro.html#autoid_115" data-menu-target="autoid_115">return</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_noautoesc.html" data-menu-target="ref_directive_noautoesc">noautoesc</a><ul><li><a class="page-menu-link" href="ref_directive_noautoesc.html#autoi
 d_116" data-menu-target="autoid_116">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_noautoesc.html#autoid_117" data-menu-target="autoid_117">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_noparse.html" data-menu-target="ref_directive_noparse">noparse</a><ul><li><a class="page-menu-link" href="ref_directive_noparse.html#autoid_118" data-menu-target="autoid_118">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_noparse.html#autoid_119" data-menu-target="autoid_119">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_nt.html" data-menu-target="ref_directive_nt">nt</a><ul><li><a class="page-menu-link" href="ref_directive_nt.html#autoid_120" data-menu-target="autoid_120">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_nt.html#autoid_121" data-menu-target="autoid_121">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_outputformat.html" data-men
 u-target="ref_directive_outputformat">outputformat</a><ul><li><a class="page-menu-link" href="ref_directive_outputformat.html#autoid_122" data-menu-target="autoid_122">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_outputformat.html#autoid_123" data-menu-target="autoid_123">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_setting.html" data-menu-target="ref_directive_setting">setting</a><ul><li><a class="page-menu-link" href="ref_directive_setting.html#autoid_124" data-menu-target="autoid_124">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_setting.html#autoid_125" data-menu-target="autoid_125">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_stop.html" data-menu-target="ref_directive_stop">stop</a><ul><li><a class="page-menu-link" href="ref_directive_stop.html#autoid_126" data-menu-target="autoid_126">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_stop.html#autoi
 d_127" data-menu-target="autoid_127">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_switch.html" data-menu-target="ref_directive_switch">switch, case, default, break</a><ul><li><a class="page-menu-link" href="ref_directive_switch.html#autoid_128" data-menu-target="autoid_128">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_switch.html#autoid_129" data-menu-target="autoid_129">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_t.html" data-menu-target="ref_directive_t">t, lt, rt</a><ul><li><a class="page-menu-link" href="ref_directive_t.html#autoid_130" data-menu-target="autoid_130">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_t.html#autoid_131" data-menu-target="autoid_131">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_directive_userDefined.html" data-menu-target="ref_directive_userDefined">User-defined directive (&lt;@...&gt;)</a><ul><li><a class="page-menu
 -link" href="ref_directive_userDefined.html#autoid_132" data-menu-target="autoid_132">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html#autoid_133" data-menu-target="autoid_133">Description</a><ul><li><a class="page-menu-link" href="ref_directive_userDefined.html#ref_directive_userDefined_entTag" data-menu-target="ref_directive_userDefined_entTag">End-tag</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html#ref_directive_userDefined_loopVar" data-menu-target="ref_directive_userDefined_loopVar">Loop variables</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html#ref_directive_userDefined_positionalParam" data-menu-target="ref_directive_userDefined_positionalParam">Positional parameter passing</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_directive_visit.html" data-menu-target="ref_directive_visit">visit, recurse, fallback</a><ul><li><a class="page-menu-link" href="ref_directive_visit.ht
 ml#autoid_134" data-menu-target="autoid_134">Synopsis</a></li><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_135" data-menu-target="autoid_135">Description</a><ul><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_136" data-menu-target="autoid_136">Visit</a></li><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_137" data-menu-target="autoid_137">Recurse</a></li><li><a class="page-menu-link" href="ref_directive_visit.html#autoid_138" data-menu-target="autoid_138">Fallback</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="ref_specvar.html" data-menu-target="ref_specvar">Special Variable Reference</a></li><li><a class="page-menu-link" href="ref_reservednames.html" data-menu-target="ref_reservednames">Reserved names in FTL</a></li><li><a class="page-menu-link" href="ref_deprecated.html" data-menu-target="ref_deprecated">Deprecated FTL constructs</a><ul><li><a class="page-menu-link" href="ref_depr_directive.h
 tml" data-menu-target="ref_depr_directive">List of deprecated directives</a></li><li><a class="page-menu-link" href="ref_depr_builtin.html" data-menu-target="ref_depr_builtin">List of deprecated built-ins</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html" data-menu-target="ref_depr_oldmacro">Old-style macro and call directives</a><ul><li><a class="page-menu-link" href="ref_depr_oldmacro.html#autoid_139" data-menu-target="autoid_139">Synopsis</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html#autoid_140" data-menu-target="autoid_140">Description</a></li></ul></li><li><a class="page-menu-link" href="ref_depr_transform.html" data-menu-target="ref_depr_transform">Transform directive</a><ul><li><a class="page-menu-link" href="ref_depr_transform.html#autoid_141" data-menu-target="autoid_141">Synopsis</a></li><li><a class="page-menu-link" href="ref_depr_transform.html#autoid_142" data-menu-target="autoid_142">Description</a></li></ul></li><li><a class="page
 -menu-link" href="ref_depr_oldsyntax.html" data-menu-target="ref_depr_oldsyntax">Old FTL syntax</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html" data-menu-target="ref_depr_numerical_interpolation">#{...}: Numerical interpolation</a><ul><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html#autoid_143" data-menu-target="autoid_143">Synopsis</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html#autoid_144" data-menu-target="autoid_144">Description</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="xgui.html" data-menu-target="xgui">XML Processing Guide</a><ul><li><a class="page-menu-link" href="xgui_preface.html" data-menu-target="xgui_preface">Preface</a></li><li><a class="page-menu-link" href="xgui_expose.html" data-menu-target="xgui_expose">Exposing XML documents</a><ul><li><a class="page-menu-link" href="xgui_expose_dom.html" data-menu-target="xgui_expose_dom">The DOM tree</a></
 li><li><a class="page-menu-link" href="xgui_expose_put.html" data-menu-target="xgui_expose_put">Putting the XML into the data-model</a></li></ul></li><li><a class="page-menu-link" href="xgui_imperative.html" data-menu-target="xgui_imperative">Imperative XML processing</a><ul><li><a class="page-menu-link" href="xgui_imperative_learn.html" data-menu-target="xgui_imperative_learn">Basics</a><ul><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_145" data-menu-target="autoid_145">Accessing elements by name</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_146" data-menu-target="autoid_146">Accessing attributes</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_147" data-menu-target="autoid_147">Exploring the tree</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_148" data-menu-target="autoid_148">Using XPath expressions</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.h
 tml#autoid_149" data-menu-target="autoid_149">XML namespaces</a></li><li><a class="page-menu-link" href="xgui_imperative_learn.html#autoid_150" data-menu-target="autoid_150">Don&#39;t forget escaping!</a></li></ul></li><li><a class="page-menu-link" href="xgui_imperative_formal.html" data-menu-target="xgui_imperative_formal">Details</a><ul><li><a class="page-menu-link" href="xgui_imperative_formal.html#autoid_151" data-menu-target="autoid_151">Node sequences</a></li></ul></li></ul></li><li><a class="page-menu-link" href="xgui_declarative.html" data-menu-target="xgui_declarative">Declarative XML processing</a><ul><li><a class="page-menu-link" href="xgui_declarative_basics.html" data-menu-target="xgui_declarative_basics">Basics</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html" data-menu-target="xgui_declarative_details">Details</a><ul><li><a class="page-menu-link" href="xgui_declarative_details.html#autoid_152" data-menu-target="autoid_152">Default handlers</a>
 </li><li><a class="page-menu-link" href="xgui_declarative_details.html#autoid_153" data-menu-target="autoid_153">Visiting a single node</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html#autoid_154" data-menu-target="autoid_154">XML namespaces</a></li></ul></li></ul></li></ul></li><li><a class="page-menu-link" href="app.html" data-menu-target="app">Appendixes</a><ul><li><a class="page-menu-link" href="app_faq.html" data-menu-target="app_faq">FAQ</a></li><li><a class="page-menu-link" href="app_versions.html" data-menu-target="app_versions">Version history</a><ul><li><a class="page-menu-link" href="versions_2_3_26.html" data-menu-target="versions_2_3_26">2.3.26 (incubating at Apache)</a><ul><li><a class="page-menu-link" href="versions_2_3_26.html#autoid_155" data-menu-target="autoid_155">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_26.html#autoid_156" data-menu-target="autoid_156">Changes on the Java side</a></li><li><a class=
 "page-menu-link" href="versions_2_3_26.html#autoid_157" data-menu-target="autoid_157">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_25.html" data-menu-target="versions_2_3_25">2.3.25 (incubating at Apache)</a><ul><li><a class="page-menu-link" href="versions_2_3_25.html#autoid_158" data-menu-target="autoid_158">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_25.html#autoid_159" data-menu-target="autoid_159">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_24.html" data-menu-target="versions_2_3_24">2.3.24 (incubating at Apache)</a><ul><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_160" data-menu-target="autoid_160">Legal changes</a></li><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_161" data-menu-target="autoid_161">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_162" data-menu-target="autoid_
 162">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_24.html#autoid_163" data-menu-target="autoid_163">Changes compared to 2.3.24 Release Candidate 1</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_23.html" data-menu-target="versions_2_3_23">2.3.23</a><ul><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_164" data-menu-target="autoid_164">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_165" data-menu-target="autoid_165">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_166" data-menu-target="autoid_166">Other changes</a></li><li><a class="page-menu-link" href="versions_2_3_23.html#autoid_167" data-menu-target="autoid_167">Notes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_22.html" data-menu-target="versions_2_3_22">2.3.22</a><ul><li><a class="page-menu-link" href="versions_2_3_22.html#autoid_168" data-
 menu-target="autoid_168">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_22.html#autoid_169" data-menu-target="autoid_169">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_22.html#autoid_170" data-menu-target="autoid_170">Notes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_21.html" data-menu-target="versions_2_3_21">2.3.21</a><ul><li><a class="page-menu-link" href="versions_2_3_21.html#autoid_171" data-menu-target="autoid_171">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_21.html#autoid_172" data-menu-target="autoid_172">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_21.html#autoid_173" data-menu-target="autoid_173">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_20.html" data-menu-target="versions_2_3_20">2.3.20</a><ul><li><a class="page-menu-link" href="versions_2_3_20.html#autoid_174" data-men
 u-target="autoid_174">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_20.html#autoid_175" data-menu-target="autoid_175">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_20.html#autoid_176" data-menu-target="autoid_176">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_19.html" data-menu-target="versions_2_3_19">2.3.19</a><ul><li><a class="page-menu-link" href="versions_2_3_19.html#autoid_177" data-menu-target="autoid_177">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_19.html#autoid_178" data-menu-target="autoid_178">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_18.html" data-menu-target="versions_2_3_18">2.3.18</a><ul><li><a class="page-menu-link" href="versions_2_3_18.html#autoid_179" data-menu-target="autoid_179">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_18.html#auto
 id_180" data-menu-target="autoid_180">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_17.html" data-menu-target="versions_2_3_17">2.3.17</a><ul><li><a class="page-menu-link" href="versions_2_3_17.html#autoid_181" data-menu-target="autoid_181">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_17.html#autoid_182" data-menu-target="autoid_182">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_17.html#autoid_183" data-menu-target="autoid_183">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_16.html" data-menu-target="versions_2_3_16">2.3.16</a><ul><li><a class="page-menu-link" href="versions_2_3_16.html#autoid_184" data-menu-target="autoid_184">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_16.html#autoid_185" data-menu-target="autoid_185">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2
 _3_15.html" data-menu-target="versions_2_3_15">2.3.15</a><ul><li><a class="page-menu-link" href="versions_2_3_15.html#autoid_186" data-menu-target="autoid_186">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_15.html#autoid_187" data-menu-target="autoid_187">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_14.html" data-menu-target="versions_2_3_14">2.3.14</a><ul><li><a class="page-menu-link" href="versions_2_3_14.html#autoid_188" data-menu-target="autoid_188">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_14.html#autoid_189" data-menu-target="autoid_189">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_13.html" data-menu-target="versions_2_3_13">2.3.13</a><ul><li><a class="page-menu-link" href="versions_2_3_13.html#autoid_190" data-menu-target="autoid_190">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_
 2_3_13.html#autoid_191" data-menu-target="autoid_191">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_12.html" data-menu-target="versions_2_3_12">2.3.12</a><ul><li><a class="page-menu-link" href="versions_2_3_12.html#autoid_192" data-menu-target="autoid_192">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_11.html" data-menu-target="versions_2_3_11">2.3.11</a><ul><li><a class="page-menu-link" href="versions_2_3_11.html#autoid_193" data-menu-target="autoid_193">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_11.html#autoid_194" data-menu-target="autoid_194">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_11.html#autoid_195" data-menu-target="autoid_195">Documentation changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_10.html" data-menu-target="versions_2_3_10">2.3.10</a><ul><li><a class="page-menu-link" href=
 "versions_2_3_10.html#autoid_196" data-menu-target="autoid_196">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_10.html#autoid_197" data-menu-target="autoid_197">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_9.html" data-menu-target="versions_2_3_9">2.3.9</a><ul><li><a class="page-menu-link" href="versions_2_3_9.html#autoid_198" data-menu-target="autoid_198">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_8.html" data-menu-target="versions_2_3_8">2.3.8</a><ul><li><a class="page-menu-link" href="versions_2_3_8.html#autoid_199" data-menu-target="autoid_199">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_7.html" data-menu-target="versions_2_3_7">2.3.7</a><ul><li><a class="page-menu-link" href="versions_2_3_7.html#autoid_200" data-menu-target="autoid_200">Changes on the Java side</a></li><li><a class="page-menu-link" href
 ="versions_2_3_7.html#autoid_201" data-menu-target="autoid_201">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html" data-menu-target="versions_2_3_7rc1">2.3.7 RC1</a><ul><li><a class="page-menu-link" href="versions_2_3_7rc1.html#autoid_202" data-menu-target="autoid_202">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html#autoid_203" data-menu-target="autoid_203">Changes on the FTL side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_6.html" data-menu-target="versions_2_3_6">2.3.6</a><ul><li><a class="page-menu-link" href="versions_2_3_6.html#autoid_204" data-menu-target="autoid_204">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_5.html" data-menu-target="versions_2_3_5">2.3.5</a><ul><li><a class="page-menu-link" href="versions_2_3_5.html#autoid_205" data-menu-target="autoid_205">Changes on the FTL side</a></li><li><a class="page-me
 nu-link" href="versions_2_3_5.html#autoid_206" data-menu-target="autoid_206">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_4.html" data-menu-target="versions_2_3_4">2.3.4</a><ul><li><a class="page-menu-link" href="versions_2_3_4.html#autoid_207" data-menu-target="autoid_207">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_4.html#autoid_208" data-menu-target="autoid_208">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_4.html#autoid_209" data-menu-target="autoid_209">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_3.html" data-menu-target="versions_2_3_3">2.3.3</a><ul><li><a class="page-menu-link" href="versions_2_3_3.html#autoid_210" data-menu-target="autoid_210">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_3.html#autoid_211" data-menu-target="autoid_211">Changes on the Java side</a></li><li><a class="pag
 e-menu-link" href="versions_2_3_3.html#autoid_212" data-menu-target="autoid_212">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_2.html" data-menu-target="versions_2_3_2">2.3.2</a><ul><li><a class="page-menu-link" href="versions_2_3_2.html#autoid_213" data-menu-target="autoid_213">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_3_1.html" data-menu-target="versions_2_3_1">2.3.1</a><ul><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_214" data-menu-target="autoid_214">Possible backward compatibility issue</a></li><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_215" data-menu-target="autoid_215">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_216" data-menu-target="autoid_216">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_217" data-menu-target="autoid_217">Other changes</a></li><li><a cla
 ss="page-menu-link" href="versions_2_3_1.html#autoid_218" data-menu-target="autoid_218">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="versions_2_3_1.html#autoid_219" data-menu-target="autoid_219">Differences between the preview release and final
+release</a></li></ul></li></ul></li><li><a class="page-menu-link" href="versions_2_3.html" data-menu-target="versions_2_3">2.3</a><ul><li><a class="page-menu-link" href="versions_2_3.html#autoid_220" data-menu-target="autoid_220">Non backward-compatible changes!</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_221" data-menu-target="autoid_221">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_222" data-menu-target="autoid_222">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_223" data-menu-target="autoid_223">Other changes</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_224" data-menu-target="autoid_224">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="versions_2_3.html#autoid_225" data-menu-target="autoid_225">Differences between the final release and Release Candidate
+4</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_226" data-menu-target="autoid_226">Differences between the Release Candidate 4 and Release
+Candidate 3</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_227" data-menu-target="autoid_227">Differences between the Release Candidate 3 and Release
+Candidate 2</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_228" data-menu-target="autoid_228">Differences between the Release Candidate 2 and Release
+Candidate 1</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_229" data-menu-target="autoid_229">Differences between the Release Candidate 1 and Preview 16
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_230" data-menu-target="autoid_230">Differences between the Preview 16 and Preview 15
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_231" data-menu-target="autoid_231">Differences between the Preview 15 and Preview 14
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_232" data-menu-target="autoid_232">Differences between the Preview 14 and Preview 13
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_233" data-menu-target="autoid_233">Differences between the Preview 13 and Preview 12
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_234" data-menu-target="autoid_234">Differences between the Preview 12 and Preview 11
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_235" data-menu-target="autoid_235">Differences between the Preview 11 and Preview 10
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_236" data-menu-target="autoid_236">Differences between the Preview 10 and Preview 9
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_237" data-menu-target="autoid_237">Differences between the Preview 9 and Preview 8
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_238" data-menu-target="autoid_238">Differences between the Preview 8 and Preview 7
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_239" data-menu-target="autoid_239">Differences between the Preview 7 and Preview 6
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_240" data-menu-target="autoid_240">Differences between the Preview 6 and Preview 5
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_241" data-menu-target="autoid_241">Differences between the Preview 5 and Preview 4
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_242" data-menu-target="autoid_242">Differences between the Preview 4 and Preview 3
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_243" data-menu-target="autoid_243">Differences between the Preview 3 and Preview 2
+releases</a></li><li><a class="page-menu-link" href="versions_2_3.html#autoid_244" data-menu-target="autoid_244">Differences between the Preview 2 and Preview 1
+releases</a></li></ul></li></ul></li><li><a class="page-menu-link" href="versions_2_2_8.html" data-menu-target="versions_2_2_8">2.2.8</a><ul><li><a class="page-menu-link" href="versions_2_2_8.html#autoid_245" data-menu-target="autoid_245">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_2_8.html#autoid_246" data-menu-target="autoid_246">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2_8.html#autoid_247" data-menu-target="autoid_247">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_7.html" data-menu-target="versions_2_2_7">2.2.7</a><ul><li><a class="page-menu-link" href="versions_2_2_7.html#autoid_248" data-menu-target="autoid_248">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_6.html" data-menu-target="versions_2_2_6">2.2.6</a><ul><li><a class="page-menu-link" href="versions_2_2_6.html#autoid_249" data-menu-target="autoid_249">Changes on the FTL
  side</a></li><li><a class="page-menu-link" href="versions_2_2_6.html#autoid_250" data-menu-target="autoid_250">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2_6.html#autoid_251" data-menu-target="autoid_251">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_5.html" data-menu-target="versions_2_2_5">2.2.5</a><ul><li><a class="page-menu-link" href="versions_2_2_5.html#autoid_252" data-menu-target="autoid_252">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_4.html" data-menu-target="versions_2_2_4">2.2.4</a><ul><li><a class="page-menu-link" href="versions_2_2_4.html#autoid_253" data-menu-target="autoid_253">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2_4.html#autoid_254" data-menu-target="autoid_254">Other changes</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_3.html" data-menu-target="versions_2_2_3">2.2.3</a><ul><li><a c
 lass="page-menu-link" href="versions_2_2_3.html#autoid_255" data-menu-target="autoid_255">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_2_3.html#autoid_256" data-menu-target="autoid_256">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_2.html" data-menu-target="versions_2_2_2">2.2.2</a><ul><li><a class="page-menu-link" href="versions_2_2_2.html#autoid_257" data-menu-target="autoid_257">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2_1.html" data-menu-target="versions_2_2_1">2.2.1</a><ul><li><a class="page-menu-link" href="versions_2_2_1.html#autoid_258" data-menu-target="autoid_258">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_2_1.html#autoid_259" data-menu-target="autoid_259">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_2.html" data-menu-target="versions_2_2">2.2</a><ul><li><a class="pa
 ge-menu-link" href="versions_2_2.html#autoid_260" data-menu-target="autoid_260">Non backward-compatible changes!</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_261" data-menu-target="autoid_261">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_262" data-menu-target="autoid_262">Changes on the Java side</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_263" data-menu-target="autoid_263">Other changes</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_264" data-menu-target="autoid_264">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="versions_2_2.html#autoid_265" data-menu-target="autoid_265">Differences between the final and RC2 releases</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_266" data-menu-target="autoid_266">Differences between the RC2 and RC1 releases</a></li><li><a class="page-menu
 -link" href="versions_2_2.html#autoid_267" data-menu-target="autoid_267">Differences between the Preview 2 and RC1 releases</a></li><li><a class="page-menu-link" href="versions_2_2.html#autoid_268" data-menu-target="autoid_268">Differences between the Preview 1 and Preview 2
+releases</a></li></ul></li></ul></li><li><a class="page-menu-link" href="versions_2_1_5.html" data-menu-target="versions_2_1_5">2.1.5</a><ul><li><a class="page-menu-link" href="versions_2_1_5.html#autoid_269" data-menu-target="autoid_269">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_1_4.html" data-menu-target="versions_2_1_4">2.1.4</a><ul><li><a class="page-menu-link" href="versions_2_1_4.html#autoid_270" data-menu-target="autoid_270">Changes on the Java side</a></li></ul></li><li><a class="page-menu-link" href="versions_2_1_3.html" data-menu-target="versions_2_1_3">2.1.3</a><ul><li><a class="page-menu-link" href="versions_2_1_3.html#autoid_271" data-menu-target="autoid_271">Changes on the FTL side</a></li><li><a class="page-menu-link" href="versions_2_1_3.html#autoid_272" dat

<TRUNCATED>


[28/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_alphaidx.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_alphaidx.html b/builds/2.3.26-nightly/ref_builtins_alphaidx.html
new file mode 100644
index 0000000..08c1ad4
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_alphaidx.html
@@ -0,0 +1,503 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Alphabetical index - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Alphabetical index">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_alphaidx.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_alphaidx.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_alphaidx.html"><span itemprop="name">Alphabetical index</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li>?builtins</li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Alphabetical index"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_string.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_alphaidx" itemprop="headline">Alphabetical index</h1>
+</div></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>As of FreeMarker 2.3.23, you can use camel case instead of
+          snake case for directive names, like <code class="inline-code">startsWith</code>
+          instead of <code class="inline-code">starts_with</code>. But know that then within
+          the same template, FreeMarker will enforce the usage of camel case
+          for all identifiers that are part of the template language (user
+          defined names are not affected).</p>
+          </div>
+<ul>
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_abs">abs</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_ancestors">ancestors</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_buitin_api_and_has_api">api</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_numType">byte</a>
+          </li>
+
+          <li>
+            c <a href="ref_builtins_number.html#ref_builtin_c">for strings</a>, <a href="ref_builtins_boolean.html#ref_builtin_c_boolean">for booleans</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_cap_first">cap_first</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_capitalize">capitalize</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_rounding">ceiling</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_children">children</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_chop_linebreak">chop_linebreak</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_chunk">chunk</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_contains">contains</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_counter">counter</a>
+          </li>
+
+          <li>
+            date <a href="ref_builtins_date.html#ref_builtin_date_datetype">for
+            dates</a>, <a href="ref_builtins_string.html#ref_builtin_string_date">for
+            strings</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_date.html#ref_builtin_date_if_unknown">date_if_unknown</a>
+          </li>
+
+          <li>
+            datetime <a href="ref_builtins_date.html#ref_builtin_date_datetype">for
+            dates</a>, <a href="ref_builtins_string.html#ref_builtin_string_date">for
+            strings</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_date.html#ref_builtin_date_if_unknown">datetime_if_unknown</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_numType">double</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_esc">esc</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_ends_with">ends_with</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_ensure_ends_with">ensure_ends_with</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_ensure_starts_with">ensure_starts_with</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_eval">eval</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_first">first</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_rounding">floor</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_groups">groups</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_numType">float</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_buitin_api_and_has_api">has_api</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_has_content">has_content</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_has_next">has_next</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_html">html</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_index">index</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_index_of">index_of</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_numType">int</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_interpret">interpret</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_item_cycle">item_cycle</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_item_parity">item_parity</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_item_parity_cap">item_parity_cap</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_is_even_item">is_even_item</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_first">is_first</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_is_infinite">is_infinite</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_is_last">is_last</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_is_nan">is_nan</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_loop_var.html#ref_builtin_is_odd_item">is_odd_item</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_isType">is_<em>type</em></a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_date.html#ref_builtin_date_iso">iso,
+            iso_...</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_j_string">j_string</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_join">join</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_js_string">js_string</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_keep_after">keep_after</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_keep_after_last">keep_after_last</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_keep_before">keep_before</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_keep_before_last">keep_before_last</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_hash.html#ref_builtin_keys">keys</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_last">last</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_last_index_of">last_index_of</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_left_pad">left_pad</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_length">length</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_numType">long</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_lower_abc">lower_abc</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_lower_case">lower_case</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_markup_string">markup_string</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_matches">matches</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_namespace">namespace</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_new">new</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_next_sibling">next_sibling</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_no_esc">no_esc</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_node_namespace">node_namespace</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_node_name">node_name</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_node_type">node_type</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_number">number</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date,
+            number_to_datetime, number_to_time</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_parent">parent</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_previous_sibling">previous_sibling</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_replace">replace</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_remove_beginning">remove_beginning</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_remove_ending">remove_ending</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_reverse">reverse</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_right_pad">right_pad</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_rounding">round</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_node.html#ref_builtin_root">root</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_rtf">rtf</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_expert.html#ref_builtin_numType">short</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_size">size</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_sort">sort</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_seq_contains">seq_contains</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_seq_index_of">seq_index_of</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_seq_last_index_of">seq_last_index_of</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_sequence.html#ref_builtin_sort_by">sort_by</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_split">split</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_starts_with">starts_with</a>
+          </li>
+
+          <li>
+            string: <a href="ref_builtins_string.html#ref_builtin_string_for_string">for
+            strings</a>, <a href="ref_builtins_number.html#ref_builtin_string_for_number">for
+            numbers</a>, <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">for
+            booleans</a>, <a href="ref_builtins_date.html#ref_builtin_string_for_date">for
+            date/time/date-time</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_substring">substring</a>
+            (deprecated)
+          </li>
+
+          <li>
+            <a href="ref_builtins_type_independent.html#ref_builtin_switch">switch</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_boolean.html#ref_builtin_then">then</a>
+          </li>
+
+          <li>
+            time <a href="ref_builtins_date.html#ref_builtin_date_datetype">for
+            date/time/date-time</a>, <a href="ref_builtins_string.html#ref_builtin_string_date">for strings</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_date.html#ref_builtin_date_if_unknown">time_if_unknown</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_trim">trim</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_uncap_first">uncap_first</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_number.html#ref_builtin_upper_abc">upper_abc</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_upper_case">upper_case</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_url">url</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_hash.html#ref_builtin_values">values</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_word_list">word_list</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_xhtml">xhtml</a>
+          </li>
+
+          <li>
+            <a href="ref_builtins_string.html#ref_builtin_xml">xml</a>
+          </li>
+        </ul><p>See the built-ins filtered by left-hand-value type <a href="ref_builtins.html">here</a>.</p><p>If you don&#39;t find a built-in here that you have seen in a
+        working template, probably you will find it here: <a href="ref_deprecated.html">Deprecated FTL constructs</a></p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_string.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_boolean.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_boolean.html b/builds/2.3.26-nightly/ref_builtins_boolean.html
new file mode 100644
index 0000000..5bdd23c
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_boolean.html
@@ -0,0 +1,229 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-ins for booleans - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-ins for booleans">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_boolean.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_boolean.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_boolean.html"><span itemprop="name">Built-ins for booleans</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Built-ins for booleans"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_date.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_sequence.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_boolean" itemprop="headline">Built-ins for booleans</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_c_boolean" data-menu-target="ref_builtin_c_boolean">c (when used with boolean)</a></li><li><a class="page-menu-link" href="#ref_builtin_string_for_boolean" data-menu-target="ref_builtin_string_for_boolean">string (when used with a boolean value)</a></li><li><a class="page-menu-link" href="#ref_builtin_then" data-menu-target="ref_builtin_then">then</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_c_boolean">c (when used with boolean)</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.20.</p>
+            </div>
+
+
+          <p>This built-in converts a boolean to string for a
+          "computer language" as opposed to for human audience.
+          The result will be <code class="inline-code">&quot;true&quot;</code> or
+          <code class="inline-code">&quot;false&quot;</code>, regardless of the
+          <code class="inline-code">boolean_format</code> setting. When generating
+          JavaScript and such, this should be used, as otherwise changing the
+          <code class="inline-code">boolean_format</code> can break the generated
+          computer-language output.</p>
+
+          <p>Note that this built-in <a href="ref_builtins_number.html#ref_builtin_c">also
+          works on strings</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_string_for_boolean">string (when used with a boolean value)</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p><em>All usages of this built-in has been deprecated; see
+          below.</em></p>
+
+          <p>Converts a boolean to a string. You can use it in two
+          ways:</p>
+
+          <ul>
+            <li>
+              <p>As <code class="inline-code">foo?string(&quot;yes&quot;, &quot;no&quot;)</code>:
+              <em>Deprecated starting from FreeMarker 2.3.23: use <a href="#ref_builtin_then"><code>?then(&quot;yes&quot;,
+              &quot;no&quot;)</code></a> instead. </em>This will return the
+              first parameter (here: <code class="inline-code">&quot;yes&quot;</code>) if the boolean
+              is true, otherwise the second parameter (here:
+              <code class="inline-code">&quot;no&quot;</code>). Note that the return value is always a
+              string; if the parameters were numbers, they would be converted
+              to strings first. Also note that both parameters are evaluated,
+              despite that only one of them will be used; this might have
+              negative impact if the parameters aren&#39;t just literals.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">foo?string</code>: <em>Deprecated
+              starting from FreeMarker 2.3.20: use <a href="#ref_builtin_c_boolean"><code>?c</code></a>
+              instead, or set the <code class="inline-code">boolean_format</code> <a href="ref_directive_setting.html">setting</a> to something like
+              <code class="inline-code">&quot;yes,no&quot;</code> and then the conversion can happen
+              automatically</em>. If you still need to know about this,
+              this will convert the boolean to string using the default
+              strings for representing true and false values. By default, true
+              is rendered as <code class="inline-code">&quot;true&quot;</code> and false is rendered
+              as <code class="inline-code">&quot;false&quot;</code>. This is mostly useful if you
+              generate source code with FreeMarker <em>(but use
+              <code class="inline-code">?c</code> for that starting from 2.3.20)</em>,
+              since the values are not locale (language, country) sensitive.
+              To change these default strings, you can use the
+              <code class="inline-code">boolean_format</code> <a href="ref_directive_setting.html">setting</a>.</p>
+
+              <p class="programmers-note">Note, that in the very rare case
+              when a value is multi-typed and is both a boolean and a string,
+              then the string value of the variable will be returned, and so
+              the <code class="inline-code">boolean_format</code> setting will have no
+              effect.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_then">then</h2>
+
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Used like
+          <code class="inline-code"><em class="code-color">booleanExp</em>?then(<em class="code-color">whenTrue</em>,
+          <em class="code-color">whenFalse</em>)</code>, fills the same role
+          as the ternary operator in C-like languages (i.e.,
+          <code class="inline-code"><em class="code-color">booleanExp</em> ?
+          <em class="code-color">whenTrue</em> :
+          <em class="code-color">whenFalse</em></code>). If
+          <code class="inline-code"><em class="code-color">booleanExp</em></code> evaluates
+          to boolean true then it evaluates and returns its first argument, or
+          else if <code class="inline-code"><em class="code-color">booleanExp</em></code>
+          evaluates to boolean false then it evaluates and return its second
+          argument. Off course, all three expression can be arbitrary complex.
+          The argument expressions can have any type, even different
+          types.</p>
+
+          <p>An important special property of this built-in is that only
+          one of the argument expressions will be evaluated. This is unlike
+          with normal method calls, where all argument expressions are
+          evaluated, regardless if the method will need them. This also means
+          that the argument that&#39;s not needed can even refer to missing
+          variables without causing error. (It still can&#39;t be syntactically
+          invalid of course.)</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign foo = true&gt;
+${foo?then(&#39;Y&#39;, &#39;N&#39;)}
+
+&lt;#assign foo = false&gt;
+${foo?then(&#39;Y&#39;, &#39;N&#39;)}
+
+&lt;#assign x = 10&gt;
+&lt;#assign y = 20&gt;
+&lt;#-- Prints 100 plus the maximum of x and y: --&gt;
+${100 + (x &gt; y)?then(x, y)}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Y
+
+N
+
+120</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>If you need to choose based on a non-boolean value, you
+            should use the <a href="ref_builtins_type_independent.html#ref_builtin_switch"><code>switch</code>
+            built-in</a> instead of nesting multiple
+            <code class="inline-code">then</code>-s into each other, like
+            <code class="inline-code">priority?switch(1, &quot;low&quot;, 2, &quot;medium&quot;, 3,
+            &quot;high&quot;)</code>, or even <code class="inline-code">true?switch(priority &lt;= 1,
+            &quot;low&quot;, priority == 2, &quot;medium&quot;, priority &gt;= 3,
+            &quot;high&quot;)</code>.</p>
+            </div>
+
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_date.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_sequence.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_date.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_date.html b/builds/2.3.26-nightly/ref_builtins_date.html
new file mode 100644
index 0000000..1548cdd
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_date.html
@@ -0,0 +1,545 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-ins for date/time/date-time values - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-ins for date/time/date-time values">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_date.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_date.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_date.html"><span itemprop="name">Built-ins for date/time/date-time values</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Built-ins for date/time/date-time values"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_number.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_boolean.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_date" itemprop="headline">Built-ins for date/time/date-time values</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_date_datetype" data-menu-target="ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+value)</a></li><li><a class="page-menu-link" href="#ref_builtin_date_if_unknown" data-menu-target="ref_builtin_date_if_unknown">date_if_unknown, time_if_unknown, datetime_if_unknown</a></li><li><a class="page-menu-link" href="#ref_builtin_date_iso" data-menu-target="ref_builtin_date_iso">iso_...</a></li><li><a class="page-menu-link" href="#ref_builtin_string_for_date" data-menu-target="ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+          value)</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>These built-ins can be used to specify which parts of the
+          date-like variable are in use:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">date</code>: Date only, no time of the
+              day.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">time</code>: Only the time of the day, no date
+              part</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">datetime</code>: Both date and time</p>
+            </li>
+          </ul>
+
+          <p>Ideally, you do not need to use these built-ins.
+          Unfortunately, because of the technical limitations of the Java
+          platform, FreeMarker sometimes can&#39;t find out which parts of a
+          date-like value is a date, a time or a date-time; ask the
+          programmers which variables has this problem. If FreeMarker has to
+          execute an operation where this information is needed -- such as
+          displaying the value as text -- but it does not know which parts are
+          in use, it will stop with error. This is when you have to use these
+          built-ins. For example, assume <code class="inline-code">openingTime</code> is a
+          such problematic variable:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = openingTime&gt; &lt;#-- no problem can occur here --&gt;
+${openingTime?time} &lt;#-- without ?time it would fail --&gt;
+&lt;#-- For the sake of better understanding, consider this: --&gt;
+&lt;#assign openingTime = openingTime?time&gt;
+${openingTime} &lt;#-- this will work now --&gt;</pre></div>
+
+          <p>These built-ins can also be used to convert date-time values
+          to date or time. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">Last updated: ${lastUpdated} &lt;#-- assume that lastUpdated is a date-time value --&gt;
+Last updated date: ${lastUpdated?date}
+Last updated time: ${lastUpdated?time}</pre></div>
+
+          <p>will output something like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Last updated: 04/25/2003 08:00:54 PM
+Last updated date: 04/25/2003
+Last updated time: 08:00:54 PM</pre></div>
+
+          <p>If the left side of the <code class="inline-code">?</code> is string, then
+          these built-ins <a href="ref_builtins_string.html#ref_builtin_string_date">convert
+          strings to date/time/date-time</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_date_if_unknown">date_if_unknown, time_if_unknown, datetime_if_unknown</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>The <code class="inline-code">date_if_unknown</code>,
+          <code class="inline-code">time_if_unknown</code>,
+          <code class="inline-code">datetime_if_unknown</code> built-ins mark a date-like
+          value with some of the sub-types: date without time, time, or
+          date-time, respectively. However, if the value already holds this
+          information, the built-in has no effect. That is, it will never
+          convert the sub-type of a value, it only adds the sub-type if it was
+          unknown.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_date_iso">iso_...</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p><em>These built-ins are deprecated</em> since
+            FreeMarker 2.3.21, where the <code class="inline-code">date_format</code>,
+            <code class="inline-code">time_format</code> and
+            <code class="inline-code">datetime_format</code> settings understand
+            <code class="inline-code">&quot;iso&quot;</code> (for ISO 8601:2004 format) and
+            <code class="inline-code">&quot;xs&quot;</code> (for XML Schema format) in additionally to
+            the Java <code class="inline-code">SimpleDateFormat</code> patterns. Thus the
+            default format can be set to ISO 8601, or for one time ISO
+            formatting you can use <code class="inline-code">myDate?string.iso</code>. <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">See more
+            here...</a></p>
+            </div>
+
+
+          <p>These built-ins convert a date, time or date-time value to
+          string that follows ISO 8601:2004 &quot;extended&quot; format.</p>
+
+          <p>This built-in has several variations:
+          <code class="inline-code">iso_utc</code>, <code class="inline-code">iso_local</code>,
+          <code class="inline-code">iso_utc_nz</code>, <code class="inline-code">iso_local_nz</code>,
+          <code class="inline-code">iso_utc_m</code>, <code class="inline-code">iso_utc_m_nz</code>, etc.
+          The name is constructed from the following words in this order, each
+          separated with a <code class="inline-code">_</code> from the next:</p>
+
+          <div class="orderedlist"><ol type="1">
+            <li>
+              <p><code class="inline-code">iso</code> (required)</p>
+            </li>
+
+            <li>
+              <p>Either <code class="inline-code">utc</code> or <code class="inline-code">local</code>
+              (required (except when it&#39;s given with a parameter, but see that
+              later)): Specifies whether you want to print the
+              date/time/date-time according to UTC or according the current
+              time zone. The current time zone is decided by the
+              <code class="inline-code">time_zone</code> FreeMarker setting and is normally
+              configured by the programmers outside the templates (but it can
+              also be set in a template, like <code class="inline-code">&lt;#setting
+              time_zone=&quot;America/New_York&quot;&gt;</code> for example). Note
+              that if the <code class="inline-code">sql_date_and_time_time_zone</code>
+              FreeMarker setting is set and non-<code class="inline-code">null</code>, then
+              for <code class="inline-code">java.sql.Date</code> and
+              <code class="inline-code">java.sql.Time</code> values (i.e., for date-only and
+              time-only values that are coming from database via SQL)
+              <code class="inline-code">local</code> will mean that time zone instead of the
+              value of the <code class="inline-code">time_zone</code> setting.</p>
+            </li>
+
+            <li>
+              <p>Either <code class="inline-code">h</code> or <code class="inline-code">m</code> or
+              <code class="inline-code">ms</code> (optional): The accuracy of the time part.
+              When omitted, it defaults to seconds accuracy (like
+              <code class="inline-code">12:30:18</code>). <code class="inline-code">h</code> means hours
+              accuracy (like <code class="inline-code">12</code>), <code class="inline-code">m</code>
+              means minutes accuracy (<code class="inline-code">12:30</code>), and
+              <code class="inline-code">ms</code> means milliseconds accuracy
+              (<code class="inline-code">12:30:18.25</code>, where we have 250 ms). Note
+              that when using <code class="inline-code">ms</code>, the milliseconds are
+              displayed as fraction seconds (following the standard) and will
+              not have trailing <code class="inline-code">0</code>-s. Thus, if the the
+              millisecond part happens to be <code class="inline-code">0</code>, the whole
+              fraction second part will be omitted. Also note that the
+              fraction seconds are always separated with a dot , not with
+              comma (to follow the Web conventions and XML Schema
+              time/dateTime canonical format).</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">nz</code> (optional): <code class="inline-code">nz</code>
+              (like in <code class="inline-code">${foo?utc_local_nz}</code>) stands for
+              "no zone", which means that the time zone offset
+              (like <code class="inline-code">+02:00</code> or or <code class="inline-code">-04:30</code>
+              or <code class="inline-code">Z</code>) will not be displayed. If this part is
+              omitted (like in <code class="inline-code">${foo?utc_local}</code>) the zone
+              will be displayed, except in two cases:</p>
+
+              <ul>
+                <li>
+                  <p>If the value is a date (no time part) value (again,
+                  ISO 8901 doesn&#39;t allow it then)</p>
+                </li>
+
+                <li>
+                  <p>If the value is a <code class="inline-code">java.sql.Time</code> and
+                  the <code class="inline-code">incompatible_improvements</code> (often set
+                  via the Java <code class="inline-code">Configuration</code> constructor
+                  parameter) FreeMarker configuration setting is at least
+                  2.3.21 (or 2.3.24 when you are inside a string literal).
+                  This is because most databases store time values that aren&#39;t
+                  in any time zone, but just store hour, minute, second, and
+                  decimal second field values, so showing the time zone
+                  doesn&#39;t make sense.</p>
+                </li>
+              </ul>
+
+              <p>Note that since FreeMarker 2.3.19, the offset always
+              contains the minutes for XML Schema date/time/dateTime format
+              compliance. (However, if you primarily generate for the XML
+              Schema format, use the xs format.)</p>
+            </li>
+          </ol></div>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign aDateTime = .now&gt;
+&lt;#assign aDate = aDateTime?date&gt;
+&lt;#assign aTime = aDateTime?time&gt;
+
+Basic formats:
+${aDate?iso_utc}
+${aTime?iso_utc}
+${aDateTime?iso_utc}
+
+Different accuracies:
+${aTime?iso_utc_ms}
+${aDateTime?iso_utc_m}
+
+Local time zone:
+${aDateTime?iso_local}</pre></div>
+
+          <p>A possible output (depends on current time and time
+          zone):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Basic formats:
+2011-05-16
+21:32:13Z
+2011-05-16T21:32:13Z
+
+Different accuracies:
+21:32:13.868Z
+2011-05-16T21:32Z
+
+Local time zone:
+2011-05-16T23:32:13+02:00</pre></div>
+
+          <p>There is yet another group of <code class="inline-code">iso_...</code>
+          built-in variants, where you omit the <code class="inline-code">local</code> or
+          <code class="inline-code">utc</code> word from the name and instead specify the
+          time zone as a parameter to the built-in. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign aDateTime = .now&gt;
+${aDateTime?iso(&quot;UTC&quot;)}
+${aDateTime?iso(&quot;GMT-02:30&quot;)}
+${aDateTime?iso(&quot;Europe/Rome&quot;)}
+
+The usual variations are supported:
+${aDateTime?iso_m(&quot;GMT+02&quot;)}
+${aDateTime?iso_m_nz(&quot;GMT+02&quot;)}
+${aDateTime?iso_nz(&quot;GMT+02&quot;)}</pre></div>
+
+          <p>A possible output (depends on current time and time
+          zone):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">2011-05-16T21:43:58Z
+2011-05-16T19:13:58-02:30
+2011-05-16T23:43:58+02:00
+
+The usual variations are supported:
+2011-05-16T23:43+02:00
+2011-05-16T23:43
+2011-05-16T23:43:58</pre></div>
+
+          <p>If the time zone parameter can&#39;t be interpreted, the template
+          processing will be terminated with error.</p>
+
+          <p class="programmers-note">The parameter can be a
+          <code class="inline-code">java.util.TimeZone</code> object too (which is possibly
+          the return value of a Java method, or it&#39;s in the data-model), not
+          just a string.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_string_for_date">string (when used with a date/time/date-time value)</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>This built-in converts a date to a string, with the specified
+          formatting.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>You should need this built-in rarely, as the default format
+            of date/time/date-time values can be specified globally <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">with the
+            <code>date_format</code>, <code>time_format</code> and
+            <code>datetime_format</code> settings</a> of FreeMarker.
+            Use this built-in only at the places where the desired format
+            differs from the one normally used. For the other places the
+            default format should be set properly by the programmers, outside
+            the templates.</p>
+            </div>
+
+
+          <p>The desired format can be specified like
+          <code class="inline-code">?string.<em class="code-color">format</em></code> or
+          <code class="inline-code">?string[&quot;<em class="code-color">format</em>&quot;]</code>(or
+          the historical equivalent,
+          <code class="inline-code">?string(&quot;<em class="code-color">format</em>&quot;)</code>).
+          These are equivalent, except that with the quoted formats you can
+          include any characters in the
+          <code class="inline-code"><em class="code-color">format</em></code>, like spaces.
+          The syntax of <code class="inline-code"><em class="code-color">format</em></code>
+          is exactly the same as of the <code class="inline-code">date_format</code>,
+          <code class="inline-code">time_format</code> and
+          <code class="inline-code">datetime_format</code> configuration settings; <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">see the documentation of the
+          possible values there</a>.</p>
+
+          <p>Example: If the locale of the output is U.S. English, and the
+          time zone is the U.S. Pacific Time zone, and
+          <code class="inline-code">openingTime</code> is a
+          <code class="inline-code">java.sql.Time</code>, <code class="inline-code">nextDiscountDay</code>
+          is <code class="inline-code">java.sql.Date</code> and
+          <code class="inline-code">lastUpdated</code> is
+          <code class="inline-code">java.sql.Timestamp</code> or
+          <code class="inline-code">java.util.Date</code> then this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Predefined format names: --&gt;
+
+${openingTime?string.short}
+${openingTime?string.medium}
+${openingTime?string.long}
+${openingTime?string.full}
+${openingTime?string.xs} &lt;#-- XSD xs:time --&gt;
+${openingTime?string.iso} &lt;#-- ISO 8601 time --&gt;
+
+${nextDiscountDay?string.short}
+${nextDiscountDay?string.medium}
+${nextDiscountDay?string.long}
+${nextDiscountDay?string.full}
+${nextDiscountDay?string.xs} &lt;#-- XSD xs:date --&gt;
+${nextDiscountDay?string.iso} &lt;#-- ISO 8601 date --&gt;
+
+${lastUpdated?string.short}
+${lastUpdated?string.medium}
+${lastUpdated?string.long}
+${lastUpdated?string.full}
+${lastUpdated?string.medium_short} &lt;#-- medium date, short time --&gt;
+${lastUpdated?string.xs} &lt;#-- XSD xs:dateTime --&gt;
+${lastUpdated?string.iso} &lt;#-- ISO 8601 combined date and time --&gt;
+
+&lt;#-- <a href="pgui_config_custom_formats.html">Programmer-defined named format</a> (@ + name): --&gt;
+${lastUpdated?string.@fileDate}
+
+&lt;#-- Advanced ISO 8601 and XSD formatting: --&gt;
+${lastUpdated?string.iso_m_u}
+${lastUpdated?string.xs_ms_nz}
+
+&lt;#-- SimpleDateFormat patterns: --&gt;
+${lastUpdated?string[&quot;dd.MM.yyyy, HH:mm&quot;]}
+${lastUpdated?string[&quot;EEEE, MMMM dd, yyyy, hh:mm a &#39;(&#39;zzz&#39;)&#39;&quot;]}
+${lastUpdated?string[&quot;EEE, MMM d, &#39;&#39;yy&quot;]}
+${lastUpdated?string.yyyy} &lt;#-- Same as ${lastUpdated?string[&quot;yyyy&quot;]} --&gt;</pre></div>
+
+          <p>will print something like this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">01:45 PM
+01:45:09 PM
+01:45:09 PM PST
+01:45:09 PM PST
+13:45:09-08:00
+13:45:09-08:00
+
+2/20/07
+Apr 20, 2007
+April 20, 2007
+Friday, April 20, 2007
+2007-02-20-08:00
+2007-02-20
+
+2/20/07 01:45 PM
+Feb 20, 2007 01:45:09 PM
+February 20, 2007 01:45:09 PM PST
+Friday, February 20, 2007 01:45:09 PM PST
+Feb 8, 2003 9:24 PM
+2007-02-20T13:45:09-08:00
+2007-02-20T13:45:09-08:00
+
+Apr/20/2007 13:45
+
+2007-02-20T21:45Z
+2007-02-20T13:45:09.000
+
+08.04.2003 21:24
+Tuesday, April 08, 2003, 09:24 PM (PDT)
+Tue, Apr 8, &#39;03
+2003</pre></div>
+
+          <p>Note that with custom formats like in
+          <code class="inline-code">lastUpdated?string.@fileDate</code> above, templates can
+          just refer to the application-domain meaning, and the exact format
+          can be specified outside the templates, on a central place.
+          (Programmers can read about <a href="pgui_config_custom_formats.html">defining such named formats
+          here...</a>)</p>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>Unfortunately, because of the limitations of the Java
+            platform, it can happen that you have date-like variables in the
+            data-model, where FreeMarker can&#39;t decide if the variable is a
+            date (year, month, day), or a time (hour, minute, second,
+            millisecond) or a date-time. In this case, FreeMarker doesn&#39;t know
+            how to display the value when you write something like
+            <code class="inline-code">${lastUpdated?string.short}</code> or
+            <code class="inline-code">${lastUpdated?string.xs}</code>, i.e., a format that
+            doesn&#39;t specify the exact fields to display, or if you simply use
+            <code class="inline-code">${lastUpdated}</code>. Then it will have to stop with
+            error. To prevent this, you can help FreeMarker with the <a href="#ref_builtin_date_datetype"><code>?date</code>,
+            <code>?time</code> and <code>?datetime</code>
+            built-ins</a>. For example:
+            <code class="inline-code">${lastUpdated?datetime?string.short}</code>. Ask the
+            programmers if certain variables of the data-model have this
+            problem, or always use <code class="inline-code">?date</code>,
+            <code class="inline-code">?time</code> and <code class="inline-code">?datetime</code>
+            built-ins to be on the safe side.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>You never need to use <code class="inline-code">?date</code>,
+            <code class="inline-code">?time</code> or <code class="inline-code">?datetime</code> with
+            format patterns like <code class="inline-code">&quot;yyyy.MM.dd HH:mm&quot;</code>, since
+            with the pattern you tell FreeMarker what parts of the date to
+            show. However, FreeMarker will trust you blindly, so you can show
+            &quot;noise&quot; if you display parts that are actually not stored in the
+            variable. For example, <code class="inline-code">${openingTime?string[&quot;yyyy-MM-dd
+            hh:mm:ss a&quot;]}</code>, where <code class="inline-code">openingTime</code>
+            stores only time, will display <code class="inline-code">1970-01-01 09:24:44
+            PM</code>.</p>
+            </div>
+
+
+          <p>To prevent misunderstandings, the format need not be a string
+          literal, it can be a variable or any other expression as far as it
+          evaluates to a string. For example, it can be like
+          <code class="inline-code">&quot;<em class="code-color">...</em>&quot;?string[myFormat]</code>.</p>
+
+          <p>See also: <a href="dgui_template_valueinsertion.html#dgui_template_valueinserion_universal_date">the
+          interpolation of dates</a></p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_number.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_boolean.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[38/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_template_overallstructure.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_template_overallstructure.html b/builds/2.3.26-nightly/dgui_template_overallstructure.html
new file mode 100644
index 0000000..fadc9c8
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_template_overallstructure.html
@@ -0,0 +1,131 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Overall structure - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Overall structure">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_template_overallstructure.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_template_overallstructure.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template.html"><span itemprop="name">The Template</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template_overallstructure.html"><span itemprop="name">Overall structure</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","The Template","Overall structure"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_template.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template_directives.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_template_overallstructure" itemprop="headline">Overall structure</h1>
+</div></div><p>Templates are in fact programs you write in a language called
+        <strong>FTL</strong> (for FreeMarker
+        Template Language). This is a quite simple programming language
+        designed for writing templates and nothing else.</p><p>A template (= FTL program) is a mix of the following
+        sections:</p><ul>
+          <li>
+            <p><strong>Text</strong>: Text that will be printed to the output as
+            is.</p>
+          </li>
+
+          <li>
+            <p><strong>Interpolation</strong>: These sections will be replaced with a calculated
+            value in the output. Interpolations are delimited by
+            <code class="inline-code">${</code> and <code class="inline-code">}</code> (or with
+            <code class="inline-code">#{</code> and <code class="inline-code">}</code>, but that shouldn&#39;t
+            be used anymore; <a href="ref_depr_numerical_interpolation.html">see more
+            here</a>).</p>
+          </li>
+
+          <li>
+            <p><strong>FTL tags</strong>: FTL tags are a bit similar to HTML tags, but they
+            are instructions to FreeMarker and will not be printed to the
+            output.</p>
+          </li>
+
+          <li>
+            <p><strong>Comments</strong>: Comments are similar to HTML comments, but they
+            are delimited by <code class="inline-code">&lt;#--</code> and
+            <code class="inline-code">--&gt;</code>. Comments will be ignored by FreeMarker,
+            and will not be written to the output.</p>
+          </li>
+        </ul><p>Let&#39;s see a concrete template. I have marked the template&#39;s
+        components with colors: <span class="marked-text">text</span>,
+        <span class="marked-interpolation">interpolation</span>, <span class="marked-ftl-tag">FTL tag</span>, <span class="marked-comment">comment</span>. With the <em><span class="marked-invisible-text">[BR]</span></em>-s I intend to visualize the
+        <a href="gloss.html#gloss.lineBreak">line breaks</a>.</p>
+
+<div class="code-wrapper"><pre class="code-block code-template"><span class="marked-text">&lt;html&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;head&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+��&lt;title&gt;Welcome!&lt;/title&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;/head&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;body&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+��<span class="marked-comment">&lt;#--�Greet�the�user�with�his/her�name�--&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+��&lt;h1&gt;Welcome�<span class="marked-interpolation">${user}</span>!&lt;/h1&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+��&lt;p&gt;We�have�these�animals:<em><span class="marked-invisible-text">[BR]</span></em>
+��&lt;ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+��<span class="marked-ftl-tag">&lt;#list�animals�as�animal&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+����&lt;li&gt;<span class="marked-interpolation">${animal.name}</span>�for�<span class="marked-interpolation">${animal.price}</span> Euros<em><span class="marked-invisible-text">[BR]</span></em>
+��<span class="marked-ftl-tag">&lt;/#list&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+��&lt;/ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;/body&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;/html&gt;</span></pre></div><p>FTL distinguishes upper case and lower case letters. So
+        <code class="inline-code">list</code> is good directive name, while
+        <code class="inline-code">List</code> is not. Similarly <code class="inline-code">${name}</code>
+        is not the same as <code class="inline-code">${Name}</code> or
+        <code class="inline-code">${NAME}</code></p><p>It is important to realize that <span class="marked-interpolation">interpolations</span> can be used in
+        <span class="marked-text">text</span> (and in string literal
+        expressions; see <a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">later</a>)
+        only.</p><p>An <span class="marked-ftl-tag">FTL tag</span> can&#39;t be inside
+        another <span class="marked-ftl-tag">FTL tag</span> nor inside an
+        <span class="marked-interpolation">interpolation</span>. For example
+        this is <em>WRONG</em>: <code class="inline-code">&lt;#if &lt;#include
+        &#39;foo&#39;&gt;=&#39;bar&#39;&gt;...&lt;/#if&gt;</code></p><p><span class="marked-comment">Comments</span> can be placed
+        inside <span class="marked-ftl-tag">FTL tags</span> and <span class="marked-interpolation">interpolations</span>. For
+        example:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template"><span class="marked-text">&lt;h1&gt;Welcome�<span class="marked-interpolation">${user <span class="marked-comment">&lt;#-- The name of user --&gt;</span>}</span>!&lt;/h1&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;p&gt;We�have�these�animals:<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-ftl-tag">&lt;#list�<span class="marked-comment">&lt;#-- some comment... --&gt;</span> animals as�<span class="marked-comment">&lt;#-- again... --&gt;</span> animal&gt;</span><em><span class="marked-invisible-text">[BR]</span></em></span>
+<em>...</em></pre></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>For those of you who have tried the above examples: You may
+          notice that some of spaces, tabs and line breaks are missing from
+          the template output, even though we said that <span class="marked-text">text</span> is printed as is. Don&#39;t bother with
+          it now. This is because the feature called &#39;&#39;white-space stripping&#39;&#39;
+          is turned on, and that automatically removes some superfluous
+          spaces, tabs and line breaks. This will be explained <a href="dgui_misc_whitespace.html">later</a>.</p>
+          </div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_template.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template_directives.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_template_valueinsertion.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_template_valueinsertion.html b/builds/2.3.26-nightly/dgui_template_valueinsertion.html
new file mode 100644
index 0000000..4ed0f09
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_template_valueinsertion.html
@@ -0,0 +1,310 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Interpolations - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Interpolations">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_template_valueinsertion.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_template_valueinsertion.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template.html"><span itemprop="name">The Template</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template_valueinsertion.html"><span itemprop="name">Interpolations</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","The Template","Interpolations"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_template_exp.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_template_valueinsertion" itemprop="headline">Interpolations</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_14" data-menu-target="autoid_14">Overview</a></li><li><a class="page-menu-link" href="#autoid_15" data-menu-target="autoid_15">Automatic escaping</a></li><li><a class="page-menu-link" href="#autoid_16" data-menu-target="autoid_16">Guide to inserting numerical values</a></li><li><a class="page-menu-link" href="#dgui_template_valueinserion_universal_date" data-menu-target="dgui_template_valueinserion_universal_date">Guide to inserting date/time/date-time values</a></li><li><a class="page-menu-link" href="#autoid_17" data-menu-target="autoid_17">Guide to inserting boolean values</a></li><li><a class="page-menu-link" href="#autoid_18" data-menu-target="autoid_18">Exact conversion rules</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_14">Overview</h2>
+
+
+          <p>The format of interpolations is
+          <code class="inline-code">${<em class="code-color">expression</em>}</code>, where
+          <code class="inline-code"><em class="code-color">expression</em></code> can be all
+          kind of expression (e.g. <code class="inline-code">${100 + x}</code>).</p>
+
+          <p>The interpolation is used to insert the value of the
+          <code class="inline-code"><em class="code-color">expression</em></code> converted
+          to text (to string). Interpolations can be used only on two places:
+          in <a href="dgui_template_overallstructure.html"><span class="marked-text">text</span> sections</a> (e.g.,
+          <code class="inline-code">&lt;h1&gt;Hello ${name}!&lt;/h1&gt;</code>) and <a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">in string literal
+          expressions</a> (e.g., <code class="inline-code">&lt;#include
+          &quot;/footer/${company}.html&quot;&gt;</code>).</p>
+
+          <p>The result of the expression must be a string, number or
+          date/time/date-time value, because (by default) only these types are
+          converted to string by interpolation automatically. Values of other
+          types (such as booleans, sequences) must be converted to string
+          "manually" (see some advices later), or an error will
+          stop the template processing.</p>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>It&#39;s a frequent mistake to use interpolations on places
+            where they needn&#39;t/shouldn&#39;t/can&#39;t be used. Interpolations work
+            <em>only</em> in <a href="dgui_template_overallstructure.html"><span class="marked-text">text</span> sections</a> (e.g.
+            <code class="inline-code">&lt;h1&gt;Hello ${name}!&lt;/h1&gt;</code>) and in
+            <a href="dgui_template_exp.html#dgui_template_exp_direct_string">string
+            literals</a> (e.g. <code class="inline-code">&lt;#include
+            &quot;/footer/${company}.html&quot;&gt;</code>). A typical
+            <em>WRONG</em> usage is <code class="inline-code">&lt;#if
+            ${big}&gt;...&lt;/#if&gt;</code>, which will give syntactical
+            error. You should simply write <code class="inline-code">&lt;#if
+            big&gt;...&lt;/#if&gt;</code>. Also, <code class="inline-code">&lt;#if
+            &quot;${big}&quot;&gt;...&lt;/#if&gt;</code> is
+            <em>WRONG</em>, since it converts the parameter value
+            to string and the <code class="inline-code">if</code> directive wants a boolean
+            value, so it will cause a runtime error.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_15">Automatic escaping</h2>
+
+
+          <p>If the interpolation is in a <a href="dgui_template_overallstructure.html"><span class="marked-text">text</span> section</a> (not in a <a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">string literal
+          expression</a>), the text that it inserts goes through
+          automatically escaping, <em>if FreeMarker was properly
+          configured</em>. <a href="dgui_quickstart_template.html#dgui_quickstart_template_autoescaping">See more about
+          escaping here...</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_16">Guide to inserting numerical values</h2>
+
+
+          <p>If the expression evaluates to a number then the numerical
+          value will be converted to string according the default number
+          format. This may includes the maximum number of decimals, grouping,
+          and like. Usually the programmer should set the default number
+          format; the template author doesn&#39;t have to deal with it (but he can
+          with the <code class="inline-code">number_format</code> setting; see in the <a href="ref_directive_setting.html">documentation of
+          <code>setting</code> directive</a>). Also, you can override
+          the default number format for a single interpolation with the <a href="ref_builtins_number.html#ref_builtin_string_for_number"><code>string</code>
+          built-in</a>.</p>
+
+          <p>The decimal separator used (and other such symbols, like the
+          group separator) depends on the current locale (language, country),
+          that also should be set by the programmer. For example, this
+          template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${1.5}</pre></div>
+
+          <p>will print something like this if the current locale is
+          English:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">1.5</pre></div>
+
+          <p>but if the current locale is German then it will print
+          something like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">1,5</pre></div>
+
+          <p>since German people use comma as decimal separator.</p>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>As you can see, interpolations print for human audience (by
+            default at least), as opposed to &#39;&#39;computer audience&#39;&#39;. In some
+            cases this is not good, like when you print a database record ID
+            as the part of an URL or as an invisible field value in a HTML
+            form, or when you print CSS/JavaScript numerical literals, because
+            these printed values will be read by computer programs and not by
+            humans. Most computer programs are very particular about the
+            format of the numbers, and understand only a kind of simple US
+            number formatting. For that, use the <a href="ref_builtins_number.html#ref_builtin_c"><code>c</code></a> (stands for
+            &#39;&#39;computer audience&#39;&#39;) built-in, for example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;a href=&quot;/shop/productdetails?id=${product.id?c}&quot;&gt;Details...&lt;/a&gt;</pre></div>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_valueinserion_universal_date">Guide to inserting date/time/date-time values</h2>
+
+
+          <p>If the expression evaluates to a date-like value then that
+          will be transformed to a text according to a default format. Usually
+          the programmer should set the default format; the template author
+          doesn&#39;t have to deal with it (but if you care, <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">see the
+          <code>date_format</code>, <code>time_format</code> and
+          <code>datetime_format</code> settings</a> in the
+          documentation of the <a href="ref_directive_setting.html#ref.directive.setting"><code>setting</code>
+          directive</a>). Also, you can override the default formatting for
+          a single interpolation with the <a href="ref_builtins_date.html#ref_builtin_string_for_date"><code>string</code>
+          built-in</a>.</p>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>To display a date-like value as text, FreeMarker must know
+            which parts of it are in use, that is, if only the date part
+            (year, month, day), or only the time part (hour, minute, second,
+            millisecond), or both. Unfortunately, because of the technical
+            limitations of Java platform, for some variables it is not
+            possible to detect this automatically; ask the programmer if the
+            data-model contains such problematic variables. When it&#39;s not
+            possible to find out which parts of the date are in use, then you
+            must help FreeMarker with the <a href="ref_builtins_date.html#ref_builtin_date_datetype"><code>date</code>,
+            <code>time</code> and <code>datetime</code></a>
+            built-ins (like <code class="inline-code">${lastUpdated?datetime}</code>), or it
+            will stop with error.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_17">Guide to inserting boolean values</h2>
+
+
+          <p>By default an attempt to print boolean values with
+          interpolation causes an error and aborts template processing. For
+          example this will cause an error: <code class="inline-code">${a == 2}</code> and
+          will not print &#39;&#39;true&#39;&#39; or something like that. That&#39;s because
+          there&#39;s no universally useful way of representing booleans
+          (sometimes you want to print yes/no, sometimes enabled/disabled,
+          on/off, etc.).</p>
+
+          <p>However, you can convert booleans to strings with the <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean"><code>?string</code>
+          built-in</a>. For example, to print the value of the &quot;married&quot;
+          variable (assuming it&#39;s a boolean), you could write
+          <code class="inline-code">${married?string(&quot;yes&quot;, &quot;no&quot;)}</code>.</p>
+
+          <p>FreeMarker can be configured with a default boolean format
+          with the <code class="inline-code">boolean_format</code> setting, then
+          <code class="inline-code">${married}</code> and such will work. However, in most
+          applications it&#39;s not recommended, as boolean should be rendered
+          differently on different places, and leaving the formatting on the
+          default is possibly just an oversight and thus should generate
+          error.</p>
+
+          <p>When you want to generate JavaScript or other computer
+          language parts, then <code class="inline-code">${someBoolean?c}</code>
+          ("c" stands for computer audience) should be used to
+          print true/false. (Remember that <code class="inline-code">?c</code> was also used
+          to print numbers for computer audience.)</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_18">Exact conversion rules</h2>
+
+
+          <p>For those who are interested, the exact rules of conversion
+          from the expression value to string (which is then still subject to
+          escaping) are these, in this order:</p>
+
+          <div class="orderedlist"><ol type="1">
+            <li>
+              <p>If the value is a number, then it is converted to string
+              in the format specified with the
+              <code class="inline-code">number_format</code> setting. So this usually
+              formats for human audience, as opposed to computer
+              audience.</p>
+            </li>
+
+            <li>
+              <p>Else if the value is date, time or date-time, then it is
+              converted to string in the format specified with the
+              <code class="inline-code">date_format</code>, <code class="inline-code">time_format</code>
+              or <code class="inline-code">datetime_format</code> setting, respectively. If
+              it can&#39;t be detected what kind of date-like value it is (date vs
+              time vs date-time), an error will occur.</p>
+            </li>
+
+            <li>
+              <p>Else if the value is a string, then there is no
+              conversion.</p>
+            </li>
+
+            <li>
+              <p>Else if the engine is in classic compatibility
+              mode:</p>
+
+              <div class="orderedlist"><ol type="1">
+                <li>
+                  <p>If the value is a boolean, true values are converted
+                  to &quot;true&quot;, false values are converted to an empty
+                  string.</p>
+                </li>
+
+                <li>
+                  <p>If the expression is undefined
+                  (<code class="inline-code">null</code> or a variable is undefined), it is
+                  converted to an empty string.</p>
+                </li>
+
+                <li>
+                  <p>Else an error will abort the template
+                  processing.</p>
+                </li>
+              </ol></div>
+            </li>
+
+            <li>
+              <p>Else an error will abort the template processing.</p>
+            </li>
+          </ol></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_template_exp.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/docgen.min.css
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/docgen.min.css b/builds/2.3.26-nightly/docgen-resources/docgen.min.css
new file mode 100644
index 0000000..3d88f72
--- /dev/null
+++ b/builds/2.3.26-nightly/docgen-resources/docgen.min.css
@@ -0,0 +1 @@
+@font-face{font-family:icomoon;src:url(fonts/icomoon.eot?-fbty7i);src:url(fonts/icomoon.eot?#iefix-fbty7i) format('embedded-opentype'),url(fonts/icomoon.woff?-fbty7i) format('woff'),url(fonts/icomoon.ttf?-fbty7i) format('truetype'),url(fonts/icomoon.svg?-fbty7i#icomoon) format('svg');font-weight:400;font-style:normal}html{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;font-size:14px;color:#333;line-height:1.5;font-weight:400;background-color:#fff;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;height:100%}body{min-height:100%;margin:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}a{color:#0050b2;text-decoration:none;-ms-touch-action:manipulation;touch-action:manipulation}a:hover{color:#0973f5}h1,h2,h3,h4,h5,h6{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.5;font-weig
 ht:500;color:#0050b2;word-break:break-word}h1{font-size:36px}h2{font-size:21px}code,pre{font-size:13px;font-family:"Droid Sans Mono","Courier New",Courier,Monaco,Consolas,monospace;-webkit-font-smoothing:antialiased}code{padding:0 2px;color:#C5351F;word-break:break-word}a>code{color:#0050b2}a:hover>code{color:#0973f5}pre{display:block;border:0;padding:6px 12px;margin:0 0 9px;overflow-x:auto;word-break:normal;white-space:pre}@-moz-document url-prefix(){pre{white-space:pre-wrap;word-break:break-all}}img{border:0;vertical-align:middle}fieldset{margin:0;padding:0;border:0}input[type=search]::-webkit-search-cancel-button{display:none}table{border:0;border-collapse:collapse}td,th{padding:0}.header-top-bg{background-color:#0050b2;background-image:-webkit-radial-gradient(50% 15px circle,rgba(0,0,0,0) 0,rgba(0,0,0,0) 50%,#00276c 100%),url(img/patterned-bg.png);background-image:radial-gradient(circle at 50% 15px,rgba(0,0,0,0) 0,rgba(0,0,0,0) 50%,#00276c 100%),url(img/patterned-bg.png);box-sha
 dow:0 3px 9px #c1c1c1;border-bottom:3px solid #003270;position:relative;z-index:2}.header-top{text-align:center;padding:12px 0}@media (min-width:568px){.header-top{padding-bottom:18px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}.header-bottom-bg{background-color:#efefef;border-bottom:1px solid #dedede;box-shadow:0 0 7px #eee;position:relative;z-index:1}.search-row{padding-top:12px}@media (min-width:568px){.search-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:end;-webkit-align-items:flex
 -end;-ms-flex-align:end;align-items:flex-end}}.search-row .navigation-header,.search-row .search-form{padding-top:3px;padding-bottom:3px}.search-row .navigation-header{display:block;font-size:18px;line-height:1;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}@media (min-width:568px){.search-row .navigation-header{font-size:27px}}@media (min-width:768px){.search-row .navigation-header{-webkit-box-flex:0;-webkit-flex-grow:0;-ms-flex-positive:0;flex-grow:0}}.breadcrumb-row{padding-top:9px;padding-bottom:9px}.search-row+.breadcrumb-row{padding-top:0}@media (min-width:568px){.breadcrumb-row{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:end;-webkit-align-items:flex-end;-ms-flex-align:end;align-items:flex-end}}.main-content{-webkit-box-flex:1;-webkit-
 flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column}.content-wrapper{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-top:18px;padding-bottom:18px}@media (min-width:768px){.content-wrapper{padding-top:30px;padding-bottom:48px}}.content-wrapper.no-toc{display:block}.content-wrapper .col-left{-webkit-box-flex:0;-webkit-flex:0 0 160px;-ms-flex:0 0 160px;flex:0 0 160px;max-width:160px;margin-right:18px;display:none}@media (min-width:568px){.content-wrapper .col-left{display:block}}@media (min-width:768px){.content-wrapper .col-left{-webkit-flex-basis:210px;-ms-flex-preferred-size:210px;flex-basis:210px;max-width:210px;margin-right:48px}.content-wrapper .col-left.expanded{max-width:10
 0%}}.content-wrapper .col-right{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}@media (min-width:768px){.page-content{padding-bottom:42px}}.page-content a{word-break:break-word}.page-content .page-title{border-bottom:1px solid #eee;padding-bottom:12px;margin-bottom:12px}.page-type-docgen-search-results .page-content .page-title{border:none;padding-bottom:0;margin-bottom:0}@media (min-width:768px){.page-content .page-title{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}}@media (min-width:768px){.page-content .page-title{padding-bottom:24px;margin-bottom:24px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:baseline;-webkit-align-items:baseline;-ms-flex-align:baseline;align-items:baseline;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.page-content .page-title .title-wr
 apper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.page-content .page-title h1{margin:0;font-size:24px}@media (min-width:768px){.page-content .page-title h1{font-size:30px}}.page-content .page-title .subtitle{display:block;font-size:14px}@media (min-width:768px){.page-content .page-title .subtitle{font-size:18px}}@media (min-width:992px){.page-content .page-title .subtitle{font-size:24px}}.page-content .content-header::before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f1dd";margin-left:-18px;margin-top:2px;width:18px;font-weight:400;font-size:18px;color:#C82222;float:left;visibility:hidden}@media (min-width:768px){.page-content .content-header::before{margin-left:-24px}}.page-content .active::before{-webkit-animation:header-pulse .3s 3 steps(2,end);animation:header-pulse .3s 3 steps(2,end)}@-webkit-keyframes header-pulse{0%{visibility:hidden}100%{visibility:visible}}@keyframes header-pulse{0%{visibility:hidden}100%{visi
 bility:visible}}.site-footer{border-top:3px solid #003270;background-color:#0050b2;background-image:-webkit-radial-gradient(50% -50px ellipse,rgba(0,0,0,0) 0,rgba(0,0,0,0) 24%,#000c3b 86%,#000c3b 100%),url(img/patterned-bg.png);background-image:radial-gradient(ellipse at 50% -50px,rgba(0,0,0,0) 0,rgba(0,0,0,0) 24%,#000c3b 86%,#000c3b 100%),url(img/patterned-bg.png);font-weight:300;color:#fff}.site-footer a{color:#fff}.site-footer a:hover{color:rgba(255,255,255,.8)}@media (min-width:568px){.footer-top{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start}}@media (min-width:992px){.footer-top{-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}}.footer-top .col-left{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto}.foote
 r-top .col-right{padding-top:12px;padding-bottom:12px;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}@media (min-width:992px){.footer-top .col-right{padding-top:24px}}@media (min-width:768px){.footer-top .col-right{text-align:right}}@media (min-width:568px){.sitemap{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}}.sitemap .column{padding-top:12px;padding-bottom:12px;margin-right:12px;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}@media (min-width:992px){.sitemap .column{padding-top:24px}}.sitemap .column:last-child{margin-right:0}@media (min-width:768px){.sitemap .column{margin-right:54px}}.sitemap .column .column-header{color:#fff;border-bottom:2px solid #4c76ab;margin:0 0 6px;padding-bottom:6px;font-weight:400}.sitemap .column ul{padding:0;margin:0;list-style-type:none}.sitemap .column a{padding-right:9px;display:block}.xxe{display:inline-block;w
 idth:110px;height:34px;margin-top:15px;background:#fff url(img/xxe.png) 50% no-repeat;border:1px solid #002254}.xxe span{display:none}.footer-bottom{padding:45px 0 25px;font-size:12px}.footer-bottom p{margin:0 0 6px}.logo{padding:6px 0 0;display:block}.logo img{display:block;margin:0 auto;width:204px;height:19px}.tabs{list-style-type:none;margin:0;padding:6px 0 0;text-align:center;font-weight:300}@media (min-width:568px){.tabs{margin-left:24px;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;padding-top:0}}.tabs li{display:inline-block}.tabs li.current a{color:#fff;font-weight:400}.secondary-tabs li::after,.tabs li::after{width:1px;background-color:#96a5b8;height:9px;display:inline-block;content:'';margin:0 15px}.secondary-tabs li:last-child::after,.tabs li:last-child::after{display:none}.secondary-tabs .tab,.tabs li a{color:#c9dbf1}.secondary-tabs li a:hover,.tabs li a:hover{color:#fff}.secondary-tabs{margin:0;list-style-type:none;padding:6px 0 0;display:non
 e;text-align:center}@media (min-width:768px){.secondary-tabs{display:block;text-align:right;-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}}.secondary-tabs li{display:inline-block}.secondary-tabs li:last-child{margin-right:0}.secondary-tabs li a:hover strong{border-bottom-color:transparent}.secondary-tabs .tab::before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:18px;height:18px;display:inline-block;font-size:12px;text-align:center}@media (min-width:992px){.secondary-tabs .tab::before{padding-right:6px}}.secondary-tabs .tab.icon-heart::before{content:"\e609"}.secondary-tabs .tab.icon-star::before{content:"\e608"}.secondary-tabs .tab.icon-bug::before{content:"\f188"}.secondary-tabs .tab.icon-download::before{content:"\e606"}.secondary-tabs .tab strong{font-weight:400;border-bottom:1px solid #8fafd7}.secondary-tabs .tab span{display:none}@media (min-width:992px){.secondary-tabs .tab span{display:inline}}.bread
 crumb{list-style-type:none;margin:0;padding:6px 0 0 0;font-size:12px;display:block;white-space:nowrap;overflow:hidden}@media (min-width:768px){.breadcrumb{font-size:13px}}.breadcrumb li{display:inline-block}.breadcrumb li::after{content:'/';color:#979797;margin:0 3px}@media (min-width:768px){.breadcrumb li::after{margin:0 6px}}.breadcrumb li:last-child a{color:#333}.breadcrumb li:last-child::after{display:none}.breadcrumb li.step-0 a::after{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e60a";display:inline-block;width:14px;height:14px;font-size:12px;position:relative;top:1px}.breadcrumb li.step-0 a span{display:none}.table-of-contents{list-style-type:none;padding:0;margin:6px 0 0;font-size:12px}@media (min-width:768px){.table-of-contents{margin-top:12px;font-size:13px}}.table-of-contents .current::before{color:#0973f5}.table-of-contents .current>a:first-child{color:#0973f5}.table-of-contents ul{list-style-type:none}.section{border
 -bottom:1px solid #eee;margin-bottom:12px;padding-bottom:12px}@media (min-width:768px){.section{margin-bottom:24px;padding-bottom:24px}}.section.last{border-bottom:0;margin-bottom:0}.section.last .depth-0-link{margin-bottom:0}.depth-0-link{color:#0050b2;text-transform:uppercase;font-weight:400;display:block;line-height:1;margin-bottom:12px}@media (min-width:768px){.depth-0-link{margin-bottom:24px}}a.depth-0-link:hover{color:#0973f5}.depth-1{margin:0;padding:0}.depth-1 li{padding-left:14px;position:relative}.depth-1 li::before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e602";width:14px;height:14px;display:block;position:absolute;left:-3px;top:2px;font-size:14px;line-height:1}.depth-1 li.has-children::before{content:"\e600";font-size:13px;cursor:pointer}.depth-1 li.has-children.open::before{content:"\e601";font-size:13px}.depth-1 li.has-children .last::before{content:"\e602";top:3px}.depth-1 a{display:block;color:#444}.depth-1 a:
 hover{color:#888}.depth-2{margin:0;padding:0}.closed ul{display:none}.open ul{display:block}.page-menu{margin:0 0 12px;padding:0 0 12px 18px;border-bottom:1px solid #eee}.page-menu .page-menu-title{margin-top:0;margin-bottom:1em;color:#0050b2;font-weight:700}@media (min-width:768px){.page-menu{margin-bottom:24px;margin-top:-12px}}.page-menu ul{margin:0 0 0 18px;padding:0}.page-menu a:visited{color:purple}.search-form{-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;height:26px;width:100%;display:inline-block}.search-form.offline{display:none}@media (min-width:768px){.search-form{max-width:300px}}.search-form fieldset{height:26px}.search-form .search-btn{color:#0050b2;line-height:1;background-color:#fff;background-image:none;border:0;border-radius:0;padding:0 3px;width:26px;height:24px;position:relative;top:-25px;float:right;right:1px}.search-form .search-btn:focus,.search-form .search-btn:hover{color:#4c9cff;cursor:pointer;outline:0}.search-form .search-btn::
 before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f002";box-sizing:border-box;font-size:16px;width:18px;height:18px;display:block}.search-form .search-input{-webkit-appearance:none;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;background-image:none;background:#fff;font-size:16px;line-height:21px;border:1px solid #aec0d6;border-radius:0;box-sizing:border-box;padding:3px 24px 3px 9px;height:26px;width:100%;-webkit-transition:border-color .2s ease-in;transition:border-color .2s ease-in}.search-form .search-input::-moz-placeholder{color:#0050b2;opacity:.6;font-size:14px}.search-form .search-input:-ms-input-placeholder{color:#0050b2;font-size:14px;line-height:21px}.search-form .search-input::-webkit-input-placeholder{color:#0050b2;opacity:.6;font-size:14px}.search-form .search-input:focus{outline:0;border-color:#0050b2}.search-results .gsc-control-cse{padding:0}.search-results .gs-title,.search-results .gs-title *{color:#0050
 b2!important;text-decoration:none!important}.search-results .gs-title :hover,.search-results .gs-title:hover{color:#0973f5!important}.bottom-pagers-wrapper::after,.bottom-pagers-wrapper::before{content:" ";display:table}.bottom-pagers-wrapper::after{clear:both}@media (min-width:768px){.bottom-pagers-wrapper{position:absolute;bottom:0;right:0}}.pagers{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;white-space:nowrap}@media (min-width:768px){.pagers{float:right;font-size:14px}}.pagers.top{-webkit-box-ordinal-group:2;-webkit-order:1;-ms-flex-order:1;order:1;margin-bottom:6px}@media (min-width:768px){.pagers.top{margin-left:12px;margin-bottom:0}}.paging-arrow{-webkit-box-flex:1;-webkit-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;word-break:normal}.paging-arrow::before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:block;line-height:21px;vertical-align:middle;width:17px}@media (min-width:568px){.paging-arrow.p
 revious{margin-right:12px}}.paging-arrow.previous::before{content:"\f190";padding-right:3px;float:left}.paging-arrow.next{text-align:right}.paging-arrow.next::before{content:"\f18e";padding-left:3px;float:right}.bookmarks{text-align:right;display:none}@media (min-width:992px){.bookmarks{display:block}}.bookmarks::before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e607";width:14px;height:14px;display:inline-block;position:relative;top:2px;margin-right:1px;color:#0050b2}.bookmarks ul{list-style-type:none;margin:0;padding:0;display:inline-block;font-size:13px}.bookmarks ul li{display:inline-block}.bookmarks ul li::after{content:",";display:inline-block;margin:0 3px 0 0}.bookmarks ul li:last-child::after{display:none}.callout{padding:15px 18px;margin:12px 0;border-left:4px solid #eee;background-color:#f9f9f9;max-width:600px}.callout.note{border-left-color:#A181AE;background-color:#F9F2FA}.callout.note .callout-label{color:#7D578C}.c
 allout.warning{border-left-color:#EDBABA;background-color:#FCEAEA}.callout.warning .callout-label{color:#900}.callout p:first-of-type{margin-top:3px}.callout p:last-child{margin-bottom:0}.callout-label{display:block;padding-bottom:3px}.callout-label::before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:12px}.note .callout-label::before{content:"\e605";margin-right:3px}.warning .callout-label::before{content:"\e604";font-size:14px;margin-right:6px}.marked-text{background-color:#AEDDFF}.marked-interpolation{background-color:#FFC070}.marked-ftl-tag{background-color:#FFEE6B}.marked-comment{background-color:#5CFF6A}.marked-template{background-color:#e4e4e4}.marked-data-model{background-color:#D2E2EF}.marked-output{background-color:#D5EAD7}.marked-invisible-text{opacity:.33}.marked-for-programmers{color:#339;font-style:italic}.code-color{color:red}.code-block{border:0;position:relative;padding:3px 6px 4px;margin:12px 0;background-color:
 #f4f4f4}@media (min-width:992px){.code-block{display:inline-block;min-width:600px;margin:0}ul .code-block{min-width:300px;display:block}}.callout .code-block{background-color:transparent!important;padding:0!important;margin:0!important}.callout .code-block::after{display:none!important}.code-block.code-template{background-color:#f4f4f4;padding-top:23px}.code-block.code-template::after{position:absolute;top:0;right:0;left:0;padding:3px 9px;font-size:10px;font-weight:700;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;text-transform:uppercase;color:rgba(94,94,94,.8);background-color:#e4e4e4;content:"Template"}.code-block.code-data-model{background-color:#ecf3f8;padding-top:23px}.code-block.code-data-model::after{position:absolute;top:0;right:0;left:0;padding:3px 9px;font-size:10px;font-weight:700;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;text-transform:uppercase;color:rgba(94,94,94,.8);background-color:#D2E2EF;content:"Data Model"}.code-block.code-output{background-col
 or:#ECF8EE;padding-top:23px}.code-block.code-output::after{position:absolute;top:0;right:0;left:0;padding:3px 9px;font-size:10px;font-weight:700;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;text-transform:uppercase;color:rgba(94,94,94,.8);background-color:#D5EAD7;content:"Output"}.table-responsive{min-height:.01%;overflow-x:auto}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar}}.table{background-color:transparent;border-spacing:0;border-collapse:collapse;border:1px solid #ddd;width:100%;max-width:100%}.table th{font-weight:500;text-align:left;background-color:#f9f9f9;border-bottom:1px solid #ddd;white-space:nowrap}.table td,.table th{padding:3px 6px;border:1px solid #ddd;vertical-align:top}.table td{white-space:nowrap}@media (min-width:992px){.table td{white-space:normal}}.table a{word-break:normal}.social-icons{margin:0;padding:0;list-style-type:none}.social-icons li{display:inline-block;m
 argin-right:18px}.social-icons li:last-child{margin-right:0}.social-icons li a::before{font-family:icomoon;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:14px;height:22px;display:inline-block;padding-right:3px}.social-icons li .github::before{content:"\f09b"}.social-icons li .twitter::before{content:"\f099"}.social-icons li .stack-overflow::before{content:"\f16c"}.site-width{margin-left:auto;margin-right:auto;padding-left:18px;padding-right:18px}@media (min-width:768px){.site-width{padding-left:24px;padding-right:24px;width:700px}}@media (min-width:992px){.site-width{width:924px}}@media (min-width:1200px){.site-width{width:1132px}}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.center-img{text-align:center}.center-img img{max-width:100%}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/fonts/NOTICE
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/fonts/NOTICE b/builds/2.3.26-nightly/docgen-resources/fonts/NOTICE
new file mode 100644
index 0000000..8bf197f
--- /dev/null
+++ b/builds/2.3.26-nightly/docgen-resources/fonts/NOTICE
@@ -0,0 +1,20 @@
+The "icomoon" fonts in this directory were generated with
+https://icomoon.io/app/, from a selection of icons from these fonts:
+
+* Entypo pictograms, version 2.0, by Daniel Bruce (www.entypo.com).
+  Each included pictogram is either licensed under Creative
+  Commons Attribution-ShareAlike 3.0 (CC BY-SA 3.0)
+  (http://creativecommons.org/licenses/by-sa/3.0/legalcode), or
+  under SIL Open Font License 1.1 (http://scripts.sil.org/OFL).
+
+* Font Awesome by Dave Gandy (http://fontawesome.io), licensed under
+  SIL Open Font License 1.1 (http://scripts.sil.org/OFL).
+  
+* Material Design icons by Google
+  (http://google.github.io/material-design-icons/), licensed under
+  Creative Common Attribution 4.0 International License (CC-BY 4.0)
+  (https://creativecommons.org/licenses/by/4.0/).
+  
+If "selection.json" is present in this directory, it stores the
+IcoMoon App selection, and is only stored here for reproducibility.
+It's not used for anything.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.eot
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.eot b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.eot
new file mode 100644
index 0000000..6d5cc05
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.eot differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.svg
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.svg b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.svg
new file mode 100644
index 0000000..0c1e073
--- /dev/null
+++ b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" standalone="no"?>
+<!-- See NOTICE file for copyright information! -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata>Generated by IcoMoon</metadata>
+<defs>
+<font id="icomoon" horiz-adv-x="1024">
+<font-face units-per-em="1024" ascent="960" descent="-64" />
+<missing-glyph horiz-adv-x="1024" />
+<glyph unicode="&#x20;" d="" horiz-adv-x="512" />
+<glyph unicode="&#xe600;" d="M810.667 384h-256v-256h-85.333v256h-256v85.333h256v256h85.333v-256h256v-85.333z" />
+<glyph unicode="&#xe601;" d="M810.667 384h-597.333v85.333h597.333v-85.333z" />
+<glyph unicode="&#xe602;" d="M399.36 460.8c0-62.208 50.483-112.64 112.691-112.64s112.589 50.483 112.589 112.64c0 62.208-50.381 112.589-112.589 112.589s-112.691-50.381-112.691-112.589z" />
+<glyph unicode="&#xe604;" d="M998.963 52.224l-456.038 851.558c-6.349 11.008-18.125 17.818-30.925 17.818-12.851 0-24.627-6.81-30.925-17.818l-455.987-851.558c-6.195-10.803-6.093-24.115 0.256-34.816 6.4-10.803 18.022-17.408 30.618-17.408h912.077c12.544 0 24.269 6.605 30.618 17.408 6.349 10.701 6.451 24.013 0.307 34.816zM563.2 102.4h-102.4v102.4h102.4v-102.4zM563.2 281.6h-102.4v332.8h102.4v-332.8z" />
+<glyph unicode="&#xe605;" d="M636.518 972.8c68.608 0 102.912-46.694 102.912-100.198 0-66.816-59.597-128.614-137.165-128.614-64.973 0-102.861 38.4-101.069 101.888 0 53.402 45.107 126.925 135.322 126.925zM425.421-51.2c-54.17 0-93.85 33.382-55.962 180.429l62.157 260.71c10.803 41.677 12.595 58.419 0 58.419-16.23 0-86.477-28.774-128.102-57.19l-27.034 45.056c131.686 111.923 283.187 177.51 348.211 177.51 54.118 0 63.13-65.178 36.096-165.376l-71.219-274.022c-12.595-48.384-7.219-65.075 5.427-65.075 16.23 0 69.478 20.070 121.805 61.798l30.72-41.677c-128.102-130.406-268.032-180.582-322.099-180.582z" />
+<glyph unicode="&#xe606;" d="M768 614.4h-153.6v307.2h-204.8v-307.2h-153.6l256-256 256 256zM990.106 279.962c-10.752 11.469-82.483 88.218-102.963 108.237-13.568 13.261-32.973 21.402-53.35 21.402h-89.958l156.877-153.293h-181.453c-5.222 0-9.933-2.662-12.288-6.81l-41.779-95.898h-306.381l-41.779 95.898c-2.355 4.147-7.117 6.81-12.288 6.81h-181.453l156.826 153.293h-89.907c-20.326 0-39.731-8.141-53.35-21.402-20.48-20.070-92.211-96.819-102.963-108.237-25.037-26.675-38.81-47.923-32.256-74.189l28.723-157.389c6.554-26.317 35.379-47.923 64.102-47.923h835.174c28.723 0 57.549 21.606 64.102 47.923l28.723 157.389c6.451 26.266-7.27 47.514-32.358 74.189z" />
+<glyph unicode="&#xe607;" d="M768 972.8h-204.8c-28.314 0-51.2-22.886-51.2-51.2l1.178-11.366c56.422 0 102.4-45.926 102.4-102.4v-581.581l50.022 60.467 153.6-184.32v819.2c0 28.314-22.886 51.2-51.2 51.2zM461.978 819.2h-205.978c-28.314 0-51.2-22.886-51.2-51.2v-819.2l153.6 184.32 153.6-184.32v819.2c0 28.314-21.709 51.2-50.022 51.2z" />
+<glyph unicode="&#xe608;" d="M512 906.24l122.266-344.166h328.294l-267.878-202.138 95.795-354.714-278.477 212.685-278.426-212.685 95.744 354.714-267.93 202.138h328.294l122.317 344.166z" />
+<glyph unicode="&#xe609;" d="M880.128 760.013c-85.606 78.592-224.41 78.592-310.016 0l-58.112-53.299-58.163 53.299c-85.606 78.592-224.358 78.592-309.965 0-96.307-88.371-96.307-231.373 0-319.744l368.128-337.869 368.128 337.869c96.256 88.371 96.256 231.424 0 319.744zM825.549 492.8l-313.549-292.608-313.6 292.608c-31.59 29.030-43.827 66.918-43.827 107.213s7.066 73.37 38.707 102.349c27.904 25.651 65.434 39.782 105.626 39.782 40.141 0 77.67-24.371 105.574-50.074l107.52-93.44 107.469 93.491c27.955 25.702 65.434 50.074 105.626 50.074s77.722-14.131 105.626-39.782c31.642-28.979 38.656-62.054 38.656-102.349s-12.186-78.234-43.827-107.264z" />
+<glyph unicode="&#xe60a;" d="M737.28 512h-296.96c-28.262 0-30.72-22.886-30.72-51.2s2.458-51.2 30.72-51.2h296.96c28.262 0 30.72 22.886 30.72 51.2s-2.458 51.2-30.72 51.2zM839.68 256h-399.36c-28.262 0-30.72-22.886-30.72-51.2s2.458-51.2 30.72-51.2h399.36c28.262 0 30.72 22.886 30.72 51.2s-2.458 51.2-30.72 51.2zM440.32 665.6h399.36c28.262 0 30.72 22.886 30.72 51.2s-2.458 51.2-30.72 51.2h-399.36c-28.262 0-30.72-22.886-30.72-51.2s2.458-51.2 30.72-51.2zM276.48 512h-92.16c-28.262 0-30.72-22.886-30.72-51.2s2.458-51.2 30.72-51.2h92.16c28.262 0 30.72 22.886 30.72 51.2s-2.458 51.2-30.72 51.2zM276.48 256h-92.16c-28.262 0-30.72-22.886-30.72-51.2s2.458-51.2 30.72-51.2h92.16c28.262 0 30.72 22.886 30.72 51.2s-2.458 51.2-30.72 51.2zM276.48 768h-92.16c-28.262 0-30.72-22.886-30.72-51.2s2.458-51.2 30.72-51.2h92.16c28.262 0 30.72 22.886 30.72 51.2s-2.458 51.2-30.72 51.2z" />
+<glyph unicode="&#xf002;" d="M658.286 475.428q0 105.714-75.143 180.857t-180.857 75.143-180.857-75.143-75.143-180.857 75.143-180.857 180.857-75.143 180.857 75.143 75.143 180.857zM950.857 0q0-29.714-21.714-51.429t-51.429-21.714q-30.857 0-51.429 21.714l-196 195.429q-102.286-70.857-228-70.857-81.714 0-156.286 31.714t-128.571 85.714-85.714 128.571-31.714 156.286 31.714 156.286 85.714 128.571 128.571 85.714 156.286 31.714 156.286-31.714 128.571-85.714 85.714-128.571 31.714-156.286q0-125.714-70.857-228l196-196q21.143-21.143 21.143-51.429z" horiz-adv-x="951" />
+<glyph unicode="&#xf099;" d="M925.714 717.714q-38.286-56-92.571-95.429 0.571-8 0.571-24 0-74.286-21.714-148.286t-66-142-105.429-120.286-147.429-83.429-184.571-31.143q-154.857 0-283.429 82.857 20-2.286 44.571-2.286 128.571 0 229.143 78.857-60 1.143-107.429 36.857t-65.143 91.143q18.857-2.857 34.857-2.857 24.571 0 48.571 6.286-64 13.143-106 63.714t-42 117.429v2.286q38.857-21.714 83.429-23.429-37.714 25.143-60 65.714t-22.286 88q0 50.286 25.143 93.143 69.143-85.143 168.286-136.286t212.286-56.857q-4.571 21.714-4.571 42.286 0 76.571 54 130.571t130.571 54q80 0 134.857-58.286 62.286 12 117.143 44.571-21.143-65.714-81.143-101.714 53.143 5.714 106.286 28.571z" horiz-adv-x="951" />
+<glyph unicode="&#xf09b;" d="M877.714 438.857q0-143.429-83.714-258t-216.286-158.571q-15.429-2.857-22.571 4t-7.143 17.143v120.571q0 55.429-29.714 81.143 32.571 3.429 58.571 10.286t53.714 22.286 46.286 38 30.286 60 11.714 86q0 69.143-45.143 117.714 21.143 52-4.571 116.571-16 5.143-46.286-6.286t-52.571-25.143l-21.714-13.714q-53.143 14.857-109.714 14.857t-109.714-14.857q-9.143 6.286-24.286 15.429t-47.714 22-49.143 7.714q-25.143-64.571-4-116.571-45.143-48.571-45.143-117.714 0-48.571 11.714-85.714t30-60 46-38.286 53.714-22.286 58.571-10.286q-22.857-20.571-28-58.857-12-5.714-25.714-8.571t-32.571-2.857-37.429 12.286-31.714 35.714q-10.857 18.286-27.714 29.714t-28.286 13.714l-11.429 1.714q-12 0-16.571-2.571t-2.857-6.571 5.143-8 7.429-6.857l4-2.857q12.571-5.714 24.857-21.714t18-29.143l5.714-13.143q7.429-21.714 25.143-35.143t38.286-17.143 39.714-4 31.714 2l13.143 2.286q0-21.714 0.286-50.857t0.286-30.857q0-10.286-7.429-17.143t-22.857-4q-132.571 44-216.286 158.571t-83.714 258q0 119.429 58.857 220
 .286t159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
+<glyph unicode="&#xf16c;" d="M530.286 150.286v-86.286l-404-0.571v86.286zM668 348v-400.571l-0.571-20v-0.571l-667.429 0.571v420.571h69.143v-353.143h530.286v353.143h68.571zM137.714 297.714l402.286-37.143-7.429-85.714-402.857 37.143zM176.571 478.286l390.286-104.571-22.286-83.429-390.286 104.571zM269.714 677.714l348-205.714-44-74.286-348 205.714zM475.429 866.857l227.429-334.286-70.857-48.571-228 333.714zM734.286 950.857l69.143-398.286-85.143-14.857-69.143 398.286z" horiz-adv-x="805" />
+<glyph unicode="&#xf188;" d="M932.571 402.286q0-14.857-10.857-25.714t-25.714-10.857h-128q0-97.714-38.286-165.714l118.857-119.429q10.857-10.857 10.857-25.714t-10.857-25.714q-10.286-10.857-25.714-10.857t-25.714 10.857l-113.143 112.571q-2.857-2.857-8.571-7.429t-24-16.286-37.143-20.857-46.857-16.571-55.429-7.429v512h-73.143v-512q-29.143 0-58 7.714t-49.714 18.857-37.714 22.286-24.857 18.571l-8.571 8-104.571-118.286q-11.429-12-27.429-12-13.714 0-24.571 9.143-10.857 10.286-11.714 25.429t8.857 26.571l115.429 129.714q-33.143 65.143-33.143 156.571h-128q-14.857 0-25.714 10.857t-10.857 25.714 10.857 25.714 25.714 10.857h128v168l-98.857 98.857q-10.857 10.857-10.857 25.714t10.857 25.714 25.714 10.857 25.714-10.857l98.857-98.857h482.286l98.857 98.857q10.857 10.857 25.714 10.857t25.714-10.857 10.857-25.714-10.857-25.714l-98.857-98.857v-168h128q14.857 0 25.714-10.857t10.857-25.714zM658.286 731.428h-365.714q0 76 53.429 129.429t129.429 53.429 129.429-53.429 53.429-129.429z" horiz-adv-x="951" />
+<glyph unicode="&#xf18e;" d="M658.286 438.857q0-8-5.143-13.143l-182.857-182.857q-5.143-5.143-13.143-5.143-7.429 0-12.857 5.429t-5.429 12.857v109.714h-201.143q-7.429 0-12.857 5.429t-5.429 12.857v109.714q0 7.429 5.429 12.857t12.857 5.429h201.143v109.714q0 8 5.143 13.143t13.143 5.143q6.857 0 13.714-5.714l182.286-182.286q5.143-5.143 5.143-13.143zM749.714 438.857q0 84.571-41.714 156t-113.143 113.143-156 41.714-156-41.714-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
+<glyph unicode="&#xf190;" d="M658.286 493.714v-109.714q0-7.429-5.429-12.857t-12.857-5.429h-201.143v-109.714q0-8-5.143-13.143t-13.143-5.143q-6.857 0-13.714 5.714l-182.286 182.286q-5.143 5.143-5.143 13.143t5.143 13.143l182.857 182.857q5.143 5.143 13.143 5.143 7.429 0 12.857-5.429t5.429-12.857v-109.714h201.143q7.429 0 12.857-5.429t5.429-12.857zM749.714 438.857q0 84.571-41.714 156t-113.143 113.143-156 41.714-156-41.714-113.143-113.143-41.714-156 41.714-156 113.143-113.143 156-41.714 156 41.714 113.143 113.143 41.714 156zM877.714 438.857q0-119.429-58.857-220.286t-159.714-159.714-220.286-58.857-220.286 58.857-159.714 159.714-58.857 220.286 58.857 220.286 159.714 159.714 220.286 58.857 220.286-58.857 159.714-159.714 58.857-220.286z" />
+<glyph unicode="&#xf1dd;" d="M730.286 842.857v-41.714q0-16.571-10.571-34.857t-24.286-18.286q-28.571 0-30.857-0.571-14.857-3.429-18.286-17.714-1.714-6.286-1.714-36.571v-658.286q0-14.286-10.286-24.571t-24.571-10.286h-61.714q-14.286 0-24.571 10.286t-10.286 24.571v696h-81.714v-696q0-14.286-10-24.571t-24.857-10.286h-61.714q-14.857 0-24.857 10.286t-10 24.571v283.429q-84 6.857-140 33.714-72 33.143-109.714 102.286-36.571 66.857-36.571 148 0 94.857 50.286 163.429 50.286 67.429 119.429 90.857 63.429 21.143 238.286 21.143h273.714q14.286 0 24.571-10.286t10.286-24.571z" horiz-adv-x="731" />
+</font></defs></svg>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.ttf
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.ttf b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.ttf
new file mode 100644
index 0000000..f643244
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.ttf differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.woff
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.woff b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.woff
new file mode 100644
index 0000000..7f40846
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/fonts/icomoon.woff differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/1.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/1.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/1.gif
new file mode 100644
index 0000000..0d66977
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/1.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/10.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/10.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/10.gif
new file mode 100644
index 0000000..fb50b06
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/10.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/11.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/11.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/11.gif
new file mode 100644
index 0000000..9f5dba4
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/11.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/12.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/12.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/12.gif
new file mode 100644
index 0000000..a373d0b
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/12.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/13.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/13.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/13.gif
new file mode 100644
index 0000000..b00b163
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/13.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/14.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/14.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/14.gif
new file mode 100644
index 0000000..6d6642e
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/14.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/2.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/2.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/2.gif
new file mode 100644
index 0000000..100ff79
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/2.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/3.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/3.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/3.gif
new file mode 100644
index 0000000..5008ca7
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/3.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/4.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/4.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/4.gif
new file mode 100644
index 0000000..0e5617d
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/4.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/5.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/5.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/5.gif
new file mode 100644
index 0000000..9bc75ad
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/5.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/6.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/6.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/6.gif
new file mode 100644
index 0000000..d396407
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/6.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/7.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/7.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/7.gif
new file mode 100644
index 0000000..c90b2f3
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/7.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/8.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/8.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/8.gif
new file mode 100644
index 0000000..6fe3287
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/8.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/callouts/9.gif
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/callouts/9.gif b/builds/2.3.26-nightly/docgen-resources/img/callouts/9.gif
new file mode 100644
index 0000000..bc5c812
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/callouts/9.gif differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/patterned-bg.png
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/patterned-bg.png b/builds/2.3.26-nightly/docgen-resources/img/patterned-bg.png
new file mode 100644
index 0000000..a476f88
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/patterned-bg.png differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/img/xxe.png
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/img/xxe.png b/builds/2.3.26-nightly/docgen-resources/img/xxe.png
new file mode 100644
index 0000000..17b82aa
Binary files /dev/null and b/builds/2.3.26-nightly/docgen-resources/img/xxe.png differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/docgen-resources/main.min.js
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/docgen-resources/main.min.js b/builds/2.3.26-nightly/docgen-resources/main.min.js
new file mode 100644
index 0000000..c153067
--- /dev/null
+++ b/builds/2.3.26-nightly/docgen-resources/main.min.js
@@ -0,0 +1 @@
+"use strict";!function(t,e){function n(t){var e=null!=t.url,n=document.createElement(e?"a":"span");return n.innerHTML=t.title,e&&(n.href=t.url),n.className="depth-"+d+"-link",n}function a(t){t.stopPropagation();var e=t.target.parentNode;39===t.which?(e.classList.remove("closed"),e.classList.add("open")):37===t.which&&(e.classList.add("closed"),e.classList.remove("open"))}function i(t){if(t.children.length){for(var e=0;e<t.children.length;e++)if(t.children[e].isFile)return!1;return!0}return!0}function s(t){t.stopPropagation();var e=t.target;"LI"===e.tagName.toUpperCase()&&(e.classList.toggle("closed"),e.classList.toggle("open"))}function o(t,c,l){var r=document.createElement("ul");r.classList.add("depth-"+d);for(var u=0;u<t.length;u++){var f=t[u],p=document.createElement("li"),h=i(f);0===d&&p.classList.add("section"),"Search"===f.title&&(p.style.display="none"),p.addEventListener("click",s),p.addEventListener("keydown",a),p.appendChild(n(f)),f.title===e[c+1]&&l?(c+2===e.length&&p.cla
 ssList.add("current"),0!==d&&p.classList.add("open"),c++):d>0&&p.classList.add("closed"),h?(p.classList.add("last"),"undefined"!=typeof f.flags&&p.classList.add(f.flags.join(" "))):d>0&&p.classList.add("has-children"),h||(d++,p.appendChild(o(f.children,c,f.title===e[c])),d--),r.appendChild(p)}return r}function c(t){var e=document.getElementById("table-of-contents-wrapper"),n=o(t.children,0,!0);n.classList.add("table-of-contents"),e.appendChild(n)}var d=0;c(t)}(toc,breadcrumb),function(){function t(t){var e=t.offsetTop+t.offsetParent.offsetTop-5,n=window.pageYOffset;return e===n||n>e}function e(t){var e=document.getElementById(t);e&&e.classList.remove("active")}function n(n){var a=document.getElementById(n);window.setTimeout(function(){a&&!t(a)&&(a.classList.add("active"),window.setTimeout(function(){e(n)},1e3))},1)}function a(t){var e=t.target;e.classList.contains("page-menu-link")&&n(e.getAttribute("data-menu-target"))}function i(){return window.location.hash?window.location.hash.s
 ubstring(1):""}function s(){var t=i();""!==t&&n(t)}function o(){document.addEventListener("click",a),document.addEventListener("DOMContentLoaded",s)}o()}(),function(){function t(t){t=t.replace(/\+/g," "),t=decodeURIComponent(t),a.value=t}function e(){var e=window.location.search;if(""!==e)for(var n=e.split("&"),a=0;a<n.length;a++){var s=n[a],o=s.split("=");o[0]==="?"+i&&t(o[1])}}function n(){a=document.getElementById("search-field"),null!==a&&e()}var a,i="q";n()}();
\ No newline at end of file


[08/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_20.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_20.html b/builds/2.3.26-nightly/versions_2_3_20.html
new file mode 100644
index 0000000..3170642
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_20.html
@@ -0,0 +1,691 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.20 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.20">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_20.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_20.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_20.html"><span itemprop="name">2.3.20</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.20"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_21.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_19.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_20" itemprop="headline">2.3.20</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_174" data-menu-target="autoid_174">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_175" data-menu-target="autoid_175">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_176" data-menu-target="autoid_176">Other changes</a></li></ul> </div><p>Date of release: 2013-06-27</p><p>If you are IDE/tools author, <a href="#version_2_3_20_ide">note these changes</a>.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_174">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Error message quality improvements:</p>
+
+              <ul>
+                <li>
+                  <p>Many error messages are now more helpful, especially
+                  for users who are not experienced with FreeMarker. For
+                  example, some of the most common user mistakes are
+                  recognized and tips are shown to fix them, reducing support
+                  costs or the time employees spend to figure them out.</p>
+                </li>
+
+                <li>
+                  <p>It&#39;s now ensured that the error location in the
+                  template is included in the message returned by
+                  <code class="inline-code">TemplateException.getMessage()</code>. The stack
+                  trace always showed this information anyway, but some users
+                  only see the "message", not the stack trace,
+                  and that often didn&#39;t contained the location.</p>
+                </li>
+
+                <li>
+                  <p>The template language part of the stack trace is now
+                  more detailed, and easier to understand. This is especially
+                  helpful in applications that use a complex library of macros
+                  and functions.</p>
+                </li>
+
+                <li>
+                  <p>Several smaller bugs were fixed that made the error
+                  information wrong or lacking.</p>
+                </li>
+
+                <li>
+                  <p>The layout of the error messages is now more
+                  consistent, and generally easier to read.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Changes regarding boolean to string conversions and
+              formatting:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">?c</code> (computer-language formatting)
+                  now works with booleans too, always giving
+                  <code class="inline-code">&quot;true&quot;</code> or <code class="inline-code">&quot;false&quot;</code>
+                  regardless of the <code class="inline-code">boolean_format</code>. This
+                  way it&#39;s safe for generating JavaScript in a context where
+                  human-readable text is also rendered.</p>
+                </li>
+
+                <li>
+                  <p>If the <code class="inline-code">boolean_format</code> setting is
+                  set to anything but the default
+                  <code class="inline-code">&quot;true,false&quot;</code> value, boolean values will
+                  be automatically converted to string where a string value is
+                  expected by the template language, instead of giving an
+                  error. This helps you spare
+                  those<code class="inline-code">?string</code>-s after boolean values. This
+                  is the same logic as with numbers and dates, which were
+                  always automatically converted to string, according the
+                  corresponding format setting. Except, the provided default
+                  boolean format is useless for automatic conversion (but it&#39;s
+                  still there for <code class="inline-code">?string</code>, for backward
+                  compatibility), hence it must be set manually. (We certainly
+                  couldn&#39;t come up with a sensible default anyway, as for
+                  booleans it depends too much on the application, not to
+                  mention the localisation issues.)</p>
+
+                  <p>Exactly like with numbers and dates, automatic
+                  conversion doesn&#39;t happen in these cases:</p>
+
+                  <ul>
+                    <li>
+                      <p>Comparisons, i.e., <code class="inline-code">someBoolean ==
+                      &#39;true&#39;</code> is still an error</p>
+                    </li>
+
+                    <li>
+                      <p>Method calls where the declared type of the
+                      parameter is <code class="inline-code">String</code> but the actual
+                      value is a boolean; still an error</p>
+                    </li>
+
+                    <li>
+                      <p>When the boolean value is used as key in
+                      <code class="inline-code"><em class="code-color">expr</em>[<em class="code-color">key</em>]</code>,
+                      it&#39;s still an error (there was no automatic conversion
+                      there for other types either, as numerical and string
+                      keys have different meaning)</p>
+                    </li>
+
+                    <li>
+                      <p>The opposite direction, i.e., string to boolean
+                      conversion; won&#39;t happen</p>
+                    </li>
+                  </ul>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>New built-ins for numbers: <a href="ref_builtins_number.html#ref_builtin_abs"><code>abs</code></a>, <a href="ref_builtins_number.html#ref_builtin_is_nan"><code>is_nan</code></a>,
+              <a href="ref_builtins_number.html#ref_builtin_is_infinite"><code>is_infinite</code></a>.
+              Like <code class="inline-code">n?abs</code> will give the absolute value of
+              <code class="inline-code">n</code>.</p>
+            </li>
+
+            <li>
+              <p>New built-in for sequences: <a href="ref_builtins_sequence.html#ref_builtin_join"><code>join</code></a>. Like
+              <code class="inline-code">[1, 2, 3]?join(&quot;, &quot;)</code> will give the string
+              <code class="inline-code">&quot;1, 2, 3&quot;</code>.</p>
+            </li>
+
+            <li>
+              <p>If you set the
+              <code class="inline-code">incompatible_improvements</code> setting (see <a href="http://freemarker.org/docs/api/freemarker/template/Configuration.html#setIncompatibleImprovements%28freemarker.core.Version%29">here</a>)
+              to <code class="inline-code">2.3.20</code> or higher, <code class="inline-code">?html</code>
+              will escape apostrophe-quotes just like
+              <code class="inline-code">?xhtml</code> does. Utilizing this is highly
+              recommended, because otherwise if interpolations are used inside
+              attribute values that use apostrophe-quotation (<code class="inline-code">&lt;foo
+              bar=&#39;${val}&#39;&gt;</code>) instead of plain quotation mark
+              (<code class="inline-code">&lt;foo bar=&quot;${val}&quot;&gt;</code>), they might
+              produce HTML/XML that&#39;s not well-formed. Note that
+              <code class="inline-code">?html</code> didn&#39;t do this because long ago there
+              was no cross-browser way of doing this, but it&#39;s not a real
+              concern anymore. Also note that this will be the default
+              behavior starting from 2.4.</p>
+            </li>
+
+            <li>
+              <p>Bug fix [<a href="https://sourceforge.net/p/freemarker/bugs/390/">390</a>]
+              (and other improvements): <code class="inline-code">?js_string</code> and
+              <code class="inline-code">?json_string</code> didn&#39;t escape the
+              <code class="inline-code">u2028</code>-<code class="inline-code">u2029</code> line
+              terminators (problem for JavaScript) and the
+              <code class="inline-code">u007F</code>-<code class="inline-code">u009F</code> control
+              characters (maybe a problem in JSON, depending on
+              implementation). Furthermore, the escaping of
+              <code class="inline-code">\</code>, <code class="inline-code">&lt;</code>, and
+              <code class="inline-code">&gt;</code> become safer in that now they are
+              escaped whenever it can&#39;t be guaranteed that they won&#39;t be part
+              of <code class="inline-code">&lt;!</code>, <code class="inline-code">]]&gt;</code> or
+              <code class="inline-code">&lt;/</code>. Earlier they were only escaped when it
+              was known that they are part of these patterns, thus it was
+              possible to assemble these patterns from two adjacent
+              interpolations. Additionally, from now on
+              <code class="inline-code">&lt;?</code> and <code class="inline-code">--&gt;</code> also
+              count as dangerous patterns, and will trigger
+              <code class="inline-code">&lt;</code> and <code class="inline-code">&gt;</code>
+              escaping.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: The following string built-ins didn&#39;t coerce
+              the numerical, date (and now the boolean) left-values to string,
+              instead they threw a type error: contains,
+              <code class="inline-code">index_of</code>, <code class="inline-code">last_index_of</code>,
+              <code class="inline-code">left_pad</code>, <code class="inline-code">right_pad</code>,
+              <code class="inline-code">matches</code>, <code class="inline-code">replace</code>,
+              <code class="inline-code">split</code>, <code class="inline-code">new</code>. The other
+              string built-ins already did this conversion for a long time;
+              this was an accidental inconsistency.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: With the default arithmetic engine, it&#39;s now
+              supported to compare infinite (positive or negative) with 0, to
+              decide its sign.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_175">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><code class="inline-code">BeansWrapper</code> introspection cache
+              improvements:</p>
+
+              <ul>
+                <li>
+                  <p>Added public API to <code class="inline-code">BeansWrapper</code>
+                  for clearing the class cache:
+                  <code class="inline-code">clearClassIntrospecitonCache()</code>,
+                  <code class="inline-code">removeFromClassIntrospectionCache(Class)</code></p>
+                </li>
+
+                <li>
+                  <p>Significantly improved multi-core performance:</p>
+
+                  <ul>
+                    <li>
+                      <p>Uses <code class="inline-code">ConcurrentHashMap</code> when
+                      running on Java 5 or later.</p>
+                    </li>
+
+                    <li>
+                      <p>The cache won&#39;t block readers while introspecting
+                      a class after a cache miss</p>
+                    </li>
+
+                    <li>
+                      <p>If multiple threads need to introspect the same
+                      class that&#39;s not in the cache yet, only one of them will
+                      do it, the others will wait for its results.</p>
+                    </li>
+                  </ul>
+                </li>
+
+                <li>
+                  <p>Bug fix [<a href="https://sourceforge.net/p/freemarker/bugs/361/">361</a>]:
+                  There was a small chance of deadlock when class-reloading
+                  was detected. Locking was redesigned to prevent such
+                  oversights in the future.</p>
+                </li>
+
+                <li>
+                  <p>The internal package-visible
+                  <code class="inline-code">freemarker.ext.beans</code> API was slightly
+                  changed as the result of internal cleanup. Nobody but the
+                  FreeMarker developers should define classes in that package,
+                  so it shouldn&#39;t break anything. But if somebody did some
+                  in-house hacks there, re-compile to see if it still
+                  works.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Nameless templates (those directly created with
+              <code class="inline-code">new Template(null,
+              <em class="code-color">...</em>)</code> instead of loaded
+              through <code class="inline-code">Configuration</code>) couldn&#39;t include or
+              import other templates, and thrown a
+              <code class="inline-code">NullPointerException</code> when they tried to. Now
+              they resolve relative paths as if they were in the template root
+              directory.</p>
+            </li>
+
+            <li>
+              <p>Bug fix: Regular expression built-ins and some logger
+              libraries (most importantly Log4J) were unavailable on the
+              Google App Engine platform. This fix is only present in the
+              GAE-compatible build, 2.3.20-gae.</p>
+            </li>
+
+            <li>
+              <p>Added new method to <code class="inline-code">Configuration</code>:
+              <code class="inline-code">CacheStorage getCacheStorage()</code></p>
+            </li>
+
+            <li>
+              <p>Added new methods to <code class="inline-code">Environment</code> to
+              make comparisons among <code class="inline-code">TemplateModel</code>-s
+              according the rules of the template language operators:
+              <code class="inline-code">applyEqualsOperator</code>,
+              <code class="inline-code">applyEqualsOperatorLenient</code>,
+              <code class="inline-code">applyLessThanOperator</code>,
+              <code class="inline-code">applyLessThanOrEqualsOperator</code>,
+              <code class="inline-code">applyGreaterThanOperator</code>,
+              <code class="inline-code">applyWithGreaterThanOrEqualsOperator</code></p>
+            </li>
+
+            <li>
+              <p>Added new method,
+              <code class="inline-code">Environment.isInAttemptBlock()</code> to check if we
+              are within an <code class="inline-code">#attempt</code> block. This can be
+              useful for <code class="inline-code">TemplateExceptionHandler</code>-s, as
+              then they don&#39;t need to print the error to the output since
+              <code class="inline-code">#attempt</code> will roll it back anyway. This is
+              already utilized by the built-in
+              <code class="inline-code">TemplateExceptionHandler</code>-s
+              (<code class="inline-code">DEBUG_HANDLER</code> and
+              <code class="inline-code">HTML_DEBUG_HANDLER</code>).</p>
+            </li>
+
+            <li>
+              <p>Added convenience constructor <code class="inline-code">Template(String
+              name, String sourceCode, Configuration cfg)</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateException</code>-s and
+              <code class="inline-code">TemplateModelExcepton</code>-s now can have
+              <code class="inline-code">Throwable</code> cause, not just
+              <code class="inline-code">Exception</code> (it was an old oversight that
+              somehow wasn&#39;t fixed so far).</p>
+            </li>
+
+            <li>
+              <p>Parsing error messages under the JBoss Tools FreeMarker
+              IDE now doesn&#39;t contain the usual location line, so that the
+              actual error description is immediately visible in the Eclipse
+              "Problems" view. (It&#39;s a "hack" in
+              FreeMarler itself; it tries to detect if it runs under the
+              plugin and then changes its behavior.)</p>
+            </li>
+
+            <li>
+              <p><a name="version_2_3_20_ide"></a>Mostly concerning tool (like IDE plugin) authors:</p>
+
+              <ul>
+                <li>
+                  <p>The error message formats (what
+                  <code class="inline-code">Throwable.getMessage()</code> returns) were
+                  heavily changed for <code class="inline-code">TemplateException</code>-s,
+                  and somewhat for <code class="inline-code">ParseException</code>-s. It&#39;s
+                  unlikely that anybody depends on these, but if you tried to
+                  parse these messages, be aware of this.</p>
+                </li>
+
+                <li>
+                  <p>Fixed bug where <code class="inline-code">ParseException</code> has
+                  contained 0 as line and column number for lexical errors.
+                  Now it contains the correct information.</p>
+                </li>
+
+                <li>
+                  <p>Added
+                  <code class="inline-code">ParseException.getEditorMessage()</code>: As in
+                  IDE-s the error markers show the error location to the user
+                  already, the location should not be repeated in the error
+                  message. So in IDE-s you should use this method instead of
+                  <code class="inline-code">getMessage()</code>. (Under JBoss Tools:
+                  FreeMarker now <em>tries</em> to detect that it
+                  runs under the plugin, and then it already does this, except
+                  that it still shows the column number as that&#39;s missing from
+                  the error marker location.)</p>
+                </li>
+
+                <li>
+                  <p>Added
+                  <code class="inline-code">ParseException.getTemplateName()</code></p>
+                </li>
+
+                <li>
+                  <p>Added
+                  <code class="inline-code">Configuration.getSupportedBuiltInNames()</code>.
+                  As new built-ins
+                  (<code class="inline-code"><em class="code-color">expr</em>?<em class="code-color">builtin_name</em></code>)
+                  are very often added to new FreeMarker versions,
+                  auto-completion or syntax highlighting should use this set
+                  instead of a fixed set of a names.</p>
+                </li>
+
+                <li>
+                  <p>The format returned by
+                  <code class="inline-code">TemplateElement.getDescription()</code> was
+                  heavily changed. It&#39;s what FTL stack traces and maybe some
+                  outline views (tree-views) show. It was always for human
+                  reading (and till now was too inconsistent for anything
+                  else), so it&#39;s unlikely that this breaks anything.</p>
+                </li>
+
+                <li>
+                  <p>There were some smaller changes in
+                  <code class="inline-code">freemarker.debug</code>, and it&#39;s expected that
+                  there will be more, so it was marked as experimental. As far
+                  as we know, nobody used it, so it shouldn&#39;t break
+                  anything.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>In <em>experimental status only</em>, but
+              <code class="inline-code">freemarker.jar</code> is now an OSGi bundle (see
+              <code class="inline-code">freemarker.jar/META-INF/MANIFEST.MF</code>).
+              Depending on user feedback, the bundle description may change in
+              the future. So please give feedback, especially if you are an
+              OSGi expert!</p>
+            </li>
+
+            <li>
+              <p>Improved the HTML generated by
+              <code class="inline-code">HTML_DEBUG_HANDLER</code> (the
+              red-on-yellow-background error message). Most importantly, now
+              it will word-wrap. Other changes are minor, like now it can
+              break out of CDATA sections, or now it has less intense
+              colors.</p>
+            </li>
+
+            <li>
+              <p>New <code class="inline-code">Template</code> method,
+              <code class="inline-code">getActualTagSyntax()</code>: Tells if the template
+              is using traditional or square-bracket syntax. As the syntax can
+              be overridden in the template, also it&#39;s possibly decided by
+              auto-detection, it wasn&#39;t trivial to it tell till now.</p>
+            </li>
+
+            <li>
+              <p>Added some utility methods that are useful for generating
+              error messages in custom directives:
+              <code class="inline-code">ClassUtil.getFTLTypeDescription(TemplateModel)</code>,
+              <code class="inline-code">getShortClassName</code>,
+              <code class="inline-code">getShortClassNameOfObject</code></p>
+            </li>
+
+            <li>
+              <p>Bug fix [<a href="https://sourceforge.net/p/freemarker/bugs/364/">364</a>]:
+              <code class="inline-code">freemarker.template.EmptyMap</code> (which is passed
+              to <code class="inline-code">TemplateDirectiveModel</code>-s if there are no
+              parameters) now allows <code class="inline-code">remove(key)</code>,
+              <code class="inline-code">clear()</code> and
+              <code class="inline-code">putAll(anyEmptyMap)</code> as these do nothing
+              anyway.</p>
+            </li>
+
+            <li>
+              <p>Bug fix [<a href="https://sourceforge.net/p/freemarker/bugs/375/">375</a>]:
+              <code class="inline-code">NullPointerException</code> on IBM J9 VM (not on the
+              Sun/Oracle implementation) in <code class="inline-code">BeansWrapper</code>
+              when the Java implementation legally returns
+              <code class="inline-code">null</code> for some <code class="inline-code">BeanInfo</code>
+              getters.</p>
+            </li>
+
+            <li>
+              <p>Bug fix: Cloning a <code class="inline-code">Configuration</code> didn&#39;t
+              deep-clone the data structures storing the
+              <code class="inline-code">auto_imports</code> and
+              <code class="inline-code">auto_includes</code> settings, hence possibly
+              leading to aliasing problems.</p>
+            </li>
+
+            <li>
+              <p>Bug fix [<a href="https://sourceforge.net/p/freemarker/bugs/377/">377</a>]:
+              After a failed method call the exception handler could fail in
+              the rare occasion when
+              <code class="inline-code">targetObject.toString()</code> fails, raising a
+              runtime exception that not even the <code class="inline-code">attempt</code>
+              directive will catch.</p>
+            </li>
+
+            <li>
+              <p>Bug fix [<a href="https://sourceforge.net/p/freemarker/bugs/391/">391</a>]:
+              If a template name has contained <code class="inline-code">*</code> that was
+              not the only character in the path step, it threw
+              <code class="inline-code">NegativeArraySizeException</code> instead of
+              <code class="inline-code">FileNotFoundException</code>.</p>
+            </li>
+
+            <li>
+              <p>With the default arithmetic engine, performance
+              optimizations of comparison operations when some of the numbers
+              is 0, and when the sign of the numbers differ.</p>
+            </li>
+
+            <li>
+              <p>Some smaller fixes in
+              <code class="inline-code">TemplateElement.getCanonicalForm()</code>, also some
+              quality improvements there.</p>
+            </li>
+
+            <li>
+              <p>Bug fixes in <code class="inline-code">classic_compatible</code> mode
+              (this mode is to help migrating from FreeMarker 1), thanks to
+              Information Mosaic:</p>
+
+              <ul>
+                <li>
+                  <p>When a macro was called with a
+                  <code class="inline-code">null</code>/missing parameter value, it has
+                  caused error like in FreeMarker 2.3</p>
+                </li>
+
+                <li>
+                  <p>When a hash literal contained reference to a
+                  <code class="inline-code">null</code>/missing variable, like in <code class="inline-code">{
+                  &#39;a&#39;: missingVar }</code>, it has caused an error like in
+                  2.3</p>
+                </li>
+
+                <li>
+                  <p>When a sequence literal contained reference to a
+                  <code class="inline-code">null</code>/missing variable, like in
+                  <code class="inline-code">[1, missingVar]</code>, it has caused an error
+                  like in 2.3</p>
+                </li>
+
+                <li>
+                  <p>When a the left-side of the <code class="inline-code">.</code> (dot)
+                  or <code class="inline-code">[<em class="code-color">key</em>]</code>
+                  operator was <code class="inline-code">null</code> or missing variable,
+                  like in <code class="inline-code">missingVar.subVar</code>, it has caused
+                  an error like in 2.3</p>
+                </li>
+
+                <li>
+                  <p>When <code class="inline-code">BeanModel</code>-s are tried to be
+                  treated as strings, for most subclasses it has failed with
+                  type error, like in 2.3. In FreeMarker 1 all
+                  <code class="inline-code">BeanModel</code>-s were
+                  <code class="inline-code">TemplateScalarModel</code>-s, so it should
+                  succeed. The fix for this only works where FreeMarker
+                  <em>coerces</em> to string (string built-ins on
+                  the left-side and concatenation (<code class="inline-code">+</code>) and
+                  interpolation
+                  (<code class="inline-code">${<em class="code-color">...</em>}</code>) do
+                  that), otherwise unfortunately it will still fail.</p>
+                </li>
+
+                <li>
+                  <p>The <code class="inline-code">classic_compatible</code> setting now
+                  accepts value <code class="inline-code">2</code> along
+                  <code class="inline-code">true</code> (alias <code class="inline-code">1</code>) and
+                  <code class="inline-code">false</code> (alias <code class="inline-code">0</code>).
+                  <code class="inline-code">2</code> means <code class="inline-code">true</code> but with
+                  emulating bugs in early 2.x classic-compatibility mode.
+                  Currently this only affects how booleans are converted to
+                  string; with <code class="inline-code">1</code> it&#39;s always
+                  <code class="inline-code">&quot;true&quot;</code>/<code class="inline-code">&quot;&quot;</code>, but with
+                  <code class="inline-code">2</code> it&#39;s <code class="inline-code">&quot;true&quot;/&quot;false&quot;</code>
+                  for values wrapped by <code class="inline-code">BeansWrapper</code> as
+                  then <code class="inline-code">Boolean.toString()</code> prevails. Note
+                  that
+                  <code class="inline-code"><em class="code-color">someBoolean</em>?string</code>
+                  will always consistently format the boolean according the
+                  <code class="inline-code">boolean_format</code> setting, just like in
+                  FreeMarker 2.3.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Bug fix [<a href="https://sourceforge.net/p/freemarker/bugs/394/">394</a>]:
+              When trying to access the optional Jython (or W3C DOM) classes
+              has failed in <code class="inline-code">DefaultObjectWrapper</code> with an
+              <code class="inline-code">Error</code>, rather than with an
+              <code class="inline-code">Exception</code>, loading the
+              <code class="inline-code">DefaultObjectWrapper</code> class itself has failed,
+              instead of the Jython (or W3C DOM) support being disabled. From
+              now in, it will survive any kind of <code class="inline-code">Throwable</code>
+              there, and if the <code class="inline-code">Throwable</code> is not an
+              <code class="inline-code">ClassNotFoundException</code>, it will also log the
+              <code class="inline-code">Throwable</code>.</p>
+            </li>
+
+            <li>
+              <p>Improved the performance of
+              <code class="inline-code">(thisVarIsMissing.foo)!default</code> and similar
+              <em>parenthetical</em> existence operators and
+              existence built-ins in the case when the
+              <code class="inline-code">null</code>/missing variable is not the last step
+              inside the parenthesis. In that case it&#39;s about 30 times faster
+              now, measured on Java 6. In other cases (when all variables
+              exists, or the the last step is missing) the performance is
+              about the same (relatively fast) as before.</p>
+            </li>
+
+            <li>
+              <p>Added interface
+              <code class="inline-code">freemarker.cache.CacheStorageWithGetSize</code>
+              which allows querying the current number of cache entries in a
+              <code class="inline-code">CacheStorage</code> that implements it. It&#39;s
+              implemented by all out-of-the-box
+              <code class="inline-code">CacheStorage</code> implementations. Also added
+              <code class="inline-code">getStrongSize()</code> and
+              <code class="inline-code">getSoftSize()</code> to
+              <code class="inline-code">MRUCacheStorage</code>.</p>
+            </li>
+
+            <li>
+              <p>Version and build information changes:</p>
+
+              <ul>
+                <li>
+                  <p>The form of the nightly build version numbers has
+                  changed to be Maven/JSR 277 compliant. What earlier was
+                  <code class="inline-code">2.3.19mod</code> is now something like
+                  <code class="inline-code">2.3.20-nightly_20130605T130506Z</code> (note how
+                  the last points to the target release version instead of the
+                  last release version).</p>
+                </li>
+
+                <li>
+                  <p>The form of the Release Candidate and Preview version
+                  numbers where changed to be Maven/JSP 277 compliant:
+                  <code class="inline-code">2.4pre2</code> is now
+                  <code class="inline-code">2.4.0-pre02</code>, <code class="inline-code">2.4rc1</code> is
+                  now <code class="inline-code">2.4.0-rc01</code>.</p>
+                </li>
+
+                <li>
+                  <p>Added new static method to
+                  <code class="inline-code">Configuration</code> to query build date:
+                  <code class="inline-code">getBuildDate()</code>. This is also printed by
+                  the main command line class.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Various internal code cleanups.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_176">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Many JavaDoc improvements, mostly in the documentation of
+              the basic (most frequently used) classes.</p>
+            </li>
+
+            <li>
+              <p>FreeMarker source code has moved to GitHub (<a href="???">https://github.com/freemarker/freemarker</a>),
+              other project resources has remained on sourceforge.net.</p>
+            </li>
+
+            <li>
+              <p>Project structure cleanup, Ivy-based build script.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_21.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_19.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>



[40/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_template_directives.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_template_directives.html b/builds/2.3.26-nightly/dgui_template_directives.html
new file mode 100644
index 0000000..cbd5bcd
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_template_directives.html
@@ -0,0 +1,136 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Directives - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Directives">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_template_directives.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_template_directives.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template.html"><span itemprop="name">The Template</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template_directives.html"><span itemprop="name">Directives</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","The Template","Directives"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_template_overallstructure.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template_exp.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_template_directives" itemprop="headline">Directives</h1>
+</div></div><a name="term.designer.directive"></a><p>You use FTL tags to call <strong>directives</strong>. In the example you have called the
+        <code class="inline-code">list</code> directive. Syntactically you have done it with
+        two tags: <code class="inline-code">&lt;#list animals as animal&gt;</code> and
+        <code class="inline-code">&lt;/#list&gt;</code>.</p><p>There are two kind of FTL tags:</p><ul>
+          <li>
+            <p>Start-tag:
+            <code class="inline-code">&lt;#<em class="code-color">directivename</em>
+            <em class="code-color">parameters</em>&gt;</code></p>
+          </li>
+
+          <li>
+            <p>End-tag:
+            <code class="inline-code">&lt;/#<em class="code-color">directivename</em>&gt;</code></p>
+          </li>
+        </ul><p>This is similar to HTML or XML syntax, except that the tag name
+        starts with <code class="inline-code">#</code>. If the directive doesn&#39;t have nested
+        content (content between the start-tag and the end-tag), you must use
+        the start-tag with no end-tag. For example you write <code class="inline-code">&lt;#if
+        <em class="code-color">something</em>&gt;<em class="code-color">...</em>&lt;/#if&gt;</code>,
+        but just <code class="inline-code">&lt;#include
+        <em class="code-color">something</em>&gt;</code> as FreeMarker knows
+        that the <code class="inline-code">include</code> directive can&#39;t have nested
+        content.</p><p>The format of the
+        <code class="inline-code"><em class="code-color">parameters</em></code> depends on
+        the
+        <code class="inline-code"><em class="code-color">directivename</em></code>.</p><p>In fact there are two types of directives: <a href="gloss.html#gloss.predefinedDirective">predefined directives</a> and
+        <a href="gloss.html#gloss.userDefinedDirective">user-defined
+        directives</a>. For user-defined directives you use
+        <code class="inline-code">@</code> instead of <code class="inline-code">#</code>, for example
+        <code class="inline-code">&lt;@mydirective
+        <em class="code-color">parameters</em>&gt;<em class="code-color">...</em>&lt;/@mydirective&gt;</code>.
+        Further difference is that if the directive has no nested content, you
+        must use a tag like <code class="inline-code">&lt;@mydirective
+        <em class="code-color">parameters</em> /&gt;</code>, similarly as in
+        XML (e.g. <code class="inline-code">&lt;img <em class="code-color">...</em>
+        /&gt;</code>). But user-defined directives is an advanced topic
+        that will be discussed <a href="dgui_misc_userdefdir.html">later</a>.</p><p>FTL tags, like HTML tags, must be properly nested. So the code
+        below is wrong, as the <code class="inline-code">if</code> directive is both inside
+        and outside of the nested content of the <code class="inline-code">list</code>
+        directive:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;ul&gt;
+<strong>&lt;#list animals as animal&gt;</strong>
+  &lt;li&gt;${animal.name} for ${animal.price} Euros
+  <strong>&lt;#if user == &quot;Big Joe&quot;&gt;</strong>
+     (except for you)
+<strong>&lt;/#list&gt;</strong> &lt;#-- WRONG! The &quot;if&quot; has to be closed first. --&gt;
+<strong>&lt;/#if&gt;</strong>
+&lt;/ul&gt;</pre></div><p>Note that FreeMarker doesn&#39;t care about the nesting of HTML
+        tags, only about the nesting of FTL tags. It just sees HTML as flat
+        text, it doesn&#39;t interpret it in any way.</p><p>If you try to use a non-existing directive (e.g., you mistype
+        the directive name), FreeMarker will decline to use the template and
+        produce an error message.</p><p>FreeMarker ignores superfluous <a href="gloss.html#gloss.whiteSpace">white-space</a> inside FTL tags. So you
+        can write this:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template"><span class="marked-text"><span class="marked-ftl-tag">&lt;#list<em><span class="marked-invisible-text">[BR]</span></em>
+��animals�������as<em><span class="marked-invisible-text">[BR]</span></em>
+�����animal<em><span class="marked-invisible-text">[BR]</span></em>
+&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-interpolation">${animal.name}</span>�for�<span class="marked-interpolation">${animal.price}</span>�Euros<em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-ftl-tag">&lt;/#list����&gt;</span></span></pre></div><p>You may not, however, insert white-space between the
+        <code class="inline-code">&lt;</code> or <code class="inline-code">&lt;/</code> and the directive
+        name.</p><p>The complete list and description of all directives can be found
+        in the <a href="ref_directives.html">Template Language Reference/Directive Reference</a> (but I recommend that you look
+        at the chapter about expressions first).</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>FreeMarker can be configured to use <code class="inline-code">[</code> and
+          <code class="inline-code">]</code> instead of <code class="inline-code">&lt;</code> and
+          <code class="inline-code">&gt;</code> in the FTL tags and FTL comments, like
+          <code class="inline-code">[#if user == &quot;Big
+          Joe&quot;]<em class="code-color">...</em>[/#if]</code>. For more
+          information read: <a href="dgui_misc_alternativesyntax.html">Miscellaneous/Alternative (square bracket) syntax</a>.</p>
+          </div>
+  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>FreeMarker can be configured so that it understands predefined
+          directives without <code class="inline-code">#</code> (like <code class="inline-code">&lt;if user
+          == &quot;Big
+          Joe&quot;&gt;<em class="code-color">...</em>&lt;/if&gt;</code>).
+          However we don&#39;t recommend the usage of this mode. For more
+          information read: <a href="ref_depr_oldsyntax.html">Template Language Reference/Deprecated FTL constructs/Old FTL syntax</a></p>
+          </div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_template_overallstructure.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template_exp.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[12/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_3.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_3.html b/builds/2.3.26-nightly/versions_2_2_3.html
new file mode 100644
index 0000000..dbfd3f7
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_3.html
@@ -0,0 +1,106 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.3 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.3">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_3.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_3.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_3.html"><span itemprop="name">2.2.3</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.3"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_4.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_2.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_3" itemprop="headline">2.2.3</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_255" data-menu-target="autoid_255">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_256" data-menu-target="autoid_256">Changes on the Java side</a></li></ul> </div><p>Date of release: 2003-07-19</p><p>Bugfix release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_255">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Added the <code class="inline-code">is_date</code> built-in.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Various <code class="inline-code">is_xxx</code> built-ins were
+              returning <code class="inline-code">false</code> when applied to undefined
+              expressions. Now they correctly fail on them.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_256">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: The JSP taglib support can now read JSP 1.2
+              compliant TLD XML files.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The JSP taglib support now emits more helpful
+              exception messages when the specified TLD XML file is not found
+              (previously it threw a
+              <code class="inline-code">NullPointerException</code>).</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The JSP taglib support now initializes a custom
+              tag after its parent and page context is set as some tags expect
+              them to be set when attribute setters are called.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The <code class="inline-code">BeansWrapper</code> could fail to
+              analyze classes under very rare circumstances due to a premature
+              storage optimization.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_4.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_2.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_4.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_4.html b/builds/2.3.26-nightly/versions_2_2_4.html
new file mode 100644
index 0000000..2f7adb1
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_4.html
@@ -0,0 +1,103 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.4 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.4">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_4.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_4.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_4.html"><span itemprop="name">2.2.4</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.4"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_5.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_3.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_4" itemprop="headline">2.2.4</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_253" data-menu-target="autoid_253">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_254" data-menu-target="autoid_254">Other changes</a></li></ul> </div><p>Date of release: 2003-09-03</p><p>Maintenance and bugfix release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_253">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Improvements to JSP taglib support. If some third party
+              taglib didn&#39;t work for you with FreeMarker, maybe now it
+              will.</p>
+
+              <ul>
+                <li>
+                  <p>The JSP <code class="inline-code">PageContext</code> now implements
+                  <code class="inline-code">forward</code> and <code class="inline-code">include</code>
+                  methods.</p>
+                </li>
+
+                <li>
+                  <p>Accepting <code class="inline-code">EVAL_PAGE</code> as an alias to
+                  <code class="inline-code">SKIP_BODY</code> in return values from
+                  <code class="inline-code">doStartTag</code>. It&#39;s a common bug in some
+                  widespread tag libraries, and now FreeMarker is less strict
+                  and accepts it.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Fixes for some rare problems regarding namespaces of
+              macros.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_254">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Minor improvements to the documentation.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_5.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_3.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_5.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_5.html b/builds/2.3.26-nightly/versions_2_2_5.html
new file mode 100644
index 0000000..07a1d7a
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_5.html
@@ -0,0 +1,68 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.5 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.5">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_5.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_5.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_5.html"><span itemprop="name">2.2.5</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.5"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_6.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_4.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_5" itemprop="headline">2.2.5</h1>
+</div></div><p>Date of release: 2003-09-19</p><p>Maintenance and bugfix release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_252">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Creating a <code class="inline-code">Configuration</code> instance using
+              the default constructor no longer fails if the current directory
+              is unreadable due to I/O problems, lack of security permissions,
+              or any other exception.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_6.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_4.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_6.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_6.html b/builds/2.3.26-nightly/versions_2_2_6.html
new file mode 100644
index 0000000..8f5fdd2
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_6.html
@@ -0,0 +1,144 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.6 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.6">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_6.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_6.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_6.html"><span itemprop="name">2.2.6</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.6"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_7.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_5.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_6" itemprop="headline">2.2.6</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_249" data-menu-target="autoid_249">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_250" data-menu-target="autoid_250">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_251" data-menu-target="autoid_251">Other changes</a></li></ul> </div><p>Date of release: 2004-March-13</p><p>Maintenance and bugfix release. Some of improvements are
+        back-portings from FreeMarker 2.3rc1.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_249">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>New <a href="ref_specvar.html">special variable</a>:
+              <code class="inline-code">.vars</code>. This is useful to read top-level
+              variables with square bracket syntax, for example
+              <code class="inline-code">.vars[&quot;name-with-hyphens&quot;]</code> and
+              <code class="inline-code">.vars[dynamicName]</code>.</p>
+            </li>
+
+            <li>
+              <p>New built-ins for Java and JavaScript string escaping:
+              <a href="ref_builtins_string.html#ref_builtin_j_string">j_string</a> and <a href="ref_builtins_string.html#ref_builtin_js_string">js_string</a></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_250">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: The template cache didn&#39;t reload the template when
+              it was replaced with an older version.</p>
+            </li>
+
+            <li>
+              <p>Bugfix:
+              <code class="inline-code">freemarker.template.utility.DeepUnwrap</code>
+              unwrapped sequences to empty
+              <code class="inline-code">ArrayList</code>-s.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: In error messages, when the quoted FTL directive
+              had nested content, that was quoted as well, so the quotation
+              could be very long and expose nested lines needlessly.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.template.TemplateExceptionHandler.HTML_DEBUG_HANDLER</code>
+              now prints more HTML-context-proof messages.</p>
+            </li>
+
+            <li>
+              <p>You can query the FreeMarker version number with static
+              method <code class="inline-code">Configuration.getVersionNumber()</code>.
+              Also, the <code class="inline-code">Manifest.mf</code> included in
+              <code class="inline-code">freemarker.jar</code> now contains the FreeMarker
+              version number, furthermore, executing it with <code class="inline-code">java
+              -jar freemarker.jar</code> will print the version number to
+              the stdout.</p>
+            </li>
+
+            <li>
+              <p>Date support is now labeled as final. (It was experimental
+              earlier.) There was no change since FreeMarker 2.2.1.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_251">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Fixes and improvements in the Manual and in the API
+              JavaDoc. The documentation now works with the Eclipse help
+              plugin (accessible in the "Editor/IDE plugins"
+              section of the FreeMarker Web page).</p>
+            </li>
+
+            <li>
+              <p>Minor site improvements.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_7.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_5.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_7.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_7.html b/builds/2.3.26-nightly/versions_2_2_7.html
new file mode 100644
index 0000000..f251449
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_7.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.7 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.7">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_7.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_7.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_7.html"><span itemprop="name">2.2.7</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.7"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_8.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_6.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_7" itemprop="headline">2.2.7</h1>
+</div></div><p>Date of release: 2004-March-17</p><p>Important bugfix release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_248">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: Fixing a fatal bug in the template cache that was
+              introduced with the latest cache "bugfix". The
+              template cache has always reloaded the unchanged template when
+              the update delay has been elapsed, until the template has been
+              actually changed, in which case it has never reloaded the
+              template anymore.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_8.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_6.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_8.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_8.html b/builds/2.3.26-nightly/versions_2_2_8.html
new file mode 100644
index 0000000..f582884
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_8.html
@@ -0,0 +1,112 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.8 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.8">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_8.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_8.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_8.html"><span itemprop="name">2.2.8</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.8"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_7.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_8" itemprop="headline">2.2.8</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_245" data-menu-target="autoid_245">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_246" data-menu-target="autoid_246">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_247" data-menu-target="autoid_247">Other changes</a></li></ul> </div><p>Date of release: 2004-June-15</p><p>Bugfix and maintenance release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_245">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Added a new special variable to print the FreeMarker
+              version number: <code class="inline-code">version</code>. See more <a href="ref_specvar.html">in the reference...</a></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_246">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>The <code class="inline-code">BeansWrapper</code> has been improved to
+              prevent some security exceptions when introspecting.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The <code class="inline-code">FileTemplateLoader</code> is now
+              more robust when it receives paths that are malformed according
+              the native file system. In the earlier version such paths
+              sometimes caused unexpected <code class="inline-code">IOException</code> that
+              aborted the searching for the template in further
+              <code class="inline-code">FileTemplateLoader</code>-s when you use the
+              <code class="inline-code">MultiTemplateLoader</code>.</p>
+            </li>
+
+            <li>
+              <p>Some parts of the FreeMarker code has been marked as
+              privileged code section, so you can grant extra privileges to
+              FreeMarker when you use a security manager (this is a
+              backporting from 2.3). See more <a href="pgui_misc_secureenv.html">here...</a></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_247">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Minor documentation fixes and improvements.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_7.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[31/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_charset.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_charset.html b/builds/2.3.26-nightly/pgui_misc_charset.html
new file mode 100644
index 0000000..1958707
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_charset.html
@@ -0,0 +1,172 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Charset issues - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Charset issues">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_charset.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_charset.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_charset.html"><span itemprop="name">Charset issues</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Charset issues"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_var.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_multithreading.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_charset" itemprop="headline">Charset issues</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_52" data-menu-target="autoid_52">The charset of the input</a></li><li><a class="page-menu-link" href="#autoid_53" data-menu-target="autoid_53">The charset of the output</a></li></ul> </div><p>FreeMarker, as most Java applications, works with &quot;<a href="gloss.html#gloss.unicode">UNICODE</a> text&quot; (UTF-16). Nonetheless,
+        there are situations when it must deal with <a href="gloss.html#gloss.charset">charsets</a>, because it has to exchange
+        data with the outer world that may uses various other charsets.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_52">The charset of the input</h2>
+
+
+          <p>When FreeMarker has to load a template file (or an unparsed
+          text file), then it must know the charset of the file, since files
+          are just raw byte sequences. You can use the
+          <code class="inline-code">encoding</code> <a href="pgui_config_settings.html">setting</a> to specify the
+          charset. This setting takes effect only when FreeMarker loads a
+          template (parsed or unparsed) with the
+          <code class="inline-code">getTemplate</code> method of
+          <code class="inline-code">Configuration</code>. Note that the <a href="ref_directive_include.html#ref.directive.include"><code>include</code>
+          directive</a> uses this method internally, so the value of the
+          <code class="inline-code">encoding</code> setting is significant for an already
+          loaded template if the template contains <code class="inline-code">include</code>
+          directive call.</p>
+
+          <p>The getter and setter method of the
+          <code class="inline-code">encoding</code> setting is special in the first
+          (configuration) layer. The getter method guesses the return value
+          based on a <code class="inline-code">Locale</code> passed as parameter; it looks
+          up the encoding in a table that maps locales to encodings (called
+          encoding map), and if the locale was not found there, it returns the
+          default encoding. You can fill the encoding map with the
+          <code class="inline-code">setEncoding(Locale locale, String encoding)</code>
+          method of the configuration; the encoding map is initially empty.
+          The default encoding is initially the value of the
+          <code class="inline-code">file.encoding</code> system property, but you always
+          should set a default default with the
+          <code class="inline-code">setDefaultEncoding</code> method, rather than relying on
+          that. For new projects, a popular default encoding is
+          <code class="inline-code">utf-8</code>.</p>
+
+          <p>You can give the charset directly by overriding the
+          <code class="inline-code">encoding</code> setting in the template layer or runtime
+          environment layer (When you specify an encoding as the parameter of
+          <code class="inline-code">getTemplate</code> method, you override the
+          <code class="inline-code">encoding</code> setting in the template layer.). If you
+          don&#39;t override it, the effective value will be what the
+          <code class="inline-code">configuration.getEncoding(Locale)</code> method returns
+          for the effective value of the <code class="inline-code">locale</code>
+          setting.</p>
+
+          <p>Also, instead of relying on this charset guessing mechanism,
+          you can specify the charset of the template in the template file
+          itself, with the <a href="ref_directive_ftl.html#ref.directive.ftl"><a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code></a>
+          directive</a>, like <code class="inline-code">&lt;#ftl
+          encoding=&quot;utf-8&quot;&gt;</code>.</p>
+
+          <p>Note that the charset of the template is independent from the
+          charset of the output that the tempalte generates (unless the
+          enclosing software deliberately sets the output charset to the same
+          as the template charset).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_53">The charset of the output</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The <code class="inline-code">output_encoding</code> setting/variable and
+            the <a href="ref_builtins_string.html#ref_builtin_url"><code>url</code>
+            built-in</a> is available since FreeMarker 2.3.1. It doesn&#39;t
+            exist in 2.3.</p>
+            </div>
+
+
+          <p>In principle FreeMarker does not deal with the charset
+          of the output, since it writes the output to a
+          <code class="inline-code">java.io.Writer</code>. Since the
+          <code class="inline-code">Writer</code> is made by the software that encapsulates
+          FreeMarker (such as a Web application framework), the output charset
+          is controlled by the encapsulating software. Still, FreeMarker has a
+          setting called <code class="inline-code">output_encoding</code> (starting from
+          FreeMarker version 2.3.1). The enclosing software should set this
+          setting (to the charset that the <code class="inline-code">Writer</code> uses), to
+          inform FreeMarker what charset is used for the output (otherwise
+          FreeMarker can&#39;t find it out). Some features, such as the <a href="ref_builtins_string.html#ref_builtin_url"><code>url</code> built-in</a>,
+          and the <a href="ref_specvar.html"><code>output_encoding</code> special
+          variable</a> utilize this information. Thus, if the enclosing
+          software doesn&#39;t set this setting then FreeMarker features that need
+          to know the output charset can&#39;t be used.</p>
+
+          <p>If you write software that will use FreeMarker, you may wonder
+          what output charset should you choose. Of course it depends on the
+          consumer of the FreeMarker output, but if the consumer is flexible
+          regarding this question, then the common practice is either using
+          the charset of the template file for the output, or using UTF-8.
+          Using UTF-8 is usually a better practice, because arbitrary text may
+          comes from the data-model, which then possibly contains characters
+          that couldn&#39;t be encoded with the charset of the template.</p>
+
+          <p>FreeMarker settings can be set for each individual template
+          processing if you use
+          <code class="inline-code">Template.createProcessingEnvironment(<em class="code-color">...</em>)</code>
+          plus
+          <code class="inline-code">Environment.process(<em class="code-color">...</em>)</code>
+          instead of
+          <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>.
+          Thus, you can set the <code class="inline-code">output_encoding</code> setting for
+          each template execution independently:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Writer w = new OutputStreamWriter(out, outputCharset);
+Environment env = template.createProcessingEnvironment(dataModel, w);
+env.setOutputEncoding(outputCharset);
+env.process();</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_var.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_multithreading.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_jythonwrapper.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_jythonwrapper.html b/builds/2.3.26-nightly/pgui_misc_jythonwrapper.html
new file mode 100644
index 0000000..b29ad5b
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_jythonwrapper.html
@@ -0,0 +1,133 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Jython wrapper - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Jython wrapper">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_jythonwrapper.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_jythonwrapper.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_jythonwrapper.html"><span itemprop="name">Jython wrapper</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Jython wrapper"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_ant.html"><span>Previous</span></a><a class="paging-arrow next" href="ref.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_jythonwrapper" itemprop="headline">Jython wrapper</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_71" data-menu-target="autoid_71">TemplateHashModel functionality</a></li><li><a class="page-menu-link" href="#autoid_72" data-menu-target="autoid_72">TemplateScalarModel functionality</a></li><li><a class="page-menu-link" href="#autoid_73" data-menu-target="autoid_73">TemplateBooleanModel functionality</a></li><li><a class="page-menu-link" href="#autoid_74" data-menu-target="autoid_74">TemplateNumberModel functionality</a></li><li><a class="page-menu-link" href="#autoid_75" data-menu-target="autoid_75">TemplateSequenceModel functionality</a></li></ul> </div><p>The <code class="inline-code">freemarker.ext.jython</code> package consists of
+        models that enable any Jython object to be used as a
+        <code class="inline-code">TemplateModel</code>. In the very basic case, you only
+        need to call the</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">public TemplateModel wrap(Object obj);</pre></div><p>method of the
+        <code class="inline-code">freemarker.ext.jython.JythonWrapper</code> class. This
+        method will wrap the passed object into an appropriate
+        <code class="inline-code">TemplateModel</code>. Below is a summary of the properties
+        of returned model wrappers. Let&#39;s assume that the model that resulted
+        from the <code class="inline-code">JythonWrapper</code> call on object
+        <code class="inline-code">obj</code> is named <code class="inline-code">model</code> in the
+        template model root for the sake of the following discussion.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_71">TemplateHashModel functionality</h2>
+
+
+          <p><code class="inline-code">PyDictionary</code> and
+          <code class="inline-code">PyStringMap</code> will be wrapped into a hash model.
+          Key lookups are mapped to the <code class="inline-code">__finditem__</code>
+          method; if an item is not found, a model for <code class="inline-code">None</code>
+          is returned.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_72">TemplateScalarModel functionality</h2>
+
+
+          <p>Every python object will implement
+          <code class="inline-code">TemplateScalarModel</code> whose
+          <code class="inline-code">getAsString()</code> method simply delegates to
+          <code class="inline-code">toString()</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_73">TemplateBooleanModel functionality</h2>
+
+
+          <p>Every python object will implement
+          <code class="inline-code">TemplateBooleanModel</code> whose
+          <code class="inline-code">getAsBoolean()</code> method simply delegates to
+          <code class="inline-code">__nonzero__()</code> in accordance with Python semantics
+          of true/false.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_74">TemplateNumberModel functionality</h2>
+
+
+          <p>Model wrappers for <code class="inline-code">PyInteger</code>,
+          <code class="inline-code">PyLong</code>, and <code class="inline-code">PyFloat</code> objects
+          implement <code class="inline-code">TemplateNumberModel</code> whose
+          <code class="inline-code">getAsNumber()</code> method returns
+          <code class="inline-code">__tojava__(java.lang.Number.class)</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_75">TemplateSequenceModel functionality</h2>
+
+
+          <p>Model wrappers for all classes that extend
+          <code class="inline-code">PySequence</code> will implement
+          <code class="inline-code">TemplateSequenceModel</code> and thus their elements
+          will be accessible by index using the <code class="inline-code">model[i]</code>
+          syntax, which will delegate to <code class="inline-code">__finditem__(i)</code>.
+          You can also query the length of the array or the size of the list
+          using the <code class="inline-code">model?size</code> built-in, which will
+          delegate to <code class="inline-code">__len__()</code>.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_ant.html"><span>Previous</span></a><a class="paging-arrow next" href="ref.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_logging.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_logging.html b/builds/2.3.26-nightly/pgui_misc_logging.html
new file mode 100644
index 0000000..6a0fce1
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_logging.html
@@ -0,0 +1,239 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Logging - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Logging">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_logging.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_logging.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_logging.html"><span itemprop="name">Logging</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Logging"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_beanwrapper.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_servlet.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_logging" itemprop="headline">Logging</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_61" data-menu-target="autoid_61">Logging library selection</a></li><li><a class="page-menu-link" href="#autoid_62" data-menu-target="autoid_62">Logging categories</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_61">Logging library selection</h2>
+
+
+          <p>Is short, the recommended setup in contemporary application
+          (as of 2015) is using SLF4J API for logging everywhere. To get
+          FreeMarker 2.3.x. to use SLF4J, simply add the
+          <code class="inline-code">org.slf4j:log4j-over-slf4j</code> dependency to your
+          project, and ensure that <code class="inline-code">log4j:log4j</code> isn&#39;t
+          present. (Starting from FreeMarker 2.4.x you don&#39;t need
+          <code class="inline-code">log4j-over-slf4j</code> anymore, though it does no harm
+          either.)</p>
+
+          <p>Read on if you are curious about the details, or if you can&#39;t
+          use SLF4J...</p>
+
+          <p>FreeMarker integrates with the following logging libraries:
+          <a href="http://www.slf4j.org/">SLF4J</a>, <a href="http://commons.apache.org/logging/">Apache Commons
+          Logging</a>, <a href="http://jakarta.apache.org/log4j">Log4J</a> 1.x, <a href="http://jakarta.apache.org/avalon/logkit">Avalon
+          LogKit</a>, and <a href="http://java.sun.com/j2se/1.4/docs/api/java/util/logging/package-summary.html"><code>java.util.logging</code></a>.
+          By default, FreeMarker will look for the these logging libraries in
+          the following order, and will automatically use the first one it
+          finds (in 2.3.x): Log4J (will use SLF4J instead if it&#39;s a
+          properly installed <code class="inline-code">log4j-over-slf4j</code>, since
+          2.3.22), Apache Avalon LogKit, <code class="inline-code">java.util.logging</code>.
+          As you can see, Log4j has the highest priority. The presence of
+          Log4j is simply detected from the presence of the
+          <code class="inline-code">org.apache.log4j.Logger</code> class, which means that
+          Log4j redirections like <code class="inline-code">log4j-over-slf4j</code> or
+          <code class="inline-code">log4j-1.2-api</code> will also get the highest
+          priority.</p>
+
+          <p>Prior to FreeMarker 2.4, SLF4J and Apache Commons Logging
+          aren&#39;t searched automatically due to backward compatibility
+          constraints. But if you have
+          <code class="inline-code">org.slf4j:log4j-over-slf4j</code> properly installed
+          (means, you have no real Log4j in your class path, and SLF4J has a
+          backing implementation like <code class="inline-code">logback-classic</code>),
+          then FreeMarker will use the SLF4J API directly instead of the Log4j
+          API (since FreeMarker 2.3.22).</p>
+
+          <p>Note that a similar trick can be applied for logging into
+          Log4j2: If <code class="inline-code">org.apache.logging.log4j:log4j-1.2-api</code>
+          is present, FreeMarker 2.3.x will pick that as it looks like Log4j,
+          but all the messages will actually go to Log4j2.</p>
+
+          <p>If the auto detection doesn&#39;t give you the result that you
+          want, you can set the
+          <code class="inline-code">org.freemarker.loggerLibrary</code> system property to
+          select a logger library explicitly (since 2.3.22), like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">java <em>...</em> -Dorg.freemarker.loggerLibrary=SLF4J</pre></div>
+
+          <p>The supported system property values are:
+          <code class="inline-code">SLF4J</code>, <code class="inline-code">CommonsLogging</code>,
+          <code class="inline-code">JUL</code> (for <code class="inline-code">java.util.logging</code>),
+          <code class="inline-code">Avalon</code>, <code class="inline-code">auto</code> (the default
+          behavior), <code class="inline-code">none</code> (disables logging).</p>
+
+          <p>Note that for reliable operation, the system property should
+          be set when the JVM starts (like above), not later from Java
+          code.</p>
+
+          <p>Using SLF4J is recommended, as it works best with FreeMarker,
+          and also because it will be the highest priority auto detected
+          logger starting from FreeMarker 2.4.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_62">Logging categories</h2>
+
+
+          <p>All log messages produced by FreeMarker are logged with a
+          logger category that starts with <code class="inline-code">freemarker.</code>. The
+          currently used logger categories are:</p>
+
+            <div class="table-responsive">
+    <table class="table">
+
+            <thead>
+              <tr>
+                <th>Log category name</th>
+
+
+                <th>Purpose</th>
+
+              </tr>
+
+            </thead>
+
+
+            <tbody>
+              <tr>
+                <td><code class="inline-code">freemarker.beans</code></td>
+
+
+                <td>Logs messages of the Beans wrapper module.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">freemarker.cache</code></td>
+
+
+                <td>Logs messages related to template loading and
+                caching.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">freemarker.runtime</code></td>
+
+
+                <td>Logs messages related to template execution that doesn&#39;t
+                fit any of the more specific categories. Most importantly, it
+                logs template exceptions thrown during template processing
+                (however that should be disabled in modern application; see
+                later).</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">freemarker.runtime.attempt</code></td>
+
+
+                <td>Logs template exceptions thrown during template processing
+                and caught by
+                <code class="inline-code">attempt</code>/<code class="inline-code">recover</code>
+                directives, with DEBUG severity. Note that such exceptions
+                will be still also logged with their normal logger (like
+                <code class="inline-code">freemarker.runtime</code>).</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">freemarker.servlet</code></td>
+
+
+                <td>Logs messages of the <code class="inline-code">FreemarkerServlet</code>
+                class.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">freemarker.jsp</code></td>
+
+
+                <td>Logs messages of the FreeMarker JSP support.</td>
+
+              </tr>
+
+            </tbody>
+
+              </table>
+  </div>
+
+
+          <p>One quirk relating this is that FreeMarker will log exceptions
+          during template execution under the
+          <code class="inline-code">freemarker.runtime</code> category even if the exception
+          continues propagating and so eventually will be thrown by
+          <code class="inline-code">Template.process</code> or
+          <code class="inline-code">Environment.process</code> anyway. (Those are the API
+          calls with which the template was invoked from the application or
+          the application framework.) Well behaving applications log the
+          exceptions thrown at them, or rarely, handle them and deliberately
+          don&#39;t want to log them. But as FreeMarker has already logged that
+          exception, you will end up one more log entry than expected. To fix
+          that (since 2.3.22), set the
+          <code class="inline-code">log_template_exceptions</code>
+          (<code class="inline-code">Configurable.setLogTemplateExceptions(boolean)</code>)
+          setting to <code class="inline-code">false</code>.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_beanwrapper.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_servlet.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_multithreading.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_multithreading.html b/builds/2.3.26-nightly/pgui_misc_multithreading.html
new file mode 100644
index 0000000..1e6d2f0
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_multithreading.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Multithreading - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Multithreading">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_multithreading.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_multithreading.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_multithreading.html"><span itemprop="name">Multithreading</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Multithreading"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_charset.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_beanwrapper.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_multithreading" itemprop="headline">Multithreading</h1>
+</div></div><p>In a multithreaded environment <code class="inline-code">Configuration</code>
+        instances, <code class="inline-code">Template</code> instances and data-models
+        should be handled as immutable (read-only) objects. That is, you
+        create and initialize them (for example with
+        <code class="inline-code">set<em class="code-color">...</em></code> methods), and
+        then you don&#39;t modify them later (e.g. you don&#39;t call
+        <code class="inline-code">set<em class="code-color">...</em></code>). This allows us
+        to avoid expensive synchronized blocks in a multithreaded environment.
+        Beware with <code class="inline-code">Template</code> instances; when you get a
+        <code class="inline-code">Template</code> instance with
+        <code class="inline-code">Configuration.getTemplate</code>, you may get an instance
+        from the template cache that is already used by other threads, so do
+        not call its <code class="inline-code">set<em class="code-color">...</em></code>
+        methods (calling <code class="inline-code">process</code> is of course fine).</p><p>The above restrictions do not apply if you access all objects
+        from the <em>same</em> single thread only.</p><p>It is impossible to modify the data-model object or a <a href="pgui_config_sharedvariables.html">shared variable</a> with FTL,
+        unless you put methods (or other objects) into the data-model that do
+        that. We discourage you from writing methods that modify the
+        data-model object or the shared variables. Try to use variables that
+        are stored in the environment object instead (this object is created
+        for a single <code class="inline-code">Template.process</code> call to store the
+        runtime state of processing), so you don&#39;t modify data that are
+        possibly used by multiple threads. For more information read: <a href="pgui_misc_var.html">Variables, scopes</a></p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_charset.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_beanwrapper.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_secureenv.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_secureenv.html b/builds/2.3.26-nightly/pgui_misc_secureenv.html
new file mode 100644
index 0000000..3f5a966
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_secureenv.html
@@ -0,0 +1,85 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Configuring security policy for FreeMarker - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Configuring security policy for FreeMarker">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_secureenv.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_secureenv.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_secureenv.html"><span itemprop="name">Configuring security policy for FreeMarker</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Configuring security policy for FreeMarker"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_servlet.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_xml_legacy.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_secureenv" itemprop="headline">Configuring security policy for FreeMarker</h1>
+</div></div><p>When FreeMarker is used in a Java virtual machine with a
+        security manager installed, you have to grant it few permissions to
+        ensure it operates properly. Most notably, you need these entries to
+        your security policy file for
+        <code class="inline-code">freemarker.jar</code>:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">grant codeBase &quot;file:/path/to/freemarker.jar&quot;
+{
+  permission java.util.PropertyPermission &quot;file.encoding&quot;, &quot;read&quot;;
+  permission java.util.PropertyPermission &quot;freemarker.*&quot;, &quot;read&quot;;
+}</pre></div><p>Additionally, if you are loading templates from a directory, you
+        need to give FreeMarker permissions to read files from that directory
+        using the following permission:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">grant codeBase &quot;file:/path/to/freemarker.jar&quot;
+{
+  ...
+  permission java.io.FilePermission &quot;/path/to/templates/-&quot;, &quot;read&quot;;
+}</pre></div><p>Finally, if you&#39;re just using the default template loading
+        mechanism which loads templates from the current directory, then
+        specify these permissions additionally: (note that the expression
+        <code class="inline-code">${user.dir}</code> will be evaluated at run time by the
+        policy interpreter, pretty much as if it were a FreeMarker
+        template)</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">
+grant codeBase &quot;file:/path/to/freemarker.jar&quot;
+{
+  ...
+  permission java.util.PropertyPermission &quot;user.dir&quot;, &quot;read&quot;;
+  permission java.io.FilePermission &quot;${user.dir}/-&quot;, &quot;read&quot;;
+}</pre></div><p>Naturally, if you&#39;re running under Windows, use double backslash
+        instead of a single slash for separating directory components in
+        paths.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_servlet.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_xml_legacy.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[37/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/eclipse-toc.xml
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/eclipse-toc.xml b/builds/2.3.26-nightly/eclipse-toc.xml
new file mode 100644
index 0000000..a8fcc31
--- /dev/null
+++ b/builds/2.3.26-nightly/eclipse-toc.xml
@@ -0,0 +1,698 @@
+<?xml version="1.0" encoding="utf-8"?>
+<?NLS TYPE="org.eclipse.help.toc"?>
+
+<toc label="Apache FreeMarker Manual">
+  
+<topic
+      label="I: Template Author&apos;s Guide"
+      href="dgui.html"
+  >  
+<topic
+      label="1: Getting Started"
+      href="dgui_quickstart.html"
+  >  
+<topic
+      label="Template + data-model = output"
+      href="dgui_quickstart_basics.html"
+  ></topic>  
+<topic
+      label="The data-model at a glance"
+      href="dgui_quickstart_datamodel.html"
+  ></topic>  
+<topic
+      label="The template at a glance"
+      href="dgui_quickstart_template.html"
+  ></topic></topic>  
+<topic
+      label="2: Values, Types"
+      href="dgui_datamodel.html"
+  >  
+<topic
+      label="Basics"
+      href="dgui_datamodel_basics.html"
+  ></topic>  
+<topic
+      label="The types"
+      href="dgui_datamodel_types.html"
+  ></topic></topic>  
+<topic
+      label="3: The Template"
+      href="dgui_template.html"
+  >  
+<topic
+      label="Overall structure"
+      href="dgui_template_overallstructure.html"
+  ></topic>  
+<topic
+      label="Directives"
+      href="dgui_template_directives.html"
+  ></topic>  
+<topic
+      label="Expressions"
+      href="dgui_template_exp.html"
+  ></topic>  
+<topic
+      label="Interpolations"
+      href="dgui_template_valueinsertion.html"
+  ></topic></topic>  
+<topic
+      label="4: Miscellaneous"
+      href="dgui_misc.html"
+  >  
+<topic
+      label="Defining your own directives"
+      href="dgui_misc_userdefdir.html"
+  ></topic>  
+<topic
+      label="Defining variables in the template"
+      href="dgui_misc_var.html"
+  ></topic>  
+<topic
+      label="Namespaces"
+      href="dgui_misc_namespace.html"
+  ></topic>  
+<topic
+      label="Auto-escaping and output formats"
+      href="dgui_misc_autoescaping.html"
+  ></topic>  
+<topic
+      label="White-space handling"
+      href="dgui_misc_whitespace.html"
+  ></topic>  
+<topic
+      label="Alternative (square bracket) syntax"
+      href="dgui_misc_alternativesyntax.html"
+  ></topic></topic></topic>  
+<topic
+      label="II: Programmer&apos;s Guide"
+      href="pgui.html"
+  >  
+<topic
+      label="1: Getting Started"
+      href="pgui_quickstart.html"
+  >  
+<topic
+      label="Create a configuration instance"
+      href="pgui_quickstart_createconfiguration.html"
+  ></topic>  
+<topic
+      label="Create a data-model"
+      href="pgui_quickstart_createdatamodel.html"
+  ></topic>  
+<topic
+      label="Get the template"
+      href="pgui_quickstart_gettemplate.html"
+  ></topic>  
+<topic
+      label="Merging the template with the data-model"
+      href="pgui_quickstart_merge.html"
+  ></topic>  
+<topic
+      label="Putting all together"
+      href="pgui_quickstart_all.html"
+  ></topic></topic>  
+<topic
+      label="2: The Data Model"
+      href="pgui_datamodel.html"
+  >  
+<topic
+      label="Basics"
+      href="pgui_datamodel_basics.html"
+  ></topic>  
+<topic
+      label="Scalars"
+      href="pgui_datamodel_scalar.html"
+  ></topic>  
+<topic
+      label="Containers"
+      href="pgui_datamodel_parent.html"
+  ></topic>  
+<topic
+      label="Methods"
+      href="pgui_datamodel_method.html"
+  ></topic>  
+<topic
+      label="Directives"
+      href="pgui_datamodel_directive.html"
+  ></topic>  
+<topic
+      label="Node variables"
+      href="pgui_datamodel_node.html"
+  ></topic>  
+<topic
+      label="Object wrappers"
+      href="pgui_datamodel_objectWrapper.html"
+  ></topic></topic>  
+<topic
+      label="3: The Configuration"
+      href="pgui_config.html"
+  >  
+<topic
+      label="Basics"
+      href="pgui_config_basics.html"
+  ></topic>  
+<topic
+      label="Shared variables"
+      href="pgui_config_sharedvariables.html"
+  ></topic>  
+<topic
+      label="Settings"
+      href="pgui_config_settings.html"
+  ></topic>  
+<topic
+      label="Template loading"
+      href="pgui_config_templateloading.html"
+  ></topic>  
+<topic
+      label="Error handling"
+      href="pgui_config_errorhandling.html"
+  ></topic>  
+<topic
+      label="Template configurations"
+      href="pgui_config_templateconfigurations.html"
+  ></topic>  
+<topic
+      label="Associating output formats with templates"
+      href="pgui_config_outputformatsautoesc.html"
+  ></topic>  
+<topic
+      label="Custom number and date/time formats"
+      href="pgui_config_custom_formats.html"
+  ></topic>  
+<topic
+      label="The &quot;incompatible improvements&quot; setting"
+      href="pgui_config_incompatible_improvements.html"
+  ></topic></topic>  
+<topic
+      label="4: Miscellaneous"
+      href="pgui_misc.html"
+  >  
+<topic
+      label="Variables, scopes"
+      href="pgui_misc_var.html"
+  ></topic>  
+<topic
+      label="Charset issues"
+      href="pgui_misc_charset.html"
+  ></topic>  
+<topic
+      label="Multithreading"
+      href="pgui_misc_multithreading.html"
+  ></topic>  
+<topic
+      label="Bean wrapper"
+      href="pgui_misc_beanwrapper.html"
+  ></topic>  
+<topic
+      label="Logging"
+      href="pgui_misc_logging.html"
+  ></topic>  
+<topic
+      label="Using FreeMarker with servlets"
+      href="pgui_misc_servlet.html"
+  ></topic>  
+<topic
+      label="Configuring security policy for FreeMarker"
+      href="pgui_misc_secureenv.html"
+  ></topic>  
+<topic
+      label="Legacy XML wrapper implementation"
+      href="pgui_misc_xml_legacy.html"
+  ></topic>  
+<topic
+      label="Using FreeMarker with Ant"
+      href="pgui_misc_ant.html"
+  ></topic>  
+<topic
+      label="Jython wrapper"
+      href="pgui_misc_jythonwrapper.html"
+  ></topic></topic></topic>  
+<topic
+      label="III: Template Language Reference"
+      href="ref.html"
+  >  
+<topic
+      label="1: Built-in Reference"
+      href="ref_builtins.html"
+  >  
+<topic
+      label="Alphabetical index"
+      href="ref_builtins_alphaidx.html"
+  ></topic>  
+<topic
+      label="Built-ins for strings"
+      href="ref_builtins_string.html"
+  ></topic>  
+<topic
+      label="Built-ins for numbers"
+      href="ref_builtins_number.html"
+  ></topic>  
+<topic
+      label="Built-ins for date/time/date-time values"
+      href="ref_builtins_date.html"
+  ></topic>  
+<topic
+      label="Built-ins for booleans"
+      href="ref_builtins_boolean.html"
+  ></topic>  
+<topic
+      label="Built-ins for sequences"
+      href="ref_builtins_sequence.html"
+  ></topic>  
+<topic
+      label="Built-ins for hashes"
+      href="ref_builtins_hash.html"
+  ></topic>  
+<topic
+      label="Built-ins for nodes (for XML)"
+      href="ref_builtins_node.html"
+  ></topic>  
+<topic
+      label="Loop variable built-ins"
+      href="ref_builtins_loop_var.html"
+  ></topic>  
+<topic
+      label="Type independent built-ins"
+      href="ref_builtins_type_independent.html"
+  ></topic>  
+<topic
+      label="Seldom used and expert built-ins"
+      href="ref_builtins_expert.html"
+  ></topic></topic>  
+<topic
+      label="2: Directive Reference"
+      href="ref_directives.html"
+  >  
+<topic
+      label="Alphabetical index"
+      href="ref_directive_alphaidx.html"
+  ></topic>  
+<topic
+      label="assign"
+      href="ref_directive_assign.html"
+  ></topic>  
+<topic
+      label="attempt, recover"
+      href="ref_directive_attempt.html"
+  ></topic>  
+<topic
+      label="autoesc"
+      href="ref_directive_autoesc.html"
+  ></topic>  
+<topic
+      label="compress"
+      href="ref_directive_compress.html"
+  ></topic>  
+<topic
+      label="escape, noescape (deprecated)"
+      href="ref_directive_escape.html"
+  ></topic>  
+<topic
+      label="flush"
+      href="ref_directive_flush.html"
+  ></topic>  
+<topic
+      label="ftl"
+      href="ref_directive_ftl.html"
+  ></topic>  
+<topic
+      label="function, return"
+      href="ref_directive_function.html"
+  ></topic>  
+<topic
+      label="global"
+      href="ref_directive_global.html"
+  ></topic>  
+<topic
+      label="if, else, elseif"
+      href="ref_directive_if.html"
+  ></topic>  
+<topic
+      label="import"
+      href="ref_directive_import.html"
+  ></topic>  
+<topic
+      label="include"
+      href="ref_directive_include.html"
+  ></topic>  
+<topic
+      label="list, else, items, sep, break"
+      href="ref_directive_list.html"
+  ></topic>  
+<topic
+      label="local"
+      href="ref_directive_local.html"
+  ></topic>  
+<topic
+      label="macro, nested, return"
+      href="ref_directive_macro.html"
+  ></topic>  
+<topic
+      label="noautoesc"
+      href="ref_directive_noautoesc.html"
+  ></topic>  
+<topic
+      label="noparse"
+      href="ref_directive_noparse.html"
+  ></topic>  
+<topic
+      label="nt"
+      href="ref_directive_nt.html"
+  ></topic>  
+<topic
+      label="outputformat"
+      href="ref_directive_outputformat.html"
+  ></topic>  
+<topic
+      label="setting"
+      href="ref_directive_setting.html"
+  ></topic>  
+<topic
+      label="stop"
+      href="ref_directive_stop.html"
+  ></topic>  
+<topic
+      label="switch, case, default, break"
+      href="ref_directive_switch.html"
+  ></topic>  
+<topic
+      label="t, lt, rt"
+      href="ref_directive_t.html"
+  ></topic>  
+<topic
+      label="User-defined directive (&lt;@...&gt;)"
+      href="ref_directive_userDefined.html"
+  ></topic>  
+<topic
+      label="visit, recurse, fallback"
+      href="ref_directive_visit.html"
+  ></topic></topic>  
+<topic
+      label="3: Special Variable Reference"
+      href="ref_specvar.html"
+  ></topic>  
+<topic
+      label="4: Reserved names in FTL"
+      href="ref_reservednames.html"
+  ></topic>  
+<topic
+      label="5: Deprecated FTL constructs"
+      href="ref_deprecated.html"
+  >  
+<topic
+      label="List of deprecated directives"
+      href="ref_depr_directive.html"
+  ></topic>  
+<topic
+      label="List of deprecated built-ins"
+      href="ref_depr_builtin.html"
+  ></topic>  
+<topic
+      label="Old-style macro and call directives"
+      href="ref_depr_oldmacro.html"
+  ></topic>  
+<topic
+      label="Transform directive"
+      href="ref_depr_transform.html"
+  ></topic>  
+<topic
+      label="Old FTL syntax"
+      href="ref_depr_oldsyntax.html"
+  ></topic>  
+<topic
+      label="#{...}: Numerical interpolation"
+      href="ref_depr_numerical_interpolation.html"
+  ></topic></topic></topic>  
+<topic
+      label="IV: XML Processing Guide"
+      href="xgui.html"
+  >  
+<topic
+      label="Preface"
+      href="xgui_preface.html"
+  ></topic>  
+<topic
+      label="1: Exposing XML documents"
+      href="xgui_expose.html"
+  >  
+<topic
+      label="The DOM tree"
+      href="xgui_expose_dom.html"
+  ></topic>  
+<topic
+      label="Putting the XML into the data-model"
+      href="xgui_expose_put.html"
+  ></topic></topic>  
+<topic
+      label="2: Imperative XML processing"
+      href="xgui_imperative.html"
+  >  
+<topic
+      label="Basics"
+      href="xgui_imperative_learn.html"
+  ></topic>  
+<topic
+      label="Details"
+      href="xgui_imperative_formal.html"
+  ></topic></topic>  
+<topic
+      label="3: Declarative XML processing"
+      href="xgui_declarative.html"
+  >  
+<topic
+      label="Basics"
+      href="xgui_declarative_basics.html"
+  ></topic>  
+<topic
+      label="Details"
+      href="xgui_declarative_details.html"
+  ></topic></topic></topic>  
+<topic
+      label="V: Appendixes"
+      href="app.html"
+  >  
+<topic
+      label="A: FAQ"
+      href="app_faq.html"
+  ></topic>  
+<topic
+      label="B: Version history"
+      href="app_versions.html"
+  >  
+<topic
+      label="2.3.26 (incubating at Apache)"
+      href="versions_2_3_26.html"
+  ></topic>  
+<topic
+      label="2.3.25 (incubating at Apache)"
+      href="versions_2_3_25.html"
+  ></topic>  
+<topic
+      label="2.3.24 (incubating at Apache)"
+      href="versions_2_3_24.html"
+  ></topic>  
+<topic
+      label="2.3.23"
+      href="versions_2_3_23.html"
+  ></topic>  
+<topic
+      label="2.3.22"
+      href="versions_2_3_22.html"
+  ></topic>  
+<topic
+      label="2.3.21"
+      href="versions_2_3_21.html"
+  ></topic>  
+<topic
+      label="2.3.20"
+      href="versions_2_3_20.html"
+  ></topic>  
+<topic
+      label="2.3.19"
+      href="versions_2_3_19.html"
+  ></topic>  
+<topic
+      label="2.3.18"
+      href="versions_2_3_18.html"
+  ></topic>  
+<topic
+      label="2.3.17"
+      href="versions_2_3_17.html"
+  ></topic>  
+<topic
+      label="2.3.16"
+      href="versions_2_3_16.html"
+  ></topic>  
+<topic
+      label="2.3.15"
+      href="versions_2_3_15.html"
+  ></topic>  
+<topic
+      label="2.3.14"
+      href="versions_2_3_14.html"
+  ></topic>  
+<topic
+      label="2.3.13"
+      href="versions_2_3_13.html"
+  ></topic>  
+<topic
+      label="2.3.12"
+      href="versions_2_3_12.html"
+  ></topic>  
+<topic
+      label="2.3.11"
+      href="versions_2_3_11.html"
+  ></topic>  
+<topic
+      label="2.3.10"
+      href="versions_2_3_10.html"
+  ></topic>  
+<topic
+      label="2.3.9"
+      href="versions_2_3_9.html"
+  ></topic>  
+<topic
+      label="2.3.8"
+      href="versions_2_3_8.html"
+  ></topic>  
+<topic
+      label="2.3.7"
+      href="versions_2_3_7.html"
+  ></topic>  
+<topic
+      label="2.3.7 RC1"
+      href="versions_2_3_7rc1.html"
+  ></topic>  
+<topic
+      label="2.3.6"
+      href="versions_2_3_6.html"
+  ></topic>  
+<topic
+      label="2.3.5"
+      href="versions_2_3_5.html"
+  ></topic>  
+<topic
+      label="2.3.4"
+      href="versions_2_3_4.html"
+  ></topic>  
+<topic
+      label="2.3.3"
+      href="versions_2_3_3.html"
+  ></topic>  
+<topic
+      label="2.3.2"
+      href="versions_2_3_2.html"
+  ></topic>  
+<topic
+      label="2.3.1"
+      href="versions_2_3_1.html"
+  ></topic>  
+<topic
+      label="2.3"
+      href="versions_2_3.html"
+  ></topic>  
+<topic
+      label="2.2.8"
+      href="versions_2_2_8.html"
+  ></topic>  
+<topic
+      label="2.2.7"
+      href="versions_2_2_7.html"
+  ></topic>  
+<topic
+      label="2.2.6"
+      href="versions_2_2_6.html"
+  ></topic>  
+<topic
+      label="2.2.5"
+      href="versions_2_2_5.html"
+  ></topic>  
+<topic
+      label="2.2.4"
+      href="versions_2_2_4.html"
+  ></topic>  
+<topic
+      label="2.2.3"
+      href="versions_2_2_3.html"
+  ></topic>  
+<topic
+      label="2.2.2"
+      href="versions_2_2_2.html"
+  ></topic>  
+<topic
+      label="2.2.1"
+      href="versions_2_2_1.html"
+  ></topic>  
+<topic
+      label="2.2"
+      href="versions_2_2.html"
+  ></topic>  
+<topic
+      label="2.1.5"
+      href="versions_2_1_5.html"
+  ></topic>  
+<topic
+      label="2.1.4"
+      href="versions_2_1_4.html"
+  ></topic>  
+<topic
+      label="2.1.3"
+      href="versions_2_1_3.html"
+  ></topic>  
+<topic
+      label="2.1.2"
+      href="versions_2_1_2.html"
+  ></topic>  
+<topic
+      label="2.1.1"
+      href="versions_2_1_1.html"
+  ></topic>  
+<topic
+      label="2.1"
+      href="versions_2_1.html"
+  ></topic>  
+<topic
+      label="2.01"
+      href="versions_2_01.html"
+  ></topic>  
+<topic
+      label="2.0"
+      href="versions_2_0.html"
+  ></topic>  
+<topic
+      label="2.0 RC3"
+      href="versions_2_0RC3.html"
+  ></topic>  
+<topic
+      label="2.0 RC2"
+      href="versions_2_0RC2.html"
+  ></topic>  
+<topic
+      label="2.0 RC1"
+      href="versions_2_0RC1.html"
+  ></topic></topic>  
+<topic
+      label="C: Installing FreeMarker"
+      href="app_install.html"
+  ></topic>  
+<topic
+      label="D: Legal"
+      href="app_legal.html"
+  >  
+<topic
+      label="License"
+      href="app_license.html"
+  ></topic>  
+<topic
+      label="Export Control"
+      href="app_eccn.html"
+  ></topic></topic></topic>  
+<topic
+      label="Glossary"
+      href="gloss.html"
+  ></topic>  
+<topic
+      label="Alphabetical Index"
+      href="alphaidx.html"
+  ></topic></toc>
+

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/favicon.png
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/favicon.png b/builds/2.3.26-nightly/favicon.png
new file mode 100644
index 0000000..ce0de20
Binary files /dev/null and b/builds/2.3.26-nightly/favicon.png differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/figures/model2sketch.png
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/figures/model2sketch.png b/builds/2.3.26-nightly/figures/model2sketch.png
new file mode 100644
index 0000000..93f9a6b
Binary files /dev/null and b/builds/2.3.26-nightly/figures/model2sketch.png differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/figures/overview.png
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/figures/overview.png b/builds/2.3.26-nightly/figures/overview.png
new file mode 100644
index 0000000..b32e0bd
Binary files /dev/null and b/builds/2.3.26-nightly/figures/overview.png differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/figures/tree.png
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/figures/tree.png b/builds/2.3.26-nightly/figures/tree.png
new file mode 100644
index 0000000..dcd9bf3
Binary files /dev/null and b/builds/2.3.26-nightly/figures/tree.png differ

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/gloss.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/gloss.html b/builds/2.3.26-nightly/gloss.html
new file mode 100644
index 0000000..c9bffc2
--- /dev/null
+++ b/builds/2.3.26-nightly/gloss.html
@@ -0,0 +1,770 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-glossary">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Glossary - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Glossary">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/gloss.html">
+<link rel="canonical" href="http://freemarker.org/docs/gloss.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="gloss.html"><span itemprop="name">Glossary</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li>Glossary</li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a>
 </li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Glossary"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="app_eccn.html"><span>Previous</span></a><a class="paging-arrow next" href="alphaidx.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-part" id="gloss" itemprop="headline">Glossary</h1>
+</div></div>  <p>
+<a href="#gloss.attribute">A</a>&nbsp;| <a href="#gloss.boolean">B</a>&nbsp;| <a href="#gloss.character">C</a>&nbsp;| <a href="#gloss.dataModel">D</a>&nbsp;| <a href="#gloss.element">E</a>&nbsp;| <a href="#gloss.FTL">F</a>&nbsp;| <a href="#gloss.hashVariable">H</a>&nbsp;| <a href="#gloss.lineBreak">L</a>&nbsp;| <a href="#gloss.macroDefinitionBody">M</a>&nbsp;| <a href="#gloss.outputEncoding">O</a>&nbsp;| <a href="#gloss.parseTimeError">P</a>&nbsp;| <a href="#gloss.regularExpression">R</a>&nbsp;| <a href="#gloss.scalarVariable">S</a>&nbsp;| <a href="#gloss.tag">T</a>&nbsp;| <a href="#gloss.UCS">U</a>&nbsp;| <a href="#gloss.whiteSpace">W</a>&nbsp;| <a href="#autoid_295">X</a>  </p>
+
+  <dl>
+
+        <dt><a name="gloss.attribute"></a>Attribute</dt>
+
+
+         <dd>
+        <p>In connection with <a href="#gloss.XML">XML</a> or HTML
+        (or <a href="#gloss.SGML">SGML</a> in general), attributes are
+        the named values associated with elements. For example, in
+        <code class="inline-code">&lt;body bgcolor=black
+        text=green&gt;<em class="code-color">...</em>&lt;/body&gt;</code>,
+        the attributes are <code class="inline-code">bgcolor=black</code> and
+        <code class="inline-code">text=green</code>. On the left side of
+        <code class="inline-code">=</code> is the name of the attribute, while on the right
+        side is the value of the attribute. Note that in XML, the values must
+        be quoted (for example: <code class="inline-code">&lt;body bgcolor=&quot;black&quot;
+        text=&#39;green&#39;&gt;</code>), while in HTML it is optional for certain
+        values.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.startTag">Start-tag</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.boolean"></a>Boolean</dt>
+
+
+         <dd>
+        <p>This is a variable type. A boolean variable represents a logical
+        true or false (yes or no). For example, if the visitor has been logged
+        in or not. There are only two possible boolean values:
+        <code class="inline-code">true</code> and <code class="inline-code">false</code>. Typically, you
+        will use booleans with an <code class="inline-code">&lt;#if
+        <em class="code-color">...</em>&gt;</code> directive when you want
+        to display text based on some condition, say, you show a certain part
+        of the page only for visitors who has logged in.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.character"></a>Character</dt>
+
+
+         <dd>
+        <p>A symbol that people use in writing. Examples of characters:
+        Latin capital letter A ("A"), Latin small letter A
+        ("a"), digit four ("4"), number sign
+        ("#"), colon (":")</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.charset"></a>Charset</dt>
+
+
+         <dd>
+        <p>A charset is a rule (algorithm) for transforming a sequence of
+        <a href="#gloss.character">characters</a> (text) to a sequence
+        of bits (or in practice, to a sequence of bytes). Whenever a character
+        sequence is stored on a digital media, or sent through a digital
+        channel (network), a charset must be applied. Examples of charsets are
+        ISO-8859-1, ISO-8859-6, Shift_JIS , UTF-8.</p>
+
+        <p>The capabilities of different charsers are different, that is,
+        not all charsets can be used for all languages. For example ISO-8859-1
+        can&#39;t represent Arabic letters, but ISO-8859-6 can, however it can&#39;t
+        represent the accented letters that that ISO-8859-1 can. Most charsets
+        are highly restrictive regarding the allowed characters. UTF-8 allows
+        virtually all possible characters, but most text editors can&#39;t handle
+        it yet (2004).</p>
+
+        <p>When different software components exchange text (as the HTTP
+        server and the browser, or the text editor you use for saving
+        templates and FreeMarker who loads them), it&#39;s very important that
+        they agree in the charset used for the binary encoding of the text. If
+        they don&#39;t, then the binary data will be misinterpreted by the
+        receiver (loader) component, which usually results in the distortion
+        of the non-English letters.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.collectionVariable"></a>Collection</dt>
+
+
+         <dd>
+        <p>A variable that (in conjunction with the <code class="inline-code">list</code>
+        directive) can spit out a series of variables.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.dataModel"></a>Data-model</dt>
+
+
+         <dd>
+        <p>Something that holds the information the template has to show
+        (or use in some other ways) when the template processor assembles the
+        output (e.g. a Web page). In FreeMarker this is best visualized as a
+        tree.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.directive"></a>Directive</dt>
+
+
+         <dd>
+        <p>Instructions to FreeMarker used in <a href="#gloss.FTL">FTL</a> <a href="#gloss.template">templates</a>. They are invoked by <a href="#gloss.FTLTag">FTL tags</a>.</p>
+
+        
+
+        
+      
+    <p>See Also
+       <a href="#gloss.predefinedDirective">Predefined directive</a>,
+       <a href="#gloss.userDefinedDirective">User-defined directive</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.element"></a>Element</dt>
+
+
+         <dd>
+        <p>Elements are the most fundamental building pieces of <a href="#gloss.SGML">SGML</a> documents; an SGML document is
+        basically a tree of elements. Example of elements used in HTML: body,
+        head, title, p, h1, h2.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.endTag"></a>End-tag</dt>
+
+
+         <dd>
+        <p><a href="#gloss.tag">Tag</a>, which indicates that the
+        following content is not under the element. Example:
+        <code class="inline-code">&lt;/body&gt;</code>.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.startTag">Start-tag</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.environment"></a>Environment</dt>
+
+
+         <dd>
+        <p>An <code class="inline-code">Environment</code> object stores the runtime
+        state of a single template <a href="#gloss.templateProcessingJob">template processing job</a>.
+        That is, for each
+        <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>
+        call, an <code class="inline-code">Environment</code> instance will be created, and
+        then discarded when <code class="inline-code">process</code> returns. This object
+        stores the set of temporary variables created by the template, the
+        value of settings set by the template, the reference to the data-model
+        root, etc. Everything that is needed to fulfill the template
+        processing job.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.XML"></a>Extensible Markup Language</dt>
+
+
+         <dd>
+        <p>A subset (restricted version) of <a href="#gloss.SGML">SGML</a>. This is less powerful than SGML, but
+        it easier to learn and much easier to process with programs. If you
+        are an HTML author: XML documents are similar to HTML documents, but
+        the XML standard doesn&#39;t specify the usable elements. XML is a much
+        more general-purpose thing than HTML. For example you can use XML to
+        describe Web pages (like HTML) or to describe non-visual information
+        like a phone book database.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.SGML">Standard Generalized Markup Language</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.FTL"></a>FreeMarker Template Language</dt>
+
+
+         <dd>
+        <p>Simple programming language designed to write text file
+        templates, especially HTML templates.</p>
+      
+   </dd>
+
+    
+        <dt><a name="autoid_293"></a>FTL</dt>
+
+
+          <dd>See
+       <a href="#gloss.FTL">FreeMarker Template Language</a>
+    </dd>
+
+    
+        <dt><a name="gloss.FTLTag"></a>FTL tag</dt>
+
+
+         <dd>
+        <p><a href="#gloss.tag">Tag</a>-like text fragment used to
+        invoke FreeMarker <a href="#gloss.directive">directives</a> in
+        <a href="#gloss.FTL">FTL</a> <a href="#gloss.template">templates</a>. These are similar to HTML
+        or XML tags at the first glance. The most prominent difference is that
+        the tag name is started with <code class="inline-code">#</code> or
+        <code class="inline-code">@</code>. Another important difference is that FTL tags do
+        not use <a href="#gloss.attribute">attributes</a>, but a
+        substantially different syntax to specify parameters. Examples of FTL
+        tags: <code class="inline-code">&lt;#if newUser&gt;</code>,
+        <code class="inline-code">&lt;/#if&gt;</code>, <code class="inline-code">&lt;@menuitem
+        title=&quot;Projects&quot; link=&quot;projects.html&quot;/&gt;</code></p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.fullQualifiedName"></a>Full-qualified name</dt>
+
+
+         <dd>
+        <p>... of nodes (XML node or other FTL node variable): The
+        full-qualified name of a node specifies not only the node name
+        (<code class="inline-code"><em class="code-color">node</em>?node_name</code>), but
+        also the node namespace
+        (<code class="inline-code"><em class="code-color">node</em>?node_namespace</code>),
+        this way it unambiguously identify a certain kind of node. The format
+        of the full-qualified name is
+        <code class="inline-code"><em class="code-color">nodeName</em></code> or
+        <code class="inline-code"><em class="code-color">prefix</em>:<em class="code-color">nodeName</em></code>.
+        The prefix is shorthand to identify the node namespace (the a node
+        namespace is usually specified with a long ugly URI). In FTL, prefixes
+        are associated with the node namespaces with the
+        <code class="inline-code">ns_prefixes</code> parameter of <a href="ref_directive_ftl.html#ref.directive.ftl">the <code>ftl</code>
+        directive</a>. In XML files, prefixes are associated with the node
+        namespaces with the
+        <code class="inline-code">xmlns:<em class="code-color">prefix</em></code> attributes.
+        The lack of the prefix means that the node uses the default node
+        namespace, if a default node namespace is defined; otherwise it means
+        that the node does not belong to any node namespace. The default node
+        namespace is defined in FTL by registering reserved prefix
+        <code class="inline-code">D</code> with the <code class="inline-code">ns_prefixes</code> parameter
+        of the <code class="inline-code">ftl</code> directive. In XML files it is defined
+        with attribute <code class="inline-code">xmlns</code>.</p>
+
+        <p>... of Java classes: The full-qualified name of a Java class
+        contains both the class name and the name of the package the class
+        belongs to. This way it unambiguously specifies the class, regardless
+        of the context. An example of full-qualifed class name:
+        <code class="inline-code">java.util.Map</code> (as opposed to
+        <code class="inline-code">Map</code>).</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.functionDefinitionBody"></a>Function definition body</dt>
+
+
+         <dd>
+        <p>The template fragment between the <code class="inline-code">&lt;#function
+        <em class="code-color">...</em>&gt;</code> and
+        <code class="inline-code">&lt;/#function&gt;</code>. This template fragment will be
+        executed when you call the function (for example as
+        <code class="inline-code">myFuction(1, 2)</code>).</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.hashVariable"></a>Hash</dt>
+
+
+         <dd>
+        <p>A variable that acts as a container that stores sub variables
+        that can be retrieved via a string that is a lookup name.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.sequenceVariable">Sequence</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.lineBreak"></a>Line break</dt>
+
+
+         <dd>
+        <p>Line break is a special character (or a sequence of special
+        characters) that causes a line breaking when you see the text as plain
+        text (say, when you read the text with Windows notepad). Typically you
+        type this character by hitting ENTER or RETURN key. The line break is
+        represented with different characters on different platforms (to cause
+        incompatibility and confusion...): "line feed" character
+        on UNIX-es, "carriage return" character on Macintosh,
+        "carriage return" + "line feed" (two
+        characters!) on Windows and DOS. Note that line breaks in HTML do not
+        have a visual effect when viewed in a browser; you must use markup
+        such as <code class="inline-code">&lt;BR&gt;</code> for that. This manual never
+        means <code class="inline-code">&lt;BR&gt;</code> when it says
+        "line-break".</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.macroDefinitionBody"></a>Macro definition body</dt>
+
+
+         <dd>
+        <p>The template fragment between the <code class="inline-code">&lt;#macro
+        <em class="code-color">...</em>&gt;</code> and
+        <code class="inline-code">&lt;/#macro&gt;</code>. This template fragment will be
+        executed when you call the macro (for example as
+        <code class="inline-code">&lt;@myMacro/&gt;</code>).</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.markupOutputValue"></a>Markup output value</dt>
+
+
+         <dd>
+        <p>A value with FTL type "markup output". This type is
+        related to <a href="dgui_misc_autoescaping.html">auto-escaping
+        mechanism</a>; you can <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">read about this type
+        there</a>. But in short, this is a value that stores text that&#39;s
+        already in the output markup format (like HTML, XML, RTF, etc.), and
+        hence must not be auto-escaped.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.methodVariable"></a>Method</dt>
+
+
+         <dd>
+        <p>A variable that calculates something based on parameters you
+        give, and returns the result.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.MVC"></a>MVC pattern</dt>
+
+
+         <dd>
+        <p>MVC stands for Model View Controller. It&#39;s a design pattern
+        started his life in the 70&#39;s as a framework developer by Trygve
+        Reenskaug for Smalltalk, and was used primary for for UI-s (user
+        interfaces). MVC considers three roles:</p>
+
+        <ul>
+          <li>
+            Model: Model represents application (domain) specific
+            information in a non-visual way. For example, an array of product
+            objects in the memory of your computer is the part of the
+            model.
+          </li>
+
+          <li>
+            View: View displays the model and provides UI. For example,
+            it&#39;s the task of the view component to render the array of product
+            objects to a HTML page.
+          </li>
+
+          <li>
+            Controller: The controller handles user input, modifies the
+            model, and ensures that the view is updated when needed. For
+            example it is the task of controller to take the incoming HTTP
+            requests, parse the received parameters (forms), dispatch the
+            requests to the proper business logic object, and chose the right
+            template for the HTTP response.
+          </li>
+        </ul>
+
+        <p>The most important thing for us when applying MVC for Web
+        applications is the separation of View from the other two roles. This
+        allows the separation of designers (HTML authors) from programmers.
+        Designers deal with the visual aspects, programmers deal with the
+        application logic and other technical issues; everybody works on what
+        he is good at. Designers and programmers are less dependent on each
+        other. Designers can change the appearance without programmers having
+        to change or recompile the program.</p>
+
+        <p>For more information I recommend reading <a href="http://java.sun.com/blueprints/guidelines/designing_enterprise_applications_2e/web-tier/web-tier5.html">chapter
+        4.4</a> of Designing Enterprise Applications with the J2EE Platform
+        blueprint.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.outputEncoding"></a>Output encoding</dt>
+
+
+         <dd>
+        <p>Means output <a href="#gloss.charset">charset</a>. In
+        the Java world the term "encoding" is commonly (mis)used
+        as a synonym to charset.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.parseTimeError"></a>Parse-time error</dt>
+
+
+         <dd>
+        <p>An error occurring during the template parsing phase, as opposed
+        to the later template execution phase (see more explanation below).
+        The presence of a such error prevents the execution of the whole
+        template, even if the execution wouldn&#39;t use the part where the error
+        is. This is seen as an advantage, as it helps early (before
+        deployment, ideally in-editor) error detection.</p>
+
+        <p>A FreeMarker template is processed in two phases. First the
+        <em>whole</em> template is analyzed syntactically, which
+        is called parsing. The result of the parsing is a
+        <code class="inline-code">Template</code> Java object, which is usually cached for
+        fast reuse. Later, the already parsed template can be executed for
+        unlimited times to produce output based on the content of a <a href="#gloss.dataModel">data-model</a>. Errors occurring during
+        the parsing are called parse-time errors.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.predefinedDirective"></a>Predefined directive</dt>
+
+
+         <dd>
+        <p>Directive what is defined by FreeMarker, thus always available.
+        Example of predefined directives: <code class="inline-code">if</code>,
+        <code class="inline-code">list</code>, <code class="inline-code">include</code></p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.userDefinedDirective">User-defined directive</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.regularExpression"></a>Regular expression</dt>
+
+
+         <dd>
+        <p>A regular expression is a string that specifies a set of strings
+        that matches it. For example, the regular expression
+        <code class="inline-code">&quot;fo*&quot;</code> matches <code class="inline-code">&quot;f&quot;</code>,
+        <code class="inline-code">&quot;fo&quot;</code>, <code class="inline-code">&quot;foo&quot;</code>, etc. Regular
+        expressions are used in several languages and other tools. In
+        FreeMarker, the usage of them is a "power user" option.
+        So if you have never used them before, there is no need to worry about
+        not being familiar with them. But if you are interested in regular
+        expressions, you can find several Web pages and books about them.
+        FreeMarker uses the variation of regular expressions described at:
+        <a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html">http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html</a></p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.scalarVariable"></a>Scalar</dt>
+
+
+         <dd>
+        <p>A scalar variable stores a single value. A scalar is either a
+        string or a number or a date/time or a <a href="#gloss.boolean">boolean</a>.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.sequenceVariable"></a>Sequence</dt>
+
+
+         <dd>
+        <p>A sequence is a variable that contains a sequence of sub
+        variables. The sequence&#39;s sub variables are accessible via numerical
+        index, where the index of the very first object is 0, the index of the
+        second objects is 1, the index of the third object is 2, etc.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.hashVariable">Hash</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="autoid_294"></a>SGML</dt>
+
+
+          <dd>See
+       <a href="#gloss.SGML">Standard Generalized Markup Language</a>
+    </dd>
+
+    
+        <dt><a name="gloss.SGML"></a>Standard Generalized Markup Language</dt>
+
+
+         <dd>
+        <p>This is an international standard (ISO 8879) that specifies the
+        rules for the creation of platform-independent markup languages. HTML
+        is a markup language created with SGML. <a href="#gloss.XML">XML</a> is a subset (restricted version) of
+        SGML.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.XML">Extensible Markup Language</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.startTag"></a>Start-tag</dt>
+
+
+         <dd>
+        <p><a href="#gloss.tag">Tag</a>, which indicates that the
+        following content is under the element, up to the <a href="#gloss.endTag">end-tag</a>. The start-tag may also
+        specifies <a href="#gloss.attribute">attributes</a> for the
+        element. An example of a start-tag: <code class="inline-code">&lt;body
+        bgcolor=black&gt;</code></p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.string"></a>String</dt>
+
+
+         <dd>
+        <p>A sequence of <a href="#gloss.character">characters</a>
+        such as "m", "o", "u",
+        "s", "e".</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.tag"></a>Tag</dt>
+
+
+         <dd>
+        <p>Text fragment indicating the usage of an element in SGML.
+        Examples of tags: <code class="inline-code">&lt;body bgcolor=black&gt;</code>,
+        <code class="inline-code">&lt;/body&gt;</code></p>
+
+        
+
+        
+      
+    <p>See Also
+       <a href="#gloss.startTag">Start-tag</a>,
+       <a href="#gloss.endTag">End-tag</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.template"></a>Template</dt>
+
+
+         <dd>
+        <p>A template is a text file with some special character sequences
+        embedded into it. A template processor (e.g. FreeMarker) will
+        interpret special character sequences and it outputs a more or less
+        different text from the original text file, where the differences are
+        often based on a <a href="#gloss.dataModel">data-model</a>.
+        Thus, the original text acts as a template of the possible
+        outputs.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.templateEncoding"></a>Template encoding</dt>
+
+
+         <dd>
+        <p>Means template <a href="#gloss.charset">charset</a>. In
+        the Java world the term "encoding" is commonly (mis)used
+        as a synonym to charset.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.templateProcessingJob"></a>Template processing job</dt>
+
+
+         <dd>
+        <p>A template processing job is the process during which FreeMarker
+        merges the main (top-level) template with a data-model to produce the
+        output. Because templates can <code class="inline-code">include</code> and
+        <code class="inline-code">import</code> other templates, this may involves the
+        processing of multiple templates, but those will all belong to the
+        same template processing job, which was started with the processing of
+        the main template. A template-processing job only exists for the short
+        time period until the processing of the main template is finished, and
+        then it vanishes with all the variables created during the process
+        (variables created with <code class="inline-code">assign</code>,
+        <code class="inline-code">macro</code>, <code class="inline-code">global</code>, etc.
+        directives).</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.threadSafe"></a>Thread-safe</dt>
+
+
+         <dd>
+        <p>An object is thread-safe if it is safe to call its methods from
+        multiple threads, even in parallel (i.e. multiple threads execute the
+        methods of the object at the same time). Non-thread-safe objects may
+        behave unpredictably in this situation, and generate wrong results,
+        corrupt internal data structures, etc. Thread-safety is typically
+        achieved in two ways with Java: with the usage
+        <code class="inline-code">synchronized</code> statement (or
+        <code class="inline-code">synchronized</code> methods), and with the immutability of
+        encapsulated data (i.e. you can&#39;t modify the field after you have
+        created the object).</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.transformVariable"></a>Transform</dt>
+
+
+         <dd>
+        <p>This term refers to user-defined directives that are implemetned
+        with the now obsolete <code class="inline-code">TemplateTransformModel</code> Java
+        interface. The feature was originally made for implementing output
+        filters, hence the name.</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.UCS"></a>UCS</dt>
+
+
+         <dd>
+        <p>This is international standard (ISO-10646) that defines a huge
+        set of <a href="#gloss.character">characters</a> and assigns a
+        unique number for each character ("!" is 33, ...,
+        "A" is 61, "B" is 62, ..., Arabic letter
+        hamza is 1569... etc.). This character set (not charset) contains
+        almost all characters used today (Latin alphabet, Cyrillic alphabet,
+        Chinese letters, etc.). The idea behind UCS is that we can specify any
+        character with a unique number, not mater what the platform or the
+        language is.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.unicode">Unicode</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.unicode"></a>Unicode</dt>
+
+
+         <dd>
+        <p>De-facto standard developed by Unicode organization. It deals
+        with the classification of the characters in <a href="#gloss.UCS">UCS</a> (which is letter, which is digit, which
+        is uppercase, which is lowercase, etc.), and with other problems of
+        processing text made from the characters of UCS (e.g.
+        normalization).</p>
+      
+   </dd>
+
+    
+        <dt><a name="gloss.userDefinedDirective"></a>User-defined directive</dt>
+
+
+         <dd>
+        <p>Directive that is not defined by the FreeMarker core, but by the
+        user. These are typically application domain specific directives, like
+        pull-down menu generation directives, HTML form handling
+        directives.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.predefinedDirective">Predefined directive</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="gloss.whiteSpace"></a>White-space</dt>
+
+
+         <dd>
+        <p>Characters that are totally transparent but have impact on the
+        visual appearance of the text. Examples of white-space characters:
+        space, tab (horizontal and vertical), line breaks (CR and LF), form
+        feed.</p>
+
+        
+      
+    <p>See Also
+       <a href="#gloss.lineBreak">Line break</a>
+    </p>
+   </dd>
+
+    
+        <dt><a name="autoid_295"></a>XML</dt>
+
+
+          <dd>See
+       <a href="#gloss.XML">Extensible Markup Language</a>
+    </dd>
+
+      </dl>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="app_eccn.html"><span>Previous</span></a><a class="paging-arrow next" href="alphaidx.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/index.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/index.html b/builds/2.3.26-nightly/index.html
new file mode 100644
index 0000000..fb72cf0
--- /dev/null
+++ b/builds/2.3.26-nightly/index.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-book">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Apache FreeMarker Manual">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/index.html">
+<link rel="canonical" href="http://freemarker.org/docs/index.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><span itemprop="name">Table of Contents</span></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></
 div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = [];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><span class="paging-arrow disabled previous"><span>Previous</span></span><a class="paging-arrow next" href="dgui.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-book" id="autoid_1" itemprop="headline">Apache FreeMarker Manual <span class="subtitle productname">For Freemarker 2.3.26</span>
+</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Table of Contents</div>
+<ul><li><a class="page-menu-link" href="dgui.html" data-menu-target="dgui">Template Author&#39;s Guide</a><ul><li><a class="page-menu-link" href="dgui_quickstart.html" data-menu-target="dgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="dgui_quickstart_basics.html" data-menu-target="dgui_quickstart_basics">Template + data-model = output</a></li><li><a class="page-menu-link" href="dgui_quickstart_datamodel.html" data-menu-target="dgui_quickstart_datamodel">The data-model at a glance</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html" data-menu-target="dgui_quickstart_template">The template at a glance</a></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel.html" data-menu-target="dgui_datamodel">Values, Types</a><ul><li><a class="page-menu-link" href="dgui_datamodel_basics.html" data-menu-target="dgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html" data-menu-target="dgui_datam
 odel_types">The types</a></li></ul></li><li><a class="page-menu-link" href="dgui_template.html" data-menu-target="dgui_template">The Template</a><ul><li><a class="page-menu-link" href="dgui_template_overallstructure.html" data-menu-target="dgui_template_overallstructure">Overall structure</a></li><li><a class="page-menu-link" href="dgui_template_directives.html" data-menu-target="dgui_template_directives">Directives</a></li><li><a class="page-menu-link" href="dgui_template_exp.html" data-menu-target="dgui_template_exp">Expressions</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html" data-menu-target="dgui_template_valueinsertion">Interpolations</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc.html" data-menu-target="dgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html" data-menu-target="dgui_misc_userdefdir">Defining your own directives</a></li><li><a class="page-menu-link" href="dgui_misc_var.html" da
 ta-menu-target="dgui_misc_var">Defining variables in the template</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html" data-menu-target="dgui_misc_namespace">Namespaces</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html" data-menu-target="dgui_misc_autoescaping">Auto-escaping and output formats</a></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html" data-menu-target="dgui_misc_whitespace">White-space handling</a></li><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html" data-menu-target="dgui_misc_alternativesyntax">Alternative (square bracket) syntax</a></li></ul></li></ul></li><li><a class="page-menu-link" href="pgui.html" data-menu-target="pgui">Programmer&#39;s Guide</a><ul><li><a class="page-menu-link" href="pgui_quickstart.html" data-menu-target="pgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="pgui_quickstart_createconfiguration.html" data-menu-target="pgui_quickstart_createconfigu
 ration">Create a configuration instance</a></li><li><a class="page-menu-link" href="pgui_quickstart_createdatamodel.html" data-menu-target="pgui_quickstart_createdatamodel">Create a data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_gettemplate.html" data-menu-target="pgui_quickstart_gettemplate">Get the template</a></li><li><a class="page-menu-link" href="pgui_quickstart_merge.html" data-menu-target="pgui_quickstart_merge">Merging the template with the data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_all.html" data-menu-target="pgui_quickstart_all">Putting all together</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel.html" data-menu-target="pgui_datamodel">The Data Model</a><ul><li><a class="page-menu-link" href="pgui_datamodel_basics.html" data-menu-target="pgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_datamodel_scalar.html" data-menu-target="pgui_datamodel_scalar">Scalars</a></li><li><a
  class="page-menu-link" href="pgui_datamodel_parent.html" data-menu-target="pgui_datamodel_parent">Containers</a></li><li><a class="page-menu-link" href="pgui_datamodel_method.html" data-menu-target="pgui_datamodel_method">Methods</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html" data-menu-target="pgui_datamodel_directive">Directives</a></li><li><a class="page-menu-link" href="pgui_datamodel_node.html" data-menu-target="pgui_datamodel_node">Node variables</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html" data-menu-target="pgui_datamodel_objectWrapper">Object wrappers</a></li></ul></li><li><a class="page-menu-link" href="pgui_config.html" data-menu-target="pgui_config">The Configuration</a><ul><li><a class="page-menu-link" href="pgui_config_basics.html" data-menu-target="pgui_config_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_config_sharedvariables.html" data-menu-target="pgui_config_sharedvariables">Shared var
 iables</a></li><li><a class="page-menu-link" href="pgui_config_settings.html" data-menu-target="pgui_config_settings">Settings</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html" data-menu-target="pgui_config_templateloading">Template loading</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html" data-menu-target="pgui_config_errorhandling">Error handling</a></li><li><a class="page-menu-link" href="pgui_config_templateconfigurations.html" data-menu-target="pgui_config_templateconfigurations">Template configurations</a></li><li><a class="page-menu-link" href="pgui_config_outputformatsautoesc.html" data-menu-target="pgui_config_outputformatsautoesc">Associating output formats with templates</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html" data-menu-target="pgui_config_custom_formats">Custom number and date/time formats</a></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html" data-
 menu-target="pgui_config_incompatible_improvements">The &quot;incompatible improvements&quot; setting</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc.html" data-menu-target="pgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="pgui_misc_var.html" data-menu-target="pgui_misc_var">Variables, scopes</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html" data-menu-target="pgui_misc_charset">Charset issues</a></li><li><a class="page-menu-link" href="pgui_misc_multithreading.html" data-menu-target="pgui_misc_multithreading">Multithreading</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html" data-menu-target="pgui_misc_beanwrapper">Bean wrapper</a></li><li><a class="page-menu-link" href="pgui_misc_logging.html" data-menu-target="pgui_misc_logging">Logging</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html" data-menu-target="pgui_misc_servlet">Using FreeMarker with servlets</a></li><li><a class="page-menu-link" h
 ref="pgui_misc_secureenv.html" data-menu-target="pgui_misc_secureenv">Configuring security policy for FreeMarker</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html" data-menu-target="pgui_misc_xml_legacy">Legacy XML wrapper implementation</a></li><li><a class="page-menu-link" href="pgui_misc_ant.html" data-menu-target="pgui_misc_ant">Using FreeMarker with Ant</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html" data-menu-target="pgui_misc_jythonwrapper">Jython wrapper</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref.html" data-menu-target="ref">Template Language Reference</a><ul><li><a class="page-menu-link" href="ref_builtins.html" data-menu-target="ref_builtins">Built-in Reference</a><ul><li><a class="page-menu-link" href="ref_builtins_alphaidx.html" data-menu-target="ref_builtins_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_builtins_string.html" data-menu-target="ref_builtins_string">Built-
 ins for strings</a></li><li><a class="page-menu-link" href="ref_builtins_number.html" data-menu-target="ref_builtins_number">Built-ins for numbers</a></li><li><a class="page-menu-link" href="ref_builtins_date.html" data-menu-target="ref_builtins_date">Built-ins for date/time/date-time values</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html" data-menu-target="ref_builtins_boolean">Built-ins for booleans</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html" data-menu-target="ref_builtins_sequence">Built-ins for sequences</a></li><li><a class="page-menu-link" href="ref_builtins_hash.html" data-menu-target="ref_builtins_hash">Built-ins for hashes</a></li><li><a class="page-menu-link" href="ref_builtins_node.html" data-menu-target="ref_builtins_node">Built-ins for nodes (for XML)</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html" data-menu-target="ref_builtins_loop_var">Loop variable built-ins</a></li><li><a class="page-menu-lin
 k" href="ref_builtins_type_independent.html" data-menu-target="ref_builtins_type_independent">Type independent built-ins</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html" data-menu-target="ref_builtins_expert">Seldom used and expert built-ins</a></li></ul></li><li><a class="page-menu-link" href="ref_directives.html" data-menu-target="ref_directives">Directive Reference</a><ul><li><a class="page-menu-link" href="ref_directive_alphaidx.html" data-menu-target="ref_directive_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_directive_assign.html" data-menu-target="ref_directive_assign">assign</a></li><li><a class="page-menu-link" href="ref_directive_attempt.html" data-menu-target="ref_directive_attempt">attempt, recover</a></li><li><a class="page-menu-link" href="ref_directive_autoesc.html" data-menu-target="ref_directive_autoesc">autoesc</a></li><li><a class="page-menu-link" href="ref_directive_compress.html" data-menu-target="ref_directiv
 e_compress">compress</a></li><li><a class="page-menu-link" href="ref_directive_escape.html" data-menu-target="ref_directive_escape">escape, noescape (deprecated)</a></li><li><a class="page-menu-link" href="ref_directive_flush.html" data-menu-target="ref_directive_flush">flush</a></li><li><a class="page-menu-link" href="ref_directive_ftl.html" data-menu-target="ref_directive_ftl">ftl</a></li><li><a class="page-menu-link" href="ref_directive_function.html" data-menu-target="ref_directive_function">function, return</a></li><li><a class="page-menu-link" href="ref_directive_global.html" data-menu-target="ref_directive_global">global</a></li><li><a class="page-menu-link" href="ref_directive_if.html" data-menu-target="ref_directive_if">if, else, elseif</a></li><li><a class="page-menu-link" href="ref_directive_import.html" data-menu-target="ref_directive_import">import</a></li><li><a class="page-menu-link" href="ref_directive_include.html" data-menu-target="ref_directive_include">include</a
 ></li><li><a class="page-menu-link" href="ref_directive_list.html" data-menu-target="ref_directive_list">list, else, items, sep, break</a></li><li><a class="page-menu-link" href="ref_directive_local.html" data-menu-target="ref_directive_local">local</a></li><li><a class="page-menu-link" href="ref_directive_macro.html" data-menu-target="ref_directive_macro">macro, nested, return</a></li><li><a class="page-menu-link" href="ref_directive_noautoesc.html" data-menu-target="ref_directive_noautoesc">noautoesc</a></li><li><a class="page-menu-link" href="ref_directive_noparse.html" data-menu-target="ref_directive_noparse">noparse</a></li><li><a class="page-menu-link" href="ref_directive_nt.html" data-menu-target="ref_directive_nt">nt</a></li><li><a class="page-menu-link" href="ref_directive_outputformat.html" data-menu-target="ref_directive_outputformat">outputformat</a></li><li><a class="page-menu-link" href="ref_directive_setting.html" data-menu-target="ref_directive_setting">setting</a></
 li><li><a class="page-menu-link" href="ref_directive_stop.html" data-menu-target="ref_directive_stop">stop</a></li><li><a class="page-menu-link" href="ref_directive_switch.html" data-menu-target="ref_directive_switch">switch, case, default, break</a></li><li><a class="page-menu-link" href="ref_directive_t.html" data-menu-target="ref_directive_t">t, lt, rt</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html" data-menu-target="ref_directive_userDefined">User-defined directive (&lt;@...&gt;)</a></li><li><a class="page-menu-link" href="ref_directive_visit.html" data-menu-target="ref_directive_visit">visit, recurse, fallback</a></li></ul></li><li><a class="page-menu-link" href="ref_specvar.html" data-menu-target="ref_specvar">Special Variable Reference</a></li><li><a class="page-menu-link" href="ref_reservednames.html" data-menu-target="ref_reservednames">Reserved names in FTL</a></li><li><a class="page-menu-link" href="ref_deprecated.html" data-menu-target="ref_de
 precated">Deprecated FTL constructs</a><ul><li><a class="page-menu-link" href="ref_depr_directive.html" data-menu-target="ref_depr_directive">List of deprecated directives</a></li><li><a class="page-menu-link" href="ref_depr_builtin.html" data-menu-target="ref_depr_builtin">List of deprecated built-ins</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html" data-menu-target="ref_depr_oldmacro">Old-style macro and call directives</a></li><li><a class="page-menu-link" href="ref_depr_transform.html" data-menu-target="ref_depr_transform">Transform directive</a></li><li><a class="page-menu-link" href="ref_depr_oldsyntax.html" data-menu-target="ref_depr_oldsyntax">Old FTL syntax</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html" data-menu-target="ref_depr_numerical_interpolation">#{...}: Numerical interpolation</a></li></ul></li></ul></li><li><a class="page-menu-link" href="xgui.html" data-menu-target="xgui">XML Processing Guide</a><ul><li><a cl
 ass="page-menu-link" href="xgui_preface.html" data-menu-target="xgui_preface">Preface</a></li><li><a class="page-menu-link" href="xgui_expose.html" data-menu-target="xgui_expose">Exposing XML documents</a><ul><li><a class="page-menu-link" href="xgui_expose_dom.html" data-menu-target="xgui_expose_dom">The DOM tree</a></li><li><a class="page-menu-link" href="xgui_expose_put.html" data-menu-target="xgui_expose_put">Putting the XML into the data-model</a></li></ul></li><li><a class="page-menu-link" href="xgui_imperative.html" data-menu-target="xgui_imperative">Imperative XML processing</a><ul><li><a class="page-menu-link" href="xgui_imperative_learn.html" data-menu-target="xgui_imperative_learn">Basics</a></li><li><a class="page-menu-link" href="xgui_imperative_formal.html" data-menu-target="xgui_imperative_formal">Details</a></li></ul></li><li><a class="page-menu-link" href="xgui_declarative.html" data-menu-target="xgui_declarative">Declarative XML processing</a><ul><li><a class="page-
 menu-link" href="xgui_declarative_basics.html" data-menu-target="xgui_declarative_basics">Basics</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html" data-menu-target="xgui_declarative_details">Details</a></li></ul></li></ul></li><li><a class="page-menu-link" href="app.html" data-menu-target="app">Appendixes</a><ul><li><a class="page-menu-link" href="app_faq.html" data-menu-target="app_faq">FAQ</a></li><li><a class="page-menu-link" href="app_versions.html" data-menu-target="app_versions">Version history</a><ul><li><a class="page-menu-link" href="versions_2_3_26.html" data-menu-target="versions_2_3_26">2.3.26 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_25.html" data-menu-target="versions_2_3_25">2.3.25 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_24.html" data-menu-target="versions_2_3_24">2.3.24 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_23.html" data-men
 u-target="versions_2_3_23">2.3.23</a></li><li><a class="page-menu-link" href="versions_2_3_22.html" data-menu-target="versions_2_3_22">2.3.22</a></li><li><a class="page-menu-link" href="versions_2_3_21.html" data-menu-target="versions_2_3_21">2.3.21</a></li><li><a class="page-menu-link" href="versions_2_3_20.html" data-menu-target="versions_2_3_20">2.3.20</a></li><li><a class="page-menu-link" href="versions_2_3_19.html" data-menu-target="versions_2_3_19">2.3.19</a></li><li><a class="page-menu-link" href="versions_2_3_18.html" data-menu-target="versions_2_3_18">2.3.18</a></li><li><a class="page-menu-link" href="versions_2_3_17.html" data-menu-target="versions_2_3_17">2.3.17</a></li><li><a class="page-menu-link" href="versions_2_3_16.html" data-menu-target="versions_2_3_16">2.3.16</a></li><li><a class="page-menu-link" href="versions_2_3_15.html" data-menu-target="versions_2_3_15">2.3.15</a></li><li><a class="page-menu-link" href="versions_2_3_14.html" data-menu-target="versions_2_3_14
 ">2.3.14</a></li><li><a class="page-menu-link" href="versions_2_3_13.html" data-menu-target="versions_2_3_13">2.3.13</a></li><li><a class="page-menu-link" href="versions_2_3_12.html" data-menu-target="versions_2_3_12">2.3.12</a></li><li><a class="page-menu-link" href="versions_2_3_11.html" data-menu-target="versions_2_3_11">2.3.11</a></li><li><a class="page-menu-link" href="versions_2_3_10.html" data-menu-target="versions_2_3_10">2.3.10</a></li><li><a class="page-menu-link" href="versions_2_3_9.html" data-menu-target="versions_2_3_9">2.3.9</a></li><li><a class="page-menu-link" href="versions_2_3_8.html" data-menu-target="versions_2_3_8">2.3.8</a></li><li><a class="page-menu-link" href="versions_2_3_7.html" data-menu-target="versions_2_3_7">2.3.7</a></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html" data-menu-target="versions_2_3_7rc1">2.3.7 RC1</a></li><li><a class="page-menu-link" href="versions_2_3_6.html" data-menu-target="versions_2_3_6">2.3.6</a></li><li><a class=
 "page-menu-link" href="versions_2_3_5.html" data-menu-target="versions_2_3_5">2.3.5</a></li><li><a class="page-menu-link" href="versions_2_3_4.html" data-menu-target="versions_2_3_4">2.3.4</a></li><li><a class="page-menu-link" href="versions_2_3_3.html" data-menu-target="versions_2_3_3">2.3.3</a></li><li><a class="page-menu-link" href="versions_2_3_2.html" data-menu-target="versions_2_3_2">2.3.2</a></li><li><a class="page-menu-link" href="versions_2_3_1.html" data-menu-target="versions_2_3_1">2.3.1</a></li><li><a class="page-menu-link" href="versions_2_3.html" data-menu-target="versions_2_3">2.3</a></li><li><a class="page-menu-link" href="versions_2_2_8.html" data-menu-target="versions_2_2_8">2.2.8</a></li><li><a class="page-menu-link" href="versions_2_2_7.html" data-menu-target="versions_2_2_7">2.2.7</a></li><li><a class="page-menu-link" href="versions_2_2_6.html" data-menu-target="versions_2_2_6">2.2.6</a></li><li><a class="page-menu-link" href="versions_2_2_5.html" data-menu-targ
 et="versions_2_2_5">2.2.5</a></li><li><a class="page-menu-link" href="versions_2_2_4.html" data-menu-target="versions_2_2_4">2.2.4</a></li><li><a class="page-menu-link" href="versions_2_2_3.html" data-menu-target="versions_2_2_3">2.2.3</a></li><li><a class="page-menu-link" href="versions_2_2_2.html" data-menu-target="versions_2_2_2">2.2.2</a></li><li><a class="page-menu-link" href="versions_2_2_1.html" data-menu-target="versions_2_2_1">2.2.1</a></li><li><a class="page-menu-link" href="versions_2_2.html" data-menu-target="versions_2_2">2.2</a></li><li><a class="page-menu-link" href="versions_2_1_5.html" data-menu-target="versions_2_1_5">2.1.5</a></li><li><a class="page-menu-link" href="versions_2_1_4.html" data-menu-target="versions_2_1_4">2.1.4</a></li><li><a class="page-menu-link" href="versions_2_1_3.html" data-menu-target="versions_2_1_3">2.1.3</a></li><li><a class="page-menu-link" href="versions_2_1_2.html" data-menu-target="versions_2_1_2">2.1.2</a></li><li><a class="page-menu-
 link" href="versions_2_1_1.html" data-menu-target="versions_2_1_1">2.1.1</a></li><li><a class="page-menu-link" href="versions_2_1.html" data-menu-target="versions_2_1">2.1</a></li><li><a class="page-menu-link" href="versions_2_01.html" data-menu-target="versions_2_01">2.01</a></li><li><a class="page-menu-link" href="versions_2_0.html" data-menu-target="versions_2_0">2.0</a></li><li><a class="page-menu-link" href="versions_2_0RC3.html" data-menu-target="versions_2_0RC3">2.0 RC3</a></li><li><a class="page-menu-link" href="versions_2_0RC2.html" data-menu-target="versions_2_0RC2">2.0 RC2</a></li><li><a class="page-menu-link" href="versions_2_0RC1.html" data-menu-target="versions_2_0RC1">2.0 RC1</a></li></ul></li><li><a class="page-menu-link" href="app_install.html" data-menu-target="app_install">Installing FreeMarker</a></li><li><a class="page-menu-link" href="app_legal.html" data-menu-target="app_legal">Legal</a><ul><li><a class="page-menu-link" href="app_license.html" data-menu-target
 ="app_license">License</a></li><li><a class="page-menu-link" href="app_eccn.html" data-menu-target="app_eccn">Export Control</a></li></ul></li></ul></li><li><a class="page-menu-link" href="gloss.html" data-menu-target="gloss">Glossary</a></li><li><a class="page-menu-link" href="alphaidx.html" data-menu-target="alphaidx">Alphabetical Index</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><span class="paging-arrow disabled previous"><span>Previous</span></span><a class="paging-arrow next" href="dgui.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/logo.png
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/logo.png b/builds/2.3.26-nightly/logo.png
new file mode 100644
index 0000000..193dc11
Binary files /dev/null and b/builds/2.3.26-nightly/logo.png differ


[47/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/app_faq.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/app_faq.html b/builds/2.3.26-nightly/app_faq.html
new file mode 100644
index 0000000..fda425b
--- /dev/null
+++ b/builds/2.3.26-nightly/app_faq.html
@@ -0,0 +1,1797 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-appendix">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>FAQ - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="FAQ">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/app_faq.html">
+<link rel="canonical" href="http://freemarker.org/docs/app_faq.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_faq.html"><span itemprop="name">FAQ</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span clas
 s="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li>FAQ</li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","FAQ"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="app.html"><span>Previous</span></a><a class="paging-arrow next" href="app_versions.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="app_faq" itemprop="headline">FAQ</h1>
+</div></div>  <div class="qandaset">
+
+  <ol>
+    <li>
+      <a href="#faq_jsp_vs_freemarker">
+
+            JSP versus FreeMarker?
+
+            
+                </a>
+    </li>
+    <li>
+      <a href="#faq_picky_about_missing_vars">
+
+            Why is FreeMarker so picky about <code class="inline-code">null</code>-s
+            and missing variables, and what to do with it?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_number_grouping">
+
+            Why does FreeMarker print the numbers with strange
+            formatting (as 1,000,000 or 1�000�000 instead of 1000000)?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_number_decimal_point">
+
+            Why does FreeMarker print bad decimal and/or grouping
+            separator symbol (as 3.14 instead of 3,14)?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_number_boolean_formatting">
+
+            Why does FreeMarker give an error when I try to print a
+            boolean like <code class="inline-code">${aBoolean}</code>, and how to fix
+            it?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_template_not_found">
+
+            FreeMarker can&#39;t find my templates
+            (<code class="inline-code">TemplateNotFoundException</code> or
+            <code class="inline-code">FileNotFoundException</code>, "Template not
+            found" error message)
+                </a>
+    </li>
+    <li>
+      <a href="#faq_check_version">
+
+            The documentation writes about feature
+            <em>X</em>, but it seems that FreeMarker doesn&#39;t
+            know that, or it behaves in a different way as documented, or a
+            bug that was supposedly fixed is still present.
+                </a>
+    </li>
+    <li>
+      <a href="#faq_alternative_syntax">
+
+            The <code class="inline-code">&lt;</code> and <code class="inline-code">&gt;</code> of
+            FreeMarker tags confuses my editor or the XML parser. What to
+            do?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_legal_variable_names">
+
+            What are the legal variable names?
+
+            
+                </a>
+    </li>
+    <li>
+      <a href="#faq_strange_variable_name">
+
+            How can I use variable names (macro name, parameter name)
+            that contain minus sign (<code class="inline-code">-</code>), colon
+            (<code class="inline-code">:</code>), dot (<code class="inline-code">.</code>), or or other
+            special characters?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_jsp_custom_tag_syntax">
+
+            Why do I get &quot;java.lang.IllegalArgumentException: argument
+            type mismatch&quot; when I try to use <em>X</em> JSP
+            custom tag?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_servlet_include">
+
+            How to include other resources in a way as
+            <code class="inline-code">jsp:include</code> does it?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_parameter_unwrapping">
+
+            How can I get the parameters to my
+            plain-Java-method/<code class="inline-code">TemplateMethodModelEx</code>/<code class="inline-code">TemplateTransformModel</code>/<code class="inline-code">TemplateDirectiveModel</code>
+            implementation as plain
+            <code class="inline-code">java.lang.*</code>/<code class="inline-code">java.util.*</code>
+            objects?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_nonstring_keys">
+
+            Why I can&#39;t use non-string key in the
+            <code class="inline-code">myMap[myKey]</code> expression? And what to do
+            now?
+
+            
+                </a>
+    </li>
+    <li>
+      <a href="#faq_simple_map">
+
+            When I list the contents of a map (a hash) with
+            <code class="inline-code">?keys</code>/<code class="inline-code">?values</code>, I get the
+            <code class="inline-code">java.util.Map</code> methods mixed with the real map
+            entries. Of course, I only want to get the map entries.
+                </a>
+    </li>
+    <li>
+      <a href="#faq_modify_seq_and_map">
+
+            How can I modify sequences (lists) and hashes (maps) in
+            FreeMarker templates?
+
+            
+
+            
+
+            
+
+            
+                </a>
+    </li>
+    <li>
+      <a href="#faq_null">
+
+            What about <code class="inline-code">null</code> and the FreeMarker
+            template language? 
+                </a>
+    </li>
+    <li>
+      <a href="#faq_capture">
+
+            How can I use the output of a directive (macro) in
+            expressions (as a parameter to another directive)?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_questionmark">
+
+            Why do I have "?"-s in the output instead of
+            character <em>X</em>?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_retrieve_calculated_values">
+
+            How to retrieve values calculated in templates after
+            template execution done?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_assign_to_dynamic_variable_name">
+
+            How to assign to (or <code class="inline-code">#import</code> into) a
+            dynamically constructed variable name (like to name that&#39;s stored
+            in another variable)?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_template_uploading_security">
+
+            
+
+            Can I allow users to upload templates and what are the
+            security implications?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_implement_function_or_macro_in_java">
+
+            How to implement a function or macro in Java Language
+            instead of in the template language?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_nice_error_page">
+
+             In my Servlet
+            based application, how do I show a nice error page instead of a
+            stack trace when error occurs during template processing?
+                </a>
+    </li>
+    <li>
+      <a href="#faq_html_editor_mangles">
+
+            I&#39;m using a visual HTML editor that mangles template tags.
+            Will you change the template language syntax to accommodate my
+            editor?
+                </a>
+    </li>
+  </ol>
+  <dl>
+
+        
+          
+  <dt class="question" id="faq_jsp_vs_freemarker">
+    1.&nbsp; 
+            JSP versus FreeMarker?
+
+            
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>We compare FreeMarker with the JSP 2.0 + JSTL combo
+            here.</p>
+
+            <p>FreeMarker Pros:</p>
+
+            <ul>
+              <li>
+                <p>FreeMarker is not tied to Servlets or networking/Web; it
+                is just a class library to generate text output by merging a
+                template with Java objects (the data-model). You can execute
+                templates anywhere and anytime; no HTTP request forwarding or
+                similar tricks needed, no Servlet environment needed at all.
+                Because of this you can easily integrate it into any
+                system.</p>
+              </li>
+
+              <li>
+                <p>Terser syntax. Consider this JSP (assuming
+                <code class="inline-code">&lt;%@ taglib prefix=&quot;c&quot;
+                uri=&quot;http://java.sun.com/jsp/jstl/core&quot;
+                %&gt;</code>):</p>
+
+                
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;c:if test=&quot;${t}&quot;&gt;
+  True
+&lt;/c:if&gt;
+
+&lt;c:choose&gt;
+  &lt;c:when test=&quot;${n == 123}&quot;&gt;
+      Do this
+  &lt;/c:when&gt;
+  &lt;c:otherwise&gt;
+      Do that
+  &lt;/c:otherwise&gt;
+&lt;/c:choose&gt;
+
+&lt;c:forEach var=&quot;i&quot; items=&quot;${ls}&quot;&gt;
+- ${i}
+&lt;/c:forEach&gt;</pre></div>
+
+                <p>and the equivalent FTL:</p>
+
+                
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if t&gt;
+  True
+&lt;/#if&gt;
+
+&lt;#if n == 123&gt;
+  Do this
+&lt;#else&gt;
+  Do that
+&lt;/#if&gt;
+
+&lt;#list ls as i&gt;
+- ${i}
+&lt;/#list&gt;</pre></div>
+              </li>
+
+              <li>
+                <p>No servlet specific scopes and other highly technical
+                things in templates (unless, of course, you expose them into
+                the data-model deliberately). It was made for MVC from the
+                beginning, it focuses only on the presentation.</p>
+              </li>
+
+              <li>
+                <p>You can load the templates from anywhere; from the class
+                path, from a data-base, etc.</p>
+              </li>
+
+              <li>
+                <p>Locale-sensitive number and date formatting by default.
+                When you output for a human audience, all you need to do is
+                just write <code class="inline-code">${x}</code> rather than
+                <code class="inline-code">&lt;fmt:formatNumber value=&quot;${x}&quot;
+                /&gt;</code>.</p>
+              </li>
+
+              <li>
+                <p>Easier to define ad-hoc macros and functions.</p>
+              </li>
+
+              <li>
+                <p>No sweeping errors under the carpet. Missing variables
+                and <code class="inline-code">null</code>-s will not silently default to
+                <code class="inline-code">0</code>/<code class="inline-code">false</code>/empty-string,
+                but cause error. <a href="#faq_picky_about_missing_vars">See more about this
+                here...</a></p>
+              </li>
+
+              <li>
+                <p>"Object wrapping". This lets you show the
+                objects to templates in a customized, presentation oriented
+                way (e.g. <a href="xgui_imperative_learn.html">see
+                here</a> how a W3C DOM nodes can be seen by templates using
+                this technology.)</p>
+              </li>
+
+              <li>
+                <p>Macros and functions are just variables, so they can be
+                easily passed around as parameter values, put into the
+                data-model, etc., just like any other values.</p>
+              </li>
+
+              <li>
+                <p>Virtually unnoticeable delay when visiting a page for
+                the first time (or after it was changed), because no expensive
+                compilation happens.</p>
+              </li>
+            </ul>
+
+            <p>FreeMarker Cons:</p>
+
+            <ul>
+              <li>
+                <p>Not a "standard". There are fewer tools and
+                IDE integrations, fewer developers knows it and there&#39;s much
+                less industry support in general. (However, most JSP tag
+                libraries can work in FreeMarker templates with the proper
+                setup, unless they are base on <code class="inline-code">.tag</code>
+                files.)</p>
+              </li>
+
+              <li>
+                <p>Its syntax doesn&#39;t follow the HTML/XML rules apart from
+                some visual similarity, which is confusing for new users (it&#39;s
+                the price of the terseness). JSP doesn&#39;t follow it either, but
+                it&#39;s closer to it.</p>
+              </li>
+
+              <li>
+                <p>Since macros and functions are just variables, incorrect
+                directive and parameter names and missing required parameters
+                can be detected only on runtime.</p>
+              </li>
+
+              <li>
+                <p>Doesn&#39;t work with JSF. (It could work technically, but
+                nobody has implemented that yet.)</p>
+              </li>
+            </ul>
+
+            <p>You may read this if you are considering replacing JSP with
+            FreeMarker in an existing application or in a legacy framework
+            that only supports JSP: <a href="pgui_misc_servlet.html#pgui_misc_servlet_model2">Programmer&#39;s Guide/Miscellaneous/Using FreeMarker with servlets/Using FreeMarker for "Model 2"</a></p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_picky_about_missing_vars">
+    2.&nbsp; 
+            Why is FreeMarker so picky about <code class="inline-code">null</code>-s
+            and missing variables, and what to do with it?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>To recapitulate what&#39;s this entry is about: FreeMarker by
+            default treats an attempt to access a non-existent variable or a
+            <code class="inline-code">null</code> value (<a href="#faq_null">this two
+            is the same for FreeMarker</a>) as error, which aborts the
+            template execution.</p>
+
+            <p>First of all, you should understand the reason of being
+            picky. Most scripting languages and template languages are rather
+            forgiving with missing variables (and with
+            <code class="inline-code">null</code>-s), and they usually treat them as empty
+            string and/or 0 and/or logical false. This behavior has several
+            problems:</p>
+
+            <ul>
+              <li>
+                <p>It potentially hides accidental mistakes, like a typo in
+                a variable name, or when the template author refers to a
+                variable that the programmer doesn&#39;t put into the data-model
+                for that template, or for which the programmer uses a
+                different name. Humans are prone to do such mistakes, while
+                computers are not, so missing this opportunity that the
+                template engine can show these errors is a bad business. Even
+                if you very carefully check the output of the templates during
+                development, it is easy to look over mistakes like
+                <code class="inline-code">&lt;#if hasWarnigs&gt;<em class="code-color">print warnings
+                here...</em>&lt;/#if&gt;</code>, which would then
+                silently never print the warnings, since you have mistyped the
+                variable name (have you noticed it?). Also think about
+                maintenance, when you later modify your application; probably
+                you will not re-check templates (many applications has
+                hundreds of them) that carefully each time, for all possible
+                scenarios. Unit tests typically doesn&#39;t cover web page content
+                very good either (if you have them at all...); they mostly
+                only check certain manually set patterns in the web page, so
+                they will often gloss though changes that are actually bugs.
+                But if the page fails with exception, that&#39;s something human
+                testers will notice and unit test will notice (as the whole
+                page will fail), and in production the maintainers will notice
+                (assuming somebody check error logs).</p>
+              </li>
+
+              <li>
+                <p>Makes dangerous assumptions. The script language or
+                template engine knows nothing about the application domain, so
+                when it decides the value of something that it doesn&#39;t know to
+                be 0/false, it is a quite irresponsible and arbitrary thing.
+                Just because it&#39;s not know what&#39;s your current balance at your
+                bank, can we just say it&#39;s $0? Just because it is not known if
+                a patient has penicillin allergy, can we just say he/she
+                doesn&#39;t have it? Just consider the implications of such
+                mistakes. Showing an error page is often better than showing
+                incorrect information that looks good, leading to bad
+                decisions on the user side.</p>
+              </li>
+            </ul>
+
+            <p>Being not picky is mostly sweeping under the carpet in this
+            case (not facing the problems), which of course most people feels
+            more convenient, but still, we believe that in most cases being
+            strict will save your time and increase your software quality on
+            the long run.</p>
+
+            <p>On the other hand, we recognize that there are cases where
+            you don&#39;t want FreeMarker to be that picky for good reason, and
+            there is solution for them:</p>
+
+            <ul>
+              <li>
+                <p>It&#39;s often normal that your data-model contains
+                <code class="inline-code">null</code>-s or have optional variables. In such
+                cases use <a href="dgui_template_exp.html#dgui_template_exp_missing">these
+                operators</a>. If you use them too often, try to rethink
+                your data-model, because depending on them too much won&#39;t just
+                make the templates too verbose, but increases the probability
+                of hiding errors and printing arbitrary incorrect output (for
+                the reasons described earlier).</p>
+              </li>
+
+              <li>
+                <p>In some application you may rather want to show an
+                incomplete/damaged page than an error page. In this case you
+                can <a href="pgui_config_errorhandling.html">use another
+                error handler</a> than the default one. A custom error
+                handler can skip the problematic part, or show an error
+                indicator there, instead of aborting the whole page rendering.
+                Note, however, that although the error handlers don&#39;t give
+                arbitrary default values to variables, for pages that show
+                critical information it&#39;s maybe still better to show an error
+                page.</p>
+              </li>
+
+              <li>
+                <p>If the pages contain parts that aren&#39;t critically
+                important (like some side bars), another feature you may
+                interested in is <a href="ref_directive_attempt.html">the
+                <code>attempt</code>/<code>recover</code>
+                directives</a>.</p>
+              </li>
+            </ul>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_number_grouping">
+    3.&nbsp; 
+            Why does FreeMarker print the numbers with strange
+            formatting (as 1,000,000 or 1�000�000 instead of 1000000)?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>FreeMarker uses the locale-sensitive number formatting
+            capability of the Java platform. The default number format for
+            your locale may uses grouping or other formatting. If you don&#39;t
+            want that, you have to override the number format suggested by the
+            Java platform with the <code class="inline-code">number_format</code> <a href="pgui_config_settings.html">FreeMarker setting</a>. For
+            example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setNumberFormat(&quot;0.######&quot;);  // now it will print 1000000
+// where cfg is a freemarker.template.Configuration object</pre></div>
+
+            <p>Note however than humans often find it hard to read big
+            numbers without grouping separator. So in general it is
+            recommended to keep them, and in cases where the numbers are for
+            &#39;&#39;computer audience&#39;&#39; (which is confused on the grouping
+            separators), use the <a href="ref_builtins_number.html#ref_builtin_c"><code>c</code> built-in</a>. For
+            example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;a href=&quot;/shop/productdetails?id=${<strong>product.id?c</strong>}&quot;&gt;Details...&lt;/a&gt;</pre></div>
+
+            <p>For computer audience you need <code class="inline-code">?c</code> anyway,
+            as the decimal separators can also wary depending on the
+            locale.</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_number_decimal_point">
+    4.&nbsp; 
+            Why does FreeMarker print bad decimal and/or grouping
+            separator symbol (as 3.14 instead of 3,14)?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Different countries use different decimal/grouping separator
+            symbols. If you see incorrect symbols, then probably your locale
+            is not set properly. Set the default locale of the JVM or override
+            the default locale with the <code class="inline-code">locale</code> <a href="pgui_config_settings.html">FreeMarker setting</a>. For
+            example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setLocale(java.util.Locale.ITALY);
+// where cfg is a freemarker.template.Configuration object</pre></div>
+
+            <p>However, sometimes you want to output a number not for human
+            audience, but for "computer audience" (like you want
+            to print a size in CSS), in which case you must use dot as decimal
+            separator, regardless of the locale (language) of the page. For
+            that use the <a href="ref_builtins_number.html#ref_builtin_c"><code>c</code>
+            built-in</a>, for example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">font-size: ${<strong>fontSize?c</strong>}pt;</pre></div>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_number_boolean_formatting">
+    5.&nbsp; 
+            Why does FreeMarker give an error when I try to print a
+            boolean like <code class="inline-code">${aBoolean}</code>, and how to fix
+            it?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Unlike numbers, booleans has no commonly accepted format,
+            not even a common format within the same page. Like when you show
+            on a HTML page if a product is washable, you will hardly want to
+            show for the visitor &quot;Washable: true&quot;, but rather &quot;Washable: yes&quot;.
+            So we force the template author (by <code class="inline-code">${washable}</code>
+            causing error) to find out with his human knowledge how the
+            boolean value should be shown at the given place. The common way
+            of formatting a boolean is like <code class="inline-code">${washable?string(&quot;yes&quot;,
+            &quot;no&quot;)}</code>, <code class="inline-code">${caching?string(&quot;Enabled&quot;,
+            &quot;Disabled&quot;)}</code>, <code class="inline-code">${heating?string(&quot;on&quot;,
+            &quot;off&quot;)}</code>, etc.</p>
+
+            <p>However, there are two cases where this gets
+            impractical:</p>
+
+            <ul>
+              <li>
+                <p>When printing boolean to generate computer language
+                output, and hence you want
+                <code class="inline-code">true</code>/<code class="inline-code">false</code>, use
+                <code class="inline-code">${<em class="code-color">someBoolean</em>?c}</code>.
+                (This requires at least FreeMarker 2.3.20. Before that, the
+                common practice was writing
+                <code class="inline-code">${<em class="code-color">someBoolean</em>?string}</code>,
+                however that&#39;s dangerous because its output depends on the
+                current boolean format setting, whose default is
+                <code class="inline-code">&quot;true&quot;</code>/<code class="inline-code">&quot;false&quot;</code>.)</p>
+              </li>
+
+              <li>
+                <p>When you have format most of the booleans on the same
+                way. In this case you can set the
+                <code class="inline-code">boolean_format</code> setting
+                (<code class="inline-code">Configuration.setBooleanFormat</code>) to reflect
+                that, and then since FreeMarker 2.3.20 you can just write
+                <code class="inline-code">${<em class="code-color">someBoolean</em>}</code>.
+                (Note that this doesn&#39;t work for
+                <code class="inline-code">true</code>/<code class="inline-code">false</code> though - you
+                have to use <code class="inline-code">?c</code> there.)</p>
+              </li>
+            </ul>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_template_not_found">
+    6.&nbsp; 
+            FreeMarker can&#39;t find my templates
+            (<code class="inline-code">TemplateNotFoundException</code> or
+            <code class="inline-code">FileNotFoundException</code>, "Template not
+            found" error message)
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>First of all, you should know that FreeMarker doesn&#39;t load
+            templates from file system paths directly. Instead, it uses a
+            simple virtual file system that might reads non-filesystem
+            resources (templates from inside jar-s, from inside a database
+            table, etc.). What that virtual file is decided by a configuration
+            setting,
+            <code class="inline-code">Configuration.setTemplateLoader(TemplateLoader)</code>.
+            Even if the <code class="inline-code">TemplateLoader</code> your are using maps
+            to the file system, it will have a base directory that contains
+            all the templates, and that will be the root of your virtual file
+            system that you can&#39;t reach out from (i.e., absolute paths will be
+            still relative to the virtual file system root).</p>
+
+            <p>Tips to solve the problem:</p>
+
+            <ul>
+              <li>
+                <p>If you are the one who configure FreeMarker, be sure
+                that you set a proper
+                <code class="inline-code">TemplateLoader</code>.</p>
+              </li>
+
+              <li>
+                <p>Otherwise see if the template-not-found error&#39;s message
+                contains the description of the
+                <code class="inline-code">TemplateLoader</code> used. If it doesn&#39;t, you are
+                using an old FreeMarker version, so update it. Getting
+                <code class="inline-code">FileNotFoundException</code> instead of
+                <code class="inline-code">TemplateNotFoundException</code> is also a sign of
+                that, and so you will get less helpful error messages. (If the
+                <code class="inline-code">TemplateLoader</code> in the error message is like
+                <code class="inline-code">foo.SomeTemplateLoader@64f6106c</code> and so
+                doesn&#39;t show some relevant parameters, you may should ask the
+                author to define a nicer
+                <code class="inline-code">toString()</code>.)</p>
+              </li>
+
+              <li>
+                <p>A frequent mistake is using a
+                <code class="inline-code">FileTemplateLoader</code> for a Servlet-based web
+                application, instead of a
+                <code class="inline-code">WebappTemplateLoader</code>. It may works in one
+                environment, but not in another, as the Servlet specification
+                makes no promises about your resources being accessible as
+                plain files, not even when the <code class="inline-code">war</code> file is
+                extracted.</p>
+              </li>
+
+              <li>
+                <p>Know that when you are including/importing a template
+                from another template, if you don&#39;t start the template name
+                with <code class="inline-code">/</code>, it will be interpreted relatively
+                to the directory of the including template. The error message
+                contains the full (resolved) name, so you should notice this
+                there.</p>
+              </li>
+
+              <li>
+                <p>Check that you aren&#39;t using <code class="inline-code">\</code>
+                (backslash) instead of <code class="inline-code">/</code> (slash).
+                (FreeMarker 2.3.22 and later will warn you about that in the
+                error message.)</p>
+              </li>
+
+              <li>
+                <p>As a last resort, turn on debug level logging (in the
+                logging framework that you are using) for the category
+                <code class="inline-code">freemarker.cache</code>, to see more of what&#39;s
+                going on.</p>
+              </li>
+            </ul>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_check_version">
+    7.&nbsp; 
+            The documentation writes about feature
+            <em>X</em>, but it seems that FreeMarker doesn&#39;t
+            know that, or it behaves in a different way as documented, or a
+            bug that was supposedly fixed is still present.
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Are you sure that you are using the documentation written
+            for the same version of FreeMarker that you actually use?
+            Especially, note that our online documentation is for the latest
+            stable FreeMarker release. You may use an older release; update
+            it.</p>
+
+            <p>Are you sure that the Java class loader finds the same
+            <code class="inline-code">freemarker.jar</code> that you expect to use? Maybe
+            there is an older version of <code class="inline-code">freemarker.jar</code>
+            around, which shadows the never. To check this, try to print the
+            version number in a template with <code class="inline-code">${.version}</code>.
+            (If it dies with "Unknown built-in variable: version"
+            error message, then you use a very, very old release.).</p>
+
+            <p>If you suspect that the problem is that you have multiple
+            <code class="inline-code">freemarker.jar</code>-s, the typical culprit is that
+            some module has a Maven or Ivy dependency with the old
+            <code class="inline-code">freemarker</code> group ID, as opposed to the more
+            modern <code class="inline-code">org.freemarker</code> group ID. Because of the
+            different group ID-s these aren&#39;t seen as conflicting artifacts by
+            Maven or Ivy, and so both version gets in. In this case you have
+            to exclude the <code class="inline-code">freemarker</code> dependency.</p>
+
+            <p>If you think that the documentation or FreeMarker is wrong,
+            please report it using the bug tracker, or the mailing list. Thank
+            you!</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_alternative_syntax">
+    8.&nbsp; 
+            The <code class="inline-code">&lt;</code> and <code class="inline-code">&gt;</code> of
+            FreeMarker tags confuses my editor or the XML parser. What to
+            do?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Starting from FreeMarker 2.3.4 you can use
+            <code class="inline-code">[</code> and <code class="inline-code">]</code> instead of
+            <code class="inline-code">&lt;</code> and <code class="inline-code">&gt;</code>. For more
+            details <a href="dgui_misc_alternativesyntax.html">read
+            this...</a></p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_legal_variable_names">
+    9.&nbsp; 
+            What are the legal variable names?
+
+            
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>FreeMarker has no limitations regarding the characters used
+            in variable names, nor regarding the length of the variable names,
+            but for your convenience try to chose variable names that can be
+            used with the simple variable reference expressions (see it <a href="dgui_template_exp.html#dgui_template_exp_var_toplevel">here</a>). If you have
+            to choose a more extreme variable name, that&#39;s not a big problem
+            either: <a href="#faq_strange_variable_name">see
+            here</a>.</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_strange_variable_name">
+    10.&nbsp; 
+            How can I use variable names (macro name, parameter name)
+            that contain minus sign (<code class="inline-code">-</code>), colon
+            (<code class="inline-code">:</code>), dot (<code class="inline-code">.</code>), or or other
+            special characters?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>If you have a variable with strange name like
+            "foo-bar", FreeMarker will misunderstand what you
+            mean if you just use it like in <code class="inline-code">${foo-bar}</code>. In
+            this case, it will believe that you want to subtract the value of
+            <code class="inline-code">bar</code> from <code class="inline-code">foo</code>. This FAQ entry
+            explains how to handle situations like this.</p>
+
+            <p>First of all it should be clear that these are just
+            syntactical problems, as otherwise FreeMarker has no limitations
+            regarding the characters used in variable names, nor regarding the
+            length of them.</p>
+
+            <p>If the special character is one of minus sign
+            (<code class="inline-code">-</code>, UCS 0x2D) or dot (<code class="inline-code">.</code>, UCS
+            0x2E) or colon (<code class="inline-code">:</code>, UCS 0x3A), then all you have
+            to do is putting a backslash (<code class="inline-code">\</code>) before these
+            characters, like in <code class="inline-code">foo\-bar</code> (since FreeMarker
+            2.3.22). Then FreeMarker will know that you didn&#39;t mean the
+            operator with the same symbol. This works everywhere where you
+            specify unquoted identifiers, like for macro and function names,
+            parameter names, and all kind of variable references in general.
+            (Note that these escapes only work in identifiers, not in string
+            literals.)</p>
+
+            <p>When the special character is not one of minus sign, dot, or
+            colon, then it gets trickier. Let&#39;s say the problematic variable
+            name is "a+b". Then:</p>
+
+            <ul>
+              <li>
+                <p>If you want to read the variable: If it&#39;s a subvariable
+                of something, you can write
+                <code class="inline-code">something[&quot;a+b&quot;]</code> (remember,
+                <code class="inline-code">something.x</code> is equivalent to
+                <code class="inline-code">something[&quot;x&quot;])</code>. If it&#39;s a top-level
+                variable, those are accessible through the special hash
+                variable ,<code class="inline-code">.vars</code>, so you can write
+                <code class="inline-code">.vars[&quot;a+b&quot;]</code>. Naturally, this trick works
+                with macro and function invocations too:
+                <code class="inline-code">&lt;@.vars[&quot;a+b&quot;]/&gt;</code>,
+                <code class="inline-code">.vars[&quot;a+b&quot;](1, 2)</code>.</p>
+              </li>
+
+              <li>
+                <p>If you want to create or modify the variable: All
+                directives that let you create or modify a variable (such as
+                <code class="inline-code">assign</code>, <code class="inline-code">local</code>,
+                <code class="inline-code">global</code>, <code class="inline-code">macro</code>,
+                <code class="inline-code">function</code>, etc.) allows the quotation of the
+                destination variable name. For example, <code class="inline-code">&lt;#assign
+                foo = 1&gt;</code> is the same as <code class="inline-code">&lt;#assign
+                &quot;foo&quot; = 1&gt;</code>. So you can write things like
+                <code class="inline-code">&lt;#assign &quot;a+b&quot; = 1&gt;</code> and
+                <code class="inline-code">&lt;#macro &quot;a+b&quot;&gt;</code>.</p>
+              </li>
+
+              <li>
+                <p>Unfortunately, you can&#39;t use such a variable name (that
+                contains special characters other than <code class="inline-code">-</code>,
+                <code class="inline-code">.</code> and <code class="inline-code">:</code>) as macro
+                parameter name.</p>
+              </li>
+            </ul>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_jsp_custom_tag_syntax">
+    11.&nbsp; 
+            Why do I get &quot;java.lang.IllegalArgumentException: argument
+            type mismatch&quot; when I try to use <em>X</em> JSP
+            custom tag?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Fist of all, update FreeMarker, because 2.3.22 and later
+            gives a much more helpful error message, that pretty much answers
+            the question. Anyway, the reason is as follows. On JSP pages you
+            quote all parameter (attribute) values, it does not mater if the
+            type of the parameter is string or boolean or number. But since
+            custom tags are accessible in FTL templates as plain user-defined
+            FTL directives, you have to use the FTL syntax rules inside the
+            custom tags, not the JSP rules. Thus, according to FTL rules, you
+            must not quote boolean and numerical parameter values, or they are
+            interpreted as string values, and this will cause a type mismatch
+            error when FreeMarker tries to pass the value to the custom tag
+            that expects non-string value.</p>
+
+            <p>For example, the <code class="inline-code">flush</code> parameter to
+            Struts Tiles <code class="inline-code">insert</code> tag is boolean. In JSP the
+            correct syntax was:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;tiles:insert page=&quot;/layout.jsp&quot; <strong>flush=&quot;true&quot;</strong>/&gt;
+<em>...</em></pre></div>
+
+            <p>but in FTL you should write:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@tiles.insert page=&quot;/layout.ftl&quot; <strong>flush=true</strong>/&gt;
+<em>...</em></pre></div>
+
+            <p>Also, for similar reasons, this is wrong:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;tiles:insert page=&quot;/layout.jsp&quot; <strong>flush=&quot;${needFlushing}&quot;</strong>/&gt;
+<em>...</em></pre></div>
+
+            <p>and you should write:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;tiles:insert page=&quot;/layout.jsp&quot; <strong>flush=needFlushing</strong>/&gt;
+<em>...</em></pre></div>
+
+            <p>(Not <code class="inline-code">flush=${needFlushing}</code>!)</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_servlet_include">
+    12.&nbsp; 
+            How to include other resources in a way as
+            <code class="inline-code">jsp:include</code> does it?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Not with <code class="inline-code">&lt;#include ...&gt;</code>, as that
+            just includes another FreeMarker template without involving the
+            Servlet container.</p>
+
+            <p>Since the inclusion method you look for is Servlet-related,
+            and pure FreeMarker is unaware of Servlets or even HTTP, it&#39;s the
+            Web Application Framework that decides if you can do this and if
+            so how. For example, in Struts 2 you can do this like this:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@s.include value=&quot;/WEB-INF/just-an-example.jspf&quot; /&gt;</pre></div>
+
+            <p>If the FreeMarker support of the Web Application Framework
+            is based on
+            <code class="inline-code">freemarker.ext.servlet.FreemarkerServlet</code>, then
+            you can also do this (since FreeMarker 2.3.15):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@include_page path=&quot;/WEB-INF/just-an-example.jspf&quot; /&gt;</pre></div>
+
+            <p>but if the Web Application Framework provides its own
+            solution, then you may prefer that, after all it may does
+            something special.</p>
+
+            <p>For more information about <code class="inline-code">include_page</code>
+            <a href="pgui_misc_servlet.html#pgui_misc_servlet_include">read
+            this...</a></p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_parameter_unwrapping">
+    13.&nbsp; 
+            How can I get the parameters to my
+            plain-Java-method/<code class="inline-code">TemplateMethodModelEx</code>/<code class="inline-code">TemplateTransformModel</code>/<code class="inline-code">TemplateDirectiveModel</code>
+            implementation as plain
+            <code class="inline-code">java.lang.*</code>/<code class="inline-code">java.util.*</code>
+            objects?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Unfortunately, there is no simple general-purpose solution
+            for this problem. The problem is that FreeMarker object wrapping
+            is very flexible, which is good when you access variables from
+            templates, but makes unwrapping on the Java side a tricky
+            question. For example, it is possible to wrap a
+            non-<code class="inline-code">java.util.Map</code> object as
+            <code class="inline-code">TemplateHashModel</code> (FTL hash variable). But
+            then, it can&#39;t be unwrapped to <code class="inline-code">java.util.Map</code>,
+            since there is no wrapped <code class="inline-code">java.util.Map</code> around
+            at all.</p>
+
+            <p>So what to do then? Basically there are two cases:</p>
+
+            <ul>
+              <li>
+                <p>Directives and methods that are written for presentation
+                purposes (like kind of "tools" for helping
+                FreeMarker templates) should declare their arguments as
+                <code class="inline-code">TemplateModel</code>-s and the more specific sub
+                interfaces of that. After all, the object wrapping is about
+                transforming the data-model to something that serves the
+                purpose of the presentation layer, and these methods are part
+                of the presentation layer. If you still need a plain Java type
+                there, you may turn to the
+                <code class="inline-code">ObjectWrapperAndUnwrapper</code> interface of the
+                current <code class="inline-code">ObjectWrapper</code> (can be get with
+                <code class="inline-code">Environment.getObjectWrapper()</code>).</p>
+              </li>
+
+              <li>
+                <p>Methods that are not for presentation related tasks (but
+                for business logic and like) should be implemented as plain
+                Java methods, and should not use any FreeMarker specific
+                classes at all, since according the MVC paradigm they must be
+                independent of the presentation technology (FreeMarker). If
+                such a method is called from a template, then it is the
+                responsibility of the <a href="pgui_datamodel_objectWrapper.html">object wrapper</a>
+                to ensure the conversion of the arguments to the proper type.
+                If you use the <a href="pgui_datamodel_objectWrapper.html#pgui_datamodel_defaultObjectWrapper"><code>DefaultObjectWrapper</code></a>
+                or the <a href="pgui_misc_beanwrapper.html"><code>BeansWrapper</code></a>
+                then this will happen automatically. For
+                <code class="inline-code">DefaultObjectWrapper</code>, this mechanism works
+                much better, if you <a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">set its
+                <code>incompatibleImprovements</code> to
+                2.3.22</a>.</p>
+              </li>
+            </ul>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_nonstring_keys">
+    14.&nbsp; 
+            Why I can&#39;t use non-string key in the
+            <code class="inline-code">myMap[myKey]</code> expression? And what to do
+            now?
+
+            
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>The "hash" type of the FreeMarker Template
+            Language (FTL) is not the same as Java&#39;s <code class="inline-code">Map</code>.
+            FTL&#39;s hash is an associative array too, but it uses string keys
+            exclusively. This is because it was introduced for sub variables
+            (as <code class="inline-code">password</code> in
+            <code class="inline-code">user.password</code>, which is the same as
+            <code class="inline-code">user[&quot;password&quot;]</code>), and variable names are
+            strings.</p>
+
+            <p>If you only need to list the key-value pairs of a
+            <code class="inline-code">Map</code>, you can just write something like
+            <code class="inline-code">&lt;#list myMap as k, v&gt;${k}:
+            ${v}&lt;/#list&gt;</code> (see more about <a href="ref_directive_list.html#ref.directive.list">the <code>list directive</code>
+            here</a>). This enumerates the <code class="inline-code">Map</code> entries,
+            and supports non-string keys. This requires FreeMarker 2.3.25 or
+            later. (If for some reason you can&#39;t upgrade to 2.3.25, you can
+            use the Java API of <code class="inline-code">Map</code> instead, like
+            <code class="inline-code">&lt;#list myMap?api.entrySet() as kvp&gt;${kvp.key}:
+            ${kvp.value}&lt;/#list&gt;</code>.)</p>
+
+            <p>If you need to do more than listing, you will have to turn
+            to the Java API of the <code class="inline-code">Map</code>. You can do it like
+            this: <code class="inline-code">myMap?api.get(nonStringKey)</code>. However, for
+            <code class="inline-code">?api</code> to be enabled, you may need to configure
+            FreeMarker a bit (<a href="ref_builtins_expert.html#ref_buitin_api_and_has_api">see
+            more here</a>).</p>
+
+            <p>Note that as Java&#39;s <code class="inline-code">Map</code> is particular
+            about the exact class of the key, at least for numerical keys
+            calculated inside the templates you will have to cast them to the
+            proper Java type, otherwise the item will not be found. For
+            example if you use <code class="inline-code">Integer</code> keys in a Map, then
+            you should write <code class="inline-code">${myMap.get(numKey?int)}</code>. This
+            is because of FTL&#39;s deliberately simplified type system has only a
+            single numerical type, while Java distinguishes a lot of numerical
+            types. Note that the casting is not needed when the key value
+            comes directly from the data-model (i.e., you didn&#39;t modified its
+            value with arithmetical calculations in the template), including
+            the case when it&#39;s the return value of a method, and it was of the
+            proper class before wrapping, because then the result of the
+            unwrapping will be of the original type.</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_simple_map">
+    15.&nbsp; 
+            When I list the contents of a map (a hash) with
+            <code class="inline-code">?keys</code>/<code class="inline-code">?values</code>, I get the
+            <code class="inline-code">java.util.Map</code> methods mixed with the real map
+            entries. Of course, I only want to get the map entries.
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Certainly you are using pure <code class="inline-code">BeansWrapper</code>
+            as your object wrapper (instead of the default,
+            <code class="inline-code">DefaultObjectWrapper</code>), or a custom subclass of
+            it, and the <code class="inline-code">simpleMapWrapper</code> property of that
+            is left to <code class="inline-code">false</code>. Unfortunately, that&#39;s the
+            default of <code class="inline-code">BeansWrapper</code> (for backward
+            compatibility), so you have to explicitly set it to
+            <code class="inline-code">true</code> where you instantiate it. Also, at least
+            since 2.3.22, applications should just use
+            <code class="inline-code">DefaultObjectWrapper</code> (with <a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">its
+            <code>incompatibleImprovements</code> set to at least
+            2.3.22</a> - that&#39;s especially important if you are switching
+            from pure <code class="inline-code">BeansWrapper</code>), which never had this
+            problem.</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_modify_seq_and_map">
+    16.&nbsp; 
+            How can I modify sequences (lists) and hashes (maps) in
+            FreeMarker templates?
+
+            
+
+            
+
+            
+
+            
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>First of all, you may don&#39;t want to modify the
+            sequence/hash, just concatenate (add) two or more of them, which
+            results in a new sequence/hash, rather than modifying an existing
+            one. In this case use the <a href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat">sequence
+            concatenation</a> and <a href="dgui_template_exp.html#dgui_template_exp_hashop_cat">hash concatenation
+            operators</a>. Also, you may use the <a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">subsequence
+            operator</a> instead of removing sequence items. However, be
+            aware of the performance implications: these operations are fast,
+            but the hashes/sequences that are the result of many subsequent
+            applications of these operations (i.e., when you use the result of
+            the operation as the input of yet another operation, and so on)
+            will be slow to read.</p>
+
+            <p>Now if you still want to modify sequences/hashes, then read
+            on...</p>
+
+            <p>The FreeMarkes Template Language doesn&#39;t support the
+            modification of sequences/hashes. It&#39;s for displaying already
+            calculated things, not for calculating data. Keep templates
+            simple. But don&#39;t give it up, you will see some advices and tricks
+            bellow.</p>
+
+            <p>The best is if you can divide the work between the
+            data-model builder program and the template so that the template
+            doesn&#39;t need to modify sequences/hashes. Maybe if you rethink your
+            data-model, you will realize this is possible. But, seldom there
+            are cases where you need to modify sequences/hashes for some
+            complex but purely presentation related algorithms. It seldom
+            happens, so think twice whether that calculation (or parts of it)
+            rather belongs to the data-model domain than to the presentation
+            domain. Let&#39;s assume you are sure it belongs to the presentation
+            domain. For example, you want to display a keyword index on some
+            very smart way, whose algorithm need you to create and write some
+            sequence variables. Then you should do something like this (ugly
+            situations has ugly solutions...):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign caculatedResults =
+    &#39;com.example.foo.SmartKeywordIndexHelper&#39;?new().calculate(keywords)&gt;
+&lt;#-- some simple algorithms comes here, like: --&gt;
+&lt;ul&gt;
+  &lt;#list caculatedResults as kw&gt;
+    &lt;li&gt;&lt;a href=&quot;${kw.link}&quot;&gt;${kw.word}&lt;/a&gt;
+  &lt;/#list&gt;
+&lt;/ul&gt;</pre></div>
+
+            <p>That is, you move out the complex part of the presentation
+            task from the template into Java code. Note that it doesn&#39;t affect
+            the data-model, so the presentation is still kept separated from
+            other the other application logic. Of course the drawback is that
+            for this the template author will need the help of a Java
+            programmer, but for complex algorithms that&#39;s probably needed
+            anyway.</p>
+
+            <p>Now, if you still say you need to modify sequences/hashes
+            directly with the FreeMarker template, here are some solutions,
+            but please read the warning after them:</p>
+
+            <ul>
+              <li>
+                <p>You can access the Java API of a
+                <code class="inline-code">java.util.Map</code> with the help of the
+                <code class="inline-code">api</code> built-in, like
+                <code class="inline-code">myMap?api.put(11, &quot;eleven&quot;)</code>. You will need
+                to get a <code class="inline-code">Map</code> from somewhere though (an FTL
+                hash literal like <code class="inline-code">{}</code> won&#39;t suffice, as it&#39;s
+                read only and doesn&#39;t support <code class="inline-code">api</code> either).
+                For example, you could expose a Java method or
+                <code class="inline-code">TemplateMethodModelEx</code> to the template that
+                returns a <code class="inline-code">new LinkeHashMap()</code>, so you can do
+                <code class="inline-code">&lt;#assign myMap =
+                utils.newLinkedHashMap()&gt;</code>.</p>
+              </li>
+
+              <li>
+                <p>You can write a <code class="inline-code">TemplateMethodModelEx</code>
+                and <code class="inline-code">TemplateDirectiveModel</code> implementation
+                that can modify certain types of sequences/hashes. Just
+                certain types, because
+                <code class="inline-code">TemplateSequenceModel</code> and
+                <code class="inline-code">TemplateHashModel</code> doesn&#39;t have methods for
+                modification, so you will need the sequence or hash to
+                implement some additional methods. An example of this solution
+                can be seen in FMPP. It allows you to do things like this
+                (<code class="inline-code">pp</code> stores the services provided by FMPP
+                for templates):</p>
+
+                
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign a = pp.newWritableSequence()&gt;
+&lt;@pp.add seq=a value=&quot;red&quot; /&gt;</pre></div>
+
+                <p>The <code class="inline-code">pp.add</code> directive works only with
+                sequences that were created with
+                <code class="inline-code">pp.newWritableSequence()</code>. So for example
+                the template author can&#39;t modify a sequence that comes from
+                the data-model with this.</p>
+              </li>
+
+              <li>
+                <p>A sequence can have some methods/directives if you use a
+                customized wrapper (so you can write something like
+                <code class="inline-code">&lt;@myList.append foo /&gt;</code>).</p>
+              </li>
+            </ul>
+
+            <p>But beware, these solutions have a problem: The <a href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat">sequence
+            concatenation</a>, <a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">sequence slice</a>
+            operator (like <code class="inline-code">seq[5..10]</code>) and
+            <code class="inline-code">?reverse</code> do not copy the original sequence,
+            just wraps it (for efficiency), so the resulting sequence will
+            change if the original sequence is changed later (an abnormal
+            aliasing effect). The same problem exists with the result of <a href="dgui_template_exp.html#dgui_template_exp_hashop_cat">hash concatenation</a>;
+            it just wraps the two hashes, so the resulting hash will magically
+            change if you modify the hashes you have added earlier. As a
+            work-around, after you did the above problematic operations,
+            either be sure you will not modify the objects that were used as
+            input, or create a copy of the result with a method provided by
+            the solution described in above two points (e.g. in FMPP you could
+            do <code class="inline-code">&lt;#assign b =
+            pp.newWritableSequence(a[5..10])&gt;</code> and
+            <code class="inline-code">&lt;#assign c = pp.newWritableHash(hashA +
+            hashB)&gt;</code>). Of course this is easy to miss... so again,
+            rather try to build the data-model so you will not need to modify
+            collections, or use a presentation task helper class as was shown
+            earlier.</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_null">
+    17.&nbsp; 
+            What about <code class="inline-code">null</code> and the FreeMarker
+            template language? 
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>The FreeMarker template language doesn&#39;t know the Java
+            language <code class="inline-code">null</code> at all. It doesn&#39;t have
+            <code class="inline-code">null</code> keyword, and it can&#39;t test if something is
+            <code class="inline-code">null</code> or not. When it technically faces with a
+            <code class="inline-code">null</code>, it treats it exactly as a missing
+            variable. For example, both if <code class="inline-code">x</code> is
+            <code class="inline-code">null</code> in the data-model and if it&#39;s not present
+            at all, <code class="inline-code">${x!&#39;missing&#39;}</code> will print
+            "missing", you can&#39;t tell the difference. Also, if
+            for example you want to test if a Java method has returned
+            <code class="inline-code">null</code>, just write something like
+            <code class="inline-code">&lt;#if foo.bar()??&gt;</code>.</p>
+
+            <p>You may interested in the rationale behind this. From the
+            viewpoint of the presentation layer a <code class="inline-code">null</code> and
+            non-existent thing is almost always the same. The difference
+            between this two is usually just a technical detail, which is
+            rather the result of implementation details than of the
+            application logic. That you can&#39;t compare something to
+            <code class="inline-code">null</code> (unlike in Java); it doesn&#39;t make sense to
+            compare something with <code class="inline-code">null</code> in a template,
+            since the template language doesn&#39;t do identity comparison (like
+            the Java <code class="inline-code">==</code> operator when you compare two
+            objects) but the more common sense value comparison (like Java&#39;s
+            <code class="inline-code">Object.equals(Object)</code>; that doesn&#39;t work with
+            <code class="inline-code">null</code> either). And how could FreeMarker tell if
+            something concrete equals with something that is missing and thus
+            unknown? Or if two missing (unknown) things are equal? Of course
+            these questions can&#39;t be answered.</p>
+
+            <p>There is at least one problem with this
+            <code class="inline-code">null</code>-unaware approach. When you call a Java
+            method from a template, you may want to pass a
+            <code class="inline-code">null</code> value as argument (since the method was
+            designed to be used in Java language, where the concept of
+            <code class="inline-code">null</code> is known). In this case you can exploit a
+            bug of FreeMarker (that we will not fix until we provide a correct
+            solution for passing <code class="inline-code">null</code> values to a method):
+            if you specify a missing variable as the argument, then it will
+            not cause an error, but a <code class="inline-code">null</code> will be passed
+            to the method instead. Like <code class="inline-code">foo.bar(nullArg)</code>
+            will call the <code class="inline-code">bar</code> method with
+            <code class="inline-code">null</code> as argument, assuming that there is no
+            variable exists with "nullArg" name.</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_capture">
+    18.&nbsp; 
+            How can I use the output of a directive (macro) in
+            expressions (as a parameter to another directive)?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>Capture the output into a variable with the
+            <code class="inline-code">assign</code> or <code class="inline-code">local</code> directive.
+            For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign capturedOutput&gt;&lt;@outputSomething /&gt;&lt;/#assign&gt;
+&lt;@otherDirective someParam=capturedOutput /&gt;</pre></div>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_questionmark">
+    19.&nbsp; 
+            Why do I have "?"-s in the output instead of
+            character <em>X</em>?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>This is because the character that you want to print can&#39;t
+            be represented with the <a href="gloss.html#gloss.charset">charset</a> (encoding) used for the
+            output stream, so the Java platform (not FreeMarker) substitutes
+            the problematic character with question mark. In general you
+            should use the same charset for the output as for the template
+            (use the <code class="inline-code">getEncoding()</code> method of the template
+            object), or which is even safer, you should always use UTF-8
+            charset for the output. The charset used for the output stream is
+            not decided by FreeMarker, but by you, when you create the
+            <code class="inline-code">Writer</code> that you pass to the
+            <code class="inline-code">process</code> method of the template.</p>
+
+            <p>Example: Here I use UTF-8 charset in a servlet:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">...
+resp.setContentType(&quot;text/html; charset=utf-8&quot;);
+Writer out = resp.getWriter();
+...
+t.process(root, out);
+...</pre></div>
+
+            <p>Note that the question marks (or other substitution
+            characters) may be produced outside FreeMarker, in which case the
+            above obviously will not help. For example a bad/missconfigured
+            database connection or JDBC driver may bring the text already with
+            substitution characters in it. HTML forms are another potential
+            source of encoding problems. It&#39;s a good idea to print the
+            numerical code of the characters of the string on various places,
+            to see where the problem occurs first.</p>
+
+            <p>You can read more about charsets and FreeMarker <a href="pgui_misc_charset.html">here...</a></p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_retrieve_calculated_values">
+    20.&nbsp; 
+            How to retrieve values calculated in templates after
+            template execution done?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>First of all, be sure your application is designed well:
+            templates should display data, and almost never calculate data. If
+            you are still sure you want to do it, read on...</p>
+
+            <p>When you use <code class="inline-code">&lt;#assign x = &quot;foo&quot;&gt;</code>,
+            then you do not actually modify the data-model (since that is
+            read-only, see: <a href="pgui_misc_multithreading.html">Programmer&#39;s Guide/Miscellaneous/Multithreading</a>), but
+            create the <code class="inline-code">x</code> variable in the runtime <a href="gloss.html#gloss.environment">environment</a> of the processing
+            (see <a href="pgui_misc_var.html">Programmer&#39;s Guide/Miscellaneous/Variables, scopes</a>). The problem is that this
+            runtime environment will be discarded when
+            <code class="inline-code">Template.process</code> returns, as it was created for
+            a single <code class="inline-code">Template.process</code> call:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// internally an Environment will be created, and then discarded
+myTemplate.process(root, out);</pre></div>
+
+            <p>To prevent this, you can do the below, which is equivalent
+            with the above, except that you have chance to return the
+            variables created in the template:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Environment env = myTemplate.createProcessingEnvironment(root, out);
+env.process();  // process the template
+TemplateModel x = env.getVariable(&quot;x&quot;);  // get variable x</pre></div>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_assign_to_dynamic_variable_name">
+    21.&nbsp; 
+            How to assign to (or <code class="inline-code">#import</code> into) a
+            dynamically constructed variable name (like to name that&#39;s stored
+            in another variable)?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>If you really can&#39;t avoid doing that (you should, as it&#39;s
+            confusing), you can solve that with constructing the appropriate
+            FTL source code dynamically in a string, then using the <a href="ref_builtins_expert.html#ref_builtin_interpret"><code>interpret</code>
+            built-in</a>. For example, if you want to assign to the
+            variable whose name is stored in the <code class="inline-code">varName</code>
+            variable:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@&quot;&lt;#assign ${varName}=&#39;example&#39;&gt;&quot;?interpret /&gt;</pre></div>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_template_uploading_security">
+    22.&nbsp; 
+            
+
+            Can I allow users to upload templates and what are the
+            security implications?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>In general you shouldn&#39;t allow that, unless those users are
+            system administrators or other trusted personnel. Consider
+            templates as part of the source code just like
+            <code class="inline-code">*.java</code> files are. If you still want to allow
+            users to upload templates, here are what to consider:</p>
+
+            <ul>
+              <li>
+                <p>Denial-of-Service (DoS) attacks: It&#39;s trivial to create
+                templates that run practically forever (with a loop), or
+                exhaust memory (by concatenating to a string in a loop).
+                FreeMarker can&#39;t enforce CPU or memory usage limits, so this
+                is something that has no solution on the
+                FreeMarker-level.</p>
+              </li>
+
+              <li>
+                <p>Data-model and wrapping
+                (<code class="inline-code">Configuration.setObjectWrapper</code>): The
+                data-model might gives access to the public Java API of some
+                objects that you have put into the data-model. By default, for
+                objects that aren&#39;t instances of a the bunch of specially
+                handler types (<code class="inline-code">String</code>,
+                <code class="inline-code">Number</code>, <code class="inline-code">Boolean</code>,
+                <code class="inline-code">Date</code>, <code class="inline-code">Map</code>,
+                <code class="inline-code">List</code>, array, and a few others), their
+                public Java API will be exposed. To avoid that, you have to
+                construct the data-model so that it only exposes the things
+                that are really necessary for the template. For that, you may
+                want to use <code class="inline-code">SimpleObjectWrapper</code> (via
+                <code class="inline-code">Configuration.setObjectWrapper</code> or the
+                <code class="inline-code">object_wrapper</code> setting) and then create the
+                data-model purely from <code class="inline-code">Map</code>-s,
+                <code class="inline-code">List</code>-s, <code class="inline-code">Array</code>-s,
+                <code class="inline-code">String</code>-s, <code class="inline-code">Number</code>-s,
+                <code class="inline-code">Boolean</code>-s and <code class="inline-code">Date</code>-s.
+                Or, you can implement your own extremely restrictive
+                <code class="inline-code">ObjectWrapper</code>, which for example could
+                expose your POJO-s safely.</p>
+              </li>
+
+              <li>
+                <p>Template-loader
+                (<code class="inline-code">Configuration.setTemplateLoader</code>):
+                Templates may load other templates by name (by path), like
+                <code class="inline-code">&lt;#include &quot;../secret.txt&quot;&gt;</code>. To avoid
+                loading sensitive data, you have to use a
+                <code class="inline-code">TemplateLoader</code> that double-checks that the
+                file to load is something that should be exposed. FreeMarker
+                tries to prevent the loading of files outside the template
+                root directory regardless of template loader, but depending on
+                the underlying storage mechanism, exploits may exist that
+                FreeMarker can&#39;t consider (like, just as an example,
+                <code class="inline-code">~</code> jumps to the current user&#39;s home
+                directory). Note that
+                <code class="inline-code">freemarker.cache.FileTemplateLoader</code> checks
+                the canonical paths, so that&#39;s maybe a good candidate for this
+                task, yet, adding a file extension check (file must be
+                <code class="inline-code">*.ftl</code>) is maybe a good idea.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">new</code> built-in
+                (<code class="inline-code">Configuration.setNewBuiltinClassResolver</code>,
+                <code class="inline-code">Environment.setNewBuiltinClassResolver</code>):
+                It&#39;s used in templates like
+                <code class="inline-code">&quot;com.example.SomeClass&quot;?new()</code>, and is
+                important for FTL libraries that are partially implemented in
+                Java, but shouldn&#39;t be needed in normal templates. While
+                <code class="inline-code">new</code> will not instantiate classes that are
+                not <code class="inline-code">TemplateModel</code>-s, FreeMarker contains a
+                <code class="inline-code">TemplateModel</code> class that can be used to
+                create arbitrary Java objects. Other &quot;dangerous&quot;
+                <code class="inline-code">TemplateModel</code>-s can exist in you
+                class-path. Plus, even if a class doesn&#39;t implement
+                <code class="inline-code">TemplateModel</code>, its static initialization
+                will be run. To avoid these, you should use a
+                <code class="inline-code">TemplateClassResolver</code> that restricts the
+                accessible classes (possibly based on which template asks for
+                them), such as
+                <code class="inline-code">TemplateClassResolver.ALLOWS_NOTHING_RESOLVER</code>.</p>
+              </li>
+            </ul>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_implement_function_or_macro_in_java">
+    23.&nbsp; 
+            How to implement a function or macro in Java Language
+            instead of in the template language?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>It&#39;s not possible (yet), but something very similar is
+            possible if you write a class that implements
+            <code class="inline-code">freemarker.template.TemplateMethodModelEx</code> or
+            <code class="inline-code">freemarker.template.TemplateDirectiveModel</code>
+            respectively, and then where you were write <code class="inline-code">&lt;#function
+            my
+            <em class="code-color">...</em>&gt;<em class="code-color">...</em>&lt;/#function&gt;</code>
+            or <code class="inline-code">&lt;#macro my
+            <em class="code-color">...</em>&gt;<em class="code-color">...</em>&lt;/#macro&gt;</code>
+            you write <code class="inline-code">&lt;#assign my = &quot;your.package.YourClass
+            &quot;?</code><a href="ref_builtins_expert.html#ref_builtin_new"><code>new</code></a><code class="inline-code">()&gt;</code>
+            instead. Note that using the <code class="inline-code">assign</code> directive
+            for this works because functions (and methods) and macros are just
+            plain variables in FreeMarker. (For the same reason you could also
+            put <code class="inline-code">TemplateMethodModelEx</code> or
+            <code class="inline-code">TemplateDirectiveModel</code> instances into the
+            data-model before calling the template, or into the shared
+            variable map (see:
+            <code class="inline-code">freemarker.template.Configuration.setSharedVariable(String,
+            TemplateModel)</code>) when you initialize the
+            application.)</p>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_nice_error_page">
+    24.&nbsp; 
+            <a name="misc.faq.niceErrorPage"></a> In my Servlet
+            based application, how do I show a nice error page instead of a
+            stack trace when error occurs during template processing?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>First of all, use <code class="inline-code">RETHROW_HANDLER</code> instead
+            of the default <code class="inline-code">DEBUG_HANDLER</code> (for more
+            information about template exception handlers <a href="pgui_config_errorhandling.html">read this...</a>). Now
+            FreeMarker will not print anything to the output when an error
+            occurs, so the control is in your hands. After you have caught the
+            exception of
+            <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>
+            basically you can follow two strategies:</p>
+
+            <ul>
+              <li>
+                <p>Call <code class="inline-code">httpResp.isCommitted()</code>, and if
+                that returns <code class="inline-code">false</code>, then you call
+                <code class="inline-code">httpResp.reset()</code> and print a "nice
+                error page" for the visitor. If the return value was
+                <code class="inline-code">true</code>, then try to finish the page be
+                printing something that makes clear for the visitor that the
+                page generation was abruptly interrupted because of an error
+                on the Web server. You may have to print a lot of redundant
+                HTML end-tags and set colors and font size to ensure that the
+                error message will be actually readable in the browser window
+                (check the source code of the
+                <code class="inline-code">HTML_DEBUG_HANDLER</code> in
+                <code class="inline-code">src\freemarker\template\TemplateException.java</code>
+                to see an example).</p>
+              </li>
+
+              <li>
+                <p>Use full page buffering. This means that the
+                <code class="inline-code">Writer</code> doesn&#39;t send the output to the
+                client progressively, but buffers the whole page in the
+                memory. Since you provide the <code class="inline-code">Writer</code>
+                instance for the
+                <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>
+                method, this is your responsibility, FreeMarker has nothing to
+                do with it. For example, you may use a
+                <code class="inline-code">StringWriter</code>, and if
+                <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>
+                returns by throwing an exception, then ignore the content
+                accumulated by the <code class="inline-code">StringWriter</code>, and send
+                an error page instead, otherwise you print the content of
+                <code class="inline-code">StringWriter</code> to the output. With this
+                method you surely don&#39;t have to deal with partially sent
+                pages, but it can have negative performance implications
+                depending on the characteristic of the pages (for example, the
+                user will experience more response delay for a long page that
+                is generated slowly, also the server will consume more RAM).
+                Note that using a <code class="inline-code">StringWriter</code> is surely
+                not the most efficient solution, as it often reallocates its
+                buffer as the accumulated content grows.</p>
+              </li>
+            </ul>
+          </dd>
+
+        
+
+        
+          
+  <dt class="question" id="faq_html_editor_mangles">
+    25.&nbsp; 
+            I&#39;m using a visual HTML editor that mangles template tags.
+            Will you change the template language syntax to accommodate my
+            editor?
+          
+  </dt>
+
+
+          <dd class="answer">
+
+            <p>We won&#39;t change the standard version, because a lot of
+            templates depend on it.</p>
+
+            <p>Our view is that the editors that break template code are
+            themselves broken. A good editor should ignore, not mangle, what
+            it doesn&#39;t understand.</p>
+
+            <p>You maybe interested in that starting from FreeMarker 2.3.4
+            you can use <code class="inline-code">[</code> and <code class="inline-code">]</code> instead
+            of <code class="inline-code">&lt;</code> and <code class="inline-code">&gt;</code>. For more
+            details <a href="dgui_misc_alternativesyntax.html">read
+            this...</a></p>
+          </dd>
+
+        
+        </dl>
+
+  </div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="app.html"><span>Previous</span></a><a class="paging-arrow next" href="app_versions.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" hr

<TRUNCATED>


[23/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_depr_transform.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_depr_transform.html b/builds/2.3.26-nightly/ref_depr_transform.html
new file mode 100644
index 0000000..3e5974c
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_depr_transform.html
@@ -0,0 +1,163 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Transform directive - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Transform directive">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_depr_transform.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_depr_transform.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">Deprecated FTL constructs</span></a></li><li class=
 "step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_depr_transform.html"><span itemprop="name">Transform directive</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Deprecated FTL constructs","Transform directive"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_depr_oldmacro.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_oldsyntax.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_depr_transform" itemprop="headline">Transform directive</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_141" data-menu-target="autoid_141">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_142" data-menu-target="autoid_142">Description</a></li></ul> </div><a name="ref.directive.transform"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_141">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;transform <em class="code-color">transVar</em>&gt;
+  <em class="code-color">...</em>
+&lt;/transform&gt;</code>
+or
+<code class="inline-code">&lt;transform <em class="code-color">transVar</em> <em class="code-color">name1</em>=<em class="code-color">value1</em> <em class="code-color">name2</em>=<em class="code-color">value2</em> <em class="code-color">...</em> <em class="code-color">nameN</em>=<em class="code-color">valueN</em>&gt;
+  <em class="code-color">...</em>
+&lt;/transform&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">transVar</em></code>:
+              Expression evaluates to a transform
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">name1</em></code>,
+              <code class="inline-code"><em class="code-color">name2</em></code>, ...
+              <code class="inline-code"><em class="code-color">nameN</em></code>: Name of
+              parameters. Literal value, not expression.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">value1</em></code>,
+              <code class="inline-code"><em class="code-color">value2</em></code>, ...
+              <code class="inline-code"><em class="code-color">valueN</em></code>:
+              Expressions evaluate to the values of parameters
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_142">Description</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This directive is still working, but deprecated. You may
+            want to read about <a href="ref_directive_userDefined.html#ref.directive.userDefined">user-defined directive
+            calls</a> to see the replacement.</p>
+            </div>
+
+
+          <p>Captures the output generated inside its body (i.e. between
+          its start-tag and end-tag), and let the given transform modify it
+          before it is written to the final output.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;p&gt;A very simple HTML file:
+&lt;pre&gt;
+<strong>&lt;transform html_escape&gt;</strong>
+&lt;html&gt;
+  &lt;body&gt;
+    &lt;p&gt;Hello word!
+  &lt;/body&gt;
+&lt;/html&gt;
+<strong>&lt;/transform&gt;</strong>
+&lt;/pre&gt;</pre></div>
+
+          <p>the output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;p&gt;A very simple HTML file:
+&lt;pre&gt;
+&amp;lt;html&amp;gt;
+  &amp;lt;body&amp;gt;
+    &amp;lt;p&amp;gt;Hello word!
+  &amp;lt;/body&amp;gt;
+&amp;lt;/html&amp;gt;
+&lt;/pre&gt;</pre></div>
+
+          <p>Some transforms may take parameters. The name and meaning of
+          parameters depends on the transform in question. For example here we
+          give a parameter called "var":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- This transform stores the output in the variable x,
+     rather than sending it to the output --&gt;
+&lt;transform capture_output<strong> var=&quot;x&quot;</strong>&gt;
+some test
+&lt;/transform&gt;</pre></div>
+
+          <p>It is the task of the programmers to put the necessary
+          transforms into the data-model. For the name and usage of accessible
+          transforms ask the programmers. <span class="marked-for-programmers">Initially there is a <a href="pgui_config_sharedvariables.html">shared variable</a> for
+          most transforms in the
+          <code class="inline-code">freemarker.template.utility</code> package. For more
+          information see: <a href="pgui_config_sharedvariables.html">Programmer&#39;s Guide/The Configuration/Shared variables</a></span></p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_depr_oldmacro.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_oldsyntax.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_deprecated.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_deprecated.html b/builds/2.3.26-nightly/ref_deprecated.html
new file mode 100644
index 0000000..ff1ec5d
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_deprecated.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Deprecated FTL constructs - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Deprecated FTL constructs">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_deprecated.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_deprecated.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">Deprecated FTL constructs</span></a></li></ul><div 
 class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Deprecated FTL constructs"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_reservednames.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_directive.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="ref_deprecated" itemprop="headline">Deprecated FTL constructs</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="ref_depr_directive.html" data-menu-target="ref_depr_directive">List of deprecated directives</a></li><li><a class="page-menu-link" href="ref_depr_builtin.html" data-menu-target="ref_depr_builtin">List of deprecated built-ins</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html" data-menu-target="ref_depr_oldmacro">Old-style macro and call directives</a></li><li><a class="page-menu-link" href="ref_depr_transform.html" data-menu-target="ref_depr_transform">Transform directive</a></li><li><a class="page-menu-link" href="ref_depr_oldsyntax.html" data-menu-target="ref_depr_oldsyntax">Old FTL syntax</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html" data-menu-target="ref_depr_numerical_interpolation">#{...}: Numerical interpolation</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_reservednames.html"><span>Previous</span></a><a cl
 ass="paging-arrow next" href="ref_depr_directive.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_alphaidx.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_alphaidx.html b/builds/2.3.26-nightly/ref_directive_alphaidx.html
new file mode 100644
index 0000000..7adbeda
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_alphaidx.html
@@ -0,0 +1,228 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Alphabetical index - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Alphabetical index">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_alphaidx.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_alphaidx.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_alphaidx.html"><span itemprop="name">Alphabetical index</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li>#directives</li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","Alphabetical index"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directives.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_assign.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_alphaidx" itemprop="headline">Alphabetical index</h1>
+</div></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>As of FreeMarker 2.3.23, you can use camel case instead of
+          all-lower-case for directive names, like <code class="inline-code">noParse</code>
+          instead of <code class="inline-code">noparse</code>. But know that then within the
+          same template, FreeMarker will enforce the usage of camel case for
+          all identifiers that are part of the template language (user defined
+          names are not affected).</p>
+          </div>
+<ul>
+          <li>
+            <a href="ref_directive_assign.html#ref.directive.assign">assign</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_attempt.html#ref.directive.attempt">attempt</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_autoesc.html">autoesc</a>
+          </li>
+
+          <li>
+            break: <a href="ref_directive_switch.html#ref.directive.switch.break">in
+            switch</a>, <a href="ref_directive_list.html#ref.directive.list.break">in
+            list</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_switch.html#ref.directive.case">case</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_compress.html#ref.directive.compress">compress</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_switch.html#ref.directive.default">default</a>
+          </li>
+
+          <li>
+            else: <a href="ref_directive_if.html#ref.directive.else">in if</a>, <a href="ref_directive_list.html#ref.directive.list.else">in list</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_if.html#ref.directive.elseif">elseif</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_escape.html#ref.directive.escape">escape</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_visit.html#ref.directive.fallback">fallback</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_function.html#ref.directive.function">function</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_flush.html#ref.directive.flush">flush</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_ftl.html#ref.directive.ftl">ftl</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_global.html#ref.directive.global">global</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_if.html#ref.directive.if">if</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_import.html#ref.directive.import">import</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_include.html#ref.directive.include">include</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_list.html#ref.directive.items">items</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_list.html#ref.directive.list">list</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_local.html#ref.directive.local">local</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_t.html#ref.directive.lt">lt</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_macro.html#ref.directive.macro">macro</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_macro.html#ref.directive.nested">nested</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_noautoesc.html">noautoesc</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_escape.html#ref.directive.noescape">noescape</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_noparse.html">noparse</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_nt.html#ref.directive.nt">nt</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_outputformat.html">outputformat</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_attempt.html#ref.directive.attempt">recover</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_visit.html#ref.directive.recurse">recurse</a>
+          </li>
+
+          <li>
+            return: <a href="ref_directive_macro.html#ref.directive.macro.return">in
+            macro</a>, <a href="ref_directive_function.html#ref.directive.function.return">in
+            function</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_t.html#ref.directive.rt">rt</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_list.html#ref.directive.sep">sep</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_setting.html#ref.directive.setting">setting</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_stop.html#ref.directive.stop">stop</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_switch.html#ref.directive.switch">switch</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_t.html#ref.directive.t">t</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_userDefined.html#ref.directive.userDefined">User-defined
+            directive (&lt;@...&gt;)</a>
+          </li>
+
+          <li>
+            <a href="ref_directive_visit.html#ref.directive.visit">visit</a>
+          </li>
+        </ul><p>If you don&#39;t find a directive here that you have seen in a
+        working template, probably you will find it in: <a href="ref_deprecated.html">Deprecated FTL constructs</a></p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directives.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_assign.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_assign.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_assign.html b/builds/2.3.26-nightly/ref_directive_assign.html
new file mode 100644
index 0000000..c6c3ebf
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_assign.html
@@ -0,0 +1,212 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>assign - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="assign">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_assign.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_assign.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_assign.html"><span itemprop="name">assign</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","assign"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_alphaidx.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_attempt.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_assign" itemprop="headline">assign</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_76" data-menu-target="autoid_76">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_77" data-menu-target="autoid_77">Description</a></li></ul> </div><a name="ref.directive.assign"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_76">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#assign <em class="code-color">name1</em>=<em class="code-color">value1</em> <em class="code-color">name2</em>=<em class="code-color">value2</em> <em class="code-color">... nameN</em>=<em class="code-color">valueN</em>&gt;</code>
+or
+<code class="inline-code">&lt;#assign <em class="code-color">same as above...</em> in <em class="code-color">namespacehash</em>&gt;</code>
+or
+<code class="inline-code">&lt;#assign <em class="code-color">name</em>&gt;
+  <em class="code-color">capture this</em>
+&lt;/#assign&gt;</code>
+or
+<code class="inline-code">&lt;#assign <em class="code-color">name</em> in <em class="code-color">namespacehash</em>&gt;
+  <em class="code-color">capture this</em>
+&lt;/#assign&gt;</code></pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">name</em></code>: name
+              of the variable. It is not expression. However, it can be
+              written as a string literal, which is useful if the variable
+              name contains reserved characters, for example
+              <code class="inline-code">&lt;#assign &quot;foo-bar&quot; = 1&gt;</code>. Note that this
+              string literal does not expand interpolations (as
+              <code class="inline-code">&quot;${foo}&quot;</code>); if you need to assign to a
+              dynamically constructed name, the you have to use <a href="app_faq.html#faq_assign_to_dynamic_variable_name">this
+              trick</a>.
+            </li>
+
+            <li>
+              <code class="inline-code">=</code>: Assignment operator. It can also be
+              one of the assignment shorthand operators (since FreeMarker
+              2.3.23): <code class="inline-code">++</code>, <code class="inline-code">--</code>,
+              <code class="inline-code">+=</code>, <code class="inline-code">-=</code>,
+              <code class="inline-code">*=</code>, <code class="inline-code">/=</code> or
+              <code class="inline-code">%=</code>. Like <code class="inline-code">&lt;#assign
+              x++&gt;</code> is similar to <code class="inline-code">&lt;#assign x = x +
+              1&gt;</code>, and <code class="inline-code">&lt;#assign x += 2&gt;</code>
+              is the same as <code class="inline-code">&lt;#assign x = x + 2&gt;</code>.
+              Note that <code class="inline-code">++</code> always means arithmetical
+              addition (an so it will fail on non-numbers), unlike
+              <code class="inline-code">+</code> or <code class="inline-code">+=</code> that are
+              overloaded to do string concatenation and such.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">value</em></code>: the
+              value to store. Expression.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">namespacehash</em></code>:
+              a hash that was created for a namespace (by <a href="ref_directive_import.html#ref.directive.import"><code>import</code></a>).
+              Expression.
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_77">Description</h2>
+
+
+          <p>With this you can create a new variable, or replace an
+          existing variable. Note that only top-level variables can be
+          created/replaced (i.e. you can&#39;t create/replace
+          <code class="inline-code">some_hash.subvar</code>, but
+          <code class="inline-code">some_hash</code>).</p>
+
+          <p>For more information about variables, read this: <a href="dgui_misc_var.html">Template Author&#39;s Guide/Miscellaneous/Defining variables in the template</a></p>
+
+          <p>Example: variable <code class="inline-code">seq</code> will store a
+          sequence:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign seq = [&quot;foo&quot;, &quot;bar&quot;, &quot;baz&quot;]&gt;</pre></div>
+
+          <p>Example: Increments the numerical value stored in variable
+          <code class="inline-code">x</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x++&gt;</pre></div>
+
+          <p>As a convenience feature, you can do more assignments with one
+          <code class="inline-code">assign</code> tag. For example this will do the same as
+          the two previous examples:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign
+  seq = [&quot;foo&quot;, &quot;bar&quot;, &quot;baz&quot;]
+  x++
+&gt;</pre></div>
+
+          <p>If you know what namespaces are: <code class="inline-code">assign</code>
+          directive creates variables in namespaces. Normally it creates the
+          variable in the current namespace (i.e. in the namespace associated
+          with the template where the tag is). However, if you use <code class="inline-code">in
+          <em class="code-color">namespacehash</em></code> then you can
+          create/replace a variable of another <a href="dgui_misc_namespace.html">namespace</a> than the current
+          namespace. For example, here you create/replace variable
+          <code class="inline-code">bgColor</code> of the namespace used for
+          <code class="inline-code">/mylib.ftl</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;/mylib.ftl&quot; as my&gt;
+&lt;#assign bgColor=&quot;red&quot; in my&gt;</pre></div>
+
+          <p>An extreme usage of <code class="inline-code">assign</code> is when it
+          captures the output generated between its start-tag and end-tag.
+          That is, things that are printed between the tags will not be shown
+          on the page, but will be stored in the variable. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro myMacro&gt;foo&lt;/#macro&gt;
+&lt;#assign x&gt;
+  &lt;#list 1..3 as n&gt;
+    ${n} &lt;@myMacro /&gt;
+  &lt;/#list&gt;
+&lt;/#assign&gt;
+Number of words: ${x?word_list?size}
+${x}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Number of words: 6
+    1 foo
+    2 foo
+    3 foo
+ </pre></div>
+
+          <p>Please note that you should not to use this to insert
+          variables into strings:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x&gt;Hello ${user}!&lt;/#assign&gt; &lt;#-- BAD PRACTICE! --&gt;</pre></div>
+
+          <p>You should simply write:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x=&quot;Hello ${user}!&quot;&gt;</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_alphaidx.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_attempt.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_attempt.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_attempt.html b/builds/2.3.26-nightly/ref_directive_attempt.html
new file mode 100644
index 0000000..625ff61
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_attempt.html
@@ -0,0 +1,206 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>attempt, recover - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="attempt, recover">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_attempt.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_attempt.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_attempt.html"><span itemprop="name">attempt, recover</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","attempt, recover"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_assign.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_autoesc.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_attempt" itemprop="headline">attempt, recover</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_78" data-menu-target="autoid_78">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_79" data-menu-target="autoid_79">Description</a></li></ul> </div><a name="ref.directive.attempt"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_78">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#attempt&gt;
+  <em class="code-color">attempt block</em>
+&lt;#recover&gt;
+  <em class="code-color">recover block</em>
+&lt;/#attempt&gt;
+</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">attempt
+              block</em></code>: Template block with any content.
+              This will be always executed, but if an error occurs during
+              that, all output from this block is rolled back, and the
+              <code class="inline-code"><em class="code-color">recover block</em></code> will
+              be executed.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">recover
+              block</em></code>: Template block with any content.
+              This will be executed only if there was an error during the
+              execution of the <code class="inline-code"><em class="code-color">attempt
+              block</em></code>. You may print an error messages
+              here and such.
+            </li>
+          </ul>
+
+          <p>The <code class="inline-code"><em class="code-color">recover</em></code> is
+          mandatory. <code class="inline-code">attempt</code>/<code class="inline-code">recover</code> can
+          be nested freely into other <code class="inline-code"><em class="code-color">attempt
+          block</em></code>s or <code class="inline-code"><em class="code-color">recover
+          block</em></code>s.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The format shown here is supported starting from 2.3.3;
+            earlier it was
+            <code class="inline-code">&lt;#attempt&gt;<em class="code-color">...</em>&lt;#recover&gt;<em class="code-color">...</em>&lt;/#recover&gt;</code>,
+            which is still supported for backward compatibility. Furthermore,
+            these directives were introduced with FreeMarker 2.3.1, so they
+            aren&#39;t exist in 2.3.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_79">Description</h2>
+
+
+          <p>These directives are used if you want the page successfully
+          outputted even if the outputting of a certain part of the page
+          fails. If an error occurs during the execution of the
+          <code class="inline-code"><em class="code-color">attempt block</em></code>, then
+          the template execution is not aborted, but the
+          <code class="inline-code"><em class="code-color">recover block</em></code> is
+          executed instead of the <code class="inline-code"><em class="code-color">attempt
+          block</em></code>. If no error occurs during the
+          execution of the <code class="inline-code"><em class="code-color">attempt
+          block</em></code>, then the
+          <code class="inline-code"><em class="code-color">recover block</em></code> is
+          ignored. A simple example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">Primary content
+&lt;#attempt&gt;
+  Optional content: ${thisMayFails}
+&lt;#recover&gt;
+  Ops! The optional content is not available.
+&lt;/#attempt&gt;
+Primary content continued</pre></div>
+
+          <p>If the <code class="inline-code">thisMayFails</code> variable doesn&#39;t exist,
+          then the output is:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Primary content
+  Ops! The optional content is not available.
+Primary content continued</pre></div>
+
+          <p>If the <code class="inline-code">thisMayFails</code> variable exists and
+          it&#39;s value is <code class="inline-code">123</code>, then the output is:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Primary content
+  Optional content: 123
+Primary content continued</pre></div>
+
+          <p>The <code class="inline-code"><em class="code-color">attempt
+          block</em></code> has an all-or-none semantic: either
+          the entire content of the <code class="inline-code"><em class="code-color">attempt
+          block</em></code> is output (when there was no error),
+          or no output at all results from the execution of the
+          <code class="inline-code"><em class="code-color">attempt block</em></code> (when
+          there was an error). For example, above, the failure happens after
+          "Optional content: " was printed, still it is not there
+          in the output before the "Ops!". (<span class="marked-for-programmers">This is implemented with the aggressive
+          buffering of the output inside the <code class="inline-code"><em class="code-color">attempt
+          block</em></code>. Not even the <code class="inline-code">flush</code>
+          directive will send the output to the client.</span>)</p>
+
+          <p>To prevent misunderstandings coming from the above example:
+          <code class="inline-code">attempt</code>/<code class="inline-code">recover</code> is not (only)
+          for handling undefined variables (for that use <a href="dgui_template_exp.html#dgui_template_exp_missing">missing value handler
+          operators</a>). It can handle all kind of errors that occurs when
+          the block is executed (i.e. not syntactical errors, which are
+          detected earlier). And it&#39;s meant to enclose bigger template
+          fragments, where error can occur at various points. For example, you
+          have a part in your template that deals with printing
+          advertisements, but that&#39;s not the primary content of the page, so
+          you don&#39;t want your whole page be down just because some error
+          occurs with the printing of the advertisements (say, because of a
+          temporal database server faliure). So you put the whole
+          advertisement printing into an <code class="inline-code"><em class="code-color">attempt
+          block</em></code>.</p>
+
+          <p>In some environments programmers configure FreeMarker so that
+          it doesn&#39;t abort template execution for certain errors, but
+          continues execution, possibly after printing some error indicator to
+          the output (<span class="marked-for-programmers">see more <a href="pgui_config_errorhandling.html">here...</a></span>). The
+          <code class="inline-code">attempt</code> directive doesn&#39;t consider such
+          suppressed errors as errors.</p>
+
+          <p>Inside a <code class="inline-code"><em class="code-color">recover
+          block</em></code> the error message of the error is
+          available with the <code class="inline-code">error</code> <a href="ref_specvar.html">special variable</a>. Don&#39;t forget that
+          references to special variable are started with dot (for example:
+          <code class="inline-code">${.error}</code>).</p>
+
+          <p><span class="marked-for-programmers">Errors occurring during template
+          execution are always <a href="pgui_misc_logging.html">logged</a>, even if they occur inside
+          an <code class="inline-code"><em class="code-color">attempt
+          block</em></code>.</span></p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_assign.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_autoesc.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_autoesc.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_autoesc.html b/builds/2.3.26-nightly/ref_directive_autoesc.html
new file mode 100644
index 0000000..6168252
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_autoesc.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>autoesc - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="autoesc">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_autoesc.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_autoesc.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_autoesc.html"><span itemprop="name">autoesc</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","autoesc"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_attempt.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_compress.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_autoesc" itemprop="headline">autoesc</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_80" data-menu-target="autoid_80">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_81" data-menu-target="autoid_81">Description</a></li></ul> </div><a name="ref.directive.autoesc"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_80">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#autoesc&gt;
+  <em class="code-color">...</em>
+&lt;/#autoesc&gt;</code>
+</pre>
+
+
+          <p>Camel case name variant: <code class="inline-code">autoEsc</code></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_81">Description</h2>
+
+
+          <p>Turns on <a href="dgui_misc_autoescaping.html">auto-escaping</a> in the nested
+          section. Auto-escaping is usually enabled by default if the current
+          <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output
+          format</a> has auto-escaping by default, so you rarely need this.
+          Note that to escape just a single
+          <code class="inline-code">${<em class="code-color">expression</em>}</code> where
+          auto-escaping is disabled you should use
+          <code class="inline-code">${<em class="code-color">expression</em>?esc}</code>
+          instead.</p>
+
+          <p>This directive only has effect on the section that is
+          literally (as in the text editor) inside the nested bock, not on the
+          parts that are called/included from there.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;XML&quot; auto_esc=false&gt;
+${&quot;&amp;&quot;}
+&lt;#autoesc&gt;
+  ${&quot;&amp;&quot;}
+  ...
+  ${&quot;&amp;&quot;}
+&lt;/#autoesc&gt;
+${&quot;&amp;&quot;}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&amp;
+  &amp;amp;
+  ...
+  &amp;amp;
+&amp;</pre></div>
+
+          <p><code class="inline-code">autoesc</code> can&#39;t be used where the current
+          <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output
+          format</a> is a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_nonmarkupof">non-markup output
+          format</a> (and hence can&#39;t do escaping). Doing so is a <a href="gloss.html#gloss.parseTimeError">parse-time error</a>.</p>
+
+          <p><code class="inline-code">autoesc</code> can also be used nested into <a href="ref_directive_noautoesc.html"><code>noautoesc</code>
+          directive</a> to re-enable auto-escaping.</p>
+
+          <p><code class="inline-code">autoesc</code> can be used on places where
+          auto-escaping is already enabled, such as even inside another
+          <code class="inline-code">autoesc</code> block. Doing so is redundant but
+          allowed.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_attempt.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_compress.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[16/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/toc.js
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/toc.js b/builds/2.3.26-nightly/toc.js
new file mode 100644
index 0000000..505fb87
--- /dev/null
+++ b/builds/2.3.26-nightly/toc.js
@@ -0,0 +1,4945 @@
+
+var toc = {
+"title": "Apache FreeMarker Manual",
+"url": "index.html",
+"isFile": true,
+"children": [
+{
+"title": "Template Author's Guide",
+"url": "dgui.html",
+"isFile": true,
+"children": [
+{
+"title": "Getting Started",
+"url": "dgui_quickstart.html",
+"isFile": true,
+"children": [
+{
+"title": "Template + data-model = output",
+"url": "dgui_quickstart_basics.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "The data-model at a glance",
+"url": "dgui_quickstart_datamodel.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "The template at a glance",
+"url": "dgui_quickstart_template.html",
+"isFile": true,
+"children": [
+{
+"title": "Some basic directives",
+"url": "dgui_quickstart_template.html#autoid_2",
+"isFile": false,
+"children": [
+{
+"title": "The if directive",
+"url": "dgui_quickstart_template.html#autoid_3",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The list directive",
+"url": "dgui_quickstart_template.html#autoid_4",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The include directive",
+"url": "dgui_quickstart_template.html#autoid_5",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Using directives together",
+"url": "dgui_quickstart_template.html#autoid_6",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Using built-ins",
+"url": "dgui_quickstart_template.html#autoid_7",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Dealing with missing variables",
+"url": "dgui_quickstart_template.html#autoid_8",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Escaping for HTML, XML and other markup",
+"url": "dgui_quickstart_template.html#dgui_quickstart_template_autoescaping",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Values, Types",
+"url": "dgui_datamodel.html",
+"isFile": true,
+"children": [
+{
+"title": "Basics",
+"url": "dgui_datamodel_basics.html",
+"isFile": true,
+"children": [
+{
+"title": "What is a value?",
+"url": "dgui_datamodel_basics.html#topic.value",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "What is type?",
+"url": "dgui_datamodel_basics.html#autoid_9",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The data-model is a hash",
+"url": "dgui_datamodel_basics.html#autoid_10",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "The types",
+"url": "dgui_datamodel_types.html",
+"isFile": true,
+"children": [
+{
+"title": "Scalars",
+"url": "dgui_datamodel_types.html#dgui_datamodel_scalar",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Containers",
+"url": "dgui_datamodel_types.html#dgui_datamodel_container",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Subroutines",
+"url": "dgui_datamodel_types.html#autoid_11",
+"isFile": false,
+"children": [
+{
+"title": "Methods and functions",
+"url": "dgui_datamodel_types.html#dgui_datamodel_method",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "User-defined directives",
+"url": "dgui_datamodel_types.html#dgui_datamodel_userdefdir",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Function/method versus user-defined directive",
+"url": "dgui_datamodel_types.html#autoid_12",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Miscellaneous",
+"url": "dgui_datamodel_types.html#autoid_13",
+"isFile": false,
+"children": [
+{
+"title": "Nodes",
+"url": "dgui_datamodel_types.html#dgui_datamodel_node",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Markup output",
+"url": "dgui_datamodel_types.html#dgui_datamodel_markupoutput",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "The Template",
+"url": "dgui_template.html",
+"isFile": true,
+"children": [
+{
+"title": "Overall structure",
+"url": "dgui_template_overallstructure.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Directives",
+"url": "dgui_template_directives.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Expressions",
+"url": "dgui_template_exp.html",
+"isFile": true,
+"children": [
+{
+"title": "Quick overview (cheat sheet)",
+"url": "dgui_template_exp.html#exp_cheatsheet",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Specify values directly",
+"url": "dgui_template_exp.html#dgui_template_exp_direct",
+"isFile": false,
+"children": [
+{
+"title": "Strings",
+"url": "dgui_template_exp.html#dgui_template_exp_direct_string",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Numbers",
+"url": "dgui_template_exp.html#dgui_template_exp_direct_number",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Booleans",
+"url": "dgui_template_exp.html#dgui_template_exp_direct_boolean",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Sequences",
+"url": "dgui_template_exp.html#dgui_template_exp_direct_seuqence",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Ranges",
+"url": "dgui_template_exp.html#dgui_template_exp_direct_ranges",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Hashes",
+"url": "dgui_template_exp.html#dgui_template_exp_direct_hash",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Retrieving variables",
+"url": "dgui_template_exp.html#dgui_template_exp_var",
+"isFile": false,
+"children": [
+{
+"title": "Top-level variables",
+"url": "dgui_template_exp.html#dgui_template_exp_var_toplevel",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Retrieving data from a hash",
+"url": "dgui_template_exp.html#dgui_template_exp_var_hash",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Retrieving data from a sequence",
+"url": "dgui_template_exp.html#dgui_template_exp_var_sequence",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Special variables",
+"url": "dgui_template_exp.html#dgui_template_exp_var_special",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "String operations",
+"url": "dgui_template_exp.html#dgui_template_exp_stringop",
+"isFile": false,
+"children": [
+{
+"title": "Interpolation and concatenation",
+"url": "dgui_template_exp.html#dgui_template_exp_stringop_interpolation",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Getting a character",
+"url": "dgui_template_exp.html#dgui_template_exp_get_character",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "String slicing (substrings)",
+"url": "dgui_template_exp.html#dgui_template_exp_stringop_slice",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Sequence operations",
+"url": "dgui_template_exp.html#dgui_template_exp_sequenceop",
+"isFile": false,
+"children": [
+{
+"title": "Concatenation",
+"url": "dgui_template_exp.html#dgui_template_exp_sequenceop_cat",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Sequence slicing",
+"url": "dgui_template_exp.html#dgui_template_exp_seqenceop_slice",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Hash operations",
+"url": "dgui_template_exp.html#dgui_template_exp_hashop",
+"isFile": false,
+"children": [
+{
+"title": "Concatenation",
+"url": "dgui_template_exp.html#dgui_template_exp_hashop_cat",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Arithmetical calculations",
+"url": "dgui_template_exp.html#dgui_template_exp_arit",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Comparison",
+"url": "dgui_template_exp.html#dgui_template_exp_comparison",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Logical operations",
+"url": "dgui_template_exp.html#dgui_template_exp_logicalop",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Built-ins",
+"url": "dgui_template_exp.html#dgui_template_exp_builtin",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Method call",
+"url": "dgui_template_exp.html#dgui_template_exp_methodcall",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Handling missing values",
+"url": "dgui_template_exp.html#dgui_template_exp_missing",
+"isFile": false,
+"children": [
+{
+"title": "Default value operator",
+"url": "dgui_template_exp.html#dgui_template_exp_missing_default",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Missing value test operator",
+"url": "dgui_template_exp.html#dgui_template_exp_missing_test",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Assignment Operators",
+"url": "dgui_template_exp.html#dgui_template_exp_assignment",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Parentheses",
+"url": "dgui_template_exp.html#dgui_template_exp_parentheses",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "White-space in expressions",
+"url": "dgui_template_exp.html#dgui_template_exp_whitespace",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Operator precedence",
+"url": "dgui_template_exp.html#dgui_template_exp_precedence",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Interpolations",
+"url": "dgui_template_valueinsertion.html",
+"isFile": true,
+"children": [
+{
+"title": "Overview",
+"url": "dgui_template_valueinsertion.html#autoid_14",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Automatic escaping",
+"url": "dgui_template_valueinsertion.html#autoid_15",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Guide to inserting numerical values",
+"url": "dgui_template_valueinsertion.html#autoid_16",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Guide to inserting date/time/date-time values",
+"url": "dgui_template_valueinsertion.html#dgui_template_valueinserion_universal_date",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Guide to inserting boolean values",
+"url": "dgui_template_valueinsertion.html#autoid_17",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Exact conversion rules",
+"url": "dgui_template_valueinsertion.html#autoid_18",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Miscellaneous",
+"url": "dgui_misc.html",
+"isFile": true,
+"children": [
+{
+"title": "Defining your own directives",
+"url": "dgui_misc_userdefdir.html",
+"isFile": true,
+"children": [
+{
+"title": "Basics",
+"url": "dgui_misc_userdefdir.html#autoid_19",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Parameters",
+"url": "dgui_misc_userdefdir.html#autoid_20",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Nested content",
+"url": "dgui_misc_userdefdir.html#autoid_21",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Macros with loop variables",
+"url": "dgui_misc_userdefdir.html#dgui_misc_userdefdir_loopvar",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "More about user-defined directives and macros",
+"url": "dgui_misc_userdefdir.html#autoid_22",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Defining variables in the template",
+"url": "dgui_misc_var.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Namespaces",
+"url": "dgui_misc_namespace.html",
+"isFile": true,
+"children": [
+{
+"title": "Creating a library",
+"url": "dgui_misc_namespace.html#autoid_23",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Writing the variables of imported namespaces",
+"url": "dgui_misc_namespace.html#autoid_24",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Namespaces and data-model",
+"url": "dgui_misc_namespace.html#autoid_25",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The life-cycle of namespaces",
+"url": "dgui_misc_namespace.html#autoid_26",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Auto-importing",
+"url": "dgui_misc_namespace.html#autoid_27",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Auto-escaping and output formats",
+"url": "dgui_misc_autoescaping.html",
+"isFile": true,
+"children": [
+{
+"title": "Output formats",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Overriding the output format in templates",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_overrideoformat",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Disabling auto escaping",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_disableautoesc",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "\u201cMarkup output\u201d values",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Further details and tricky cases",
+"url": "dgui_misc_autoescaping.html#autoid_28",
+"isFile": false,
+"children": [
+{
+"title": "Non-markup output formats",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_nonmarkupof",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Inserting markup output values from other markups",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_mixingoutputformats",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "\u201c+\u201d\n operator",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_concatenation",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "${...} inside string literals",
+"url": "dgui_misc_autoescaping.html#dgui_misc_autoescaping_stringliteral",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Combined output formats",
+"url": "dgui_misc_autoescaping.html#autoid_29",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "White-space handling",
+"url": "dgui_misc_whitespace.html",
+"isFile": true,
+"children": [
+{
+"title": "White-space stripping",
+"url": "dgui_misc_whitespace.html#dgui_misc_whitespace_stripping",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Using compress directive",
+"url": "dgui_misc_whitespace.html#autoid_30",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Alternative (square bracket) syntax",
+"url": "dgui_misc_alternativesyntax.html",
+"isFile": true,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Programmer's Guide",
+"url": "pgui.html",
+"isFile": true,
+"children": [
+{
+"title": "Getting Started",
+"url": "pgui_quickstart.html",
+"isFile": true,
+"children": [
+{
+"title": "Create a configuration instance",
+"url": "pgui_quickstart_createconfiguration.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Create a data-model",
+"url": "pgui_quickstart_createdatamodel.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Get the template",
+"url": "pgui_quickstart_gettemplate.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Merging the template with the data-model",
+"url": "pgui_quickstart_merge.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Putting all together",
+"url": "pgui_quickstart_all.html",
+"isFile": true,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "The Data Model",
+"url": "pgui_datamodel.html",
+"isFile": true,
+"children": [
+{
+"title": "Basics",
+"url": "pgui_datamodel_basics.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Scalars",
+"url": "pgui_datamodel_scalar.html",
+"isFile": true,
+"children": [
+{
+"title": "\u201cdate-like\u201d types",
+"url": "pgui_datamodel_scalar.html#autoid_31",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Containers",
+"url": "pgui_datamodel_parent.html",
+"isFile": true,
+"children": [
+{
+"title": "Hashes",
+"url": "pgui_datamodel_parent.html#autoid_32",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Sequences",
+"url": "pgui_datamodel_parent.html#autoid_33",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Collections",
+"url": "pgui_datamodel_parent.html#autoid_34",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Methods",
+"url": "pgui_datamodel_method.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Directives",
+"url": "pgui_datamodel_directive.html",
+"isFile": true,
+"children": [
+{
+"title": "Example 1",
+"url": "pgui_datamodel_directive.html#autoid_35",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Example 2",
+"url": "pgui_datamodel_directive.html#autoid_36",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Notices",
+"url": "pgui_datamodel_directive.html#autoid_37",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Node variables",
+"url": "pgui_datamodel_node.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Object wrappers",
+"url": "pgui_datamodel_objectWrapper.html",
+"isFile": true,
+"children": [
+{
+"title": "The default object wrapper",
+"url": "pgui_datamodel_objectWrapper.html#pgui_datamodel_defaultObjectWrapper",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Custom object wrapping example",
+"url": "pgui_datamodel_objectWrapper.html#pgui_datamodel_customObjectWrappingExample",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "The Configuration",
+"url": "pgui_config.html",
+"isFile": true,
+"children": [
+{
+"title": "Basics",
+"url": "pgui_config_basics.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Shared variables",
+"url": "pgui_config_sharedvariables.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Settings",
+"url": "pgui_config_settings.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Template loading",
+"url": "pgui_config_templateloading.html",
+"isFile": true,
+"children": [
+{
+"title": "Template loaders",
+"url": "pgui_config_templateloading.html#autoid_38",
+"isFile": false,
+"children": [
+{
+"title": "Built-in template loaders",
+"url": "pgui_config_templateloading.html#autoid_39",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Loading templates from multiple locations",
+"url": "pgui_config_templateloading.html#autoid_40",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Loading templates from other sources",
+"url": "pgui_config_templateloading.html#autoid_41",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The template name (template path)",
+"url": "pgui_config_templateloading.html#autoid_42",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Template caching",
+"url": "pgui_config_templateloading.html#pgui_config_templateloading_caching",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Error handling",
+"url": "pgui_config_errorhandling.html",
+"isFile": true,
+"children": [
+{
+"title": "The possible exceptions",
+"url": "pgui_config_errorhandling.html#autoid_43",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Customizing the behavior regarding TemplatException-s",
+"url": "pgui_config_errorhandling.html#autoid_44",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateException logging",
+"url": "pgui_config_errorhandling.html#autoid_45",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Explicit error handling in templates",
+"url": "pgui_config_errorhandling.html#autoid_46",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Template configurations",
+"url": "pgui_config_templateconfigurations.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Associating output formats with templates",
+"url": "pgui_config_outputformatsautoesc.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Custom number and date/time formats",
+"url": "pgui_config_custom_formats.html",
+"isFile": true,
+"children": [
+{
+"title": "Overview",
+"url": "pgui_config_custom_formats.html#autoid_50",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Simple custom number format example",
+"url": "pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_alg_simple",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Advanced custom number format example",
+"url": "pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_algo_advanced",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Custom date/time format example",
+"url": "pgui_config_custom_formats.html#pgui_config_custom_formats_ex_cust_algo_date",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Alias format example",
+"url": "pgui_config_custom_formats.html#pgui_config_custom_formats_ex_alias",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Model-aware format example",
+"url": "pgui_config_custom_formats.html#pgui_config_custom_formats_ex_model_aware",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "The \"incompatible improvements\" setting",
+"url": "pgui_config_incompatible_improvements.html",
+"isFile": true,
+"children": [
+{
+"title": "What does it do",
+"url": "pgui_config_incompatible_improvements.html#autoid_51",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "How to set it",
+"url": "pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Miscellaneous",
+"url": "pgui_misc.html",
+"isFile": true,
+"children": [
+{
+"title": "Variables, scopes",
+"url": "pgui_misc_var.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Charset issues",
+"url": "pgui_misc_charset.html",
+"isFile": true,
+"children": [
+{
+"title": "The charset of the input",
+"url": "pgui_misc_charset.html#autoid_52",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The charset of the output",
+"url": "pgui_misc_charset.html#autoid_53",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Multithreading",
+"url": "pgui_misc_multithreading.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Bean wrapper",
+"url": "pgui_misc_beanwrapper.html",
+"isFile": true,
+"children": [
+{
+"title": "TemplateHashModel functionality",
+"url": "pgui_misc_beanwrapper.html#beanswrapper_hash",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "A word on security",
+"url": "pgui_misc_beanwrapper.html#autoid_54",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateScalarModel functionality",
+"url": "pgui_misc_beanwrapper.html#autoid_55",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateNumberModel functionality",
+"url": "pgui_misc_beanwrapper.html#autoid_56",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateCollectionModel functionality",
+"url": "pgui_misc_beanwrapper.html#autoid_57",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateSequenceModel functionality",
+"url": "pgui_misc_beanwrapper.html#autoid_58",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateMethodModel functionality",
+"url": "pgui_misc_beanwrapper.html#beanswrapper_method",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Unwrapping rules",
+"url": "pgui_misc_beanwrapper.html#autoid_59",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Accessing static methods",
+"url": "pgui_misc_beanwrapper.html#autoid_60",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Accessing enums",
+"url": "pgui_misc_beanwrapper.html#jdk_15_enums",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Logging",
+"url": "pgui_misc_logging.html",
+"isFile": true,
+"children": [
+{
+"title": "Logging library selection",
+"url": "pgui_misc_logging.html#autoid_61",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Logging categories",
+"url": "pgui_misc_logging.html#autoid_62",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Using FreeMarker with servlets",
+"url": "pgui_misc_servlet.html",
+"isFile": true,
+"children": [
+{
+"title": "\u201cModel 2\u201d",
+"url": "pgui_misc_servlet.html#pgui_misc_servlet_model2",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Including content from other web application\n resources",
+"url": "pgui_misc_servlet.html#pgui_misc_servlet_include",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Using JSP custom tags in FTL",
+"url": "pgui_misc_servlet.html#autoid_63",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Embed FTL into JSP pages",
+"url": "pgui_misc_servlet.html#autoid_64",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Configuring security policy for FreeMarker",
+"url": "pgui_misc_secureenv.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Legacy XML wrapper implementation",
+"url": "pgui_misc_xml_legacy.html",
+"isFile": true,
+"children": [
+{
+"title": "TemplateScalarModel",
+"url": "pgui_misc_xml_legacy.html#autoid_65",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateCollectionModel",
+"url": "pgui_misc_xml_legacy.html#autoid_66",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateSequenceModel",
+"url": "pgui_misc_xml_legacy.html#autoid_67",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateHashModel",
+"url": "pgui_misc_xml_legacy.html#autoid_68",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateMethodModel",
+"url": "pgui_misc_xml_legacy.html#autoid_69",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Namespace handling",
+"url": "pgui_misc_xml_legacy.html#autoid_70",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Using FreeMarker with Ant",
+"url": "pgui_misc_ant.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Jython wrapper",
+"url": "pgui_misc_jythonwrapper.html",
+"isFile": true,
+"children": [
+{
+"title": "TemplateHashModel functionality",
+"url": "pgui_misc_jythonwrapper.html#autoid_71",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateScalarModel functionality",
+"url": "pgui_misc_jythonwrapper.html#autoid_72",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateBooleanModel functionality",
+"url": "pgui_misc_jythonwrapper.html#autoid_73",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateNumberModel functionality",
+"url": "pgui_misc_jythonwrapper.html#autoid_74",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "TemplateSequenceModel functionality",
+"url": "pgui_misc_jythonwrapper.html#autoid_75",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Template Language Reference",
+"url": "ref.html",
+"isFile": true,
+"children": [
+{
+"title": "Built-in Reference",
+"url": "ref_builtins.html",
+"isFile": true,
+"children": [
+{
+"title": "Alphabetical index",
+"url": "ref_builtins_alphaidx.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Built-ins for strings",
+"url": "ref_builtins_string.html",
+"isFile": true,
+"children": [
+{
+"title": "boolean",
+"url": "ref_builtins_string.html#ref_builtin_boolean",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "cap_first",
+"url": "ref_builtins_string.html#ref_builtin_cap_first",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "capitalize",
+"url": "ref_builtins_string.html#ref_builtin_capitalize",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "chop_linebreak",
+"url": "ref_builtins_string.html#ref_builtin_chop_linebreak",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "contains",
+"url": "ref_builtins_string.html#ref_builtin_contains",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "date, time, datetime",
+"url": "ref_builtins_string.html#ref_builtin_string_date",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "ends_with",
+"url": "ref_builtins_string.html#ref_builtin_ends_with",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "ensure_ends_with",
+"url": "ref_builtins_string.html#ref_builtin_ensure_ends_with",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "ensure_starts_with",
+"url": "ref_builtins_string.html#ref_builtin_ensure_starts_with",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "esc",
+"url": "ref_builtins_string.html#ref_builtin_esc",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "groups",
+"url": "ref_builtins_string.html#ref_builtin_groups",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "html (deprecated)",
+"url": "ref_builtins_string.html#ref_builtin_html",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "index_of",
+"url": "ref_builtins_string.html#ref_builtin_index_of",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "j_string",
+"url": "ref_builtins_string.html#ref_builtin_j_string",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "js_string",
+"url": "ref_builtins_string.html#ref_builtin_js_string",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "json_string",
+"url": "ref_builtins_string.html#ref_builtin_json_string",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "keep_after",
+"url": "ref_builtins_string.html#ref_builtin_keep_after",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "keep_after_last",
+"url": "ref_builtins_string.html#ref_builtin_keep_after_last",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "keep_before",
+"url": "ref_builtins_string.html#ref_builtin_keep_before",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "keep_before_last",
+"url": "ref_builtins_string.html#ref_builtin_keep_before_last",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "last_index_of",
+"url": "ref_builtins_string.html#ref_builtin_last_index_of",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "left_pad",
+"url": "ref_builtins_string.html#ref_builtin_left_pad",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "length",
+"url": "ref_builtins_string.html#ref_builtin_length",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "lower_case",
+"url": "ref_builtins_string.html#ref_builtin_lower_case",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "matches",
+"url": "ref_builtins_string.html#ref_builtin_matches",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "no_esc",
+"url": "ref_builtins_string.html#ref_builtin_no_esc",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "number",
+"url": "ref_builtins_string.html#ref_builtin_number",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "replace",
+"url": "ref_builtins_string.html#ref_builtin_replace",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "right_pad",
+"url": "ref_builtins_string.html#ref_builtin_right_pad",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "remove_beginning",
+"url": "ref_builtins_string.html#ref_builtin_remove_beginning",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "remove_ending",
+"url": "ref_builtins_string.html#ref_builtin_remove_ending",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "rtf (deprecated)",
+"url": "ref_builtins_string.html#ref_builtin_rtf",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "split",
+"url": "ref_builtins_string.html#ref_builtin_split",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "starts_with",
+"url": "ref_builtins_string.html#ref_builtin_starts_with",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "string (when used with a string value)",
+"url": "ref_builtins_string.html#ref_builtin_string_for_string",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "substring (deprecated)",
+"url": "ref_builtins_string.html#ref_builtin_substring",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "trim",
+"url": "ref_builtins_string.html#ref_builtin_trim",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "uncap_first",
+"url": "ref_builtins_string.html#ref_builtin_uncap_first",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "upper_case",
+"url": "ref_builtins_string.html#ref_builtin_upper_case",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "url",
+"url": "ref_builtins_string.html#ref_builtin_url",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "url_path",
+"url": "ref_builtins_string.html#ref_builtin_url_path",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "word_list",
+"url": "ref_builtins_string.html#ref_builtin_word_list",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "xhtml (deprecated)",
+"url": "ref_builtins_string.html#ref_builtin_xhtml",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "xml (deprecated)",
+"url": "ref_builtins_string.html#ref_builtin_xml",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Common flags",
+"url": "ref_builtins_string.html#ref_builtin_string_flags",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Built-ins for numbers",
+"url": "ref_builtins_number.html",
+"isFile": true,
+"children": [
+{
+"title": "abs",
+"url": "ref_builtins_number.html#ref_builtin_abs",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "c (when used with numerical value)",
+"url": "ref_builtins_number.html#ref_builtin_c",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "is_infinite",
+"url": "ref_builtins_number.html#ref_builtin_is_infinite",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "is_nan",
+"url": "ref_builtins_number.html#ref_builtin_is_nan",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "lower_abc",
+"url": "ref_builtins_number.html#ref_builtin_lower_abc",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "round, floor, ceiling",
+"url": "ref_builtins_number.html#ref_builtin_rounding",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "string (when used with a numerical value)",
+"url": "ref_builtins_number.html#ref_builtin_string_for_number",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "upper_abc",
+"url": "ref_builtins_number.html#ref_builtin_upper_abc",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Built-ins for date/time/date-time values",
+"url": "ref_builtins_date.html",
+"isFile": true,
+"children": [
+{
+"title": "date, time, datetime (when used with a date/time/date-time\n value)",
+"url": "ref_builtins_date.html#ref_builtin_date_datetype",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "date_if_unknown, time_if_unknown, datetime_if_unknown",
+"url": "ref_builtins_date.html#ref_builtin_date_if_unknown",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "iso_...",
+"url": "ref_builtins_date.html#ref_builtin_date_iso",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "string (when used with a date/time/date-time value)",
+"url": "ref_builtins_date.html#ref_builtin_string_for_date",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Built-ins for booleans",
+"url": "ref_builtins_boolean.html",
+"isFile": true,
+"children": [
+{
+"title": "c (when used with boolean)",
+"url": "ref_builtins_boolean.html#ref_builtin_c_boolean",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "string (when used with a boolean value)",
+"url": "ref_builtins_boolean.html#ref_builtin_string_for_boolean",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "then",
+"url": "ref_builtins_boolean.html#ref_builtin_then",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Built-ins for sequences",
+"url": "ref_builtins_sequence.html",
+"isFile": true,
+"children": [
+{
+"title": "chunk",
+"url": "ref_builtins_sequence.html#ref_builtin_chunk",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "first",
+"url": "ref_builtins_sequence.html#ref_builtin_first",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "join",
+"url": "ref_builtins_sequence.html#ref_builtin_join",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "last",
+"url": "ref_builtins_sequence.html#ref_builtin_last",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "reverse",
+"url": "ref_builtins_sequence.html#ref_builtin_reverse",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "seq_contains",
+"url": "ref_builtins_sequence.html#ref_builtin_seq_contains",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "seq_index_of",
+"url": "ref_builtins_sequence.html#ref_builtin_seq_index_of",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "seq_last_index_of",
+"url": "ref_builtins_sequence.html#ref_builtin_seq_last_index_of",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "size",
+"url": "ref_builtins_sequence.html#ref_builtin_size",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "sort",
+"url": "ref_builtins_sequence.html#ref_builtin_sort",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "sort_by",
+"url": "ref_builtins_sequence.html#ref_builtin_sort_by",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Built-ins for hashes",
+"url": "ref_builtins_hash.html",
+"isFile": true,
+"children": [
+{
+"title": "keys",
+"url": "ref_builtins_hash.html#ref_builtin_keys",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "values",
+"url": "ref_builtins_hash.html#ref_builtin_values",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Built-ins for nodes (for XML)",
+"url": "ref_builtins_node.html",
+"isFile": true,
+"children": [
+{
+"title": "ancestors",
+"url": "ref_builtins_node.html#ref_builtin_ancestors",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "children",
+"url": "ref_builtins_node.html#ref_builtin_children",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "node_name",
+"url": "ref_builtins_node.html#ref_builtin_node_name",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "next_sibling",
+"url": "ref_builtins_node.html#ref_builtin_next_sibling",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "node_namespace",
+"url": "ref_builtins_node.html#ref_builtin_node_namespace",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "node_type",
+"url": "ref_builtins_node.html#ref_builtin_node_type",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "parent",
+"url": "ref_builtins_node.html#ref_builtin_parent",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "previous_sibling",
+"url": "ref_builtins_node.html#ref_builtin_previous_sibling",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "root",
+"url": "ref_builtins_node.html#ref_builtin_root",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Loop variable built-ins",
+"url": "ref_builtins_loop_var.html",
+"isFile": true,
+"children": [
+{
+"title": "counter",
+"url": "ref_builtins_loop_var.html#ref_builtin_counter",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "has_next",
+"url": "ref_builtins_loop_var.html#ref_builtin_has_next",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "index",
+"url": "ref_builtins_loop_var.html#ref_builtin_index",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "is_even_item",
+"url": "ref_builtins_loop_var.html#ref_builtin_is_even_item",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "is_first",
+"url": "ref_builtins_loop_var.html#ref_builtin_is_first",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "is_last",
+"url": "ref_builtins_loop_var.html#ref_builtin_is_last",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "is_odd_item",
+"url": "ref_builtins_loop_var.html#ref_builtin_is_odd_item",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "item_cycle",
+"url": "ref_builtins_loop_var.html#ref_builtin_item_cycle",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "item_parity",
+"url": "ref_builtins_loop_var.html#ref_builtin_item_parity",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "item_parity_cap",
+"url": "ref_builtins_loop_var.html#ref_builtin_item_parity_cap",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Type independent built-ins",
+"url": "ref_builtins_type_independent.html",
+"isFile": true,
+"children": [
+{
+"title": "switch",
+"url": "ref_builtins_type_independent.html#ref_builtin_switch",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Seldom used and expert built-ins",
+"url": "ref_builtins_expert.html",
+"isFile": true,
+"children": [
+{
+"title": "api, has_api",
+"url": "ref_builtins_expert.html#ref_buitin_api_and_has_api",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "byte, double, float, int, long, short",
+"url": "ref_builtins_expert.html#ref_builtin_numType",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "eval",
+"url": "ref_builtins_expert.html#ref_builtin_eval",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "has_content",
+"url": "ref_builtins_expert.html#ref_builtin_has_content",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "interpret",
+"url": "ref_builtins_expert.html#ref_builtin_interpret",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "is_...",
+"url": "ref_builtins_expert.html#ref_builtin_isType",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "markup_string",
+"url": "ref_builtins_expert.html#ref_builtin_markup_string",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "namespace",
+"url": "ref_builtins_expert.html#ref_builtin_namespace",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "new",
+"url": "ref_builtins_expert.html#ref_builtin_new",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "number_to_date, number_to_time, number_to_datetime",
+"url": "ref_builtins_expert.html#ref_builtin_numToDate",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Directive Reference",
+"url": "ref_directives.html",
+"isFile": true,
+"children": [
+{
+"title": "Alphabetical index",
+"url": "ref_directive_alphaidx.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "assign",
+"url": "ref_directive_assign.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_assign.html#autoid_76",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_assign.html#autoid_77",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "attempt, recover",
+"url": "ref_directive_attempt.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_attempt.html#autoid_78",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_attempt.html#autoid_79",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "autoesc",
+"url": "ref_directive_autoesc.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_autoesc.html#autoid_80",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_autoesc.html#autoid_81",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "compress",
+"url": "ref_directive_compress.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_compress.html#autoid_82",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_compress.html#autoid_83",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "escape, noescape (deprecated)",
+"url": "ref_directive_escape.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_escape.html#autoid_84",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_escape.html#autoid_85",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "flush",
+"url": "ref_directive_flush.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_flush.html#autoid_86",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_flush.html#autoid_87",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "ftl",
+"url": "ref_directive_ftl.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_ftl.html#autoid_88",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_ftl.html#autoid_89",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "function, return",
+"url": "ref_directive_function.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_function.html#autoid_90",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_function.html#autoid_91",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "global",
+"url": "ref_directive_global.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_global.html#autoid_92",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_global.html#autoid_93",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "if, else, elseif",
+"url": "ref_directive_if.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_if.html#autoid_94",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_if.html#autoid_95",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "import",
+"url": "ref_directive_import.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_import.html#autoid_96",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_import.html#autoid_97",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "include",
+"url": "ref_directive_include.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_include.html#autoid_98",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_include.html#autoid_99",
+"isFile": false,
+"children": [
+{
+"title": "Using acquisition",
+"url": "ref_directive_include.html#ref_directive_include_acquisition",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Localized lookup",
+"url": "ref_directive_include.html#ref_directive_include_localized",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "list, else, items, sep, break",
+"url": "ref_directive_list.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_list.html#autoid_100",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_list.html#autoid_101",
+"isFile": false,
+"children": [
+{
+"title": "Simplest form",
+"url": "ref_directive_list.html#autoid_102",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "else directive",
+"url": "ref_directive_list.html#autoid_103",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "items directive",
+"url": "ref_directive_list.html#autoid_104",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "sep directive",
+"url": "ref_directive_list.html#autoid_105",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "break directive",
+"url": "ref_directive_list.html#autoid_106",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Accessing iteration state",
+"url": "ref_directive_list.html#autoid_107",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Nesting loops into each other",
+"url": "ref_directive_list.html#autoid_108",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Notes for Java programmers",
+"url": "ref_directive_list.html#autoid_109",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "local",
+"url": "ref_directive_local.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_local.html#autoid_110",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_local.html#autoid_111",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "macro, nested, return",
+"url": "ref_directive_macro.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_macro.html#autoid_112",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_macro.html#autoid_113",
+"isFile": false,
+"children": [
+{
+"title": "nested",
+"url": "ref_directive_macro.html#autoid_114",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "return",
+"url": "ref_directive_macro.html#autoid_115",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "noautoesc",
+"url": "ref_directive_noautoesc.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_noautoesc.html#autoid_116",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_noautoesc.html#autoid_117",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "noparse",
+"url": "ref_directive_noparse.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_noparse.html#autoid_118",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_noparse.html#autoid_119",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "nt",
+"url": "ref_directive_nt.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_nt.html#autoid_120",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_nt.html#autoid_121",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "outputformat",
+"url": "ref_directive_outputformat.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_outputformat.html#autoid_122",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_outputformat.html#autoid_123",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "setting",
+"url": "ref_directive_setting.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_setting.html#autoid_124",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_setting.html#autoid_125",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "stop",
+"url": "ref_directive_stop.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_stop.html#autoid_126",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_stop.html#autoid_127",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "switch, case, default, break",
+"url": "ref_directive_switch.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_switch.html#autoid_128",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_switch.html#autoid_129",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "t, lt, rt",
+"url": "ref_directive_t.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_t.html#autoid_130",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_t.html#autoid_131",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "User-defined directive (<@...>)",
+"url": "ref_directive_userDefined.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_userDefined.html#autoid_132",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_userDefined.html#autoid_133",
+"isFile": false,
+"children": [
+{
+"title": "End-tag",
+"url": "ref_directive_userDefined.html#ref_directive_userDefined_entTag",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Loop variables",
+"url": "ref_directive_userDefined.html#ref_directive_userDefined_loopVar",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Positional parameter passing",
+"url": "ref_directive_userDefined.html#ref_directive_userDefined_positionalParam",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "visit, recurse, fallback",
+"url": "ref_directive_visit.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_directive_visit.html#autoid_134",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_directive_visit.html#autoid_135",
+"isFile": false,
+"children": [
+{
+"title": "Visit",
+"url": "ref_directive_visit.html#autoid_136",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Recurse",
+"url": "ref_directive_visit.html#autoid_137",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Fallback",
+"url": "ref_directive_visit.html#autoid_138",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Special Variable Reference",
+"url": "ref_specvar.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Reserved names in FTL",
+"url": "ref_reservednames.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Deprecated FTL constructs",
+"url": "ref_deprecated.html",
+"isFile": true,
+"children": [
+{
+"title": "List of deprecated directives",
+"url": "ref_depr_directive.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "List of deprecated built-ins",
+"url": "ref_depr_builtin.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Old-style macro and call directives",
+"url": "ref_depr_oldmacro.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_depr_oldmacro.html#autoid_139",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_depr_oldmacro.html#autoid_140",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Transform directive",
+"url": "ref_depr_transform.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_depr_transform.html#autoid_141",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_depr_transform.html#autoid_142",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Old FTL syntax",
+"url": "ref_depr_oldsyntax.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "#{...}: Numerical interpolation",
+"url": "ref_depr_numerical_interpolation.html",
+"isFile": true,
+"children": [
+{
+"title": "Synopsis",
+"url": "ref_depr_numerical_interpolation.html#autoid_143",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Description",
+"url": "ref_depr_numerical_interpolation.html#autoid_144",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "XML Processing Guide",
+"url": "xgui.html",
+"isFile": true,
+"children": [
+{
+"title": "Preface",
+"url": "xgui_preface.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Exposing XML documents",
+"url": "xgui_expose.html",
+"isFile": true,
+"children": [
+{
+"title": "The DOM tree",
+"url": "xgui_expose_dom.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Putting the XML into the data-model",
+"url": "xgui_expose_put.html",
+"isFile": true,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Imperative XML processing",
+"url": "xgui_imperative.html",
+"isFile": true,
+"children": [
+{
+"title": "Basics",
+"url": "xgui_imperative_learn.html",
+"isFile": true,
+"children": [
+{
+"title": "Accessing elements by name",
+"url": "xgui_imperative_learn.html#autoid_145",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Accessing attributes",
+"url": "xgui_imperative_learn.html#autoid_146",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Exploring the tree",
+"url": "xgui_imperative_learn.html#autoid_147",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Using XPath expressions",
+"url": "xgui_imperative_learn.html#autoid_148",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "XML namespaces",
+"url": "xgui_imperative_learn.html#autoid_149",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Don't forget escaping!",
+"url": "xgui_imperative_learn.html#autoid_150",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "Details",
+"url": "xgui_imperative_formal.html",
+"isFile": true,
+"children": [
+{
+"title": "Node sequences",
+"url": "xgui_imperative_formal.html#autoid_151",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Declarative XML processing",
+"url": "xgui_declarative.html",
+"isFile": true,
+"children": [
+{
+"title": "Basics",
+"url": "xgui_declarative_basics.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Details",
+"url": "xgui_declarative_details.html",
+"isFile": true,
+"children": [
+{
+"title": "Default handlers",
+"url": "xgui_declarative_details.html#autoid_152",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Visiting a single node",
+"url": "xgui_declarative_details.html#autoid_153",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "XML namespaces",
+"url": "xgui_declarative_details.html#autoid_154",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Appendixes",
+"url": "app.html",
+"isFile": true,
+"children": [
+{
+"title": "FAQ",
+"url": "app_faq.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Version history",
+"url": "app_versions.html",
+"isFile": true,
+"children": [
+{
+"title": "2.3.26 (incubating at Apache)",
+"url": "versions_2_3_26.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_26.html#autoid_155",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_26.html#autoid_156",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_26.html#autoid_157",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.25 (incubating at Apache)",
+"url": "versions_2_3_25.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_25.html#autoid_158",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_25.html#autoid_159",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.24 (incubating at Apache)",
+"url": "versions_2_3_24.html",
+"isFile": true,
+"children": [
+{
+"title": "Legal changes",
+"url": "versions_2_3_24.html#autoid_160",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_24.html#autoid_161",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_24.html#autoid_162",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes compared to 2.3.24 Release Candidate 1",
+"url": "versions_2_3_24.html#autoid_163",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.23",
+"url": "versions_2_3_23.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_23.html#autoid_164",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_23.html#autoid_165",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_23.html#autoid_166",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Notes",
+"url": "versions_2_3_23.html#autoid_167",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.22",
+"url": "versions_2_3_22.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_22.html#autoid_168",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_22.html#autoid_169",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Notes",
+"url": "versions_2_3_22.html#autoid_170",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.21",
+"url": "versions_2_3_21.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_21.html#autoid_171",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_21.html#autoid_172",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_21.html#autoid_173",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.20",
+"url": "versions_2_3_20.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_20.html#autoid_174",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_20.html#autoid_175",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_20.html#autoid_176",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.19",
+"url": "versions_2_3_19.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_19.html#autoid_177",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_19.html#autoid_178",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.18",
+"url": "versions_2_3_18.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_18.html#autoid_179",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_18.html#autoid_180",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.17",
+"url": "versions_2_3_17.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_17.html#autoid_181",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_17.html#autoid_182",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_17.html#autoid_183",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.16",
+"url": "versions_2_3_16.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_16.html#autoid_184",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_16.html#autoid_185",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.15",
+"url": "versions_2_3_15.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_15.html#autoid_186",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_15.html#autoid_187",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.14",
+"url": "versions_2_3_14.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_14.html#autoid_188",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_14.html#autoid_189",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.13",
+"url": "versions_2_3_13.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_13.html#autoid_190",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_13.html#autoid_191",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.12",
+"url": "versions_2_3_12.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_12.html#autoid_192",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.11",
+"url": "versions_2_3_11.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_11.html#autoid_193",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_11.html#autoid_194",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Documentation changes",
+"url": "versions_2_3_11.html#autoid_195",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.10",
+"url": "versions_2_3_10.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_10.html#autoid_196",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_10.html#autoid_197",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.9",
+"url": "versions_2_3_9.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_9.html#autoid_198",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.8",
+"url": "versions_2_3_8.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_8.html#autoid_199",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.7",
+"url": "versions_2_3_7.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_7.html#autoid_200",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_7.html#autoid_201",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.7 RC1",
+"url": "versions_2_3_7rc1.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_7rc1.html#autoid_202",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_7rc1.html#autoid_203",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.6",
+"url": "versions_2_3_6.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_6.html#autoid_204",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.5",
+"url": "versions_2_3_5.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_5.html#autoid_205",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_5.html#autoid_206",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.4",
+"url": "versions_2_3_4.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_4.html#autoid_207",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_4.html#autoid_208",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_4.html#autoid_209",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.3",
+"url": "versions_2_3_3.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_3.html#autoid_210",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_3.html#autoid_211",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_3.html#autoid_212",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.2",
+"url": "versions_2_3_2.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_2.html#autoid_213",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.3.1",
+"url": "versions_2_3_1.html",
+"isFile": true,
+"children": [
+{
+"title": "Possible backward compatibility issue",
+"url": "versions_2_3_1.html#autoid_214",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3_1.html#autoid_215",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3_1.html#autoid_216",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3_1.html#autoid_217",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The history of the releases before the final version",
+"url": "versions_2_3_1.html#autoid_218",
+"isFile": false,
+"children": [
+{
+"title": "Differences between the preview release and final\n release",
+"url": "versions_2_3_1.html#autoid_219",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "2.3",
+"url": "versions_2_3.html",
+"isFile": true,
+"children": [
+{
+"title": "Non backward-compatible changes!",
+"url": "versions_2_3.html#autoid_220",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_3.html#autoid_221",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_3.html#autoid_222",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_3.html#autoid_223",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The history of the releases before the final version",
+"url": "versions_2_3.html#autoid_224",
+"isFile": false,
+"children": [
+{
+"title": "Differences between the final release and Release Candidate\n 4",
+"url": "versions_2_3.html#autoid_225",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Release Candidate 4 and Release\n Candidate 3",
+"url": "versions_2_3.html#autoid_226",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Release Candidate 3 and Release\n Candidate 2",
+"url": "versions_2_3.html#autoid_227",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Release Candidate 2 and Release\n Candidate 1",
+"url": "versions_2_3.html#autoid_228",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Release Candidate 1 and Preview 16\n releases",
+"url": "versions_2_3.html#autoid_229",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 16 and Preview 15\n releases",
+"url": "versions_2_3.html#autoid_230",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 15 and Preview 14\n releases",
+"url": "versions_2_3.html#autoid_231",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 14 and Preview 13\n releases",
+"url": "versions_2_3.html#autoid_232",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 13 and Preview 12\n releases",
+"url": "versions_2_3.html#autoid_233",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 12 and Preview 11\n releases",
+"url": "versions_2_3.html#autoid_234",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 11 and Preview 10\n releases",
+"url": "versions_2_3.html#autoid_235",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 10 and Preview 9\n releases",
+"url": "versions_2_3.html#autoid_236",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 9 and Preview 8\n releases",
+"url": "versions_2_3.html#autoid_237",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 8 and Preview 7\n releases",
+"url": "versions_2_3.html#autoid_238",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 7 and Preview 6\n releases",
+"url": "versions_2_3.html#autoid_239",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 6 and Preview 5\n releases",
+"url": "versions_2_3.html#autoid_240",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 5 and Preview 4\n releases",
+"url": "versions_2_3.html#autoid_241",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 4 and Preview 3\n releases",
+"url": "versions_2_3.html#autoid_242",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 3 and Preview 2\n releases",
+"url": "versions_2_3.html#autoid_243",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 2 and Preview 1\n releases",
+"url": "versions_2_3.html#autoid_244",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "2.2.8",
+"url": "versions_2_2_8.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_2_8.html#autoid_245",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_8.html#autoid_246",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_2_8.html#autoid_247",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2.7",
+"url": "versions_2_2_7.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_7.html#autoid_248",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2.6",
+"url": "versions_2_2_6.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_2_6.html#autoid_249",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_6.html#autoid_250",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_2_6.html#autoid_251",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2.5",
+"url": "versions_2_2_5.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_5.html#autoid_252",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2.4",
+"url": "versions_2_2_4.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_4.html#autoid_253",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_2_4.html#autoid_254",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2.3",
+"url": "versions_2_2_3.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_2_3.html#autoid_255",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_3.html#autoid_256",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2.2",
+"url": "versions_2_2_2.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_2.html#autoid_257",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2.1",
+"url": "versions_2_2_1.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_2_1.html#autoid_258",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2_1.html#autoid_259",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.2",
+"url": "versions_2_2.html",
+"isFile": true,
+"children": [
+{
+"title": "Non backward-compatible changes!",
+"url": "versions_2_2.html#autoid_260",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes in FTL (FreeMarker Template Language)",
+"url": "versions_2_2.html#autoid_261",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_2.html#autoid_262",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_2.html#autoid_263",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "The history of the releases before the final version",
+"url": "versions_2_2.html#autoid_264",
+"isFile": false,
+"children": [
+{
+"title": "Differences between the final and RC2 releases",
+"url": "versions_2_2.html#autoid_265",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the RC2 and RC1 releases",
+"url": "versions_2_2.html#autoid_266",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 2 and RC1 releases",
+"url": "versions_2_2.html#autoid_267",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the Preview 1 and Preview 2\n releases",
+"url": "versions_2_2.html#autoid_268",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "2.1.5",
+"url": "versions_2_1_5.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_1_5.html#autoid_269",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.1.4",
+"url": "versions_2_1_4.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the Java side",
+"url": "versions_2_1_4.html#autoid_270",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.1.3",
+"url": "versions_2_1_3.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes on the FTL side",
+"url": "versions_2_1_3.html#autoid_271",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_1_3.html#autoid_272",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.1.2",
+"url": "versions_2_1_2.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes in FTL (FreeMarker Template Language)",
+"url": "versions_2_1_2.html#autoid_273",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_1_2.html#autoid_274",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.1.1",
+"url": "versions_2_1_1.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes in FTL (FreeMarker Template Language)",
+"url": "versions_2_1_1.html#autoid_275",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_1_1.html#autoid_276",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.1",
+"url": "versions_2_1.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes in FTL (FreeMarker Template Language)",
+"url": "versions_2_1.html#autoid_277",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes on the Java side",
+"url": "versions_2_1.html#autoid_278",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Other changes",
+"url": "versions_2_1.html#autoid_279",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Differences between the RC1 and final release",
+"url": "versions_2_1.html#autoid_280",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.01",
+"url": "versions_2_01.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "2.0",
+"url": "versions_2_0.html",
+"isFile": true,
+"children": [
+{
+"title": "Bugfixes",
+"url": "versions_2_0.html#autoid_281",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes to the Template language",
+"url": "versions_2_0.html#autoid_282",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes to the API",
+"url": "versions_2_0.html#autoid_283",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Miscellany",
+"url": "versions_2_0.html#autoid_284",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.0 RC3",
+"url": "versions_2_0RC3.html",
+"isFile": true,
+"children": [
+{
+"title": "Bug Fixes",
+"url": "versions_2_0RC3.html#autoid_285",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Changes to the Template Language",
+"url": "versions_2_0RC3.html#autoid_286",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "API changes",
+"url": "versions_2_0RC3.html#autoid_287",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.0 RC2",
+"url": "versions_2_0RC2.html",
+"isFile": true,
+"children": [
+{
+"title": "Changes to Template Language",
+"url": "versions_2_0RC2.html#autoid_288",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "API Changes",
+"url": "versions_2_0RC2.html#autoid_289",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+,
+{
+"title": "2.0 RC1",
+"url": "versions_2_0RC1.html",
+"isFile": true,
+"children": [
+{
+"title": "Support for Numerical operations, both arithmetic and\n boolean, as well as numerical ranges.",
+"url": "versions_2_0RC1.html#autoid_290",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "API Changes",
+"url": "versions_2_0RC1.html#autoid_291",
+"isFile": false,
+"children": [
+]
+}
+,
+{
+"title": "Syntactical Miscellany",
+"url": "versions_2_0RC1.html#autoid_292",
+"isFile": false,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Installing FreeMarker",
+"url": "app_install.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Legal",
+"url": "app_legal.html",
+"isFile": true,
+"children": [
+{
+"title": "License",
+"url": "app_license.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Export Control",
+"url": "app_eccn.html",
+"isFile": true,
+"children": [
+]
+}
+]
+}
+]
+}
+,
+{
+"title": "Glossary",
+"url": "gloss.html",
+"isFile": true,
+"children": [
+]
+}
+,
+{
+"title": "Alphabetical Index",
+"url": "alphaidx.html",
+"isFile": true,
+"children": [
+]
+}
+]
+}
+;


[15/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_0.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_0.html b/builds/2.3.26-nightly/versions_2_0.html
new file mode 100644
index 0000000..ba13c93
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_0.html
@@ -0,0 +1,147 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.0 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.0">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_0.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_0.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_0.html"><span itemprop="name">2.0</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.0"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_01.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0RC3.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_0" itemprop="headline">2.0</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_281" data-menu-target="autoid_281">Bugfixes</a></li><li><a class="page-menu-link" href="#autoid_282" data-menu-target="autoid_282">Changes to the Template language</a></li><li><a class="page-menu-link" href="#autoid_283" data-menu-target="autoid_283">Changes to the API</a></li><li><a class="page-menu-link" href="#autoid_284" data-menu-target="autoid_284">Miscellany</a></li></ul> </div><p>FreeMarker 2.0 final was released on 18 April 2002. The changes
+        with respect to the previous release, 2.0 RC3 are fairly minor.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_281">Bugfixes</h2>
+
+
+          <ul>
+            <li>
+              <p>There were a couple of bugs in handling null values, where
+              Lazarus did not do the same thing as FreeMarker Classic.
+              Traditionally, in FreeMarker, nulls were treated as being
+              equivalent to an empty string in the appropriate context. At
+              this point, to the best of our knowledge, there is backward
+              compatibility with FreeMarker Classic in this respect.</p>
+            </li>
+
+            <li>
+              <p>Literal strings can now include line breaks. This was a
+              backward compatibility issue with FreeMarker Classic that has
+              been fixed.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_282">Changes to the Template language</h2>
+
+
+          <ul>
+            <li>
+              <p>You can use the extra built-in of
+              <code class="inline-code">myString?web_safe</code> to convert a string to its
+              &quot;web-safe&quot; equivalent, where problematic characters such as
+              &#39;&lt;&#39; are converted to &amp;lt;.</p>
+            </li>
+
+            <li>
+              <p>In displaying numbers with a fractional part, the
+              rendering apparatus now respects the decimal separator of the
+              template&#39;s locale, so that, for example, in continental Europe,
+              you would see 1,1 and in the U.S. locale, 1.1.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_283">Changes to the API</h2>
+
+
+          <ul>
+            <li>
+              <p>The <code class="inline-code">getAsString()</code> method in the
+              <code class="inline-code">TemplateScalarModel</code> interface now takes a
+              <code class="inline-code">java.util.Locale</code> as a parameter. For the most
+              part, this is a hook for later use. In the default
+              implementation, <code class="inline-code">SimpleScalar</code>, this parameter
+              is unused. If you are implementing this interface yourself, your
+              implementation may ignore the parameter. However, it will be
+              appealing for certain implementations.</p>
+            </li>
+
+            <li>
+              <p>The constructors of <code class="inline-code">FileTemplateCache</code>
+              have changed. If you are using an absolute directory on the file
+              system as the location of your templates, you need to pass in an
+              instance of <code class="inline-code">java.io.File</code> to indicate the
+              location. If you use the constructors that take a string, this
+              is taken to mean relative to the classloader classpath.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_284">Miscellany</h2>
+
+
+          <p>The ant build script build.xml now contains a target that
+          builds a .war file containing the Hello, World and Guestbook
+          examples. It builds a fmexamples.war. For example, if you are using
+          Tomcat in its out-of-the-box configuration, you would place this
+          under &lt;TOMCAT_HOME&gt;/webapps and then you would use
+          http://localhost:8080/fmexamples/servlet/hello and
+          http://localhost:8080/fmexamples/servlet/guestbook for the Hello,
+          World and Guestbook examples respectively.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_01.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0RC3.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_01.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_01.html b/builds/2.3.26-nightly/versions_2_01.html
new file mode 100644
index 0000000..d9f68f1
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_01.html
@@ -0,0 +1,59 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.01 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.01">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_01.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_01.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_01.html"><span itemprop="name">2.01</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.01"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_01" itemprop="headline">2.01</h1>
+</div></div><p>The main improvement is in error reporting. Now exceptions are
+        much more informative since they come with complete line number and
+        column information.</p><p>The only API change between 2.0 and 2.01 was the elimination of
+        the CacheListener/CacheEvent API. Now, if the updating of a template
+        file fails, the exception is thrown back to the caller to handle. If
+        you want logging to occur when a template file is updated
+        successfully, you can override the logFileUpdate() method in
+        FileTemplateCache.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_0RC1.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_0RC1.html b/builds/2.3.26-nightly/versions_2_0RC1.html
new file mode 100644
index 0000000..c6de54a
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_0RC1.html
@@ -0,0 +1,268 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.0 RC1 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.0 RC1">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_0RC1.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_0RC1.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_0RC1.html"><span itemprop="name">2.0 RC1</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.0 RC1"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_0RC2.html"><span>Previous</span></a><a class="paging-arrow next" href="app_install.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_0RC1" itemprop="headline">2.0 RC1</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_290" data-menu-target="autoid_290">Support for Numerical operations, both arithmetic and
+boolean, as well as numerical ranges.</a></li><li><a class="page-menu-link" href="#autoid_291" data-menu-target="autoid_291">API Changes</a></li><li><a class="page-menu-link" href="#autoid_292" data-menu-target="autoid_292">Syntactical Miscellany</a></li></ul> </div><p>The first public release of FreeMarker 2.0 was on 18 March 2002.
+        Here is a summary of the changes in the Lazarus release, with respect
+        to the last stable release of FreeMarker Classic.</p><p><em>NOTA BENE</em>:</p><p>Despite the changes delineated above, the Lazarus release is
+        almost entirely backward-compatible with FreeMarker Classic. We
+        believe that <em>most</em> existing code and templates
+        that work under FreeMarker Classic will continue working under
+        Lazarus, with at most minimal changes. In practice, the most common
+        cases where legacy template code is broken will be where assumptions
+        were made about numbers and strings being equivalent. Note that in
+        FreeMarker 2, 2 + 2 does not result in &quot;22&quot;. The String &quot;1&quot; and the
+        number 1 are entirely different animals and thus, any code will be
+        broken if it relies on the boolean expression (&quot;1&quot;==1) being true.
+        There is a &quot;classic compatibility mode&quot; that can be set via:
+        <code class="inline-code">Template.setClassCompatibility()</code> that can be set so
+        that Lazarus emulates some of the quirky behavior of FreeMarker
+        Classic. However, any code that relied on the above &quot;features&quot; of
+        FreeMarker classic really should be reworked. You are less likely to
+        run into the other incompatibilities that are listed above. If you
+        come across any other anomalies, please do tell us about them.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_290">Support for Numerical operations, both arithmetic and
+          boolean, as well as numerical ranges.</h2>
+
+
+          <ul>
+            <li>
+              <p>Scalars can now be either strings or numbers. (In
+              FreeMarker Classic all scalars were strings.) The basic
+              operations allowed are addition, subtraction, multiplication,
+              division, and modulus using the <code class="inline-code">+</code>,
+              <code class="inline-code">-</code>, <code class="inline-code">*</code>,
+              <code class="inline-code">/</code>, and <code class="inline-code">%</code> operators
+              respectively. Arbitrary-precision arithmetic with integers and
+              floating point numbers are provided. Though our goal is
+              definitely to follow the principle of least surprise, for
+              backward compatibility, the <code class="inline-code">+</code> operator still
+              is used for string concatenation. If either the left hand side
+              or the right hand side of <code class="inline-code">lhs + rhs</code> is
+              non-numerical, we revert to interpreting this as string
+              concatenation. Thus, in FreeMarker 2, 2+2 evaluates to the
+              number 4, while any of &quot;2&quot;+2 or 2+&quot;2&quot; or &quot;2&quot;+&quot;2&quot; evaluate to the
+              string &quot;22&quot;. In FreeMarker Classic, rather embarrassingly, all
+              of the above, including 2+2, evaluated to the string &quot;22&quot;. An
+              attempt to use any other arithmetic operator besides the
+              <code class="inline-code">+</code> with non-numerical operands will cause an
+              exception to be thrown.</p>
+            </li>
+
+            <li>
+              <p>Output of a numerical expression can be made explicit via
+              the alternative <code class="inline-code">#{....}</code> syntax. If the
+              expression within the curly parentheses does not evaluate to a
+              numerical value, an exception is thrown. The older ${....}
+              syntax can evaluate to either a number or a string. In general,
+              if, for logical reasons, the output <em>must</em> be
+              numerical, it is preferable to use the #{...} syntax, since it
+              adds an extra sanity check. Note that if, by some miracle, the
+              character sequence &quot;#{&quot; occurs in your template, you will have
+              to use a workaround to prevent problems. (The &lt;noparse&gt;
+              directive is one possibility.)</p>
+            </li>
+
+            <li>
+              <p>In this release, there is a facility for specifying the
+              number of digits to show after the decimal point. The following
+              code specifies to show at least 3 digits after the decimal point
+              but not more than 6. This is optional. This option is only
+              available if you use the #{...} syntax.</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-template">#{foo + bar ; m3M6}  </pre></div>
+
+              <p>(Note that the above is something of a stopgap measure.
+              Future releases will move toward supporting fully
+              internationalization and localization of number and currency
+              formatting.</p>
+            </li>
+
+            <li>
+              <p>Numerical expressions can be used in boolean expressions
+              via the comparison operators: <code class="inline-code">lt</code>,
+              <code class="inline-code">gt</code>, <code class="inline-code">lte</code>, and
+              <code class="inline-code">gte</code>. In the web space, where FreeMarker is
+              most used in practice, using the more natural operators such as
+              &lt; and &gt; would tend to confuse HTML-oriented editors. An
+              attempt to compare non-numerical expressions using these
+              operators leads to a <code class="inline-code">TemplateException</code> being
+              thrown. If, by some coincidence, you have variables named &quot;lt&quot;,
+              &quot;gt&quot;, &quot;lte&quot;, or &quot;gte&quot;, you will have to change their names,
+              since they are now keywords in the language.</p>
+            </li>
+
+            <li>
+              <p>Numerical ranges are supported.</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list 1990..2001 as year&gt;
+  blah blah in the year ${year} blah
+&lt;/#list&gt; </pre></div>
+
+              <p>The left hand and right hand sides of the
+              <code class="inline-code">..</code> operator must be numerical, or an
+              exception is thrown. They also need not be literal numbers, but
+              can be more complex expressions that evaluate to a numerical
+              scalar value. Note that it is also possible to write a range
+              that descends in value:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list 2001..1990 as year&gt;
+  blah blah in the year ${year} blah blah
+&lt;/#list&gt;  </pre></div>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_291">API Changes</h2>
+
+
+          <ul>
+            <li>
+              <p>The <code class="inline-code">TemplateNumberModel</code> interface and
+              the <code class="inline-code">SimpleNumber</code> implementation were added to
+              support exposing numerical values.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">TemplateListModel</code> API in FreeMarker
+              Classic had some design problems -- particularly in terms of
+              supporting thread-safe code. It has been deprecated in favor of
+              the following API&#39;s: <code class="inline-code">TemplateCollectionModel</code>
+              and <code class="inline-code">TemplateSequenceModel</code>. The
+              <code class="inline-code">SimpleList</code> class was refactored to implement
+              the above interfaces (and paradoxically, does not implement the
+              TemplateListModel interface.) Code that uses the deprecated
+              <code class="inline-code">TemplateListModel</code> should be
+              refactored.</p>
+            </li>
+
+            <li>
+              <p>The Expose Package by Attila Szegedi has been made an
+              integral part of the FreeMarker distribution and is now under
+              the freemarker.ext.* hierarchy. This package provides advanced
+              models for representing arbitrary Java objects as template
+              models, for representing XML documents as template models, as
+              well as classes to facilitate the integration of FreeMarker with
+              servlets and Ant.</p>
+            </li>
+
+            <li>
+              <p>In FreeMarker Classic, there were some utility classes
+              such as <code class="inline-code">freemarker.template.utility.Addition</code>
+              etcetera that existed as workarounds for the lack of numerical
+              operations in FreeMarker. Those have been removed and will
+              probably not be missed.</p>
+            </li>
+
+            <li>
+              <p>In FreeMarker Classic, the <code class="inline-code">SimpleScalar</code>
+              object was mutable, it had a <code class="inline-code">setValue</code> method.
+              This was fairly obviously a design mistake. Any code that relied
+              on this must be refactored. Note that in this release, both
+              <code class="inline-code">SimpleScalar</code> and the newly introduced
+              <code class="inline-code">SimpleNumber</code> are both immutable and
+              final.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_292">Syntactical Miscellany</h2>
+
+
+          <ul>
+            <li>
+              <p>The if-elseif-else syntax was introduced. FreeMarker
+              classic only had if-else. This construct should probably (in the
+              opinion of the author of this document -- Revusky) be used in
+              preference to switch-case since the switch-case with
+              fall-through is a notoriously error-prone construct for most
+              mortal men.</p>
+            </li>
+
+            <li>
+              <p>You can now do a multiple assignment in one
+              &lt;assign...&gt; directive. For example: <code class="inline-code">&lt;assign x
+              = 1, y = price*items, message=&quot;foo&quot;&gt;</code></p>
+            </li>
+
+            <li>
+              <p>A scalar will no longer be interpreted as a one-item list
+              in a &lt;list...&gt; or &lt;#foreach...&gt; block. If you have
+              code that relied on this feature, there is an easy workaround,
+              since you can simply define a list literal with exactly one
+              item.</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-template"> &lt;assign y=[x]&gt;
+ <strong>and then...</strong>
+ &lt;list y as item&gt;...&lt;/list&gt; </pre></div>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_0RC2.html"><span>Previous</span></a><a class="paging-arrow next" href="app_install.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_0RC2.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_0RC2.html b/builds/2.3.26-nightly/versions_2_0RC2.html
new file mode 100644
index 0000000..618427e
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_0RC2.html
@@ -0,0 +1,219 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.0 RC2 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.0 RC2">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_0RC2.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_0RC2.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_0RC2.html"><span itemprop="name">2.0 RC2</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.0 RC2"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_0RC3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0RC1.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_0RC2" itemprop="headline">2.0 RC2</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_288" data-menu-target="autoid_288">Changes to Template Language</a></li><li><a class="page-menu-link" href="#autoid_289" data-menu-target="autoid_289">API Changes</a></li></ul> </div><p>FreeMarker 2.0 RC 2 was released on 4 April 2002. Here is a
+        summary of changes wrt to the first release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_288">Changes to Template Language</h2>
+
+
+          <ul>
+            <li>
+              <p>Certain built-in functionality is provided via a new
+              operator, &#39;?&#39;. Thus, <code class="inline-code">myList?size</code> provides the
+              number of elements in a list. Similarly,
+              <code class="inline-code">myString?length</code> provides the length of a
+              string, <code class="inline-code">myString?upper_case</code> puts the string
+              all in capital letters, and <code class="inline-code">myHash?keys</code>
+              provides a sequence containing the keys in the hash. See <a href="ref_builtins.html">Template Language Reference/Built-in Reference</a> for list of all available
+              built-ins.</p>
+            </li>
+
+            <li>
+              <p>Numerical comparisons can now be made using the &quot;natural&quot;
+              operators &lt; and &gt; but there are also &quot;web-safe&quot;
+              alternatives, such as <em>\lt</em> and
+              <em>\gt</em>, since the use of these characters may
+              confuse HTML editors and parsers. Note that these changed
+              between rc1 and rc2, they now start with a backslash. A little
+              asymmetry is the fact that if you use the natural greater-than
+              or greater-than-or-equals operators (i.e. &gt; or &gt;=) the
+              expression must be in parentheses. With any other operator, the
+              parentheses are optional.</p>
+            </li>
+
+            <li>
+              <p>Within an iteration loop -- i.e. a
+              <code class="inline-code">foreach</code> or a <code class="inline-code">list</code> block --
+              the current count in the loop is available as the special
+              variable
+              <code class="inline-code"><em class="code-color">index</em>_count</code>. where
+              <em>index</em> is the name of the variable in
+              the iteration. A boolean variable called
+              <code class="inline-code"><em class="code-color">index</em>_has_next</code> is
+              also defined that indicates whether there are any more items in
+              the iteration after this one. Note that the index starts at
+              zero, so you will often be adding one to it in practice.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">&lt;#break&gt;</code> directive can now be
+              used to break out of a <code class="inline-code">&lt;#foreach...&gt;</code> or
+              a <code class="inline-code">&lt;list...&gt;</code> loop. (Prior to this
+              version, it only worked within a switch-case block.) There is a
+              new directive called <code class="inline-code">&lt;#stop&gt;</code> that, when
+              encountered, simply halts processing of the template. This can
+              be useful for debugging purposes.</p>
+            </li>
+
+            <li>
+              <p>When invoking java methods that have been exposed to the
+              page, using the code in freemarker.ext.*, there are built-ins
+              that allow you to indicate the numerical type that you wish to
+              pass as the value. For instance, if you had two methods, one
+              that takes an int and another that takes a long, and you wanted
+              to pass in a value, you would have to specify which method.
+              <code class="inline-code">myMethod(1?int)</code> or
+              <code class="inline-code">myMethod(1?long)</code>. This is unnecessary if
+              there is only one method of the given name.</p>
+            </li>
+
+            <li>
+              <p>Ranges can be used to get the sublist from a list or the
+              substring of a string. For example:
+              <code class="inline-code">myList[0..3]</code> will return items 0 through 3 of
+              the list in question. Or, for example, you could get all the
+              elements of the list except for the first and last ones via:
+              <code class="inline-code">myList[1..(myList?size-2)]</code></p>
+            </li>
+
+            <li>
+              <p>Or we could get the first 6 characters of a string via
+              <code class="inline-code">myString[0..5]</code></p>
+            </li>
+
+            <li>
+              <p>Lists can be concatenated using the &#39;+&#39; operator.
+              Previously, this overloading of &#39;+&#39; only applied to
+              strings.</p>
+            </li>
+
+            <li>
+              <p>An attempt to compare a number to a string now throws an
+              exception, since it is indicative of a coding error. Note that
+              there is a backward compatibility mode that can be set (see
+              below) that loosens this up in order to be able to process
+              legacy templates.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_289">API Changes</h2>
+
+
+          <ul>
+            <li>
+              <p>The <code class="inline-code">TemplateSequenceModel</code> interface now
+              has a <code class="inline-code">size()</code> method for getting the number of
+              elements in the sequence in question.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">TemplateModelIterator</code> interface now
+              has a <code class="inline-code">hasNext()</code> method.</p>
+            </li>
+
+            <li>
+              <p>The default sequence and hash implementations,
+              <code class="inline-code">freemarker.template.SimpleSequence</code> and
+              <code class="inline-code">freemarker.template.SimpleHash</code> are now
+              unsynchronized. If you need the methods to be synchronized, you
+              can get a synchronized wrapper via the
+              <code class="inline-code">synchronizedWrapper()</code> in either class.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">freemarker.utility.ExtendedList</code> and
+              <code class="inline-code">freemarker.utility.ExtendedHash</code> classes were
+              removed, since all of the extra keys that it defined are now
+              available using the appropriate &#39;?&#39; built-in operation, i.e.
+              <code class="inline-code">myHash?keys</code> or <code class="inline-code">myList?size</code>
+              or <code class="inline-code">myList?last</code>.</p>
+            </li>
+
+            <li>
+              <p>There is a method in
+              <code class="inline-code">java.freemarker.Configuration</code> named
+              <code class="inline-code">setDebugMode()</code> which allows you to decide
+              whether stack traces are simply output to the web client (the
+              best situation in development) or thrown back to the caller to
+              be handled more gracefully (the best situation in
+              production).</p>
+            </li>
+
+            <li>
+              <p>There is a flag that can be set to turn on a processing
+              mode that is more backward-compatible with FreeMarker Classic.
+              This is off by default, but you can set it via
+              <code class="inline-code">Template.setClassicCompatibility(true)</code>. What
+              this does is that it allows scalars to be treated as a
+              single-item list in a list directive. Also, it allows somewhat
+              more looseness about types. In FreeMarker 1.x, <code class="inline-code">&lt;#if
+              x==&quot;1&quot;&gt;</code> and <code class="inline-code">&lt;#if x==1&gt;</code>
+              were in fact equivalent. This meant that legacy templates might
+              tend to be slack about this. If classic compatibility is not
+              set, an attempt to compare the string &quot;1&quot; with the number 1 will
+              result in an exception being thrown. (Note that it is preferable
+              to get your templates working without the backward compatibility
+              flag, since it usually will require only minor changes. However,
+              for people with a lot of templates and no time to check over
+              them, this flag may be of use.)</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_0RC3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0RC1.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_0RC3.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_0RC3.html b/builds/2.3.26-nightly/versions_2_0RC3.html
new file mode 100644
index 0000000..a378259
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_0RC3.html
@@ -0,0 +1,138 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.0 RC3 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.0 RC3">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_0RC3.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_0RC3.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_0RC3.html"><span itemprop="name">2.0 RC3</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.0 RC3"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_0.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0RC2.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_0RC3" itemprop="headline">2.0 RC3</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_285" data-menu-target="autoid_285">Bug Fixes</a></li><li><a class="page-menu-link" href="#autoid_286" data-menu-target="autoid_286">Changes to the Template Language</a></li><li><a class="page-menu-link" href="#autoid_287" data-menu-target="autoid_287">API changes</a></li></ul> </div><p>FreeMarker 2.0 RC3 was released on 11 April 2002. This release
+        was primarily devoted to fixing bugs that were reported in RC2.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_285">Bug Fixes</h2>
+
+
+          <ul>
+            <li>
+              <p>Variables defined in an &lt;include...&gt; were not
+              available in the enclosing page. This has been fixed.</p>
+            </li>
+
+            <li>
+              <p>The JavaCC parser was not configured to handle Unicode
+              input correctly. Now, Unicode support is working.</p>
+            </li>
+
+            <li>
+              <p>There was a bug when comparing a number with null. It
+              should have returned false, but threw an exception instead. This
+              has been fixed.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_286">Changes to the Template Language</h2>
+
+
+          <ul>
+            <li>
+              <p>The syntax of the include directive has changed. To
+              indicate an unparsed include file, you do as follows:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;include &quot;included.html&quot; ; parsed=&quot;n&quot; &gt;</pre></div>
+
+              <p>You can also indicate the encoding of the included file
+              this way:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-template"> &lt;include &quot;included.html&quot; ; encoding=&quot;ISO-8859-5&quot;&gt;</pre></div>
+            </li>
+
+            <li>
+              <p>The built-in myString?trim was added for trimming the
+              leading and trailing white-space from strings.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_287">API changes</h2>
+
+
+          <ul>
+            <li>
+              <p>The TemplateEventAdapter machinery was taken out. This was
+              never set up in a very useful manner and we anticipate that
+              version 2.1 will have more complete support for logging
+              events.</p>
+            </li>
+
+            <li>
+              <p>The template caching mechanism was streamlined and
+              simplified.</p>
+            </li>
+
+            <li>
+              <p>The FileTemplateCache can now be configured to load files
+              relative to a class loader, using the Class.getResource() call.
+              This allows templates to be bundled up in .jar files or in a
+              .war file for easy deployment of web-based apps.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_0.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_0RC2.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[14/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_1.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_1.html b/builds/2.3.26-nightly/versions_2_1.html
new file mode 100644
index 0000000..ea18477
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_1.html
@@ -0,0 +1,539 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.1 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.1">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_1.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_1.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_1.html"><span itemprop="name">2.1</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.1"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_1_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_01.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_1" itemprop="headline">2.1</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_277" data-menu-target="autoid_277">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="#autoid_278" data-menu-target="autoid_278">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_279" data-menu-target="autoid_279">Other changes</a></li><li><a class="page-menu-link" href="#autoid_280" data-menu-target="autoid_280">Differences between the RC1 and final release</a></li></ul> </div><p>Date of release: 2002-10-17</p><p>Templates and the Java API are <em>not</em> fully
+        compatible with 2.0 releases. You will need to revisit existing code
+        and templates, or use 2.1 for new projects only. Sorry for this
+        inconvenience; FreeMarker has undergone some revolutionary changes
+        since the 1.x series. We hope things will soon be sufficiently mature
+        for us to offer (almost) backward-compatible releases. Note that there
+        is a backward-compatibility flag that can be set via
+        <code class="inline-code">Configuration.setClassicCompatible(true)</code> that
+        causes the new FreeMarker to emulate most of FreeMarker 1.x&#39;s
+        quirks.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_277">Changes in FTL (FreeMarker Template Language)</h2>
+
+
+          <ul>
+            <li>
+              <p>More strict, reveals accidental mistakes in the templates,
+              prevents showing incorrect information when something went
+              wrong:</p>
+
+              <ul>
+                <li>
+                  <p>An attempt to access an undefined variable causes an
+                  error and aborts template processing (by default at least;
+                  see later). In earlier versions undefined variables were
+                  silently treated as empty (zero-length) strings. However,
+                  you can handle undefined variables in the template with some
+                  new built-ins. For example,
+                  <code class="inline-code">${foo?if_exists}</code> is equivalent with the
+                  <code class="inline-code">${foo}</code> of earlier versions. Another way
+                  of looking at this is that null values no longer exist from
+                  the viewpoint of a template designer. Anything referenced
+                  must be a defined variable.</p>
+
+                  <p>Note however that the programmer can configure
+                  FreeMarker so that it ignores certain errors (say, undefined
+                  variables), and continues template processing by skipping
+                  the problematic part. This "loose" policy
+                  should be used only for sites that don&#39;t show critical
+                  information.</p>
+                </li>
+
+                <li>
+                  <p>New variable type: <a href="gloss.html#gloss.boolean">boolean</a>. Conditions in
+                  <code class="inline-code">if</code>/<code class="inline-code">elseif</code> and operands
+                  of logical operators (<code class="inline-code">&amp;&amp;</code>,
+                  <code class="inline-code">||</code>, <code class="inline-code">!</code>) must be
+                  booleans. Empty strings are no longer treated as a logical
+                  false.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Local and global variables. More info: <a href="dgui_misc_var.html">Template Author&#39;s Guide/Miscellaneous/Defining variables in the template</a></p>
+
+              <ul>
+                <li>
+                  <p>Local variables for macros. You can create/replace
+                  local variables in macro definition bodies with the <a href="ref_directive_local.html#ref.directive.local"><code>local</code>
+                  directive</a></p>
+                </li>
+
+                <li>
+                  <p>You can create/replace global (non-local) variables
+                  with the <a href="ref_directive_global.html#ref.directive.global"><code>global</code>
+                  directive</a></p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>The <a href="ref_directive_include.html#ref.directive.include"><code>include</code></a>
+              directive now by default treats the passed filename as being
+              relative to the including template&#39;s path. To specify absolute
+              template paths, you now have to prepend them with a
+              slash.</p>
+            </li>
+
+            <li>
+              <p>The <a href="ref_directive_include.html#ref.directive.include"><code>include</code></a>
+              directive can now use the <em>acquisition
+              algorithm</em> (familiar from the Zope system) to look up
+              the template to include. Basically, if a template is not found
+              where it is looked up first, it is looked up in parent
+              directories. This is however not a default behavior, rather it
+              is triggered by a new syntactic element.</p>
+            </li>
+
+            <li>
+              <p>Strict syntax mode: Allows you to generate arbitrary SGML
+              (XML) without worrying about clashes with FreeMarker directives.
+              For more information read: <a href="ref_depr_oldsyntax.html">Template Language Reference/Deprecated FTL constructs/Old FTL syntax</a></p>
+            </li>
+
+            <li>
+              <p>Terse comments: you can use <code class="inline-code">&lt;#--
+              <em class="code-color">...</em> --&gt;</code> instead of
+              <code class="inline-code">&lt;comment&gt;<em class="code-color">...</em>&lt;/comment&gt;</code></p>
+            </li>
+
+            <li>
+              <p>Directive that you can use to change the locale (and other
+              settings) inside the template: <a href="ref_directive_setting.html#ref.directive.setting"><code>setting</code></a></p>
+            </li>
+
+            <li>
+              <p>Directive to explicitly flush the output buffer: <a href="ref_directive_flush.html#ref.directive.flush"><code>flush</code></a></p>
+            </li>
+
+            <li>
+              <p>The top-level (root) hash is available via the variable
+              <code class="inline-code">root</code>, which is now a reserved name.</p>
+            </li>
+
+            <li>
+              <p>The misnamed <code class="inline-code">function</code> directive has
+              been renamed to <code class="inline-code">macro</code>.</p>
+            </li>
+
+            <li>
+              <p>String literals support various new <a href="dgui_template_exp.html#topic.escapeSequence">escape sequences</a>,
+              including UNICODE escapes
+              (<code class="inline-code">\x<em class="code-color">CODE</em></code>)</p>
+            </li>
+
+            <li>
+              <p>The <a href="ref_directive_compress.html#ref.directive.compress"><code>compress</code></a>
+              directive is now more conservative in removing line
+              breaks.</p>
+            </li>
+
+            <li>
+              <p>Built-in to capitalize the first word: <a href="ref_builtins_string.html#ref_builtin_cap_first"><code>cap_first</code></a></p>
+            </li>
+
+            <li>
+              <p>Built-in to generate on-the-fly templates: <a href="ref_builtins_expert.html#ref_builtin_interpret"><code>interpret</code></a></p>
+            </li>
+
+            <li>
+              <p><a href="ref_directive_stop.html#ref.directive.stop"><code>stop</code></a>
+              directive has an optional parameter to describe the reason of
+              termination</p>
+            </li>
+
+            <li>
+              <p>Better error messages.</p>
+            </li>
+
+            <li>
+              <p>New variable type: date. <em>Date support is
+              experimental. It can change substantially in the future. Keep
+              this in mind if you use it.</em></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_278">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><code class="inline-code">ObjectWrapper</code>: You can put
+              non-<code class="inline-code">TemplateModel</code> objects directly into
+              hashes, sequences and collections, and they will be
+              automatically wrapped with the appropriate
+              <code class="inline-code">TemplateModel</code> implementation. The API of
+              objects that are exposed to templates
+              (<code class="inline-code">Simple<em class="code-color">XXX</em></code>) has
+              been changed according to this, for example in
+              <code class="inline-code">SimpleHash</code> the old <code class="inline-code">put(String key,
+              TemplateModel value)</code> is now <code class="inline-code">put(String key,
+              Object object)</code>. Also, you can pass any kind of object
+              as data-model to <code class="inline-code">Template.process</code>. The
+              alternative reflection based <code class="inline-code">ObjectWrapper</code>
+              can expose the members of any Java object automatically for the
+              designer. More information: <a href="pgui_datamodel_objectWrapper.html">Object wrapping</a>,
+              <a href="pgui_misc_beanwrapper.html">Bean wrapper</a>, <a href="pgui_misc_jythonwrapper.html">Jython wrapper</a>.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">Configuration</code> object was introduced
+              as a central point to hold all your FreeMarker-related global
+              settings, as well as commonly used variables that you want to
+              have available from any template. Also it encapsulates the
+              template cache and can be used to load templates. For more
+              information read <a href="pgui_config.html">Programmer&#39;s Guide/The Configuration</a>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateLoader</code>: pluggable template
+              loader, separates caching from template loading</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateNumberModel</code>-s do not control
+              their formatting anymore. They just store the data (i.e. a
+              number). Number formatting is done by the FreeMarker core based
+              on the <code class="inline-code">locale</code> and
+              <code class="inline-code">number_format</code> settings. This logic applies to
+              the new experimental date type as well.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateBooleanModel</code> introduced: Only
+              objects that implements this interface can be used as a boolean
+              in true/false conditions. More info: <a href="pgui_datamodel_scalar.html">Programmer&#39;s Guide/The Data Model/Scalars</a></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateDateModel</code> introduced: objects
+              that implements this interface are recognized as dates and can
+              be locale-sensitively formatted. <em>Date support is
+              experimental in FreeMarker 2.1. It can change substantially in
+              the future. Keep this in mind if you use it.</em></p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">TemplateModelRoot</code> interface was
+              deprecated. As of FreeMarker 2.1, you can simply use any
+              instance of <code class="inline-code">TemplateHashModel</code> instead. This
+              actually is due to a significant architectural change. Variables
+              set or defined in a template are stored in a separate
+              <code class="inline-code">Environment</code> object that only exists while the
+              template is being rendered. Thus, the template doesn&#39;t modify
+              the root hash.</p>
+            </li>
+
+            <li>
+              <p>Changes to transformations</p>
+
+              <ul>
+                <li>
+                  <p>Completely rewritten
+                  <code class="inline-code">TemplateTransformModel</code> interface. More
+                  flexible, and does not impose output holding. More
+                  information: <a href="pgui_datamodel_directive.html">Programmer&#39;s Guide/The Data Model/Directives</a></p>
+                </li>
+
+                <li>
+                  <p>The <code class="inline-code">transform</code> directive now takes
+                  an optional set of key/value pairs. <code class="inline-code">&lt;transform
+                  myTransform;
+                  <em class="code-color">key1</em>=<em class="code-color">value1</em>,
+                  <em class="code-color">key2</em>=<em class="code-color">value2</em>
+                  <em class="code-color">...</em>&gt;</code>. More
+                  information: <a href="ref_depr_transform.html#ref.directive.transform"><code>transform</code>
+                  directive</a></p>
+                </li>
+
+                <li>
+                  <p>The transforms that ship with the FreeMarker core are
+                  now available by default to all templates - i.e.
+                  <code class="inline-code">&lt;transform html_escape&gt;</code> will invoke
+                  the
+                  <code class="inline-code">freemarker.template.utility.HtmlEscape</code>
+                  transform. More information: <a href="pgui_config_sharedvariables.html">Programmer&#39;s Guide/The Configuration/Shared variables</a></p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>User-defined <code class="inline-code">TemplateModel</code> objects now
+              can access the runtime environment (read and set variables, get
+              the current locale, etc.) using an
+              <code class="inline-code">Environment</code> instance, which can be obtained
+              by the static
+              <code class="inline-code">Environment.getCurrentEnvironment()</code> method.
+              As a result, <code class="inline-code">TemplateScalarModel.getAsString</code>
+              has been changed: it has no locale parameter.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateExceptionHandler</code>-s make it
+              possible to define your own rules on what to do when a runtime
+              error occurs (e.g. accessing a non existing variable) during
+              template processing. For example, you can abort template
+              processing (recommended for most sites), or skip the problematic
+              statement and continue template processing (similar to old
+              behavior). DebugMode has been removed, use
+              <code class="inline-code">TemplateExceptionHandler.DEBUG_HANDLER</code> or
+              <code class="inline-code">HTML_DEBUG_HANDLER</code> instead.</p>
+            </li>
+
+            <li>
+              <p>Logging: FreeMarker logs certain events (runtime errors
+              for example). For more information read <a href="pgui_misc_logging.html">Programmer&#39;s Guide/Miscellaneous/Logging</a>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">SimpleIterator</code> was removed, but we
+              provide a <code class="inline-code">TemplateCollectionModel</code>
+              implementation: <code class="inline-code">SimpleCollection</code>.</p>
+            </li>
+
+            <li>
+              <p>Arithmetic engine is pluggable
+              (<code class="inline-code">Configuration.setArithmeticEngine</code>). The core
+              distribution comes with two engines:
+              <code class="inline-code">ArithmeticEngine.BIGDECIMAL_ENGINE</code> (the
+              default) that converts all numbers to
+              <code class="inline-code">BigDecimal</code> and then operates on them, and
+              <code class="inline-code">ArithmeticEngine.CONSERVATIVE_ENGINE</code> that
+              uses (more-or-less) the widening conversions of Java language,
+              instead of converting everything to
+              <code class="inline-code">BigDecimal</code>.</p>
+            </li>
+
+            <li>
+              <p>Changes to <code class="inline-code">freemarker.ext.beans</code>
+              package: The JavaBeans adapter layer has suffered several major
+              changes. First, <code class="inline-code">BeansWrapper</code> is no longer a
+              static utility class - you can now create instances of it, and
+              every instance can have its own instance caching policy and
+              security settings. These security settings are also new - you
+              can now create JavaBeans wrappers that hide methods that are
+              considered unsafe or inappropriate in a templating environment.
+              By default, you can no longer call methods like
+              <code class="inline-code">System.exit()</code> from the template (although you
+              can manually turn off these safeguards). The
+              <code class="inline-code">StaticModel</code> and
+              <code class="inline-code">StaticModels</code> classes are gone; their
+              functionality is now replaced with the
+              <code class="inline-code">BeansWrapper.getStaticModels()</code> method.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.ext.jython</code> package:
+              FreeMarker can now directly use Jython objects as data-models
+              using the <a href="pgui_misc_jythonwrapper.html">Jython
+              wrapper</a>.</p>
+            </li>
+
+            <li>
+              <p>Changes to <code class="inline-code">freemarker.ext.jdom</code> package:
+              The package now uses the <em>Jaxen</em> package
+              instead of its predecessor, the
+              <em>werken.xpath</em> package to evaluate XPath
+              expressions. Since <em>Jaxen</em> is a successor to
+              <em>werken.xpath</em>, this can be considered to be
+              an upgrade. As a consequence, namespace prefixes are now
+              recognized in XPath expressions and the overall XPath
+              conformance is better.</p>
+            </li>
+
+            <li>
+              <p>Better error reporting: If the processing of a template is
+              aborted by a <code class="inline-code">TemplateException</code> being thrown,
+              or using a <code class="inline-code">&lt;#stop&gt;</code> directive,
+              FreeMarker will now output an execution trace with line and
+              column numbers relative to the template source.</p>
+            </li>
+
+            <li>
+              <p>The output is written to a simple
+              <code class="inline-code">Writer</code>; no more
+              <code class="inline-code">PrintWriter</code>. This redesign causes FreeMarker
+              to no longer swallow <code class="inline-code">IOException</code>s during
+              template processing.</p>
+            </li>
+
+            <li>
+              <p>Various API cleanups, primarily the removing of
+              superfluous constructor and method overloads.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_279">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Documentation has been rewritten from scratch</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_280">Differences between the RC1 and final release</h2>
+
+
+          <ul>
+            <li>
+              <p>Added the support for date models and locale-sensitive
+              date formatting. <em>Date support is experimental in
+              FreeMarker 2.1. It can change substantially in the future. Keep
+              this in mind if you use it.</em></p>
+            </li>
+
+            <li>
+              <p>Added the <code class="inline-code">default</code> built-in which makes
+              it possible to specify default values for undefined
+              expressions.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">SimpleIterator</code> has been removed,
+              <code class="inline-code">SimpleCollection</code> has been introduced</p>
+            </li>
+
+            <li>
+              <p>Arithmetic engine is pluggable. The core now contains two
+              arithmetic engines:
+              <code class="inline-code">ArithmeticEngine.BIGDECIMAL_ENGINE</code> and
+              <code class="inline-code">ArithmeticEngine.CONSERVATIVE_ENGINE</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">BeansWrapper</code> supports a new exposure
+              level: <code class="inline-code">EXPOSE_NOTHING</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Constants</code> interface was removed.
+              <code class="inline-code"><em class="code-color">...</em>_WRAPPER</code>
+              constants have been moved from <code class="inline-code">Constants</code> to
+              <code class="inline-code">ObjectWrapper</code>,
+              <code class="inline-code">EMPTY_STRING</code> constant was moved to
+              <code class="inline-code">TemplateScalarModel</code>,
+              <code class="inline-code">NOTHING</code> constant was moved to
+              <code class="inline-code">TemplateModel</code>, <code class="inline-code">TRUE</code> and
+              <code class="inline-code">FALSE</code> constants were moved to
+              <code class="inline-code">TemplateBooleanModel</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">JAVABEANS_WRAPPER</code> was renamed to
+              <code class="inline-code">BEANS_WRAPPER</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Configuration.get</code> and
+              <code class="inline-code">put</code>, <code class="inline-code">putAll</code> were renamed
+              to <code class="inline-code">getSharedVariable</code> and
+              <code class="inline-code">setSharedVariable</code>,
+              <code class="inline-code">setAllSharedVariables</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Configuration.getClassicCompatibility</code>,
+              <code class="inline-code">setClassicCompatibility</code> were renamed to
+              <code class="inline-code">isClassicCompatible</code>,
+              <code class="inline-code">setClassicCompatible</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Template.process</code> method overloads with
+              <code class="inline-code">useReflection</code> parameter was removed. But now
+              we have <code class="inline-code">setObjectWrapper</code> method in the
+              <code class="inline-code">Configuration</code>, so you can set the preferred
+              root-object wrapper there.</p>
+            </li>
+
+            <li>
+              <p>Some superfluous method overloads were removed; these
+              changes are backward compatible with RC1</p>
+            </li>
+
+            <li>
+              <p>Various minor JavaDoc and Manual improvements</p>
+            </li>
+
+            <li>
+              <p>Bugfix: <code class="inline-code">include</code> directive has
+              calculated the base path of relative paths wrongly</p>
+            </li>
+
+            <li>
+              <p>Bugfix: We have accidentally used a J2SE 1.3 class, but
+              FreeMarker 2.1 must able to run on J2SE 1.2</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_1_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_01.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_1_1.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_1_1.html b/builds/2.3.26-nightly/versions_2_1_1.html
new file mode 100644
index 0000000..8c919ae
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_1_1.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.1.1 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.1.1">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_1_1.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_1_1.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_1_1.html"><span itemprop="name">2.1.1</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.1.1"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_1_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_1_1" itemprop="headline">2.1.1</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_275" data-menu-target="autoid_275">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="#autoid_276" data-menu-target="autoid_276">Changes on the Java side</a></li></ul> </div><p>Date of release: 2002-11-04</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_275">Changes in FTL (FreeMarker Template Language)</h2>
+
+
+          <ul>
+            <li>
+              <p>Multi-type variables that are both string and number or
+              string and date are now output using their number or date value
+              instead of the string value when used in the
+              <code class="inline-code">${...}</code> interpolation. This practically makes
+              the string part of a string/number or a string/date variables
+              useless.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: operator "or" (<code class="inline-code">||</code>)
+              worked wrongly when its left operand was a composite expression
+              (e.g., the second <code class="inline-code">||</code> in <code class="inline-code">false ||
+              true || false</code>; this was evaluated to
+              <code class="inline-code">false</code>, but it should be
+              <code class="inline-code">true</code>)</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Less-than sign inside comments confused the FTL
+              parser (e.g. <code class="inline-code">&lt;#-- blah &lt; blah --&gt;</code>);
+              it commented out everything after the problematic
+              comment.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Comparing two numerical constants (e.g. <code class="inline-code">3
+              == 3</code>) caused internal error in the FTL parser, and
+              aborted template processing with error.</p>
+            </li>
+
+            <li>
+              <p>Experimental date/time type support was removed, since it
+              seems that this initial implementation was misguided. FreeMarker
+              2.2 will certainly support data/time.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_276">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: <code class="inline-code">Number</code>s wrapped with
+              <code class="inline-code">BEANS_WRAPPER</code> was displayed with the
+              <code class="inline-code">toString()</code> method of wrapped object. Now they
+              are rendered according to the <code class="inline-code">number_format</code>
+              setting, because multi-type variables that are both string and
+              number are now output using their number value instead of the
+              string value.</p>
+            </li>
+
+            <li>
+              <p>Experimental date/time type support was removed, since it
+              seems that this initial implementation was misguided. FreeMarker
+              2.2 will certainly support data/time.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_1_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_1_2.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_1_2.html b/builds/2.3.26-nightly/versions_2_1_2.html
new file mode 100644
index 0000000..81203aa
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_1_2.html
@@ -0,0 +1,130 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.1.2 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.1.2">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_1_2.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_1_2.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_1_2.html"><span itemprop="name">2.1.2</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.1.2"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_1_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_1.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_1_2" itemprop="headline">2.1.2</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_273" data-menu-target="autoid_273">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="#autoid_274" data-menu-target="autoid_274">Other changes</a></li></ul> </div><p>Date of release: 2002-11-28</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_273">Changes in FTL (FreeMarker Template Language)</h2>
+
+
+          <ul>
+            <li>
+              <p><code class="inline-code">FreeMarkerServlet</code> now has a setting for
+              the <code class="inline-code">Content-Type</code> header of the response,
+              defaulting to <code class="inline-code">text/html</code>. Previously it set no
+              content type, which made it not play nicely when integrated with
+              software that expected it (i.e. OpenSymphony SiteMesh).</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">FreeMarkerServlet</code> now works correctly
+              when mapped to an URL extension instead of URL path
+              prefix.</p>
+            </li>
+
+            <li>
+              <p>You can emulate <code class="inline-code">include</code> directive call
+              within Java code by calling
+              <code class="inline-code">Environment.include(<em class="code-color">templateName</em>,
+              <em class="code-color">charset</em>,
+              <em class="code-color">parse</em>)</code>.</p>
+            </li>
+          </ul>
+
+          <ul>
+            <li>
+              <p>Bugfix: When <code class="inline-code">Template.process()</code> was
+              called from another template processing, it set
+              <code class="inline-code">currentEnvironment</code> to null when it returned,
+              thus crashed the parent template processing.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: the <code class="inline-code">_descendant</code> key in JDOM
+              support incorrectly left the document root element out of the
+              result when applied to a Document node.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: because we incorrectly assumed certain behavior of
+              JDK 1.4 Beans introspector, calls to public interface methods on
+              non-public classes that implement the interface were causing
+              exceptions on JDK 1.4</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_274">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Various minor supplements to the manual.</p>
+            </li>
+
+            <li>
+              <p>Documentation HTML pages don&#39;t try to load the SourceForge
+              logo from the Internet anymore.</p>
+            </li>
+
+            <li>
+              <p>The default ant target is <code class="inline-code">jar</code>, not
+              <code class="inline-code">dist</code>.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_1_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_1.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_1_3.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_1_3.html b/builds/2.3.26-nightly/versions_2_1_3.html
new file mode 100644
index 0000000..a7e5335
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_1_3.html
@@ -0,0 +1,94 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.1.3 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.1.3">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_1_3.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_1_3.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_1_3.html"><span itemprop="name">2.1.3</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.1.3"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_1_4.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_2.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_1_3" itemprop="headline">2.1.3</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_271" data-menu-target="autoid_271">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_272" data-menu-target="autoid_272">Other changes</a></li></ul> </div><p>Date of release: 2002-12-09</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_271">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: <code class="inline-code">cap_first</code> built-in did what
+              <code class="inline-code">double</code> built-in does.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_272">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>The official extension of FreeMarker template files is
+              <code class="inline-code">ftl</code> from now, not <code class="inline-code">fm</code>.
+              (This is the name of the template language; FTL, for FreeMarker
+              Template Language.) Of course you can use any extensions, since
+              FreeMarker does not deal with the file extension. But we
+              recommend <code class="inline-code">ftl</code> extension as default.</p>
+            </li>
+
+            <li>
+              <p>Web application examples got tweaked again, as under JDK
+              1.4 a class in an explicit (named) package can no longer import
+              classes from the default (unnamed) package. Our webapp example
+              was using classes in the default package, they are now moved
+              into named packages.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_1_4.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_2.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_1_4.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_1_4.html b/builds/2.3.26-nightly/versions_2_1_4.html
new file mode 100644
index 0000000..80de0ac
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_1_4.html
@@ -0,0 +1,73 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.1.4 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.1.4">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_1_4.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_1_4.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_1_4.html"><span itemprop="name">2.1.4</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.1.4"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_1_5.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_3.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_1_4" itemprop="headline">2.1.4</h1>
+</div></div><p>Date of release: 2002-12-26</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_270">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: Log4J is now found when automatically discovering
+              the logging library to use.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: An exception is no longer thrown in the static
+              initializer of the <code class="inline-code">Configuration</code> if the
+              directory specified in the <code class="inline-code">&quot;user.dir&quot;</code> system
+              property is not readable.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_1_5.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_3.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_1_5.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_1_5.html b/builds/2.3.26-nightly/versions_2_1_5.html
new file mode 100644
index 0000000..0277751
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_1_5.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.1.5 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.1.5">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_1_5.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_1_5.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_1_5.html"><span itemprop="name">2.1.5</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.1.5"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_4.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_1_5" itemprop="headline">2.1.5</h1>
+</div></div><p>Date of release: 2003-02-08</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_269">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: Fixed a bug that forced the cache to frequently
+              reload templates accessed through URL and multi template
+              loaders: Templates loaded with
+              <code class="inline-code">URLTemplateLoader</code> subclasses and
+              <code class="inline-code">MultiTemplateLoader</code> was removed from the
+              template cache after the template update delay has elapsed (5
+              seconds by default) even if the template file was unchanged.
+              This can cause lot of extra load for a high-traffic server if
+              you have many templates or if the template update delay was set
+              to 0 second.)</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Many anomalies in the
+              <code class="inline-code">JythonWrapper</code> were resolved, making the
+              integration with Jython much smoother: Jython wrapper can now
+              wrap arbitrary Java objects, not only
+              <code class="inline-code">PyObject</code>-s. If an object is passed to the
+              wrapper that is neither a <code class="inline-code">TemplateModel</code>, nor
+              a <code class="inline-code">PyObject</code>, it is first coerced into a
+              <code class="inline-code">PyObject</code> using Jython&#39;s own wrapping
+              machinery, and then wrapped into a
+              <code class="inline-code">TemplateModel</code> as any other
+              <code class="inline-code">PyObject</code>.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_4.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[41/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_quickstart_basics.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_quickstart_basics.html b/builds/2.3.26-nightly/dgui_quickstart_basics.html
new file mode 100644
index 0000000..be35670
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_quickstart_basics.html
@@ -0,0 +1,138 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Template + data-model = output - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Template + data-model = output">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_quickstart_basics.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_quickstart_basics.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3"
  itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_quickstart_basics.html"><span itemprop="name">Template + data-model = output</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Getting Started","Template + data-model = output"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_quickstart.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart_datamodel.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_quickstart_basics" itemprop="headline">Template + data-model = output</h1>
+</div></div><p>Let&#39;s assume that you need a HTML page on a website, similar to
+        this:</p>
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Welcome!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h1&gt;Welcome <strong>John Doe</strong>!&lt;/h1&gt;
+  &lt;p&gt;Our latest product:
+  &lt;a href=&quot;<strong>products/greenmouse.html</strong>&quot;&gt;<strong>green mouse</strong>&lt;/a&gt;!
+&lt;/body&gt;
+&lt;/html&gt;</pre></div><p>But the user&#39;s name (&quot;John Doe&quot; above) depends on who the
+        logged-in user is, and the latest product information should come from
+        a database. Because this data changes, you cannot you cannot use
+        static HTML. Instead, you can use a <strong>template</strong> of the desired output. The template is
+        the same as the static HTML would be, except that it contains some
+        instructions to FreeMarker that makes it dynamic:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template"><a name="example.first"></a>&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Welcome!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h1&gt;Welcome <strong>${user}</strong>!&lt;/h1&gt;
+  &lt;p&gt;Our latest product:
+  &lt;a href=&quot;<strong>${latestProduct.url}</strong>&quot;&gt;<strong>${latestProduct.name}</strong>&lt;/a&gt;!
+&lt;/body&gt;
+&lt;/html&gt;</pre></div><p>The template is stored on the Web server, usually just like the
+        static HTML page would be. But whenever someone visits this page,
+        FreeMarker will step in and transform the template on-the-fly to plain
+        HTML by replacing the
+        <code class="inline-code">${<em class="code-color">...</em>}</code>-s with up-to-date
+        content, and send the result to the visitor&#39;s Web browser. So the
+        visitor&#39;s Web browser will receive something like the first example
+        HTML (i.e., plain HTML without FreeMarker instructions), and it will
+        not perceive that FreeMarker is used on the server. (Of course, the
+        template file stored on the Web server is not changed by this; the
+        substitutions only appear in the Web server&#39;s response.)</p><p>Note that the template doesn&#39;t contain the programming logic to
+        find out who the current visitor is, or to query the database to get
+        the latest product. The data to be displayed is prepared outside
+        FreeMarker, usually by parts written in some "real"
+        programming language like Java. The template author needn&#39;t know how
+        these values were calculated. In fact, the way these values are
+        calculated can be completely changed while the templates can remain
+        exactly the same, and also, the look of the page can be completely
+        changed without touching anything but the template. This separation of
+        presentation logic and business logic can be especially useful when
+        the template authors (designers) and the programmers are different
+        individuals, but also helps managing application complexity if they
+        are the same person. Keeping templates focused on presentation issues
+        (visual design, layout and formatting) is a key for using template
+        engines like FreeMarker efficiently.</p><p>The totality of data that was prepared for the template
+        is called the <strong>data-model</strong>. As far as
+        the template author is concerned, the data-model is a tree-like
+        structure (like folders and files on your hard disk), which, in this
+        case, could be visualized as:</p>
+
+<div class="code-wrapper"><pre class="code-block code-data-model">(root)
+  |
+  +- <strong>user</strong> = &quot;Big Joe&quot;
+  |
+  +- <strong>latestProduct</strong>
+      |
+      +- <strong>url</strong> = &quot;products/greenmouse.html&quot;
+      |
+      +- <strong>name</strong> = &quot;green mouse&quot;</pre></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>The above is just a visualization; the data-model is not in a
+          textual format, it&#39;s from Java objects. For the Java programmers,
+          the root is perhaps a Java object with <code class="inline-code">getUser()</code>
+          and <code class="inline-code">getLatestProduct()</code> methods, or maybe a Java
+          <code class="inline-code">Map</code> with <code class="inline-code">&quot;user&quot;</code> and
+          <code class="inline-code">&quot;latestProducts&quot;</code> keys. Similarly,
+          <code class="inline-code">latestProduct</code> is perhaps a Java Object with
+          <code class="inline-code">getUrl()</code> and <code class="inline-code">getName()</code>
+          methods.</p>
+          </div>
+<p>Earlier, you have picked values from this data-model, with the
+        <code class="inline-code">user</code> and <code class="inline-code">latestProduct.name</code>
+        expressions. If we go on with the analogy that the data model is like
+        a file system, then "(root)" and
+        <code class="inline-code">latestProduct</code> correspond to directories (folders),
+        and <code class="inline-code">user</code>, <code class="inline-code">url</code> and
+        <code class="inline-code">name</code> are files in those directories.</p><p>To recapitulate, a template and a data-model is needed for
+        FreeMarker to generate the output (like the HTML shown first):</p><p><span class="marked-template">Template</span> + <span class="marked-data-model">data-model</span> = <span class="marked-output">output</span></p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_quickstart.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart_datamodel.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_quickstart_datamodel.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_quickstart_datamodel.html b/builds/2.3.26-nightly/dgui_quickstart_datamodel.html
new file mode 100644
index 0000000..5f5b57e
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_quickstart_datamodel.html
@@ -0,0 +1,199 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The data-model at a glance - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The data-model at a glance">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_quickstart_datamodel.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_quickstart_datamodel.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3"
  itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_quickstart_datamodel.html"><span itemprop="name">The data-model at a glance</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Getting Started","The data-model at a glance"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_quickstart_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart_template.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_quickstart_datamodel" itemprop="headline">The data-model at a glance</h1>
+</div></div><p>As you have seen, the data-model is basically a tree. This tree
+        can be arbitrarily complicated and deep, for example:</p>
+
+<div class="code-wrapper"><pre class="code-block code-data-model"><a name="example.qStart.dataModelWithHashes"></a>(root)
+  |
+  +- animals
+  |   |
+  |   +- mouse
+  |   |   |
+  |   |   +- size = &quot;small&quot;
+  |   |   |
+  |   |   +- price = 50
+  |   |
+  |   +- elephant
+  |   |   |
+  |   |   +- size = &quot;large&quot;
+  |   |   |
+  |   |   +- price = 5000
+  |   |
+  |   +- python
+  |       |
+  |       +- size = &quot;medium&quot;
+  |       |
+  |       +- price = 4999
+  |
+  +- message = &quot;It is a test&quot;
+  |
+  +- misc
+      |
+      +- foo = &quot;Something&quot;</pre></div><p>The variables that act like directories (the root,
+        <code class="inline-code">animals</code>, <code class="inline-code">mouse</code>,
+        <code class="inline-code">elephant</code>, <code class="inline-code">python</code>,
+        <code class="inline-code">misc</code>) are called <strong>hashes</strong>. Hashes store other variables (the so
+        called <a name="topic.dataModel.subVar"></a><em>sub
+        variables</em>) by a lookup name (e.g., "animals",
+        "mouse" or "price").</p><p>The variables that store a single value
+        (<code class="inline-code">size</code>, <code class="inline-code">price</code>,
+        <code class="inline-code">message</code> and <code class="inline-code">foo</code>) are called
+        <strong>scalars</strong>.</p><p><a name="topic.qStart.accessVariables"></a>When you want to
+        use a subvariable in a template, you specify its path from the root,
+        and separate the steps with dots. To access the
+        <code class="inline-code">price</code> of a <code class="inline-code">mouse</code>, you start from
+        the root and go into <code class="inline-code">animals</code>, and then go into
+        <code class="inline-code">mouse</code> then go into <code class="inline-code">price</code>. So you
+        write <code class="inline-code">animals.mouse.price</code>.</p><p>Another important kind of variables are <strong>sequences</strong>. They store subvariables like hashes,
+        but here subvariables doesn&#39;t have a name, they are just items in a
+        list. For example, in this data-model, <code class="inline-code">animals</code> and
+        <code class="inline-code">misc.fruits</code> are sequences:</p>
+
+<div class="code-wrapper"><pre class="code-block code-data-model"><a name="example.qStart.dataModelWithSequences"></a>(root)
+  |
+  +- animals
+  |   |
+  |   +- (1st)
+  |   |   |
+  |   |   +- name = &quot;mouse&quot;
+  |   |   |
+  |   |   +- size = &quot;small&quot;
+  |   |   |
+  |   |   +- price = 50
+  |   |
+  |   +- (2nd)
+  |   |   |
+  |   |   +- name = &quot;elephant&quot;
+  |   |   |
+  |   |   +- size = &quot;large&quot;
+  |   |   |
+  |   |   +- price = 5000
+  |   |
+  |   +- (3rd)
+  |       |
+  |       +- name = &quot;python&quot;
+  |       |
+  |       +- size = &quot;medium&quot;
+  |       |
+  |       +- price = 4999
+  |
+  +- misc
+      |
+      +- fruits
+          |
+          +- (1st) = &quot;orange&quot;
+          |
+          +- (2nd) = &quot;banana&quot;</pre></div><p>To access a subvariable of a sequence you use a numerical index
+        in square brackets. Indexes start from 0 (it&#39;s a programmer tradition
+        to start with 0), thus the index of the 1st item is 0, the index of
+        the 2nd item is 1, and so on. So to get the name of the first animal
+        you write <code class="inline-code">animals[0].name</code>. To get the second item
+        in <code class="inline-code">misc.fruits</code> (the string
+        <code class="inline-code">&quot;banana&quot;</code>) you write
+        <code class="inline-code">misc.fruits[1]</code>. (In practice, you usually just walk
+        through sequences in order, not caring about the index, but that will
+        be <a href="dgui_quickstart_template.html#topic.tutorial.list">shown later</a>.)</p><p>Scalars can be further divided into these categories:</p><ul>
+          <li>
+            <p>String: Text, that is, an arbitrary sequence of characters
+            such as &#39;&#39;m&#39;&#39;, &#39;&#39;o&#39;&#39;, &#39;&#39;u&#39;&#39;, &#39;&#39;s&#39;&#39;, &#39;&#39;e&#39;&#39; above. For example the
+            <code class="inline-code">name</code>-s and <code class="inline-code">size</code>-s are
+            strings above.</p>
+          </li>
+
+          <li>
+            <p>Number: It&#39;s a numerical value, like the
+            <code class="inline-code">price</code>-s above. The string
+            <code class="inline-code">&quot;50&quot;</code> and the number <code class="inline-code">50</code> are
+            two totally different things in FreeMarker. The former is just a
+            sequence of two characters (which happens to be readable as a
+            number for humans), while the latter is a numerical value that you
+            can use in arithmetical calculations.</p>
+          </li>
+
+          <li>
+            <p>Date-like: Either a date-time (stores a date with time of
+            the day), or a date (no time of day), or a time (time of day, no
+            date).</p>
+          </li>
+
+          <li>
+            <p>Boolean: A true/false (yes/no, on/off, etc.) thing. Like
+            animals could have a <code class="inline-code">protected</code> subvariable,
+            which store if the animal is protected or not.</p>
+          </li>
+        </ul><p>Summary:</p><ul>
+          <li>
+            <p>The data-model can be visualized as a tree.</p>
+          </li>
+
+          <li>
+            <p>Scalars store a single value. The value can be a string or a
+            number or a date-time/date/time or a boolean.</p>
+          </li>
+
+          <li>
+            <p>Hashes are containers that store other variables and
+            associate them with a unique lookup name.</p>
+          </li>
+
+          <li>
+            <p>Sequences are containers that store other variables in an
+            ordered sequence. The stored variables can be retrieved via their
+            numerical index, starting from 0.</p>
+          </li>
+        </ul>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>There are other, more advanced value types that we don&#39;t cover
+          here, such as methods and directives.</p>
+          </div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_quickstart_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart_template.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_quickstart_template.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_quickstart_template.html b/builds/2.3.26-nightly/dgui_quickstart_template.html
new file mode 100644
index 0000000..9626066
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_quickstart_template.html
@@ -0,0 +1,707 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The template at a glance - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The template at a glance">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_quickstart_template.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_quickstart_template.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3"
  itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_quickstart_template.html"><span itemprop="name">The template at a glance</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Getting Started","The template at a glance"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_quickstart_datamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_datamodel.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_quickstart_template" itemprop="headline">The template at a glance</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_2" data-menu-target="autoid_2">Some basic directives</a><ul><li><a class="page-menu-link" href="#autoid_3" data-menu-target="autoid_3">The if directive</a></li><li><a class="page-menu-link" href="#autoid_4" data-menu-target="autoid_4">The list directive</a></li><li><a class="page-menu-link" href="#autoid_5" data-menu-target="autoid_5">The include directive</a></li></ul></li><li><a class="page-menu-link" href="#autoid_6" data-menu-target="autoid_6">Using directives together</a></li><li><a class="page-menu-link" href="#autoid_7" data-menu-target="autoid_7">Using built-ins</a></li><li><a class="page-menu-link" href="#autoid_8" data-menu-target="autoid_8">Dealing with missing variables</a></li><li><a class="page-menu-link" href="#dgui_quickstart_template_autoescaping" data-menu-target="dgui_quickstart_template_autoescaping">Escaping for HTML, XML and other markup</a></li></ul> </div><p>The simplest template is a plain HTML file (or whateve
 r text
+        file; FreeMarker is not confined to HTML). When the client visits that
+        page, FreeMarker will send that HTML to the client as is. However if
+        you want that page to be more dynamic then you begin to put special
+        parts into the HTML which will be understood by FreeMarker:</p><ul>
+          <li>
+            <p><code class="inline-code">${<em class="code-color">...</em>}</code>:
+            FreeMarker will replace it in the output with the actual value of
+            the expression inside the curly brackets. They are called
+            <strong>interpolation</strong>s.</p>
+          </li>
+
+          <li>
+            <p><strong>FTL tags</strong> (for FreeMarker
+            Template Language tags): FTL tags are a bit similar to HTML tags,
+            but they are instructions to FreeMarker and will not be printed to
+            the output. The name of these tags start with
+            <code class="inline-code">#</code>. (User-defined FTL tags use
+            <code class="inline-code">@</code> instead of <code class="inline-code">#</code>, but they are
+            an advanced topic.)</p>
+          </li>
+
+          <li>
+            <p><strong>Comments:</strong> Comments are
+            similar to HTML comments, but they are delimited by
+            <code class="inline-code">&lt;#--</code> and <code class="inline-code">--&gt;</code>. Unlike
+            HTML comments, FTL comments won&#39;t get into the output (won&#39;t be
+            visible in the page source for the visitor), because FreeMarker
+            skips them.</p>
+          </li>
+        </ul><p>Anything not an FTL tag or an interpolation or comment is
+        considered static text and will not be interpreted by FreeMarker; it
+        is just printed to the output as-is.</p><p>With FTL tags you refer to so-called <strong>directives</strong>. This is the same kind of
+        relationship as between HTML tags (e.g.:
+        <code class="inline-code">&lt;table&gt;</code> and
+        <code class="inline-code">&lt;/table&gt;</code>) and HTML elements (e.g., the
+        <code class="inline-code">table</code> element) to which you refer to with the HTML
+        tags. (If you don&#39;t understand this difference then consider &quot;FTL tag&quot;
+        and &quot;directive&quot; synonyms.)</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>You can easily try writing templates on <a href="http://freemarker-online.kenshoo.com/">http://freemarker-online.kenshoo.com/</a></p>
+          </div>
+
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_2">Some basic directives</h2>
+
+
+          <p>Here we will look at some of the most commonly used directives
+          (<a href="ref_directives.html">but there are much
+          more</a>).</p>
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_3">The if directive</h3>
+
+
+            <p>With the <code class="inline-code">if</code> directive you can
+            conditionally skip a section of the template. For example, assume
+            that in the <a href="dgui_quickstart_basics.html#example.first">very first
+            example</a> you want to greet your boss, Big Joe, differently
+            than other users:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Welcome!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h1&gt;
+    Welcome ${user}<strong>&lt;#if user == &quot;Big Joe&quot;&gt;</strong>, our beloved leader<strong>&lt;/#if&gt;</strong>!
+  &lt;/h1&gt;
+  &lt;p&gt;Our latest product:
+  &lt;a href=&quot;${latestProduct.url}&quot;&gt;${latestProduct.name}&lt;/a&gt;!
+&lt;/body&gt;
+&lt;/html&gt;</pre></div>
+
+            <p>Here you have told FreeMarker that the ", our beloved
+            leader" should be there only if the value of the variable
+            <code class="inline-code">user</code> is equal to the string <code class="inline-code">&quot;Big
+            Joe&quot;</code>. In general, things between <code class="inline-code">&lt;#if
+            <em class="code-color">condition</em>&gt;</code> and
+            <code class="inline-code">&lt;/#if&gt;</code> tags are skipped if
+            <code class="inline-code"><em class="code-color">condition</em></code> is false
+            (the boolean value).</p>
+
+            <p>Let&#39;s look at
+            <code class="inline-code"><em class="code-color">condition</em></code> more
+            closely: <code class="inline-code">==</code> is an operator that tests if the
+            values at its left and right side are equivalent, and the results
+            is a boolean value, true or false accordingly. On the left side of
+            <code class="inline-code">==</code> I have <a href="dgui_quickstart_datamodel.html#topic.qStart.accessVariables">referenced a
+            variable</a> with the syntax that should be already familiar;
+            this will be replaced with the value of the variable. In general,
+            unquoted words inside directives or interpolations are treated as
+            references to variables. On the right side I have specified a
+            literal string. Literal strings in templates must
+            <em>always</em> be put inside quotation marks.</p>
+
+            <p>This will print "Pythons are free today!" if
+            their price is 0:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if animals.python.price == <strong>0</strong>&gt;
+  Pythons are free today!
+&lt;/#if&gt;</pre></div>
+
+            <p>Similarly as earlier when a string was specified directly,
+            here a number is specified directly (<code class="inline-code">0</code>). Note
+            that the number is <em>not</em> quoted. If you quoted
+            it (<code class="inline-code">&quot;0&quot;</code>), FreeMarker would misinterpret it as a
+            string literal, and because the price to compare it to is a
+            number, you get an error.</p>
+
+            <p>This will print &quot;Pythons are not free today!&quot; if their price
+            is not 0:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if animals.python.price <strong>!=</strong> 0&gt;
+  Pythons are not free today!
+&lt;/#if&gt;</pre></div>
+
+            <p>As you probably guessed, <code class="inline-code">!=</code> means
+            "not equals".</p>
+
+            <p>You can write things like this too (using <a href="dgui_quickstart_datamodel.html#example.qStart.dataModelWithHashes">the data-model used
+            to demonstrate hashes</a>):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if <strong>animals.python.price &lt; animals.elephant.price</strong>&gt;
+  Pythons are cheaper than elephants today.
+&lt;/#if&gt;</pre></div>
+
+            <p>With the <code class="inline-code">&lt;#else&gt;</code> tag you can
+            specify what to do if the condition is false. For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if animals.python.price &lt; animals.elephant.price&gt;
+  Pythons are cheaper than elephants today.
+<strong>&lt;#else&gt;</strong>
+  Pythons are not cheaper than elephants today.
+&lt;/#if&gt;</pre></div>
+
+            <p>This prints "Pythons are cheaper than elephants
+            today." if the price of python is less than the price of
+            elephant, or else it prints "Pythons are not cheaper than
+            elephants today." You can refine this further by using
+            <code class="inline-code">elseif</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if animals.python.price &lt; animals.elephant.price&gt;
+  Pythons are cheaper than elephants today.
+<strong>&lt;#elseif animals.elephant.price &lt; animals.python.price&gt;</strong>
+  Elephants are cheaper than pythons today.
+&lt;#else&gt;
+  Elephants and pythons cost the same today.
+&lt;/#if&gt;</pre></div>
+
+            <p>If you have a variable with boolean value (a true/false
+            thing) then you can use it directly as the
+            <code class="inline-code"><em class="code-color">condition</em></code> of
+            <code class="inline-code">if</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if animals.python.protected&gt;
+  Pythons are protected animals!
+&lt;/#if&gt;</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_4">The list directive</h3>
+
+
+            <a name="topic.tutorial.list"></a>
+
+            <p>This is needed when you want to list something. For example
+            if you merge this template with the <a href="dgui_quickstart_datamodel.html#example.qStart.dataModelWithSequences">data-model used
+            earlier to demonstrate sequences</a>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;p&gt;We have these animals:
+&lt;table border=1&gt;
+  <strong>&lt;#list animals as animal&gt;</strong>
+    &lt;tr&gt;&lt;td&gt;${<strong>animal</strong>.name}&lt;td&gt;${<strong>animal</strong>.price} Euros
+  <strong>&lt;/#list&gt;</strong>
+&lt;/table&gt;</pre></div>
+
+            <p>then the output will be:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;p&gt;We have these animals:
+&lt;table border=1&gt;
+    <strong>&lt;tr&gt;&lt;td&gt;mouse&lt;td&gt;50 Euros
+    &lt;tr&gt;&lt;td&gt;elephant&lt;td&gt;5000 Euros
+    &lt;tr&gt;&lt;td&gt;python&lt;td&gt;4999 Euros</strong>
+&lt;/table&gt;</pre></div>
+
+            <p>The generic form of the <code class="inline-code">list</code> directive
+            is:<code class="inline-code"> &lt;#list <em class="code-color">sequence</em> as
+            <em class="code-color">loopVariable</em>&gt;<em class="code-color">repeatThis</em>&lt;/#list&gt;</code>.
+            The <code class="inline-code"><em class="code-color">repeatThis</em></code> part
+            will be repeated for each item in the sequence that you have
+            specified with
+            <code class="inline-code"><em class="code-color">sequence</em></code>, one after
+            the other, starting from the first item. In all repetitions
+            <code class="inline-code"><em class="code-color">loopVariable</em></code> will
+            hold the value of the current item. This variable exists only
+            between the <code class="inline-code">&lt;#list
+            <em class="code-color">...</em>&gt;</code> and
+            <code class="inline-code">&lt;/#list&gt;</code> tags.</p>
+
+            <p>The <code class="inline-code"><em class="code-color">sequence</em></code>
+            can be any kind of expression. For example we could list the
+            fruits of the example data model like this:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;ul&gt;
+<strong>&lt;#list misc.fruits as fruit&gt;</strong>
+  &lt;li&gt;${fruit}
+<strong>&lt;/#list&gt;</strong>
+&lt;/ul&gt;</pre></div>
+
+            <p>The <code class="inline-code">misc.fruits</code> expression should be
+            familiar to you; it <a href="dgui_quickstart_datamodel.html#topic.qStart.accessVariables">references a variable in
+            the data-model</a>.</p>
+
+            <p>A problem with the above example is that if we happen to
+            have 0 fruits, it will still print an empty
+            <code class="inline-code">&lt;ul&gt;&lt;/ul&gt;</code> instead of just nothing.
+            To avoid that, you can use this form of
+            <code class="inline-code">list</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list misc.fruits&gt;
+  &lt;ul&gt;
+   <strong> &lt;#items as fruit&gt;</strong>
+      &lt;li&gt;${fruit}
+ <strong>   &lt;/#items&gt;</strong>
+  &lt;/ul&gt;
+&lt;/#list&gt;</pre></div>
+
+            <p>Here, the <code class="inline-code">list</code> directive represents the
+            listing as a whole, and only the part inside the
+            <code class="inline-code">items</code> directive is repeated for each fruit. If
+            we have 0 fruits, everything inside <code class="inline-code">list</code> is
+            skipped, hence we will not have <code class="inline-code">ul</code> tags in
+            case.</p>
+
+            <p>Another frequent listing-related task: let&#39;s list the fruits
+            separating them with something, like a comma:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;p&gt;Fruits: &lt;#list misc.fruits as fruit&gt;${fruit}<strong>&lt;#sep&gt;, </strong>&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;p&gt;Fruits: orange, banana</pre></div>
+
+            <p>The section covered by <code class="inline-code">sep</code> (which we
+            could be written like this too:
+            <code class="inline-code"><em class="code-color">...</em>&lt;#sep&gt;,
+            &lt;/#sep&gt;&lt;/#list&gt;</code>) will be only executed when
+            there will be a next item. Hence there&#39;s no comma after the last
+            fruit.</p>
+
+            <p>Here again, what if we have 0 fruits? Just printing
+            "Fruits:" and then nothing is awkward. A
+            <code class="inline-code">list</code>, just like an <code class="inline-code">if</code>, can
+            have an <code class="inline-code">else</code>, which is executed if there were 0
+            list items:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;p&gt;Fruits: &lt;#list misc.fruits as fruit&gt;${fruit}&lt;#sep&gt;, <strong>&lt;#else&gt;None</strong>&lt;/#list&gt;</pre></div>
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p>As a matter of fact, this simplistic example could be
+              written like this, but it uses language devices that are off
+              topic here:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;p&gt;Fruits: ${fruits?join(&quot;, &quot;, &quot;None&quot;)}</pre></div>
+              </div>
+
+
+            <p>All these directives (<code class="inline-code">list</code>,
+            <code class="inline-code">items</code>, <code class="inline-code">sep</code>,
+            <code class="inline-code">else</code>) can be used together:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list misc.fruits&gt;
+  &lt;p&gt;Fruits:
+  &lt;ul&gt;
+    &lt;#items as fruit&gt;
+      &lt;li&gt;${fruit}&lt;#sep&gt; and&lt;/#sep&gt;
+    &lt;/#items&gt;
+  &lt;/ul&gt;
+&lt;#else&gt;
+  &lt;p&gt;We have no fruits.
+&lt;/#list&gt;</pre></div>
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p>You can read more about these directives <a href="ref_directive_list.html">in the Reference</a>.</p>
+              </div>
+
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_5">The include directive</h3>
+
+
+            <p>With the <code class="inline-code">include</code> directive you can insert
+            the content of another file into the template.</p>
+
+            <p>Suppose you have to show the same copyright notice on
+            several pages. You can create a file that contains the copyright
+            notice only, and insert that file everywhere where you need that
+            copyright notice. Say, you store this copyright notice in
+            <code class="inline-code">copyright_footer.html</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;hr&gt;
+&lt;i&gt;
+Copyright (c) 2000 &lt;a href=&quot;http://www.acmee.com&quot;&gt;Acmee Inc&lt;/a&gt;,
+&lt;br&gt;
+All Rights Reserved.
+&lt;/i&gt;</pre></div>
+
+            <p>Whenever you need that file you simply insert it with the
+            <code class="inline-code">include</code> directive:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Test page&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h1&gt;Test page&lt;/h1&gt;
+  &lt;p&gt;Blah blah...
+<strong>  &lt;#include &quot;/copyright_footer.html&quot;&gt;</strong>
+&lt;/body&gt;
+&lt;/html&gt;</pre></div>
+
+            <p>and the output will be:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Test page&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h1&gt;Test page&lt;/h1&gt;
+  &lt;p&gt;Blah blah...
+<strong>&lt;hr&gt;
+&lt;i&gt;
+Copyright (c) 2000 &lt;a href=&quot;http://www.acmee.com&quot;&gt;Acmee Inc&lt;/a&gt;,
+&lt;br&gt;
+All Rights Reserved.
+&lt;/i&gt;</strong>
+&lt;/body&gt;
+&lt;/html&gt;</pre></div>
+
+            <p>If you change the <code class="inline-code">copyright_footer.html</code>,
+            then the visitor will see the new copyright notice on all
+            pages.</p>
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p>A much more powerful way of reusing snippets is using
+              macros, but that&#39;s an advanced topic <a href="dgui_misc_userdefdir.html">discussed later</a>.</p>
+              </div>
+
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_6">Using directives together</h2>
+
+
+          <p>You can use directives as many times on a page as you want,
+          and you can nest directives into each other freely. For example,
+          here you nest <code class="inline-code">if</code> directive inside a
+          <code class="inline-code">list</code> directive:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>&lt;#list animals as animal&gt;</strong>
+      &lt;div<strong>&lt;#if animal.protected&gt;</strong><strong> </strong>class=&quot;protected&quot;<strong>&lt;/#if&gt;</strong>&gt;
+        ${animal.name} for ${animal.price} Euros
+      &lt;/div&gt;
+<strong>&lt;/#list&gt;</strong></pre></div>
+
+          <p>Note that since FreeMarker does not interpret text outside FTL
+          tags, interpolations and FTL comments, above you could use the FTL
+          tags inside HTML attributes without problem.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_7">Using built-ins</h2>
+
+
+          <p>The so-called built-ins are like subvariables (or rather like
+          methods, if you know that Java term) that aren&#39;t coming from the
+          data-model, but added by FreeMarker to the values. In order to make
+          it clear where subvariables comes from, you have to use
+          <code class="inline-code">?</code> (question mark) instead of <code class="inline-code">.</code>
+          (dot) to access them. <a name="topic.commonlyUsedBuiltIns"></a>Examples with some of the most
+          commonly used built-ins:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">user?upper_case</code> gives the upper case
+              version of the value of <code class="inline-code">user</code> (like
+              "JOHN DOE" instead of "John
+              Doe")</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">animal.name?cap_first</code> give the
+              <code class="inline-code">animal.name</code> with its first letter converted
+              to upper case (like "Mouse" instead of
+              "mouse")</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">user?length</code> gives the number of
+              <em>characters</em> in the value of
+              <code class="inline-code">user</code> (8 for "John Doe")</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">animals?size</code> gives the number of
+              <em>items</em> in the <code class="inline-code">animals</code>
+              sequence (3 in our example data-model)</p>
+            </li>
+
+            <li>
+              <p>If you are between <code class="inline-code">&lt;#list animals as
+              animal&gt;</code> and the corresponding
+              <code class="inline-code">&lt;/#list&gt;</code> tag:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">animal?index</code> gives the 0-based
+                  index of <code class="inline-code">animal</code> inside
+                  <code class="inline-code">animals</code></p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">animal?counter</code> is like
+                  <code class="inline-code">index</code>, but gives the 1-based index</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">animal?item_parity</code> gives the
+                  strings "odd" or "even", depending
+                  on the current counter parity. This is commonly used for
+                  coloring rows with alternating colors, like in
+                  <code class="inline-code">&lt;td
+                  class=&quot;${animal?item_parity}Row&quot;&gt;</code>.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+
+          <p>Some built-ins require parameters to specify the behavior
+          more, for example:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">animal.protected?string(&quot;Y&quot;, &quot;N&quot;)</code>
+              return the string "Y" or "N" depending
+              on the boolean value of
+              <code class="inline-code">animal.protected</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">animal?item_cycle(&#39;lightRow&#39;,
+              &#39;darkRow&#39;)</code> is the more generic variant of
+              <code class="inline-code">item_parity</code> from earlier.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">fruits?join(&quot;, &quot;)</code>: converts the list to
+              a string by concatenating items, and inserting the parameter
+              separator between each items (like "orange,
+              banana")</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">user?starts_with(&quot;J&quot;)</code> gives boolean
+              true of false depending on if <code class="inline-code">user</code> starts
+              with the letter "J" or not.</p>
+            </li>
+          </ul>
+
+          <p>Built-in applications can be chained, like
+          <code class="inline-code">fruits?join(&quot;, &quot;)?upper_case</code> will first convert
+          the list a to a string, then converts it to upper case. (This is
+          just like you can chain <code class="inline-code">.</code>-s (dots) too.)</p>
+
+          <p>You can find the <a href="ref_builtins.html">full set of
+          built-ins in the Reference</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_8">Dealing with missing variables</h2>
+
+
+          <p>The data-model often has variables that are optional (i.e.,
+          sometimes missing). To spot some typical human mistakes, FreeMarker
+          doesn&#39;t tolerate references to missing variables unless you tell
+          explicitly what to do if the variable is missing. Here we will show
+          the two most typical ways of doing that.</p>
+
+          <p><span class="marked-for-programmers">Note for programmers: A
+          non-existent variable and a variable with <code class="inline-code">null</code>
+          value is the same for FreeMarker. The &quot;missing&quot; term used here
+          covers both cases.</span></p>
+
+          <p>Wherever you refer to a variable, you can specify a default
+          value for the case the variable is missing by following the variable
+          name with a <code class="inline-code">!</code> and the default value. Like in the
+          following example, when <code class="inline-code">user</code> is missing from data
+          model, the template will behave like if <code class="inline-code">user</code>&#39;s
+          value were the string <code class="inline-code">&quot;visitor&quot;</code>. (When
+          <code class="inline-code">user</code> isn&#39;t missing, this template behaves exactly
+          like with <code class="inline-code">${user}</code>):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;h1&gt;Welcome ${user<strong>!&quot;visitor&quot;</strong>}!&lt;/h1&gt;</pre></div>
+
+          <p>You can ask whether a variable isn&#39;t missing by putting
+          <code class="inline-code">??</code> after its name. Combining this with the
+          already introduced <code class="inline-code">if</code> directive you can skip the
+          whole greeting if the <code class="inline-code">user</code> variable is
+          missing:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if <strong>user??</strong>&gt;&lt;h1&gt;Welcome ${user}!&lt;/h1&gt;&lt;/#if&gt;</pre></div>
+
+          <p>Regarding variable accessing with multiple steps, like
+          <code class="inline-code">animals.python.price</code>, writing
+          <code class="inline-code">animals.python.price!0</code> is correct only if
+          <code class="inline-code">animals.python</code> is never missing and only the last
+          subvariable, <code class="inline-code">price</code>, is possibly missing (in which
+          case here we assume it&#39;s <code class="inline-code">0</code>). If
+          <code class="inline-code">animals</code> or <code class="inline-code">python</code> is missing,
+          the template processing will stop with an &quot;undefined variable&quot;
+          error. To prevent that, you have to write
+          <code class="inline-code">(animals.python.price)!0</code>. In that case the
+          expression will be <code class="inline-code">0</code> even if
+          <code class="inline-code">animals</code> or <code class="inline-code">python</code> is missing.
+          Same logic goes for <code class="inline-code">??</code>;
+          <code class="inline-code">animals.python.price??</code> versus
+          <code class="inline-code">(animals.python.price)??</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_quickstart_template_autoescaping">Escaping for HTML, XML and other markup</h2>
+
+
+          <p>Let&#39;s say the template generates HTML, and you insert values
+          with <code class="inline-code">${<em class="code-color">...</em>}</code> that are
+          plain text (not HTML), like company names coming from a database.
+          Characters that has special meaning in HTML must be
+          <em>escaped</em> in such values, like if
+          <code class="inline-code">name</code> is "Someone &amp; Co." then
+          <code class="inline-code">${name}</code> should print "Someone
+          <em>&amp;amp;</em> Co.".</p>
+
+          <p>FreeMarker automatically escapes all values printed with
+          <code class="inline-code">${<em class="code-color">...</em>}</code> <em>if
+          it&#39;s properly configured</em> (that&#39;s the responsibility of
+          the programmers; <a href="pgui_config_outputformatsautoesc.html">see here how</a>). The
+          recommended practice is using <code class="inline-code">ftlh</code> file extension
+          to activate HTML auto-escaping, and <code class="inline-code">ftlx</code> file
+          extension to activate XML auto-escaping.</p>
+
+          <p>You can try if auto-escaping is on like
+          <code class="inline-code">${&quot;&lt;&quot;}</code> and then checking the raw output (for
+          HTML or XML escaping). If it&#39;s not, and the configuration won&#39;t be
+          adjusted, add this as the very first line of the template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;HTML&quot;&gt;</pre></div>
+
+          <p>(Use <code class="inline-code">&quot;XML&quot;</code> instead of
+          <code class="inline-code">&quot;HTML&quot;</code> above if you generate XML.)</p>
+
+          <p>If the string value to print deliberately contains markup,
+          auto-escaping must be prevented like
+          <code class="inline-code">${<em class="code-color">value</em>?no_esc}</code>.</p>
+
+          <p>You can find out much more about auto-escaping and output
+          formats <a href="dgui_misc_autoescaping.html">here...</a></p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>The kind of automatic escaping described here requires at
+            least FreeMarker 2.3.24. If you have to use an earlier version,
+            use the deprecated <a href="ref_directive_escape.html"><code>escape</code>
+            directive</a> instead.</p>
+            </div>
+
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_quickstart_datamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_datamodel.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_template.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_template.html b/builds/2.3.26-nightly/dgui_template.html
new file mode 100644
index 0000000..16c53e0
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_template.html
@@ -0,0 +1,60 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The Template - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The Template">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_template.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_template.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template.html"><span itemprop="name">The Template</span></a></li></ul><div class="bookma
 rks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","The Template"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_datamodel_types.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template_overallstructure.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="dgui_template" itemprop="headline">The Template</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="dgui_template_overallstructure.html" data-menu-target="dgui_template_overallstructure">Overall structure</a></li><li><a class="page-menu-link" href="dgui_template_directives.html" data-menu-target="dgui_template_directives">Directives</a></li><li><a class="page-menu-link" href="dgui_template_exp.html" data-menu-target="dgui_template_exp">Expressions</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html" data-menu-target="dgui_template_valueinsertion">Interpolations</a></li></ul> </div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+        <p>It is assumed that you have already read the <a href="dgui_quickstart.html">Getting Started</a> and the <a href="dgui_datamodel.html">Values, Types</a>
+        chapter.</p>
+        </div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_datamodel_types.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template_overallstructure.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[13/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2.html b/builds/2.3.26-nightly/versions_2_2.html
new file mode 100644
index 0000000..a4854d3
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2.html
@@ -0,0 +1,1107 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2.html"><span itemprop="name">2.2</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_5.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2" itemprop="headline">2.2</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_260" data-menu-target="autoid_260">Non backward-compatible changes!</a></li><li><a class="page-menu-link" href="#autoid_261" data-menu-target="autoid_261">Changes in FTL (FreeMarker Template Language)</a></li><li><a class="page-menu-link" href="#autoid_262" data-menu-target="autoid_262">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_263" data-menu-target="autoid_263">Other changes</a></li><li><a class="page-menu-link" href="#autoid_264" data-menu-target="autoid_264">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="#autoid_265" data-menu-target="autoid_265">Differences between the final and RC2 releases</a></li><li><a class="page-menu-link" href="#autoid_266" data-menu-target="autoid_266">Differences between the RC2 and RC1 releases</a></li><li><a class="page-menu-link" href="#autoid_267" data-menu-target="autoid_267">Differences between the Preview 2 and RC1 r
 eleases</a></li><li><a class="page-menu-link" href="#autoid_268" data-menu-target="autoid_268">Differences between the Preview 1 and Preview 2
+releases</a></li></ul></li></ul> </div><p>Date of release: 2003-03-27</p><p>This release introduces some really important new features.
+        Unfortunately, evolution was painful again; we have a few non-backward
+        compatible changes (see below). Also, for those of you awaiting
+        desired native date/time type, sorry, it is still not here (because of
+        some internal chaos in the team... stand by, it&#39;s coming).</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_260">Non backward-compatible changes!</h2>
+
+
+          <ul>
+            <li>
+              <p>Macros are now plain variables. This means that if you are
+              unlucky and you have both a macro and another variable with the
+              same name, now the variable will overwrite the macro, so your
+              old template will malfunction. If you have a collection of
+              common macros, you should use the new <a href="dgui_misc_namespace.html">namespace feature</a> to
+              prevent accidental clashes with the variables used in the
+              templates.</p>
+            </li>
+
+            <li>
+              <p>With the introduction of the new <a href="dgui_misc_namespace.html">namespace support</a>,
+              <code class="inline-code">global</code> and <code class="inline-code">assign</code>
+              directives are no longer synonyms. <code class="inline-code">assign</code>
+              creates a variable in the current <code class="inline-code">namespace</code>,
+              while <code class="inline-code">global</code> creates variable that is visible
+              from all namespaces (as if the variable would be in the
+              data-model). Thus, the variable created with
+              <code class="inline-code">assign</code> is more specific, and hides the
+              variable of the same name created with
+              <code class="inline-code">global</code>. As a result, if you use both
+              <code class="inline-code">global</code> and <code class="inline-code">assign</code> mixed
+              for the same variable in your templates, now they will
+              malfunction. The solution is to search-and-replace all
+              <code class="inline-code">global</code>s in your old templates with
+              <code class="inline-code">assign</code>.</p>
+            </li>
+
+            <li>
+              <p>The reserved hash <code class="inline-code">root</code> no longer exists
+              as a predefined variable (we no longer have reserved variables).
+              Use <a href="dgui_template_exp.html#dgui_template_exp_var_special">special
+              variable expressions</a> to achieve similar effects. However,
+              we have no equivalent replacement for <code class="inline-code">root</code>
+              because of the changes in the variable scopes caused by the
+              introduction of namespaces. You may should use
+              <code class="inline-code">.globals</code> or
+              <code class="inline-code">.namespace</code>.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">BeansWrapper</code> no longer exposes
+              native Java arrays, booleans, numbers, enumerations, iterators,
+              and resource bundles as <code class="inline-code">TemplateScalarModel</code>.
+              This way, number objects wrapped through
+              <code class="inline-code">BeansWrapper</code> are subject to FreeMarker&#39;s
+              number formatting machinery. Also, booleans can be formatted
+              using the <code class="inline-code">?string</code> built-in.</p>
+            </li>
+
+            <li>
+              <p>The signature of
+              <code class="inline-code">Configuration.setServletContextForTemplateLoading</code>
+              has been changed: the first parameter is now
+              <code class="inline-code">Object</code> instead of
+              <code class="inline-code">javax.servlet.ServletContext</code>. Thus, you have
+              to recompile your classes that call this method. The change was
+              required to prevent class-loading failure when
+              <code class="inline-code">javax.servlet</code> classes are not available and
+              you would not call this method.</p>
+            </li>
+
+            <li>
+              <p>This release introduces a <a href="dgui_misc_whitespace.html">parse-time white-space
+              remover</a> that strips some of the typical superfluous
+              white-space around FreeMarker tags and comments. <em>This
+              feature is on by default!</em> Most probably this will not
+              cause problems if you generate white-space neutral output like
+              HTML. But if it does cause undesirable reformatting in output
+              you generate, you can disable it with
+              <code class="inline-code">config.setWhitespaceStripping(false)</code>. Also,
+              you can enable/disable it on a per-template basis with the new
+              <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code></a>
+              directive.</p>
+            </li>
+
+            <li>
+              <p>Some new directives were introduced:
+              <code class="inline-code">nested</code>, <code class="inline-code">import</code>,
+              <code class="inline-code">escape</code>, <code class="inline-code">noescape</code>,
+              <code class="inline-code">t</code>, <code class="inline-code">rt</code>,
+              <code class="inline-code">lt</code>. This means that if you are unlucky and
+              the text of your template contains something like
+              <code class="inline-code">&lt;nested&gt;</code>, then that will be
+              misinterpreted as a directive. To prevent this kind of problem
+              in the future, we recommend everybody to switch from the old
+              syntax to the new syntax ("strict syntax"). The
+              strict syntax will be the the default syntax starting from some
+              of the later releases anyway. We plan to release a conversion
+              tool for converting old templates. For more information please
+              read: <a href="ref_depr_oldsyntax.html">Template Language Reference/Deprecated FTL constructs/Old FTL syntax</a></p>
+            </li>
+
+            <li>
+              <p>The data-model created by the
+              <code class="inline-code">FreemarkerServlet</code> now uses automatic scope
+              discovery, so writing
+              <code class="inline-code">Application.<em class="code-color">attrName</em></code>,
+              <code class="inline-code">Session.<em class="code-color">attrName</em></code>,
+              <code class="inline-code">Request.<em class="code-color">attrName</em></code>
+              is no longer mandatory; it&#39;s enough to write
+              <code class="inline-code"><em class="code-color">attrName</em></code> (for more
+              information <a href="pgui_misc_servlet.html#topic.servlet.scopeAttr">read
+              this</a>). This may break an old template if that rely on the
+              non-existence of certain top-level variables.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">FreemarkerServlet</code> now uses the encoding
+              of the template file for the output, unless you specify the
+              encoding in the <code class="inline-code">ContentType</code> init-param, such
+              as <code class="inline-code">text/html; charset=UTF-8</code>.</p>
+            </li>
+
+            <li>
+              <p>The format of template paths is now more restricted than
+              before. The path must not use <code class="inline-code">/</code>,
+              <code class="inline-code">./</code> and <code class="inline-code">../</code> and
+              <code class="inline-code">://</code> with other meaning as they have in URL
+              paths (or in UN*X paths). The characters <code class="inline-code">*</code>
+              and <code class="inline-code">?</code> are reserved. Also, the template loader
+              must not want paths starting with <code class="inline-code">/</code>. For more
+              information please read: <a href="pgui_config_templateloading.html">Programmer&#39;s Guide/The Configuration/Template loading</a></p>
+            </li>
+
+            <li>
+              <p>Till now
+              <code class="inline-code">TemplateTransformModel.getWriter</code> has received
+              null as parameter map if the transform was called without
+              parameters. From now, it will receive an empty Map instead. Note
+              that the previous API documentation didn&#39;t state that it always
+              receives null if there are no parameters, so hopelessly only
+              very few classes exploit this design mistake.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_261">Changes in FTL (FreeMarker Template Language)</h2>
+
+
+          <ul>
+            <li>
+              <p>User-defined directives: Transform and macro call syntax
+              has been unified; they can be called in the same way, as
+              user-defined directives. This also means that macros support
+              named parameters and nested content (like the -- now deprecated
+              -- <code class="inline-code">transform</code> directive did). For example, if
+              you have a macro called <code class="inline-code">sect</code>, you may call it
+              via <code class="inline-code">&lt;@sect title=&quot;Blah&quot; style=&quot;modern&quot;&gt;Blah
+              blah...&lt;/@sect&gt;</code>. For more information read:
+              <a href="dgui_misc_userdefdir.html">Template Author&#39;s Guide/Miscellaneous/Defining your own directives</a></p>
+            </li>
+
+            <li>
+              <p>Macros are now plain variables. This significantly
+              simplifies FreeMarker semantics, while providing more
+              flexibility; for example you can pass macros as parameters to
+              other macros and transforms. As for the problem of clashing
+              commonly-used-macro and variable names, we provide a more
+              powerful solution: namespaces.</p>
+            </li>
+
+            <li>
+              <p>Namespaces: Names-spaces are invaluable if you want to
+              assemble collections ("libraries") of macros and
+              transforms (and other variables), and then use them in any
+              template without worrying about accidental name clashes with the
+              application specific and temporary variables, or with the
+              variables of other collections you want to use in the same
+              template. This is extremely important if FreeMarker users want
+              to share their macro/transform collections. For more information
+              read: <a href="dgui_misc_namespace.html">Template Author&#39;s Guide/Miscellaneous/Namespaces</a></p>
+            </li>
+
+            <li>
+              <p>With the introduction of namespaces our variable related
+              terminology changed. As a result, <code class="inline-code">assign</code> is
+              no longer synonymous with <code class="inline-code">global</code>. The
+              <code class="inline-code">assign</code> directive has been undeprecated, and
+              should be used instead of <code class="inline-code">global</code> almost
+              everywhere. In the new approach <code class="inline-code">assign</code>
+              creates variables in the current namespace, while
+              <code class="inline-code">global</code> creates a variable that is visible
+              from all namespaces (as if the variable were in the root of the
+              data-model). A variable created with <code class="inline-code">assign</code>
+              in the current namespace hides the variable of the same name
+              that was created with <code class="inline-code">global</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">ftl</code> directive: With this directive you
+              can give information about the template for FreeMarker, like the
+              encoding (charset) of the template, the used FTL syntax variant,
+              etc. Also, this directive helps you to write templates that are
+              less dependent on FreeMarker configuration settings, also it
+              helps third-party tools to identify and correctly parse
+              FreeMarker templates. For more information see: <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
+              directive</a></p>
+            </li>
+
+            <li>
+              <p>White-space stripping: FreeMarker now automatically
+              removes some of the typical superfluous white-spaces around
+              FreeMarker tags and comments, like the indentation spaces
+              before- and line-break after <code class="inline-code">&lt;#if ...&gt;</code>
+              tags. For more information read: <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">Template Author&#39;s Guide/Miscellaneous/White-space handling/White-space stripping</a></p>
+            </li>
+
+            <li>
+              <p>New directive to apply a common (&quot;escaping&quot;) expression to
+              all interpolations in a block: <a href="ref_directive_escape.html#ref.directive.escape"><code>escape</code></a>.
+              The name comes from the common usage of this directive for
+              automatic HTML-escaping of interpolations.</p>
+            </li>
+
+            <li>
+              <p>The new and preferred way of number formatting with
+              <code class="inline-code">string</code> built-in is
+              <code class="inline-code">foo?string(format)</code>, instead of the less
+              natural <code class="inline-code">foo?string[format]</code>.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">string</code> built-in works for boolean
+              values. For example: <code class="inline-code">${spamFilter?string(&quot;enabled&quot;,
+              &quot;disabled&quot;)}</code>. For more information <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">read the
+              reference</a>.</p>
+            </li>
+
+            <li>
+              <p>The default strings for outputting boolean value using the
+              <code class="inline-code">string</code> built-in can be set using the
+              <code class="inline-code">boolean_format</code> setting.</p>
+            </li>
+
+            <li>
+              <p>Comments can be placed inside FTL tags and interpolations.
+              For example: <code class="inline-code">&lt;#assign &lt;#-- a comment --&gt; x =
+              3&gt;</code></p>
+            </li>
+
+            <li>
+              <p>All letters and numbers are enabled in variable names,
+              also <code class="inline-code">$</code> is allowed (as in Java programming
+              language). Thus you can use accents, Arabic letters, Chinese
+              letters, etc.</p>
+            </li>
+
+            <li>
+              <p>String literals can be quoted with apostrophe-quote.
+              <code class="inline-code">&quot;foo&quot;</code> and <code class="inline-code">&#39;foo&#39;</code> are
+              equivalent.</p>
+            </li>
+
+            <li>
+              <p>New <a href="ref_builtins_string.html">string
+              built-ins</a>: <code class="inline-code">index_of</code>,
+              <code class="inline-code">last_index_of</code>,
+              <code class="inline-code">starts_with</code>, <code class="inline-code">ends_with</code>,
+              <code class="inline-code">replace</code>, <code class="inline-code">split</code>,
+              <code class="inline-code">chop_linebreak</code>,
+              <code class="inline-code">uncap_first</code>.</p>
+            </li>
+
+            <li>
+              <p>New <a href="ref_builtins_sequence.html">sequence
+              built-ins</a>: <code class="inline-code">sort</code>,
+              <code class="inline-code">sort_by</code>.</p>
+            </li>
+
+            <li>
+              <p>New built-ins for experts to check the type of a variable.
+              See: <a href="ref_builtins_expert.html#ref_builtin_isType"><code>is_<em>...</em></code>
+              built-ins</a></p>
+            </li>
+
+            <li>
+              <p>New built-in for experts to create a variable of certain
+              Java <code class="inline-code">TemplateModel</code> implementation. See: <a href="ref_builtins_expert.html#ref_builtin_new"><code>new</code>
+              built-in</a></p>
+            </li>
+
+            <li>
+              <p>New built-in, <a href="ref_builtins_expert.html#ref_builtin_namespace"><code>namespace</code></a>,
+              to get the namespace of a macro.</p>
+            </li>
+
+            <li>
+              <p>New expression type: special variable expression. To
+              prevent backward compatibility problems when we introduce new
+              predefined variables, from now <a href="dgui_template_exp.html#dgui_template_exp_var_special">special variable
+              expressions</a> are used to access them.</p>
+            </li>
+
+            <li>
+              <p>New directives: <code class="inline-code">t</code>,
+              <code class="inline-code">rt</code> and <code class="inline-code">lt</code> directives allow
+              you to do explicit white-space removal in extreme FTL
+              applications. For more information read <a href="ref_directive_t.html#ref.directive.t">the reference</a>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">assign</code>, <code class="inline-code">local</code> and
+              <code class="inline-code">global</code> now can capture the output generated
+              be the nested template fragment into the variable. This
+              deprecates <code class="inline-code">capture_output</code> transform. More
+              information: <a href="ref_directive_assign.html#ref.directive.assign">assign
+              directive reference</a></p>
+            </li>
+
+            <li>
+              <p>Bulk assignments (as <code class="inline-code">&lt;#assign x=1, y=2,
+              z=3&gt;</code>) no longer need colon to separate the
+              assignments (as <code class="inline-code">&lt;#assign x=1 y=2 z=3&gt;</code>),
+              although it is still allowed to preserve backward
+              compatibility.</p>
+            </li>
+
+            <li>
+              <p>Path that contains <code class="inline-code">//:</code> is considered as
+              absolute path.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">include</code> and
+              <code class="inline-code">transform</code> directives no longer need a
+              semicolon to separate the template or transform name from the
+              parameter list, although it is still allowed to preserve
+              backward compatibility.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">#</code>-less tag syntax is deprecated (but
+              still working). That is, you should write
+              <code class="inline-code">&lt;#<em class="code-color">directive
+              ...</em>&gt;</code> instead of
+              <code class="inline-code">&lt;<em class="code-color">directive
+              ...</em>&gt;</code>, and
+              <code class="inline-code">&lt;/#<em class="code-color">directive
+              ...</em>&gt;</code> instead of
+              <code class="inline-code">&lt;/<em class="code-color">directive
+              ...</em>&gt;</code>. For more info read: <a href="ref_depr_oldsyntax.html">Template Language Reference/Deprecated FTL constructs/Old FTL syntax</a></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">foreach</code> is depreciated (but still
+              working). Use <a href="ref_directive_list.html#ref.directive.list"><code>list</code></a>
+              instead.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Undefined variables in hash and sequence
+              constructors (as <code class="inline-code">[a, b, c]</code>) didn&#39;t caused
+              errors.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: String concatenation had performance problem if
+              there was multiple concatenations chained, as:
+              <code class="inline-code">&quot;a&quot;+x+&quot;a&quot;+x+&quot;a&quot;+x+&quot;a&quot;+x+&quot;a&quot;+x</code>.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_262">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Arbitrary JSP custom tags can be used as FreeMarker
+              transforms in <code class="inline-code">FreemarkerServlet</code>-driven
+              templates. More information: <a href="pgui_misc_servlet.html">Programmer&#39;s Guide/Miscellaneous/Using FreeMarker with servlets</a></p>
+            </li>
+
+            <li>
+              <p>Various improvements for
+              <code class="inline-code">BeansWrapper</code>:</p>
+
+              <ul>
+                <li>
+                  <p>The <code class="inline-code">BeansWrapper</code> no longer exposes
+                  arbitrary objects as
+                  <code class="inline-code">TemplateScalarModel</code>s, only
+                  <code class="inline-code">java.lang.String</code> and
+                  <code class="inline-code">Character</code> objects. This way, number
+                  objects wrapped through <code class="inline-code">BeansWrapper</code> are
+                  subject to FreeMarker&#39;s number formatting machinery. As a
+                  side effect, non-string and non-number objects that were
+                  previously accepted in equality and inequality operations
+                  (because they had a string representation) will now cause
+                  the engine to throw exception on comparison attempt.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">java.lang.Character</code> objects are
+                  exposed as scalars through
+                  <code class="inline-code">BeansWrapper</code>.</p>
+                </li>
+
+                <li>
+                  <p>Experimental feature: With the
+                  <code class="inline-code">setSimpleMapWrapper</code> method of
+                  <code class="inline-code">BeansWrapper</code> you can configure it to wrap
+                  <code class="inline-code">java.util.Map</code>-s as
+                  <code class="inline-code">TemplateHashModelEx</code>-s, and do not expose
+                  the methods of the object.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TransformControl</code> interface (was
+              experimental earlier): If the <code class="inline-code">Writer</code> returned
+              by <code class="inline-code">TemplateTransformModel.getWriter</code>
+              implements this interface, it can instruct the engine to skip or
+              to repeat evaluation of the nested content, and gets notified
+              about exceptions that are thrown during the nested content
+              evaluation. Note that the <code class="inline-code">onStart</code> and
+              <code class="inline-code">afterBody</code> methods now are allowed to throw
+              <code class="inline-code">IOException</code>. For more information please read
+              the API documentation.</p>
+            </li>
+
+            <li>
+              <p>Localized lookup can be disabled with the new
+              <code class="inline-code">Configuration</code> methods:
+              <code class="inline-code">set/getLocalizedLookup</code>,
+              <code class="inline-code">clearTemplateCache</code></p>
+            </li>
+
+            <li>
+              <p>The new interface
+              <code class="inline-code">freemarker.cache.CacheStorage</code> allows users to
+              plug custom template caching strategies with the
+              <code class="inline-code">cache_storage</code> setting. The core package now
+              ships with two implementations:
+              <code class="inline-code">SoftCacheStorage</code> and
+              <code class="inline-code">StrongCacheStorage</code>. For more information
+              read: <a href="pgui_config_templateloading.html">Programmer&#39;s Guide/The Configuration/Template loading</a></p>
+            </li>
+
+            <li>
+              <p>You can set settings with string name and string value
+              with the new <code class="inline-code">setSetting(String key, String
+              value)</code> method of <code class="inline-code">Configurable</code>
+              super-classes (as <code class="inline-code">Configuration</code>). Also you
+              can load settings from <code class="inline-code">.properties</code> file with
+              the <code class="inline-code">setSettings</code> method.</p>
+            </li>
+
+            <li>
+              <p>Other new <code class="inline-code">Configuration</code> methods:
+              <code class="inline-code">clearTemplateCache</code>,
+              <code class="inline-code">clearSharedVariables</code>,
+              <code class="inline-code">getTemplateLoader</code>, and
+              <code class="inline-code">clone</code>.</p>
+            </li>
+
+            <li>
+              <p>Changes to <code class="inline-code">TemplateTransformModel</code>
+              interface: <code class="inline-code">getWriter</code> can throw
+              <code class="inline-code">IOException</code>, and can return
+              <code class="inline-code">null</code> if the transform does not support body
+              content.</p>
+            </li>
+
+            <li>
+              <p>Till now
+              <code class="inline-code">TemplateTransformModel.getWriter</code> has received
+              null as parameter map if the transform was called without
+              parameters. From now, it will receive an empty Map instead. Note
+              that the previous API documentation didn&#39;t state that it always
+              receives null if there are no parameters, so hopelessly only
+              very few classes exploit this design mistake.</p>
+            </li>
+
+            <li>
+              <p>Various improvements for
+              <code class="inline-code">FreemarkerServlet</code>:</p>
+
+              <ul>
+                <li>
+                  <p>The data-model now uses automatic scope discovery, so
+                  writing
+                  <code class="inline-code">Application.<em class="code-color">attrName</em></code>,
+                  <code class="inline-code">Session.<em class="code-color">attrName</em></code>,
+                  <code class="inline-code">Request.<em class="code-color">attrName</em></code>
+                  is no longer mandatory; it&#39;s enough to write
+                  <code class="inline-code"><em class="code-color">attrName</em></code>. For
+                  more information <a href="pgui_misc_servlet.html#topic.servlet.scopeAttr">read this</a>.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">FreemarkerServlet</code> now uses the
+                  encoding of the template file for the output, unless you
+                  specify the encoding in the <code class="inline-code">ContentType</code>
+                  init-param, such as <code class="inline-code">text/html;
+                  charset=UTF-8</code>.</p>
+                </li>
+
+                <li>
+                  <p>All <code class="inline-code">Configuration</code> level settings
+                  can by set with Servlet init-params
+                  (<code class="inline-code">template_exception_handler</code>,
+                  <code class="inline-code">locale</code>, <code class="inline-code">number_format</code>,
+                  etc.).</p>
+                </li>
+
+                <li>
+                  <p>The object wrapper the servlet internally uses is now
+                  set as the default object wrapper for its
+                  <code class="inline-code">Configuration</code> instance.</p>
+                </li>
+
+                <li>
+                  <p>It no longer forces session creation for requests that
+                  don&#39;t belong to an existing session, improving
+                  scalability.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>JDOM independent XML-wrapping:
+              <code class="inline-code">freemarker.ext.xml.NodeListModel</code> is a
+              re-implementation of
+              <code class="inline-code">freemarker.ext.jdom.NodeListModel</code> that does
+              not rely on JDOM; you don&#39;t need JDOM .jar anymore. The new
+              <code class="inline-code">NodeListModel</code> automatically uses W3C DOM,
+              dom4j, or JDOM, depending on which library is available (that
+              is, depending on what object do you pass to its
+              constructor).</p>
+            </li>
+
+            <li>
+              <p>Bugfix: <code class="inline-code">WebappTemplateLoader</code>: Template
+              updating didn&#39;t worked correctly with Tomcat due the caching of
+              resources. Now <code class="inline-code">WebappTemplateLoader</code> tries to
+              access the resources directly as <code class="inline-code">File</code>, if it
+              is possible, thus bypasses the caching.</p>
+            </li>
+
+            <li>
+              <p>Various bug-fixes for
+              <code class="inline-code">FreemarkerServlet</code>:</p>
+
+              <ul>
+                <li>
+                  <p>The servlet now loads the correct template if it was
+                  called through
+                  <code class="inline-code">RequestDispatcher.include</code>.</p>
+                </li>
+
+                <li>
+                  <p>The caching of <code class="inline-code">HttpServletRequest</code>
+                  objects is now compliant with the servlet
+                  specification.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">TemplateException</code>s was suppressed
+                  in certain situations resulting in half-rendered pages
+                  without error message.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Bugfix: FreeMarker didn&#39;t work if the
+              <code class="inline-code">javax.servlet</code> classes was not available,
+              because <code class="inline-code">Configuration</code> explicitly referred to
+              <code class="inline-code">javax.servlet.ServletContext</code>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: classes may were not found if they was available
+              only in the <code class="inline-code">WEB-INF</code>, and FreeMarker tried to
+              load the class dynamically.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: the <code class="inline-code">Template</code> constructor (and
+              thus <code class="inline-code">Configuration.getTemplate</code>) sometimes
+              threw <code class="inline-code">TokenMgrError</code> (a non-checked exception)
+              instead of <code class="inline-code">ParseException</code>.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_263">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>The Web application related examples has been
+              replaced.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_264">The history of the releases before the final version</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_265">Differences between the final and RC2 releases</h3>
+
+
+            <ul>
+              <li>
+                <p>You can load settings from
+                <code class="inline-code">.properties</code> file with the
+                <code class="inline-code">setSettings</code> method of
+                <code class="inline-code">Configuration</code> and other
+                <code class="inline-code">Configurable</code> subclasses.</p>
+              </li>
+
+              <li>
+                <p>New string built-in:
+                <code class="inline-code">uncap_first</code></p>
+              </li>
+
+              <li>
+                <p>Bugfix: When exposing an XML document to a template and
+                accessing it with XPath using Jaxen a
+                <code class="inline-code">ClassCastException</code> has occurred.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: The template cache has loaded templates with bad
+                <code class="inline-code">Configuration</code> instance in certain
+                situations if you use not the static default
+                <code class="inline-code">Configuration</code> instance.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_266">Differences between the RC2 and RC1 releases</h3>
+
+
+            <ul>
+              <li>
+                <p>Non backward compatible change!:
+                <code class="inline-code">FreemarkerServlet</code> now uses the encoding of
+                the template file for the output, unless you specify the
+                encoding in the <code class="inline-code">ContentType</code> init-param,
+                such as <code class="inline-code">text/html; charset=UTF-8</code>.</p>
+              </li>
+
+              <li>
+                <p>Non backward compatible change compared to RC1!: The
+                <code class="inline-code">capture_output</code> transform creates variable
+                in the current namespace (as <code class="inline-code">assign</code>
+                directive) with the <code class="inline-code">var</code> parameter, not a
+                global variable.</p>
+              </li>
+
+              <li>
+                <p>The new and preferred way of number formatting with
+                <code class="inline-code">string</code> built-in is
+                <code class="inline-code">foo?string(format)</code>, instead of the less
+                natural <code class="inline-code">foo?string[format]</code>.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">string</code> built-in works for boolean
+                values. For example: <code class="inline-code">${spamFilter?string(&quot;enabled&quot;,
+                &quot;disabled&quot;)}</code>. For more information <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">read the
+                reference</a>.</p>
+              </li>
+
+              <li>
+                <p>The default strings for outputting boolean value using
+                the <code class="inline-code">string</code> built-in can be set using the
+                <code class="inline-code">boolean_format</code> setting.</p>
+              </li>
+
+              <li>
+                <p>String literals can be quoted with apostrophe-quote.
+                <code class="inline-code">&quot;foo&quot;</code> and <code class="inline-code">&#39;foo&#39;</code> are
+                equivalent.</p>
+              </li>
+
+              <li>
+                <p>The new interface
+                <code class="inline-code">freemarker.cache.CacheStorage</code> allows users
+                to plug custom template caching strategies with the
+                <code class="inline-code">cache_storage</code> setting. The core package now
+                ships with two implementations:
+                <code class="inline-code">SoftCacheStorage</code> and
+                <code class="inline-code">StrongCacheStorage</code>. For more information
+                read: <a href="pgui_config_templateloading.html">Programmer&#39;s Guide/The Configuration/Template loading</a></p>
+              </li>
+
+              <li>
+                <p>You can set settings with string name and string value
+                with the new <code class="inline-code">setSetting(String key, String
+                value)</code> method of <code class="inline-code">Configurable</code>
+                super-classes (as <code class="inline-code">Configuration</code>).</p>
+              </li>
+
+              <li>
+                <p>Other new <code class="inline-code">Configuration</code> methods:
+                <code class="inline-code">getTemplateLoader</code>,
+                <code class="inline-code">clone</code>.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">assign</code>, <code class="inline-code">local</code> and
+                <code class="inline-code">global</code> now can capture the output generated
+                be the nested template fragment into the variable. This
+                deprecates <code class="inline-code">capture_output</code> transform. More
+                information: <a href="ref_directive_assign.html#ref.directive.assign">assign
+                directive reference</a></p>
+              </li>
+
+              <li>
+                <p>Other new <code class="inline-code">Configuration</code> methods:
+                <code class="inline-code">getTemplateLoader</code>,
+                <code class="inline-code">clone</code>.</p>
+              </li>
+
+              <li>
+                <p>Changes to <code class="inline-code">TemplateTransformModel</code>
+                interface: <code class="inline-code">getWriter</code> can throw
+                <code class="inline-code">IOException</code>, and can return
+                <code class="inline-code">null</code> if the transform does not support body
+                content.</p>
+              </li>
+
+              <li>
+                <p>Till now
+                <code class="inline-code">TemplateTransformModel.getWriter</code> has
+                received null as parameter map if the transform was called
+                without parameters. From now, it will receive an empty Map
+                instead. Note that the previous API documentation didn&#39;t state
+                that it always receives null if there are no parameters, so
+                hopelessly only very few classes exploit this design
+                mistake.</p>
+              </li>
+
+              <li>
+                <p>Changes to <code class="inline-code">TemplateControl</code> interface:
+                <code class="inline-code">onStart</code> and <code class="inline-code">afterBody</code>
+                methods are now allowed to throw
+                <code class="inline-code">IOException</code>.</p>
+              </li>
+
+              <li>
+                <p>Path that contains <code class="inline-code">//:</code> is considered
+                as absolute path.</p>
+              </li>
+
+              <li>
+                <p>New <a href="ref_builtins_string.html">string
+                built-ins</a>: <code class="inline-code">index_of</code>,
+                <code class="inline-code">last_index_of</code>,
+                <code class="inline-code">starts_with</code>, <code class="inline-code">ends_with</code>,
+                <code class="inline-code">replace</code>, <code class="inline-code">split</code>,
+                <code class="inline-code">chop_linebreak</code>.</p>
+              </li>
+
+              <li>
+                <p>New <a href="ref_builtins_sequence.html">sequence
+                built-ins</a>: <code class="inline-code">sort</code>,
+                <code class="inline-code">sort_by</code>.</p>
+              </li>
+
+              <li>
+                <p>All <code class="inline-code">Configuration</code> level settings can
+                by set with Servlet init-params
+                (<code class="inline-code">template_exception_handler</code>,
+                <code class="inline-code">locale</code>, <code class="inline-code">number_format</code>,
+                etc.).</p>
+              </li>
+
+              <li>
+                <p>Bugfix: classes may were not found if they was available
+                only in the <code class="inline-code">WEB-INF</code>, and FreeMarker tried
+                to load the class dynamically.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: <code class="inline-code">setLocalizedLookup(false)</code> of
+                <code class="inline-code">Configuration</code> was overridden when you have
+                called <code class="inline-code">setTemplateLoader</code>.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: String concatenation had performance problem if
+                there was multiple concatenations chained, as:
+                <code class="inline-code">&quot;a&quot;+x+&quot;a&quot;+x+&quot;a&quot;+x+&quot;a&quot;+x+&quot;a&quot;+x</code>.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: white-space stripping was not worked with tags
+                spanning over multiple lines.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: Removing several dependencies on JDK 1.3, so
+                FreeMarker can be build for JDK 1.2.2.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_267">Differences between the Preview 2 and RC1 releases</h3>
+
+
+            <ul>
+              <li>
+                <p><code class="inline-code">ftl</code> is now stricter, and does not
+                allow custom parameters. To associate custom attributes to
+                templates, we may add a new directive later, if there is a
+                demand for it.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">escape</code> directive does not affect
+                numerical interpolations
+                (<code class="inline-code">#{<em class="code-color">...</em>}</code>)
+                anymore, as it has caused errors with string escapes as
+                <code class="inline-code">?html</code>.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">normalizeName</code> method of
+                <code class="inline-code">freemarker.cache.TemplateLoader</code> has been
+                removed, because it has caused too many complications.
+                Instead, normalization happens on a single point in the
+                <code class="inline-code">TempateCache</code>. In consequence, FreeMarker is
+                now stricter about the format of template paths, as things
+                like <code class="inline-code">/../</code> are interpreted by the
+                core.</p>
+              </li>
+
+              <li>
+                <p>Experimental feature: With the
+                <code class="inline-code">setSimpleMapWrapper</code> method of
+                <code class="inline-code">BeansWrapper</code> you can configure it to wrap
+                <code class="inline-code">java.util.Map</code>-s as
+                <code class="inline-code">TemplateHashModelEx</code>-s, and do not expose
+                the methods of the object.</p>
+              </li>
+
+              <li>
+                <p>New <code class="inline-code">Configuration</code> methods:
+                <code class="inline-code">set/getLocalizedLookup</code>,
+                <code class="inline-code">clearTemplateCache</code>,
+                <code class="inline-code">clearSharedVariables</code>.</p>
+              </li>
+
+              <li>
+                <p>More cleanups in the <code class="inline-code">Environment</code>
+                API.</p>
+              </li>
+
+              <li>
+                <p>Better JSP standard compliance: JSP page-scope variables
+                are the global variables that were created in the template
+                (not the variables of the data-model).</p>
+              </li>
+
+              <li>
+                <p>JDOM independent XML-wrapping:
+                <code class="inline-code">freemarker.ext.xml.NodeListModel</code> is a
+                re-implementation of
+                <code class="inline-code">freemarker.ext.jdom.NodeListModel</code> that does
+                not rely on JDOM; you don&#39;t need JDOM .jar anymore. The new
+                <code class="inline-code">NodeListModel</code> automatically uses W3C DOM,
+                dom4j, or JDOM, depending on which library is available (that
+                is, depending on what object do you pass to its
+                constructor).</p>
+              </li>
+
+              <li>
+                <p>Bugfix: <code class="inline-code">WebappTemplateLoader</code>:
+                Template updating didn&#39;t worked correctly with Tomcat due the
+                caching of resources. Now
+                <code class="inline-code">WebappTemplateLoader</code> tries to access the
+                resources directly as <code class="inline-code">File</code>, if it is
+                possible, thus bypasses the caching.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: Templates loaded with
+                <code class="inline-code">MultiTemplateLoader</code> subclasses was removed
+                from the template cache after the template update delay has
+                elapsed (5 seconds by default) even if the template file was
+                unchanged. This can cause lot of extra load for a high-traffic
+                server if you have many templates or if the template update
+                delay was set to 0 second.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: Undefined variables in hash and sequence
+                constructors (as <code class="inline-code">[a, b, c]</code>) didn&#39;t caused
+                errors.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_268">Differences between the Preview 1 and Preview 2
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>All 16-bit Unicode letters and numbers are allowed in
+                identifiers, as well as the <code class="inline-code">$</code> character (as
+                in Java programming language). Thus you can use accented
+                letters, Arabic letters, Chinese letters, etc. as identifiers
+                in templates</p>
+              </li>
+
+              <li>
+                <p>Macros now can create loop variables for the nested
+                content. For more information <a href="dgui_misc_userdefdir.html#dgui_misc_userdefdir_loopvar">read
+                this</a>.</p>
+              </li>
+
+              <li>
+                <p>New directives: <code class="inline-code">t</code>,
+                <code class="inline-code">rt</code> and <code class="inline-code">lt</code> directives
+                allow you to do explicit white-space removal in extreme FTL
+                applications. For more information read <a href="ref_directive_t.html#ref.directive.t">the reference</a>.</p>
+              </li>
+
+              <li>
+                <p>The syntax of assignment-with-namespace has changed from
+                <code class="inline-code">&lt;#assign foo=123 namespace=myLib&gt;</code>) to
+                <code class="inline-code">&lt;#assign foo=123 in myLib&gt;</code>, since the
+                previous syntax was confusing because its similarity to a
+                bulk-assignment.</p>
+              </li>
+
+              <li>
+                <p>Bulk assignments (as <code class="inline-code">&lt;#assign x=1, y=2,
+                z=3&gt;</code>) no longer need colon to separate the
+                assignments (as <code class="inline-code">&lt;#assign x=1 y=2
+                z=3&gt;</code>), although it is still allowed to preserve
+                backward compatibility.</p>
+              </li>
+
+              <li>
+                <p>Positional parameter passing is supported for macro
+                calls as shorthand form of normal named parameter passing. For
+                more details read <a href="ref_directive_userDefined.html#ref_directive_userDefined_positionalParam">read the
+                reference</a>.</p>
+              </li>
+
+              <li>
+                <p>New built-in, <code class="inline-code">namespace</code>, to get the
+                namespace of the currently executing macro.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">TransformControl</code> interface (was
+                experimental earlier): If the <code class="inline-code">Writer</code>
+                returned by
+                <code class="inline-code">TemplateTransformModel.getWriter</code> implements
+                this interface, it can instruct the engine to skip or to
+                repeat evaluation of the nested content, and gets notified
+                about exceptions that are thrown during the nested content
+                evaluation. For more information please read the API
+                documentation.</p>
+              </li>
+
+              <li>
+                <p>Jython wrapper can now wrap arbitrary Java objects, not
+                only <code class="inline-code">PyObject</code>-s. If an object is passed to
+                the wrapper that is neither a
+                <code class="inline-code">TemplateModel</code>, nor a
+                <code class="inline-code">PyObject</code>, it is first coerced into a
+                <code class="inline-code">PyObject</code> using Jython&#39;s own wrapping
+                machinery, and then wrapped into a
+                <code class="inline-code">TemplateModel</code> as any other
+                <code class="inline-code">PyObject</code>.</p>
+              </li>
+
+              <li>
+                <p>Some cleanups in the <code class="inline-code">Environment</code>
+                API.</p>
+              </li>
+
+              <li>
+                <p>The Web application related examples has been
+                replaced.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: Templates loaded with
+                <code class="inline-code">URLTemplateLoader</code> subclasses was removed
+                from the template cache after the template update delay has
+                elapsed (5 seconds by default) even if the template file was
+                unchanged. This can cause lot of extra load for a high-traffic
+                server if you have many templates or if the template update
+                delay was set to 0 second.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: <code class="inline-code">FreeMarkerServlet</code> has thrown
+                <code class="inline-code">ServletException</code> even if a debug
+                <code class="inline-code">TemplateException</code> handler was in use (so
+                you may got Error 500 page instead of debug
+                information).</p>
+              </li>
+            </ul>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_1_5.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_1.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_1.html b/builds/2.3.26-nightly/versions_2_2_1.html
new file mode 100644
index 0000000..02c3c3d
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_1.html
@@ -0,0 +1,126 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.1 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.1">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_1.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_1.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_1.html"><span itemprop="name">2.2.1</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.1"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_1" itemprop="headline">2.2.1</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_258" data-menu-target="autoid_258">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_259" data-menu-target="autoid_259">Changes on the Java side</a></li></ul> </div><p>Date of release: 2003-04-11</p><p>This version introduces important new features, such as the
+        native FTL date/time type, and the auto-include and auto-import
+        settings.</p><p>The date/time support is experimental, but we hope it will not
+        substantially change. We would like to label it as final ASAP, so we
+        urge everybody to send feedback on this topic to the mailing
+        lists.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_258">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>New scalar type: date. For more information read: <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Template Author&#39;s Guide/Values, Types/The types/Scalars</a>, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Template Author&#39;s Guide/Values, Types/The types/Scalars</a>, <a href="dgui_template_valueinsertion.html#dgui_template_valueinserion_universal_date">interpolation</a>,
+              <a href="ref_builtins_date.html#ref_builtin_string_for_date">?string built-in for
+              dates</a></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_259">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>New <code class="inline-code">TemplateModel</code> subinterface:
+              <code class="inline-code">TemplateDateModel</code>. For more information read
+              <a href="pgui_datamodel_scalar.html">Programmer&#39;s Guide/The Data Model/Scalars</a></p>
+            </li>
+
+            <li>
+              <p>auto-include and auto-import: With these new configuration
+              level settings, you can include and import commonly used
+              templates (usually collection of macro definitions) at the top
+              of all templates, without actually typing <code class="inline-code">&lt;#include
+              <em class="code-color">...</em>&gt;</code> or
+              <code class="inline-code">&lt;#import
+              <em class="code-color">...</em>&gt;</code> into the templates
+              again and again. For more information please read the Java API
+              documentation of <code class="inline-code">Configuration</code></p>
+            </li>
+
+            <li>
+              <p>New template method:
+              <code class="inline-code">createProcessingEnvironment</code>. This method
+              makes it possible for you to do some special initialization on
+              the <a href="gloss.html#gloss.environment"><code>Environment</code></a>
+              before template processing, or to read the environment after
+              template processing. For more information please read the Java
+              API documentation.</p>
+            </li>
+
+            <li>
+              <p>Changes to <code class="inline-code">freemarker.ext.beans</code>
+              package: <code class="inline-code">BeanModel</code>,
+              <code class="inline-code">MapModel</code>, and
+              <code class="inline-code">ResourceModel</code> now implement
+              <code class="inline-code">TemplateHashModelEx</code>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix:
+              <code class="inline-code">Configurable.setSettings(Properties)</code> didn&#39;t
+              removed redundant spaces/tabs at the end of property
+              values.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_2_2.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_2_2.html b/builds/2.3.26-nightly/versions_2_2_2.html
new file mode 100644
index 0000000..395c9e8
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_2_2.html
@@ -0,0 +1,74 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.2.2 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.2.2">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_2_2.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_2_2.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_2_2.html"><span itemprop="name">2.2.2</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.2.2"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_2_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_1.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_2_2" itemprop="headline">2.2.2</h1>
+</div></div><p>Date of release: 2003-05-02</p><p>Bugfix release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_257">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: The <code class="inline-code">_text</code> key of the
+              <code class="inline-code">freemarker.ext.xml.NodeListModel</code> was not
+              returning the text of the element when used with W3C DOM
+              trees.</p>
+            </li>
+
+            <li>
+              <p>The classes are now built against JDK 1.2.2 classes,
+              ensuring the binary compatibility of FreeMarker distribution
+              with JDK 1.2.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_2_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_1.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[34/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_sharedvariables.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_sharedvariables.html b/builds/2.3.26-nightly/pgui_config_sharedvariables.html
new file mode 100644
index 0000000..d90f624
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_sharedvariables.html
@@ -0,0 +1,143 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Shared variables - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Shared variables">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_sharedvariables.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_sharedvariables.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_sharedvariables.html"><span itemprop="name">Shared variables</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Shared variables"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_settings.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_sharedvariables" itemprop="headline">Shared variables</h1>
+</div></div><p><strong>Shared variables</strong> are variables
+        that are defined for all templates. You can add shared variables to
+        the configuration with the <code class="inline-code">setSharedVariable</code>
+        methods:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Configuration cfg = new Configuration(Configuration.VERSION_2_3_25);
+<em>..</em>.
+cfg.setSharedVariable(&quot;warp&quot;, new WarpDirective());
+cfg.setSharedVariable(&quot;company&quot;, &quot;Foo Inc.&quot;);</pre></div><p>In all templates that use this configuration, an user-defined
+        directive with name <code class="inline-code">wrap</code> and a string with name
+        <code class="inline-code">company</code> will be visible in the data-model root, so
+        you don&#39;t have to add them to the root hash again and again. A
+        variable in the root object that you pass to the
+        <code class="inline-code">Template.process</code> will hide the shared variable with
+        the same name.</p>  <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+          <p>Never use <code class="inline-code">TemplateModel</code> implementation that
+          is not <a href="gloss.html#gloss.threadSafe">thread-safe</a> for
+          shared variables, if the configuration is used by multiple threads!
+          This is the typical situation for Servlet based applications.</p>
+          </div>
+<p>Due to backward compatibility heritage, the set of shared
+        variables is initially (i.e., for a new
+        <code class="inline-code">Configuration</code> instance) not empty. It contains the
+        following user-defined directives (they are &quot;user-defined&quot; in the
+        sense that you use <code class="inline-code">@</code> to call them instead of
+        <code class="inline-code">#</code>):</p>  <div class="table-responsive">
+    <table class="table">
+
+          <thead>
+            <tr>
+              <th>name</th>
+
+
+              <th>class</th>
+
+            </tr>
+
+          </thead>
+
+
+          <tbody>
+            <tr>
+              <td><code class="inline-code">capture_output</code></td>
+
+
+              <td><code class="inline-code">freemarker.template.utility.CaptureOutput</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">compress</code></td>
+
+
+              <td><code class="inline-code">freemarker.template.utility.StandardCompress</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">html_escape</code></td>
+
+
+              <td><code class="inline-code">freemarker.template.utility.HtmlEscape</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">normalize_newlines</code></td>
+
+
+              <td><code class="inline-code">freemarker.template.utility.NormalizeNewlines</code></td>
+
+            </tr>
+
+
+            <tr>
+              <td><code class="inline-code">xml_escape</code></td>
+
+
+              <td><code class="inline-code">freemarker.template.utility.XmlEscape</code></td>
+
+            </tr>
+
+          </tbody>
+
+            </table>
+  </div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_settings.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_templateconfigurations.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_templateconfigurations.html b/builds/2.3.26-nightly/pgui_config_templateconfigurations.html
new file mode 100644
index 0000000..2c2f86c
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_templateconfigurations.html
@@ -0,0 +1,314 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Template configurations - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Template configurations">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_templateconfigurations.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_templateconfigurations.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_templateconfigurations.html"><span itemprop="name">Template configurations</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Template configurations"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_errorhandling.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_outputformatsautoesc.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_templateconfigurations" itemprop="headline">Template configurations</h1>
+</div></div><p>"Template configurations" refers to the
+        <code class="inline-code">template_configurations</code> setting of
+        <code class="inline-code">Configuration</code>
+        (<code class="inline-code">Configuration.setTemplateConfigurations(<em class="code-color">...</em>)</code>).
+        This setting lets you override individual settings coming from the
+        common <code class="inline-code">Configuration</code> object, depending on the name
+        (path) of the template.</p><p>It&#39;s important to understand, however, that this setting only
+        has effect if you get templates with
+        <code class="inline-code">Configuration.getTemplate(<em class="code-color">...</em>)</code>,
+        not when you create templates directly with the
+        <code class="inline-code">Template</code> constructors. In that case it&#39;s up to you
+        to invoke this mechanism (see <code class="inline-code">TemplateCache</code> source
+        code as an example).</p><p>You will use these kind of objects to declare your template
+        configuration rules:</p><ul>
+          <li>
+            <p><code class="inline-code">TemplateConfiguration</code>-s: These store the
+            actual setting assignments that you want to apply. For example,
+            this <code class="inline-code">TemplateConfiguration</code> will set the
+            encoding and the output format of the matched template (and leave
+            all other settings of it alone):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">TemplateConfiguration tcUTF8XML = new TemplateConfiguration();
+tc.setEncoding(&quot;utf-8&quot;);
+tc.setOutputFormat(XMLOutputFormat.INSTANCE);</pre></div>
+          </li>
+
+          <li>
+            <p><code class="inline-code">TemplateSourceMatcher</code> (abstract)
+            subclasses: These define a rule that matches templates based on
+            their source name (their source path; as in
+            <code class="inline-code">Template.getSourceName()</code>), and possibly on
+            other <code class="inline-code">TemplateLoader</code>-dependent properties. For
+            example, <code class="inline-code">new FileExtensionMatcher(&quot;xml&quot;)</code>
+            matches templates that has <code class="inline-code">xml</code> file extension.
+            See all the subclasses in the Java API documentation.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">TemplateConfigurationFactory</code>-es: This is
+            what connects <code class="inline-code">TemplateConfiguration</code>-s and
+            <code class="inline-code">TemplateSourceMatcher</code>-s together. This is the
+            Java type of the <code class="inline-code">template_configurations</code>
+            setting. See the examples below for more.</p>
+          </li>
+        </ul>
+          
+
+
+
+<h2 class="content-header header-simplesect" id="autoid_47">Example 1</h2>
+
+
+          <p>This setup combines our earlier two example objects with a
+          <code class="inline-code">ConditionalTemplateConfigurationFactory</code>, causing
+          all templates with <code class="inline-code">xml</code> extension to get UTF-8
+          encoding and XML output format:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setTemplateConfigurations(
+        new ConditionalTemplateConfigurationFactory(
+                new FileExtensionMatcher(&quot;xml&quot;),
+                tcUTF8XML));</pre></div>
+
+          <p>The same configuring is also doable if you don&#39;t have access
+          to the configuring Java code, but only to a Java
+          <code class="inline-code">*.properties</code> file or other kind of string-string
+          key value pairs (the <code class="inline-code">\</code>-s are prescribed by the
+          Java Properties file format for multi-line values):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">templateConfigurations = \
+    ConditionalTemplateConfigurationFactory( \
+        FileExtensionMatcher(&quot;xml&quot;), \
+        TemplateConfiguration( \
+            encoding = &quot;utf-8&quot;, \
+            outputFormat = XMLOutputFormat() \
+        ) \
+    )</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-simplesect" id="autoid_48">Example 2</h2>
+
+
+          <p>Let&#39;s say you only need to handle templates in the
+          <code class="inline-code">mail</code> directory specially, other templates can use
+          the setting coming from the shared <code class="inline-code">Configuration</code>
+          singleton. The names of templates there must contain
+          <code class="inline-code">&quot;.subject.&quot;</code> or <code class="inline-code">&quot;.body.&quot;</code>.
+          Subject templates must get <code class="inline-code">plainText</code> output
+          format, while body templates must get <code class="inline-code">HTML</code> output
+          format. So we have to make a choice here, and that&#39;s when you need a
+          <code class="inline-code">FirstMatchTemplateConfigurationFactory</code>.</p>
+
+          <p>Assuming <code class="inline-code">cfg</code> stores the shared
+          <code class="inline-code">Configuration</code> singleton, you set this up like
+          this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setTemplateConfigurations(
+        new ConditionalTemplateConfigurationFactory(
+                new PathGlobMatcher(&quot;mail/**&quot;),
+                new FirstMatchTemplateConfigurationFactory(
+                        new ConditionalTemplateConfigurationFactory(
+                                new FileNameGlobMatcher(&quot;*.subject.*&quot;),
+                                tcSubject),
+                        new ConditionalTemplateConfigurationFactory(
+                                new FileNameGlobMatcher(&quot;*.body.*&quot;),
+                                tcBody)
+                        )
+                        .noMatchErrorDetails(
+                                &quot;Mail template names must contain \&quot;.subject.\&quot; or \&quot;.body.\&quot;!&quot;)
+                ));</pre></div>
+
+          <p>The equivalent configuration using a Java
+          <code class="inline-code">*.properties</code> file or other kind of string-string
+          key value pairs (the <code class="inline-code">\</code>-s are prescribed by the
+          Java Properties file format only):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">templateConfigurations = \
+    ConditionalTemplateConfigurationFactory( \
+        PathGlobMatcher(&quot;mail/**&quot;), \
+        FirstMatchTemplateConfigurationFactory( \
+            ConditionalTemplateConfigurationFactory( \
+                FileNameGlobMatcher(&quot;*.subject.*&quot;), \
+                TemplateConfiguration(outputFormat = PlainTextOutputFormat()) \
+            ), \
+            ConditionalTemplateConfigurationFactory( \
+                FileNameGlobMatcher(&quot;*.body.*&quot;), \
+                TemplateConfiguration(outputFormat = HTMLOutputFormat()) \
+            ), \
+            noMatchErrorDetails = &#39;Mail template names must contain &quot;.subject.&quot; or &quot;.body.&quot;!&#39; \
+        ) \
+    )</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-simplesect" id="autoid_49">Example 3</h2>
+
+
+          <p>Let&#39;s say you want the following deviations from the shared
+          <code class="inline-code">Configuration</code> settings in your
+          application:</p>
+
+          <ul>
+            <li>
+              <p>All templates whose name contains
+              <code class="inline-code">&quot;.stats.&quot;</code> should use ISO date/time format and
+              UTC time zone</p>
+            </li>
+
+            <li>
+              <p>All templates inside the <code class="inline-code">mail</code> directory
+              should use UTF-8 encoding</p>
+            </li>
+
+            <li>
+              <p>Templates with <code class="inline-code">xml</code> file extension
+              should use XML <code class="inline-code">output_format</code>, templates with
+              <code class="inline-code">html</code> or <code class="inline-code">htm</code> extension
+              should use HTML output format. For other templates, the shared
+              <code class="inline-code">Configuration</code> can dictate the
+              <code class="inline-code">output_format</code>.</p>
+            </li>
+          </ul>
+
+          <p>Here we have 3 independent concerns, and possibly multiple (or
+          none) of those apply to a template; that&#39;s when you need a
+          <code class="inline-code">MergingTemplateConfigurationFactory</code>. The last
+          point describes a rule where you have mutually exclusive choices;
+          that&#39;s when you need a
+          <code class="inline-code">FirstMatchTemplateConfigurationFactory</code>, but this
+          time no choice is also allowed. Here&#39;s the source code, assuming
+          <code class="inline-code">cfg</code> stores the shared
+          <code class="inline-code">Configuration</code> instance:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">TemplateConfiguration tcStats = new TemplateConfiguration();
+tcStats.setDateTimeFormat(&quot;iso&quot;);
+tcStats.setDateFormat(&quot;iso&quot;);
+tcStats.setTimeFormat(&quot;iso&quot;);
+tcStats.setTimeZone(DateUtil.UTC);
+
+TemplateConfiguration tcMail = new TemplateConfiguration();
+tcMail.setEncoding(&quot;utf-8&quot;);
+
+TemplateConfiguration tcHTML = new TemplateConfiguration();
+tcHTML.setOutputFormat(HTMLOutputFormat.INSTANCE);
+
+TemplateConfiguration tcXML = new TemplateConfiguration();
+tcXML.setOutputFormat(XMLOutputFormat.INSTANCE);
+
+cfg.setTemplateConfigurations(
+        new MergingTemplateConfigurationFactory(
+                new ConditionalTemplateConfigurationFactory(
+                        new FileNameGlobMatcher(&quot;*.stats.*&quot;),
+                        tcStats),
+                new ConditionalTemplateConfigurationFactory(
+                        new PathGlobMatcher(&quot;mail/**&quot;),
+                        tcMail),
+                new FirstMatchTemplateConfigurationFactory(
+                        new ConditionalTemplateConfigurationFactory(
+                                new FileExtensionMatcher(&quot;xml&quot;),
+                                tcXML),
+                        new ConditionalTemplateConfigurationFactory(
+                                new OrMatcher(
+                                        new FileExtensionMatcher(&quot;html&quot;),
+                                        new FileExtensionMatcher(&quot;htm&quot;)),
+                                tcHTML)
+                ).allowNoMatch(true)
+        )
+);</pre></div>
+
+          <p>The equivalent configuration using a Java
+          <code class="inline-code">*.properties</code> file or other kind of string-string
+          key value pairs (the <code class="inline-code">\</code>-s are prescribed by the
+          Java Properties file format only):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">templateConfigurations = \
+    MergingTemplateConfigurationFactory( \
+        ConditionalTemplateConfigurationFactory( \
+            FileNameGlobMatcher(&quot;*.stats.*&quot;), \
+            TemplateConfiguration( \
+                dateTimeFormat = &quot;iso&quot;, \
+                dateFormat = &quot;iso&quot;, \
+                timeFormat = &quot;iso&quot;, \
+                timeZone = TimeZone(&quot;UTC&quot;) \
+            ) \
+        ), \
+        ConditionalTemplateConfigurationFactory( \
+            PathGlobMatcher(&quot;mail/**&quot;), \
+            TemplateConfiguration(encoding = &quot;utf-8&quot;) \
+        ), \
+        FirstMatchTemplateConfigurationFactory( \
+            ConditionalTemplateConfigurationFactory( \
+                FileExtensionMatcher(&quot;xml&quot;), \
+                TemplateConfiguration(outputFormat = XMLOutputFormat()) \
+            ), \
+            ConditionalTemplateConfigurationFactory( \
+                OrMatcher( \
+                    FileExtensionMatcher(&quot;html&quot;), \
+                    FileExtensionMatcher(&quot;htm&quot;) \
+                ), \
+                TemplateConfiguration(outputFormat = HTMLOutputFormat()) \
+            ), \
+            allowNoMatch = true \
+        ) \
+    )</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_errorhandling.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_outputformatsautoesc.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_templateloading.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_templateloading.html b/builds/2.3.26-nightly/pgui_config_templateloading.html
new file mode 100644
index 0000000..62595bb
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_templateloading.html
@@ -0,0 +1,364 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Template loading - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Template loading">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_templateloading.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_templateloading.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_templateloading.html"><span itemprop="name">Template loading</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Template loading"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_settings.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_errorhandling.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_templateloading" itemprop="headline">Template loading</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_38" data-menu-target="autoid_38">Template loaders</a><ul><li><a class="page-menu-link" href="#autoid_39" data-menu-target="autoid_39">Built-in template loaders</a></li><li><a class="page-menu-link" href="#autoid_40" data-menu-target="autoid_40">Loading templates from multiple locations</a></li><li><a class="page-menu-link" href="#autoid_41" data-menu-target="autoid_41">Loading templates from other sources</a></li><li><a class="page-menu-link" href="#autoid_42" data-menu-target="autoid_42">The template name (template path)</a></li></ul></li><li><a class="page-menu-link" href="#pgui_config_templateloading_caching" data-menu-target="pgui_config_templateloading_caching">Template caching</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_38">Template loaders</h2>
+
+
+          
+
+          <p>Template loaders are objects that load raw textual data based
+          on abstract template paths like <code class="inline-code">&quot;index.ftl&quot;</code> or
+          <code class="inline-code">&quot;products/catalog.ftl&quot;</code>. It&#39;s up to the concrete
+          template loader if from where and how the template
+          "files" are loaded. They could be real files inside a
+          specified directory, or values in a data base table, or
+          <code class="inline-code">String</code>-s in a Java Map, etc. When you call
+          <code class="inline-code">cfg.getTemplate</code> (where <code class="inline-code">cfg</code> is
+          a <code class="inline-code">Configuration</code> instance), FreeMarker asks the
+          template loader (<code class="inline-code">cfg.getTemplateLoader</code>) to return
+          the text for the given template path, and then FreeMarker parses
+          that text as template. It doesn&#39;t care or even know if the template
+          is a real file or not, and where it is physically; those details are
+          only known by the template loader.</p>
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_39">Built-in template loaders</h3>
+
+
+            <p>You can set up the three most common template loading
+            mechanism in the <code class="inline-code">Configuration</code> using the
+            following <em>convenience</em> methods:</p>
+
+            <ul>
+              <li>
+                <p><code class="inline-code">void setDirectoryForTemplateLoading(File
+                dir)</code>: Sets a directory on the file system from which
+                to load templates. Template names (template paths) will be
+                interpreted relatively to this physical directory. It won&#39;t
+                let you load files outside this directory.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">void setClassForTemplateLoading(Class cl,
+                String basePackagePath)</code> and <code class="inline-code">void
+                setClassLoaderForTemplateLoading(ClassLoader classLoader,
+                String basePackagePath)</code>: These are for when you want
+                to load templates via the same mechanism with which Java loads
+                classes (from the class-path, as they used to say vaguely).
+                This is very likely be the preferred means of loading
+                templates for production code, as it allows you to keep
+                everything inside the deployment <code class="inline-code">jar</code> files.
+                The first parameter decides which Java
+                <code class="inline-code">ClassLoader</code> will be used. The second
+                parameter specifies the package that contains the templates,
+                in <code class="inline-code">/</code>-separated format. Note that if you
+                don&#39;t start it with <code class="inline-code">/</code>, it will be
+                interpreted relatively to the package of the
+                <code class="inline-code">Class</code> parameter.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">void setServletContextForTemplateLoading(Object
+                servletContext, String path)</code>: Takes the context of
+                your Servlet-based web application, and a base path, which is
+                interpreted relative to the web application root directory
+                (that&#39;s the parent of the <code class="inline-code">WEB-INF</code>
+                directory). Note that we refer to &quot;directory&quot; here although
+                this loading method works even for unpacked
+                <code class="inline-code">.war</code> files, since it uses
+                <code class="inline-code">ServletContext.getResource()</code> to access the
+                templates. If you omit the second parameter (or use
+                <code class="inline-code">&quot;&quot;</code>), you can simply store the static files
+                (<code class="inline-code">.html</code>, <code class="inline-code">.jpg</code>, etc.)
+                mixed with the <code class="inline-code">.ftl</code> files. Of course, you
+                must set up a Servlet for the <code class="inline-code">*.ftl</code>,
+                <code class="inline-code">*.ftlh</code>, <code class="inline-code">*.ftlx</code>
+                uri-patterns in <code class="inline-code">WEB-INF/web.xml</code> for this,
+                otherwise the client will get the raw templates as is! To
+                avoid a such accident, many prefers storing the templates
+                somewhere inside the <code class="inline-code">WEB-INF</code> directory,
+                which is never visitable directly. This mechanism will very
+                likely be the preferred means of loading templates for servlet
+                applications, since the templates can be updated without
+                restarting the web application, while this often doesn&#39;t work
+                with the class-loader mechanism.</p>
+              </li>
+            </ul>
+
+            <p>If you want to use a custom
+            <code class="inline-code">TemplateLoader</code> implementation, or need to set
+            up some extra settings of a built-in template loader, you need to
+            instantiate the <code class="inline-code">TemplateLoader</code> object yourself,
+            and then call
+            <code class="inline-code">Configuration.setTemplateLoader(TemplateLoader)</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">WebappTemplateLoader templateLoader = new WebappTemplateLoader(servletContext, &quot;WEB-INF/templates&quot;);
+templateLoader.setURLConnectionUsesCaches(false);
+templateLoader.setAttemptFileAccess(false);
+cfg.setTemplateLoader(templateLoader);</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_40">Loading templates from multiple locations</h3>
+
+
+            <p>If you need to load templates from multiple locations, you
+            have to instantiate the template loader objects for every
+            location, wrap them into a <code class="inline-code">MultiTemplateLoader</code>,
+            and finally pass that loader to the
+            <code class="inline-code">setTemplateLoader(TemplateLoader loader)</code> method
+            of <code class="inline-code">Configuration</code>. Here&#39;s an example for loading
+            templates from two distinct directories and with the
+            class-loader:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">import freemarker.cache.*; // template loaders live in this package
+
+<em>...</em>
+
+FileTemplateLoader ftl1 = new FileTemplateLoader(new File(&quot;/tmp/templates&quot;));
+FileTemplateLoader ftl2 = new FileTemplateLoader(new File(&quot;/usr/data/templates&quot;));
+ClassTemplateLoader ctl = new ClassTemplateLoader(getClass(), &quot;/com/example/templates&quot;);
+
+MultiTemplateLoader mtl = new MultiTemplateLoader(new TemplateLoader[] { ftl1, ftl2, ctl });
+
+cfg.setTemplateLoader(mtl);</pre></div>
+
+            <p>Now FreeMarker will try to load templates from
+            <code class="inline-code">/tmp/templates</code> directory, and if it does not
+            find the requested template there, it will try to load that from
+            <code class="inline-code">/usr/data/templates</code>, and if it still does not
+            find the requested template, then it tries to load it from the
+            <code class="inline-code">com.example.templates</code> Java package.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_41">Loading templates from other sources</h3>
+
+
+            <p>If none of the built-in class loaders fit your needs, you
+            can write your own class that implements the
+            <code class="inline-code">freemarker.cache.TemplateLoader</code> interface and
+            pass it to the <code class="inline-code">setTemplateLoader(TemplateLoader
+            loader)</code> method of <code class="inline-code">Configuration</code>.
+            Please read the API JavaDoc for more information.</p>
+
+            <p>If your template source accesses the templates through an
+            URL, you needn&#39;t implement a <code class="inline-code">TemplateLoader</code>
+            from scratch; you can choose to subclass
+            <code class="inline-code">freemarker.cache.URLTemplateLoader</code> instead and
+            just implement the <code class="inline-code">URL getURL(String
+            templateName)</code> method.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_42">The template name (template path)</h3>
+
+
+            
+
+            
+
+            
+
+            <p>It is up to the template loader how it interprets template
+            names (also known as template paths). But to work together with
+            other components there are restrictions regarding the format of
+            the path. In general, it is strongly recommended that template
+            loaders use URL-style paths. The path must not use
+            <code class="inline-code">/</code> (path step separator) character, nor the
+            <code class="inline-code">.</code> (same-directory) and <code class="inline-code">..</code>
+            (parent directory) path steps with other meaning than they have in
+            URL paths (or in UN*X paths). The <code class="inline-code">*</code> (asterisk)
+            step is also reserved, and used for "template
+            acquisition" feature of FreeMarker.</p>
+
+            <p><code class="inline-code">://</code> (or with
+            <code class="inline-code">template_name_format</code> setting set to
+            <code class="inline-code">DEFAULT_2_4_0</code>, the <code class="inline-code">:</code> (colon)
+            character) is reserved for specifying a scheme part, similarly as
+            it works with URI-s. For example
+            <code class="inline-code">someModule://foo/bar.ftl</code> uses the
+            <code class="inline-code">someModule</code>, or assuming the
+            <code class="inline-code">DEFAULT_2_4_0</code> format,
+            <code class="inline-code">classpath:foo/bar.ftl</code> uses the
+            <code class="inline-code">classpath</code> scheme. Interpreting the scheme part
+            is completely up to the <code class="inline-code">TemplateLoader</code>. (The
+            FreeMarker core is only aware of the idea of schemes because
+            otherwise it couldn&#39;t resolve relative template names
+            properly.)</p>
+
+            <p>FreeMarker always normalizes the paths before passing them
+            to the <code class="inline-code">TemplateLoader</code>, so the paths don&#39;t
+            contain <code class="inline-code">/../</code> or such, and are relative to the
+            imaginary template root directory (that is, they don&#39;t start with
+            <code class="inline-code">/</code>). They don&#39;t contain the <code class="inline-code">*</code>
+            step either, as template acquisition happens in an earlier stage.
+            Furthermore, with <code class="inline-code">template_name_format</code> setting
+            set to <code class="inline-code">DEFAULT_2_4_0</code>, multiple consecutive
+            <code class="inline-code">/</code>-s will be normalized to a single
+            <code class="inline-code">/</code> (unless they are part of the
+            <code class="inline-code">://</code> scheme separator).</p>
+
+            <p>Note that FreeMarker template path should always uses slash
+            (not backslash) regardless of the host OS.</p>
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_config_templateloading_caching">Template caching</h2>
+
+
+          
+
+          
+
+          <p>FreeMarker caches templates (assuming you use the
+          <code class="inline-code">Configuration</code> methods to create
+          <code class="inline-code">Template</code> objects). This means that when you call
+          <code class="inline-code">getTemplate</code>, FreeMarker not only returns the
+          resulting <code class="inline-code">Template</code> object, but stores it in a
+          cache, so when next time you call <code class="inline-code">getTemplate</code>
+          with the same (or equivalent) path, it just returns the cached
+          <code class="inline-code">Template</code> instance, and will not load and parse
+          the template file again.</p>
+
+          <p>If you change the template file, then FreeMarker will re-load
+          and re-parse the template automatically when you get the template
+          next time. However, since always checking for changes can be burden
+          for a system that processes lot of templates, there is a
+          <code class="inline-code">Configuration</code> level setting called "update
+          delay" (defaults is 5 seconds). Until this much time has
+          elapsed since the last checking for a newer version, FreeMarker will
+          not check again if the template was changed. If you want to see the
+          changes without delay, set this setting to 0. Note that some
+          template loaders won&#39;t see that a template was changed because of
+          the underlying storage mechanism doesn&#39;t support that; for example,
+          class-loader based template loaders may have this problem.</p>
+
+          <p>A template will be removed from the cache if you call
+          <code class="inline-code">getTemplate</code> and FreeMarker realizes that the
+          template file has been removed meanwhile. Also, if the JVM thinks
+          that it begins to run out of memory, by default it can arbitrarily
+          drop templates from the cache. Furthermore, you can empty the cache
+          manually with the <code class="inline-code">clearTemplateCache</code> method of
+          <code class="inline-code">Configuration</code>. You can also drop selected
+          template from the cache with
+          <code class="inline-code">removeTemplateFromCache</code>; this can be also
+          utilized to force re-loading a template regardless of the
+          "update delay" setting.</p>
+
+          <p>The actual strategy of when a cached template should be thrown
+          away is pluggable with the <code class="inline-code">cache_storage</code> setting,
+          by which you can plug any <code class="inline-code">CacheStorage</code>
+          implementation. For most users
+          <code class="inline-code">freemarker.cache.MruCacheStorage</code> will be
+          sufficient. This cache storage implements a two-level Most Recently
+          Used cache. In the first level, items are strongly referenced up to
+          the specified maximum (strongly referenced items can&#39;t be dropped by
+          the JVM, as opposed to softly referenced items). When the maximum is
+          exceeded, the least recently used item is moved into the second
+          level cache, where they are softly referenced, up to another
+          specified maximum. The size of the strong and soft parts can be
+          specified with the constructor. For example, set the size of the
+          strong part to 20, and the size of soft part to 250:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setCacheStorage(new freemarker.cache.MruCacheStorage(20, 250))</pre></div>
+
+          <p>Or, since <code class="inline-code">MruCacheStorage</code> is the default
+          cache storage implementation:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setSetting(Configuration.CACHE_STORAGE_KEY, &quot;strong:20, soft:250&quot;);</pre></div>
+
+          <p>When you create a new <code class="inline-code">Configuration</code> object,
+          initially it uses an <code class="inline-code">MruCacheStorage</code> where
+          <code class="inline-code">strongSizeLimit</code> is 0, and
+          <code class="inline-code">softSizeLimit</code> is
+          <code class="inline-code">Integer.MAX_VALUE</code> (that is, in practice,
+          infinite). Depending on how smart the JVM is, using non-0
+          <code class="inline-code">strongSizeLimit</code> is maybe a safer option, as with
+          only softly referenced items the JVM could even throw the most
+          frequently used templates when there&#39;s a resource shortage, which
+          then have to be re-loaded and re-parsed, burdening the system even
+          more.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_settings.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_errorhandling.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel.html b/builds/2.3.26-nightly/pgui_datamodel.html
new file mode 100644
index 0000000..d660cee
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The Data Model - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The Data Model">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li></ul><div class="bookmark
 s" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_quickstart_all.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_basics.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="pgui_datamodel" itemprop="headline">The Data Model</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="pgui_datamodel_basics.html" data-menu-target="pgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_datamodel_scalar.html" data-menu-target="pgui_datamodel_scalar">Scalars</a></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html" data-menu-target="pgui_datamodel_parent">Containers</a></li><li><a class="page-menu-link" href="pgui_datamodel_method.html" data-menu-target="pgui_datamodel_method">Methods</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html" data-menu-target="pgui_datamodel_directive">Directives</a></li><li><a class="page-menu-link" href="pgui_datamodel_node.html" data-menu-target="pgui_datamodel_node">Node variables</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html" data-menu-target="pgui_datamodel_objectWrapper">Object wrappers</a></li></ul> </div><p>This is just an introductory explanation. See the <a href="api/index.html">FreeMarker Java API 
 documentation</a> for more
+      detailed information.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_quickstart_all.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_basics.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel_basics.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel_basics.html b/builds/2.3.26-nightly/pgui_datamodel_basics.html
new file mode 100644
index 0000000..eae2c70
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel_basics.html
@@ -0,0 +1,105 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Basics - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Basics">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel_basics.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel_basics.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel_basics.html"><span itemprop="name">Basics</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model","Basics"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_scalar.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_datamodel_basics" itemprop="headline">Basics</h1>
+</div></div><p>You have seen how to build a data-model in the <a href="pgui_quickstart.html">Getting Started</a> using the standard
+        Java classes (<code class="inline-code">Map</code>, <code class="inline-code">String</code>,
+        etc.). Internally, the variables available in the template are Java
+        objects that implement the
+        <code class="inline-code">freemarker.template.TemplateModel</code> interface. But
+        you could use standard Java collections as variables in your
+        data-model, because these were replaced with the appropriate
+        <code class="inline-code">TemplateModel</code> instances behind the scenes. This
+        facility is called <strong>object wrapping</strong>.
+        The object wrapping facility can convert <em>any</em> kind
+        of object transparently to the instances of classes that implement
+        <code class="inline-code">TemplateModel</code> interface. This makes it possible,
+        for example, to access <code class="inline-code">java.sql.ResultSet</code> as
+        sequence variable in templates, or to access
+        <code class="inline-code">javax.servlet.ServletRequest</code> objects as a hash
+        variable that contains the request attributes, or even to traverse XML
+        documents as FTL variables (<a href="xgui.html">see here</a>). To
+        wrap (convert) these objects, however, you need to plug the proper
+        <code class="inline-code">ObjectWrapper</code> implementation (possibly your custom
+        implementation); this will be discussed <a href="pgui_datamodel_objectWrapper.html">later</a>. The point for now
+        is that any object that you want to access from the templates, sooner
+        or later must be converted to an object that implements
+        <code class="inline-code">TemplateModel</code> interface. So first you should
+        familiarize yourself with writing of <code class="inline-code">TemplateModel</code>
+        implementations.</p><p>There is roughly one
+        <code class="inline-code">freemarker.template.TemplateModel</code> descendant
+        interface corresponding to each basic type of variable
+        (<code class="inline-code">TemplateHashModel</code> for hashes,
+        <code class="inline-code">TemplateSequenceModel</code> sequences,
+        <code class="inline-code">TemplateNumberModel</code> for numbers, etc.). For
+        example, if you want to expose a <code class="inline-code">java.sql.ResultSet</code>
+        as a sequence for the templates, then you have to write a
+        <code class="inline-code">TemplateSequenceModel</code> implementation that can read
+        <code class="inline-code">java.sql.ResultSet</code>-s. We used to say on this, that
+        you <em>wrap</em> the
+        <code class="inline-code">java.sql.ResultSet</code> with your
+        <code class="inline-code">TemplateModel</code> implementation, as basically you just
+        encapsulate the <code class="inline-code">java.sql.ResultSet</code> to provide
+        access to it with the common <code class="inline-code">TemplateSequenceModel</code>
+        interface. Note that a class can implement multiple
+        <code class="inline-code">TemplateModel</code> interfaces; this is why FTL variables
+        can have multiple types (see: <a href="dgui_datamodel_basics.html">Template Author&#39;s Guide/Values, Types/Basics</a>)</p><p>Note that a trivial implementation of these interfaces is
+        provided with the <code class="inline-code">freemarker.template</code> package. For
+        example, to convert a <code class="inline-code">String</code> to FTL string
+        variable, you can use <code class="inline-code">SimpleScalar</code>, to convert a
+        <code class="inline-code">java.util.Map</code> to FTL hash variable, you can use
+        <code class="inline-code">SimpleHash</code>, etc.</p><p>An easy way to try your own <code class="inline-code">TemplateModel</code>
+        implementation, is to create an instance of that, and drop it directly
+        into the data-model (as <code class="inline-code">put</code> it into the root hash).
+        The object wrapper will expose it untouched for the template, as it
+        already implements <code class="inline-code">TemplateModel</code>, so no conversion
+        (wrapping) needed. (This trick is also useful in cases when you do not
+        want the object wrapper to try to wrap (convert) a certain
+        object.)</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_scalar.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[20/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_local.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_local.html b/builds/2.3.26-nightly/ref_directive_local.html
new file mode 100644
index 0000000..60fe864
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_local.html
@@ -0,0 +1,114 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>local - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="local">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_local.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_local.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_local.html"><span itemprop="name">local</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","local"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_list.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_macro.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_local" itemprop="headline">local</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_110" data-menu-target="autoid_110">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_111" data-menu-target="autoid_111">Description</a></li></ul> </div><a name="ref.directive.local"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_110">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#local <em class="code-color">name</em>=<em class="code-color">value</em>&gt;</code>
+or
+<code class="inline-code">&lt;#local <em class="code-color">name1</em>=<em class="code-color">value1</em> <em class="code-color">name2</em>=<em class="code-color">value2</em> <em class="code-color">... nameN</em>=<em class="code-color">valueN</em>&gt;</code>
+or
+<code class="inline-code">&lt;#local <em class="code-color">name</em>&gt;
+  <em class="code-color">capture this</em>
+&lt;/#local&gt;
+</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">name</em></code>: the
+              name of the local object in the root. It is not an expression.
+              However, it can be written as a string literal, which is useful
+              if the variable name contains reserved characters, for example
+              <code class="inline-code">&lt;#local &quot;foo-bar&quot; = 1&gt;</code>. Note that this
+              string literal does not expand interpolations (as
+              <code class="inline-code">&quot;${foo}&quot;</code>).
+            </li>
+
+            <li>
+              <code class="inline-code">=</code>: Assignment operator, which can also
+              be one of the shorthand assignment operators
+              (<code class="inline-code">++</code>, <code class="inline-code">+=</code>, etc.), just like
+              with <a href="ref_directive_assign.html">the
+              <code>assign</code> directive</a>,
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">value</em></code>: the
+              value to store. Expression.
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_111">Description</h2>
+
+
+          <p>It is similar to <a href="ref_directive_assign.html#ref.directive.assign">assign
+          directive</a>, but it creates or replaces local variables. This
+          only works inside macro definitions and function definitons.</p>
+
+          <p>For more information about variables, read this: <a href="dgui_misc_var.html">Template Author&#39;s Guide/Miscellaneous/Defining variables in the template</a></p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_list.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_macro.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_macro.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_macro.html b/builds/2.3.26-nightly/ref_directive_macro.html
new file mode 100644
index 0000000..0c5ee41
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_macro.html
@@ -0,0 +1,450 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>macro, nested, return - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="macro, nested, return">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_macro.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_macro.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_macro.html"><span itemprop="name">macro, nested, return</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","macro, nested, return"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_local.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_noautoesc.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_macro" itemprop="headline">macro, nested, return</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_112" data-menu-target="autoid_112">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_113" data-menu-target="autoid_113">Description</a><ul><li><a class="page-menu-link" href="#autoid_114" data-menu-target="autoid_114">nested</a></li><li><a class="page-menu-link" href="#autoid_115" data-menu-target="autoid_115">return</a></li></ul></li></ul> </div><a name="ref.directive.macro"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_112">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#macro <em class="code-color">name</em> <em class="code-color">param1</em> <em class="code-color">param2</em> <em class="code-color">... paramN</em>&gt;
+  <em class="code-color">...</em>
+  &lt;#nested <em class="code-color">loopvar1</em>, <em class="code-color">loopvar2</em>, <em class="code-color">...</em>, <em class="code-color">loopvarN</em>&gt;
+  <em class="code-color">...</em>
+  &lt;#return&gt;
+  <em class="code-color">...</em>
+&lt;/#macro&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">name</em></code>: name
+              of macro variable. It&#39;s not an expression. It follows the same
+              syntax as <a href="dgui_template_exp.html#dgui_template_exp_var_toplevel">like
+              top-level variable references</a>, like
+              <code class="inline-code">myMacro</code> or <code class="inline-code">my\-macro</code>.
+              However, it can also be written as a string literal, which is
+              useful if the macro name contains characters that can&#39;t be
+              specified in an identifier, for example <code class="inline-code">&lt;#macro
+              &quot;foo~bar&quot;&gt;<em class="code-color">...</em></code>. Note that
+              this string literal does not expand interpolations (as
+              <code class="inline-code">&quot;${foo}&quot;</code>).
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">param1</em></code>,
+              <code class="inline-code"><em class="code-color">param2</em></code>, ...etc.:
+              the name of the <a href="dgui_misc_var.html">local
+              variables</a> store the parameter values (not expression),
+              optionally followed by <code class="inline-code">=</code> and the default
+              value (that&#39;s an expression). The default value can even be
+              another parameter, for example <code class="inline-code">&lt;#macro section title
+              label=title&gt;</code>. The parameter name uses the same
+              syntax as <a href="dgui_template_exp.html#dgui_template_exp_var_toplevel">like
+              top-level variable references</a>, so the same features and
+              restrictions apply.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">paramN</em></code>,
+              the last parameter may optionally has 3 trailing dots
+              (<code class="inline-code">...</code>), which indicates that the macro takes a
+              variable number of parameters and the parameters that doesn&#39;t
+              match any other parameters will be collected in this last
+              parameter (also called the catch-all parameter). When the macro
+              is called with named parameters,
+              <code class="inline-code"><em class="code-color">paramN</em></code> will be a
+              hash containing all of the undeclared key/value pairs passed to
+              the macro. When the macro is called using positional parameters,
+              <code class="inline-code"><em class="code-color">paramN</em></code> will be the
+              sequence of the extra parameter values. (Inside the macro, to
+              find out which was the case, you can use
+              <code class="inline-code"><em class="code-color">myCatchAllParam</em>?is_sequence</code>.)
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">loopvar1</em></code>,
+              <code class="inline-code"><em class="code-color">loopvar2</em></code>, ...etc.:
+              Optional. The values of <a href="dgui_misc_var.html">loop
+              variables</a> that the <code class="inline-code">nested</code> directive
+              wants to create for the nested content. These are
+              expressions.
+            </li>
+          </ul>
+
+          <p>The <code class="inline-code">return</code> and <code class="inline-code">nested</code>
+          directives are optional and can be used anywhere and for any times
+          between the <code class="inline-code">&lt;#macro
+          <em class="code-color">...</em>&gt;</code> and
+          <code class="inline-code">&lt;/#macro&gt;</code>.</p>
+
+          <p>Parameters without default value must precede parameters with
+          default value
+          (<code class="inline-code"><em class="code-color">paramName</em>=<em class="code-color">defaultValue</em></code>).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_113">Description</h2>
+
+
+          <p>Creates a macro variable (in the current namespace, if you
+          know namespace feature). If you are new to macros and user-defined
+          directives you should read the <a href="dgui_misc_userdefdir.html">the tutorial about user-defined
+          directives</a>.</p>
+
+          <p>Macro variable stores a template fragment (called macro
+          definition body) that can be used as <a href="ref_directive_userDefined.html#ref.directive.userDefined">user-defined directive</a>.
+          The variable also stores the name of allowed parameters to the
+          user-defined directive. You must give value for all of those
+          parameters when you use the variable as directive, except for
+          parameters that has a default value. The default value will be used
+          if and only if you don&#39;t give value for the parameter when you call
+          the macro.</p>
+
+          <p>The variable will be created at the beginning of the template;
+          it does not mater where the <code class="inline-code">macro</code> directive is
+          placed in the template. Thus, this will work:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- call the macro; the macro variable is already created: --&gt;
+&lt;@test/&gt;
+...
+
+&lt;#-- create the macro variable: --&gt;
+&lt;#macro test&gt;
+  Test text
+&lt;/#macro&gt;</pre></div>
+
+          <p>However, if the macro definitions are inserted with
+          <code class="inline-code">include</code> directive, they will not be available
+          until FreeMarker has executed the <code class="inline-code">include</code>
+          directive.</p>
+
+          <p>Example: Macro without parameters:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro test&gt;
+  Test text
+&lt;/#macro&gt;
+&lt;#-- call the macro: --&gt;
+&lt;@test/&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  Test text
+ </pre></div>
+
+          <p>Example: Macro with parameters:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro test foo bar baaz&gt;
+  Test text, and the params: ${foo}, ${bar}, ${baaz}
+&lt;/#macro&gt;
+&lt;#-- call the macro: --&gt;
+&lt;@test foo=&quot;a&quot; bar=&quot;b&quot; baaz=5*5-2/&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  Test text, and the params: a, b, 23
+   </pre></div>
+
+          <p>Example: Macro with parameters and default parameter
+          values:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro test foo bar=&quot;Bar&quot; baaz=-1&gt;
+  Test text, and the params: ${foo}, ${bar}, ${baaz}
+&lt;/#macro&gt;
+&lt;@test foo=&quot;a&quot; bar=&quot;b&quot; baaz=5*5-2/&gt;
+&lt;@test foo=&quot;a&quot; bar=&quot;b&quot;/&gt;
+&lt;@test foo=&quot;a&quot; baaz=5*5-2/&gt;
+&lt;@test foo=&quot;a&quot;/&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  Test text, and the params: a, b, 23
+  Test text, and the params: a, b, -1
+  Test text, and the params: a, Bar, 23
+  Test text, and the params: a, Bar, -1
+ </pre></div>
+
+          <p>Example: A more complex macro.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro list title items&gt;
+  &lt;p&gt;${title?cap_first}:
+  &lt;ul&gt;
+    &lt;#list items as x&gt;
+      &lt;li&gt;${x?cap_first}
+    &lt;/#list&gt;
+  &lt;/ul&gt;
+&lt;/#macro&gt;
+&lt;@list items=[&quot;mouse&quot;, &quot;elephant&quot;, &quot;python&quot;] title=&quot;Animals&quot;/&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;Animals:
+  &lt;ul&gt;
+      &lt;li&gt;Mouse
+      &lt;li&gt;Elephant
+      &lt;li&gt;Python
+  &lt;/ul&gt;
+ </pre></div>
+
+          <p>Example: A macro with support for a variable number of named
+          parameters:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro img src extra...&gt;
+  &lt;img src=&quot;/myapp${src?ensure_starts_with(&#39;/&#39;)}&quot;
+    &lt;#list extra as attrName, attrVal&gt;
+      ${attrName}=&quot;${attrVal}&quot;
+    &lt;/#list&gt;
+  &gt;
+&lt;/#macro&gt;
+&lt;@img src=&quot;/images/test.png&quot; width=100 height=50 alt=&quot;Test&quot;/&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;img src=&quot;/context/images/test.png&quot;
+    alt=&quot;Test&quot;
+    height=&quot;50&quot;
+    width=&quot;100&quot;
+  &gt;</pre></div>
+
+          <p>Example: A macro that supports a variable number of positional
+          parameters, regardless if it uses named or positional parameter
+          passing:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro m a b ext...&gt;
+  a = ${a}
+  b = ${b}
+  &lt;#if ext?is_sequence&gt;
+    &lt;#list ext as e&gt;
+      ${e?index} = ${e}
+    &lt;/#list&gt;
+  &lt;#else&gt;
+    &lt;#list ext as k, v&gt;
+      ${k} = ${v}
+    &lt;/#list&gt;
+  &lt;/#if&gt;
+&lt;/#macro&gt;
+
+&lt;@m 1 2 3 4 5 /&gt;
+
+&lt;@m a=1 b=2 c=3 d=4 e=5 data\-foo=6 myns\:bar=7 /&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  a = 1
+  b = 2
+      0 = 3
+      1 = 4
+      2 = 5
+
+  a = 1
+  b = 2
+      c = 3
+      d = 4
+      e = 5
+      data-foo=6
+      myns:bar=7</pre></div>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>Currently, named catch-all parameters are unordered, that
+            is, you don&#39;t know what order will they be enumerated. That is,
+            they aren&#39;t returned in the same order as they were passed in
+            (that above example output shows them in the same order for
+            understandability only).</p>
+            </div>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_114">nested</h3>
+
+
+            <a name="ref.directive.nested"></a>
+
+            <p>The <code class="inline-code">nested</code> directive executes the
+            template fragment between the start-tag and end-tags of the
+            user-defined directive. The nested part can contain anything what
+            is valid in templates; interpolations, directives, ...etc. It is
+            executed in the context where the macro was called from, rather
+            than in the context of the macro definition body. Thus, for
+            example, you don&#39;t see the local variables of the macro in the
+            nested part. If you don&#39;t call the <code class="inline-code">nested</code>
+            directive, the part between the start-tag and end-tags of the
+            user-defined directive will be ignored.</p>
+
+            <p>Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro do_twice&gt;
+  1. &lt;#nested&gt;
+  2. &lt;#nested&gt;
+&lt;/#macro&gt;
+&lt;@do_twice&gt;something&lt;/@do_twice&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  1. something
+  2. something
+ </pre></div>
+
+            <p>The nested directive can create loop variables for the
+            nested content. For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro do_thrice&gt;
+  &lt;#nested <strong>1</strong>&gt;
+  &lt;#nested <strong>2</strong>&gt;
+  &lt;#nested <strong>3</strong>&gt;
+&lt;/#macro&gt;
+&lt;@do_thrice <strong>; x</strong>&gt;
+  ${<strong>x</strong>} Anything.
+&lt;/@do_thrice&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  1 Anything.
+  2 Anything.
+  3 Anything.
+ </pre></div>
+
+            <p>A more complex example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro repeat count&gt;
+  &lt;#list 1..count as x&gt;
+    &lt;#nested <strong>x, x/2, x==count</strong>&gt;
+  &lt;/#list&gt;
+&lt;/#macro&gt;
+&lt;@repeat count=4 ; <strong>c, halfc, last</strong>&gt;
+  ${<strong>c</strong>}. ${<strong>halfc</strong>}&lt;#if <strong>last</strong>&gt; Last!&lt;/#if&gt;
+&lt;/@repeat&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  1. 0.5
+  2. 1
+  3. 1.5
+  4. 2 Last!
+ </pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_115">return</h3>
+
+
+            <a name="ref.directive.macro.return"></a>
+
+            <p>With the <code class="inline-code">return</code> directive, you can leave
+            a macro or function definition body anywhere. Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro test&gt;
+  Test text
+  &lt;#return&gt;
+  Will not be printed.
+&lt;/#macro&gt;
+&lt;@test/&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  Test text
+  </pre></div>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_local.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_noautoesc.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_noautoesc.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_noautoesc.html b/builds/2.3.26-nightly/ref_directive_noautoesc.html
new file mode 100644
index 0000000..7664b2f
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_noautoesc.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>noautoesc - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="noautoesc">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_noautoesc.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_noautoesc.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_noautoesc.html"><span itemprop="name">noautoesc</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","noautoesc"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_macro.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_noparse.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_noautoesc" itemprop="headline">noautoesc</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_116" data-menu-target="autoid_116">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_117" data-menu-target="autoid_117">Description</a></li></ul> </div><a name="ref.directive.noautoesc"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_116">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#noautoesc&gt;
+  <em class="code-color">...</em>
+&lt;/#noautoesc&gt;</code>
+</pre>
+
+
+          <p>Camel case name variant: <code class="inline-code">noAutoEsc</code></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_117">Description</h2>
+
+
+          <p>Disables <a href="dgui_misc_autoescaping.html">auto-escaping</a> in the nested
+          section. Note that to prevent escaping for just a single
+          <code class="inline-code">${<em class="code-color">expression</em>}</code> you
+          should use
+          <code class="inline-code">${<em class="code-color">expression</em>?no_esc}</code>
+          instead.</p>
+
+          <p>This directive only has effect on the section that is
+          literally (as in the text editor) inside the nested bock, not on the
+          parts that are called/included from there.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;XML&quot;&gt;
+${&quot;&amp;&quot;}
+&lt;#noautoesc&gt;
+  ${&quot;&amp;&quot;}
+  ...
+  ${&quot;&amp;&quot;}
+&lt;/#noautoesc&gt;
+${&quot;&amp;&quot;}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&amp;amp;
+  &amp;
+  ...
+  &amp;
+&amp;amp;</pre></div>
+
+          <p><code class="inline-code">noautoesc</code> can be used regardless of what
+          the current <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output format</a>
+          is (unlike the <a href="ref_directive_autoesc.html"><code>autoesc</code>
+          directive</a>).</p>
+
+          <p><code class="inline-code">noautoesc</code> can also be used nested into
+          <a href="ref_directive_autoesc.html"><code>autoesc</code>
+          directive</a> to re-enable escaping.</p>
+
+          <p><code class="inline-code">noautoesc</code> can be used on places where
+          auto-escaping is already disabled, such as even inside another
+          <code class="inline-code">noautoesc</code> block. Doing so is redundant but
+          allowed.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_macro.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_noparse.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_noparse.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_noparse.html b/builds/2.3.26-nightly/ref_directive_noparse.html
new file mode 100644
index 0000000..d22261c
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_noparse.html
@@ -0,0 +1,105 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>noparse - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="noparse">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_noparse.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_noparse.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_noparse.html"><span itemprop="name">noparse</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","noparse"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_noautoesc.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_nt.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_noparse" itemprop="headline">noparse</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_118" data-menu-target="autoid_118">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_119" data-menu-target="autoid_119">Description</a></li></ul> </div><a name="ref.directive.noparse"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_118">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#noparse&gt;
+  <em class="code-color">...</em>
+&lt;/#noparse&gt;</code>
+</pre>
+
+
+          <p>Camel case name variant: <code class="inline-code">noParse</code></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_119">Description</h2>
+
+
+          <p>FreeMarker will not search FTL tags and interpolations and
+          other special character sequences in the body of this directive,
+          except the noparse end-tag.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">Example:
+--------
+
+<strong>&lt;#noparse&gt;</strong>
+  &lt;#list animals as animal&gt;
+  &lt;tr&gt;&lt;td&gt;${animal.name}&lt;td&gt;${animal.price} Euros
+  &lt;/#list&gt;
+<strong>&lt;/#noparse&gt;</strong></pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Example:
+--------
+
+  &lt;#list animals as animal&gt;
+  &lt;tr&gt;&lt;td&gt;${animal.name}&lt;td&gt;${animal.price} Euros
+  &lt;/#list&gt;
+ </pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_noautoesc.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_nt.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_nt.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_nt.html b/builds/2.3.26-nightly/ref_directive_nt.html
new file mode 100644
index 0000000..5b59a63
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_nt.html
@@ -0,0 +1,80 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>nt - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="nt">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_nt.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_nt.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_nt.html"><span itemprop="name">nt</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","nt"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_noparse.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_outputformat.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_nt" itemprop="headline">nt</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_120" data-menu-target="autoid_120">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_121" data-menu-target="autoid_121">Description</a></li></ul> </div><a name="ref.directive.nt"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_120">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#nt&gt;</code>
+</pre>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_121">Description</h2>
+
+
+          <p>"No Trim". This directive disables <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">white-space
+          stripping</a> in the line where it occurs. It also disables the
+          effect of other trim directives occurring in the same line (the
+          effect of <code class="inline-code">t</code>, <code class="inline-code">rt</code>,
+          <code class="inline-code">lt</code>).</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_noparse.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_outputformat.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_outputformat.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_outputformat.html b/builds/2.3.26-nightly/ref_directive_outputformat.html
new file mode 100644
index 0000000..85e6bd8
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_outputformat.html
@@ -0,0 +1,194 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>outputformat - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="outputformat">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_outputformat.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_outputformat.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_outputformat.html"><span itemprop="name">outputformat</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","outputformat"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_nt.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_setting.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_outputformat" itemprop="headline">outputformat</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_122" data-menu-target="autoid_122">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_123" data-menu-target="autoid_123">Description</a></li></ul> </div><a name="ref.directive.outputformat"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_122">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#outputformat <em class="code-color">formatName</em>&gt;
+  <em class="code-color">...</em>
+&lt;/#outputFormat&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">formatName</em></code>:
+              A string constant; can&#39;t contain runtime expressions! This is
+              the name of the output format, like <code class="inline-code">&quot;HTML&quot;</code>,
+              <code class="inline-code">&quot;XML&quot;</code>, etc.; see the <a href="dgui_misc_autoescaping.html#topic.predefinedOutputFormats">table of the predefined
+              output formats here</a>. The referred output format must be
+              known by the <code class="inline-code">Configuration</code>, or else a <a href="gloss.html#gloss.parseTimeError">parse-time error</a> will
+              occur. The name can also be like
+              <code class="inline-code">&quot;<em class="code-color">outerFormatName</em>{<em class="code-color">innerFormatName</em>}&quot;</code>,
+              or
+              <code class="inline-code">&quot;{<em class="code-color">innerFormatName</em>}&quot;</code>;
+              <a href="#topic.combinedOutputFormats">see combined output
+              formats later</a>.
+            </li>
+          </ul>
+
+          <p>Camel case name variant: <code class="inline-code">outputFormat</code>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p><code class="inline-code">outputformat</code> exists since FreeMarker
+              2.3.24.</p>
+              </div>
+</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_123">Description</h2>
+
+
+          <p>Sets the <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output format</a>
+          to the specified one, inside the nested block. At the end of the
+          block, the earlier output format is restored.</p>
+
+          <p>This directive only has effect on the section that is
+          literally (as in the text editor) inside the nested bock, not on the
+          parts that are called/included from there.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;XML&quot;&gt;
+XML escaping: ${&quot;&amp;{}&quot;}
+&lt;#outputformat &quot;RTF&quot;&gt;
+  RTF escaping: ${&quot;&amp;{}&quot;}
+&lt;/#outputformat&gt;
+&lt;#outputformat &quot;plainText&quot;&gt;
+  No escsaping: ${&quot;&amp;{}&quot;}
+&lt;/#outputformat&gt;
+XML escsaping: ${&quot;&amp;{}&quot;}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">XML escsaping: &amp;amp;{}
+  RTF escaping: &amp;\{\}
+  No escsaping: &amp;{}
+XML escsaping: &amp;amp;{}</pre></div>
+
+          
+            
+
+
+
+<h3 class="content-header header-simplesect" id="topic.combinedOutputFormats">Combined (nested) output formats</h3>
+
+
+            <p>When <code class="inline-code">outputformat</code>-s are nested into each
+            other, normally, only the innermost output format will count. For
+            example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;XML&quot;&gt;
+${&quot;&#39;{}&quot;}
+&lt;#outputformat &quot;HTML&quot;&gt;
+  ${&quot;&#39;{}&quot;}
+  &lt;#outputformat &quot;RTF&quot;&gt;
+    ${&quot;&#39;{}&quot;}
+  &lt;/#outputformat&gt;
+&lt;/#outputformat&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">&amp;apos;{}
+  &amp;#39;{}
+    &#39;\{\}</pre></div>
+
+            <p>But sometimes you want all enclosing output format escaping
+            to be applied at once. In that case the 2nd
+            <code class="inline-code">${<em class="code-color">...</em>}</code> above should
+            be escaped with <code class="inline-code">&quot;HTML&quot;</code> and then with
+            <code class="inline-code">&quot;XML&quot;</code>, and the 3rd
+            <code class="inline-code">${<em class="code-color">...</em>}</code> should be
+            escaped with <code class="inline-code">&quot;RTF&quot;</code> and then with
+            <code class="inline-code">&quot;HTML&quot;</code> and then with <code class="inline-code">&quot;XML&quot;</code>.
+            These are called combined output formats, and can be referred by
+            names like <code class="inline-code">&quot;XML{HTML}&quot;</code> and
+            <code class="inline-code">&quot;XML{HTLM{RTF}}&quot;</code>, respectively. We could use
+            these names in the earlier two <code class="inline-code">outputformat</code>
+            calls, however, there&#39;s a shorthand where you inherit the part
+            outside the <code class="inline-code">{<em class="code-color">...</em>}</code>
+            from the enclosing output format:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl outputFormat=&quot;XML&quot;&gt;
+${&quot;&#39;{}&quot;}
+&lt;#outputFormat &quot;{HTML}&quot;&gt;&lt;#-- Same as &quot;XML{HTML}&quot; --&gt;
+  ${&quot;&#39;{}&quot;}
+  &lt;#outputFormat &#39;{RTF}&#39;&gt;&lt;#-- Same as &quot;XML{HTML{RTF}}&quot; --&gt;
+    ${&quot;&#39;{}&quot;}
+  &lt;/#outputFormat&gt;
+&lt;/#outputFormat&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">&amp;apos;{}
+  &amp;amp;#39;{}
+    &amp;amp;#39;\{\}</pre></div>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_nt.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_setting.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[05/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_23.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_23.html b/builds/2.3.26-nightly/versions_2_3_23.html
new file mode 100644
index 0000000..53bbb7d
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_23.html
@@ -0,0 +1,423 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.23 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.23">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_23.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_23.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_23.html"><span itemprop="name">2.3.23</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.23"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_24.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_22.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_23" itemprop="headline">2.3.23</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_164" data-menu-target="autoid_164">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_165" data-menu-target="autoid_165">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_166" data-menu-target="autoid_166">Other changes</a></li><li><a class="page-menu-link" href="#autoid_167" data-menu-target="autoid_167">Notes</a></li></ul> </div><p>Date of release: 2015-07-05</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_164">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Listing (<code class="inline-code">#list</code>) has received some
+              specialized convenience features that target typical tasks
+              people do again and again in templates.</p>
+
+              <ul>
+                <li>
+                  <p>New <code class="inline-code">list</code> directive child
+                  directives. There are <code class="inline-code">else</code> and
+                  <code class="inline-code">items</code> to deal with special cases with
+                  0-length lists, and <code class="inline-code">sep</code> for inserting
+                  separators between items. For more details, see the <a href="ref_directive_list.html"><code>list</code>
+                  directive in the Reference</a>.</p>
+                </li>
+
+                <li>
+                  <p><a href="ref_builtins_loop_var.html">New built-ins
+                  that act on loop variables</a>:
+                  <code class="inline-code"><em class="code-color">var</em>?index</code>
+                  (deprecates
+                  <code class="inline-code"><em class="code-color">var</em>_index</code>),
+                  <code class="inline-code"><em class="code-color">var</em>?counter</code>
+                  (1-based index),
+                  <code class="inline-code"><em class="code-color">var</em>?has_next</code>
+                  (deprecates
+                  <code class="inline-code"><em class="code-color">var</em>_has_next</code>),
+                  <code class="inline-code"><em class="code-color">var</em>?is_first</code>,
+                  <code class="inline-code"><em class="code-color">var</em>?is_last</code>,
+                  <code class="inline-code"><em class="code-color">var</em>?item_parity</code>
+                  (returns <code class="inline-code">&quot;odd&quot;</code> or
+                  <code class="inline-code">&quot;even&quot;</code>),
+                  <code class="inline-code"><em class="code-color">var</em>?item_parity_cap</code>,
+                  <code class="inline-code"><em class="code-color">var</em>?item_cycle</code><code class="inline-code">(<em class="code-color">...</em>)</code>,
+                  etc.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Added convenience assignment operators, which can be used
+              in assignment directives (<code class="inline-code">#assign</code>,
+              <code class="inline-code">#global</code> and <code class="inline-code">#local</code>
+              currently) only:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">++</code> and <code class="inline-code">--</code>: For
+                  example, <code class="inline-code">&lt;#assign counter++&gt;</code> is
+                  equivalent to <code class="inline-code">&lt;#assign counter = counter +
+                  1&gt;</code>.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">+=</code>, <code class="inline-code">-=</code>,
+                  <code class="inline-code">*=</code>, <code class="inline-code">/=</code> and
+                  <code class="inline-code">%=</code>: For example, <code class="inline-code">&lt;#assign
+                  counter += 2&gt;</code> is equivalent to
+                  <code class="inline-code">&lt;#assign counter = counter +
+                  2&gt;</code>.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Added the <code class="inline-code">then</code> built-in, which can be
+              used like a ternary operator:
+              <code class="inline-code"><em class="code-color">someBoolean</em>?then(<em class="code-color">whenTrue</em>,
+              <em class="code-color">whenFalse</em>)</code>. Just like with
+              the ternary operator of most other languages, only one of the
+              parameter expressions will be evaluated. <a href="ref_builtins_boolean.html#ref_builtin_then">More details...</a></p>
+            </li>
+
+            <li>
+              <p>Added the <code class="inline-code">switch</code> built-in, which can be
+              used like an in-line (expression) switch-case-default statement:
+              <code class="inline-code"><em class="code-color">someValue</em>?switch(<em class="code-color">case1</em>,
+              <em class="code-color">result1</em>,
+              <em class="code-color">case2</em>,
+              <em class="code-color">result2</em>, ...
+              <em class="code-color">caseN</em>,
+              <em class="code-color">resultN</em>,
+              <em class="code-color">defaultResult</em>)</code>, where
+              <code class="inline-code"><em class="code-color">defaultResult</em></code> can
+              be omitted (then it will be error if none of the cases matches).
+              <a href="ref_builtins_type_independent.html#ref_builtin_switch">More details...</a></p>
+            </li>
+
+            <li>
+              <p>Added camel case support for the identifiers that are part
+              of the template language (user defined names aren&#39;t affected).
+              For example, now
+              <code class="inline-code">&lt;#noEscape&gt;${x?upperCase}&lt;/#noEscape&gt;</code>
+              or <code class="inline-code">&lt;#setting numberFormat=&quot;0.0&quot;&gt;</code> or
+              <code class="inline-code">&lt;#ftl stripText=true&gt;</code> are valid.
+              However, within the same template, FreeMarker will require you
+              to use the same naming convention consistently for all
+              identifiers that are part of the template language. It&#39;s also
+              possible to enforce the same naming convention on all templates
+              from Java via
+              <code class="inline-code">Configuration.setNamingConvention(int)</code>. It&#39;s
+              certain that camel case will be the recommended convention
+              starting from some future version, because the Java API-s users
+              call from templates use that too.</p>
+            </li>
+
+            <li>
+              <p>Added new <a href="ref_specvar.html">special
+              variables</a>, <code class="inline-code">.current_template_name</code> and
+              <code class="inline-code">.main_template_name</code>. These deprecate
+              <code class="inline-code">.template_name</code>, which was always broken when
+              it comes to macro calls. The new
+              <code class="inline-code">.current_template_name</code> always returns the
+              name of the template that contains the reference to the special
+              variable, and <code class="inline-code">.main_template_name</code> always
+              returns the name of the topmost template.</p>
+            </li>
+
+            <li>
+              <p>Smaller error message improvements. Like, added tip in the
+              error message for the frequent issue when
+              <code class="inline-code"><em class="code-color">someMap</em>[<em class="code-color">someNumber</em>]</code>
+              complains that
+              <code class="inline-code"><em class="code-color">someMap</em></code> is not a
+              sequence nor is coercible to string.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed, activated with setting
+              <code class="inline-code">incompatible_improvements</code> to 2.3.23: There&#39;s
+              a long existing parse-time rule that says that
+              <code class="inline-code">#break</code>, in the FTL source code itself, must
+              occur nested inside a breakable directive, such as
+              <code class="inline-code">#list</code> or <code class="inline-code">#switch</code>. This
+              check could be circumvented with <code class="inline-code">#macro</code> or
+              <code class="inline-code">#function</code>, like this: <code class="inline-code">&lt;#list 1..1
+              as x&gt;&lt;#macro
+              callMeLater&gt;&lt;#break&gt;&lt;/#macro&gt;&lt;/#list&gt;&lt;@callMeLater
+              /&gt;</code>. After activating this fix, this will be caught
+              as parse time error.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_165">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Added
+              <code class="inline-code">Configuration.setNamingConvention(int)</code>. By
+              default FreeMarker will auto-detect the naming convention
+              (legacy VS camel case) used for the identifiers that are part of
+              the template language, for each template independently. This
+              setting lets you enforce a naming convention instead.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Configuration</code> (and in fact any
+              <code class="inline-code">Configurable</code>) setting names now can be
+              written with camel case as well. For example, if you are
+              configuring FreeMarker from properties file, you can have
+              <code class="inline-code">defaultEncoding=utf-8</code> instead of
+              <code class="inline-code">default_encoding=utf-8</code>. You can use the two
+              naming conventions (camel case, and tradition snake case) mixed,
+              and <code class="inline-code">Configuration.setNamingConvention(int)</code>
+              does not influence this behavior.</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">Configuration.setTemplateUpdateDelayMilliseconds(long)</code>
+              and
+              <code class="inline-code">Configuration.getTemplateUpdateDelayMilliseconds()</code>.
+              This deprecates <code class="inline-code">setTemplateUpdateDelay(int)</code>,
+              which uses seconds resolution, hence going against Java
+              conventions and often leading to misunderstandings. (Also that
+              couldn&#39;t have a getter pair.)</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">template_update_delay</code> setting, when
+              specified as a string (as inside
+              <code class="inline-code">java.util.Properties</code>), supports time units,
+              like in <code class="inline-code">template_update_delay=500 ms</code>.</p>
+            </li>
+
+            <li>
+              <p>Added <code class="inline-code">Environment.getCurrentTemplate()</code>
+              method, which return the currently executed template (as opposed
+              to the main template).</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">WebappTemplateLoader.setAttemptFileAccess(boolean)</code>,
+              which can be used to disable the legacy trick where we try to
+              load templates through direct file access, so that template
+              updating works without restarting. Disabling URL connection
+              caches
+              (<code class="inline-code">someURLBasedTemplateLoader.setURLConnectionUsesCaches(false)</code>,
+              which is also the default since
+              <code class="inline-code">incompatible_improvements</code> 2.3.21) probably
+              solves that on modern Servlet containers.</p>
+            </li>
+
+            <li>
+              <p>In the <code class="inline-code">FreemarkerServlet</code>
+              <code class="inline-code">TemplatePath</code> init-param, paths (like
+              <code class="inline-code">/templates</code>) can have a
+              <code class="inline-code">?settings(<em class="code-color">...</em>)</code>
+              postfix, with which you can set the JavaBean properties of the
+              resulting <code class="inline-code">TemplateLoader</code>. For example:
+              <code class="inline-code">&lt;param-value&gt;/templates?settings(attemptFileAccess=false,
+              URLConnectionUsesCaches=false)&lt;/param-value&gt;</code></p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">FileTemplateLoader.setEmulateCaseSensitiveFileSystem(boolean)</code>.
+              This is handy when you are developing on Windows but will deploy
+              to a platform with case sensitive file system. The default is
+              <code class="inline-code">false</code>, and <code class="inline-code">true</code> is only
+              meant for development, not for production installations. The
+              default can be overridden by setting the
+              <code class="inline-code">org.freemarker.emulateCaseSensitiveFileSystem</code>
+              system property to <code class="inline-code">true</code>.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/424">424</a>]:
+              <code class="inline-code">WebappTemplateLoader</code> didn&#39;t find templates
+              that are stored in
+              <code class="inline-code">WEB-INF/lib/*.jar/META-INF/resources</code>. Files
+              under that directory are visible as
+              <code class="inline-code">ServletContext</code> resources since Servlet 3.0,
+              yet <code class="inline-code">WebappTemplateLoader</code> has usually failed
+              to see them because of some internal tricks.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: If a template "file" was
+              successfully opened for reading, but then there was an
+              <code class="inline-code">IOException</code> during reading its content, the
+              parser (JavaCC) acted like if the template "file"
+              was ended there, and the exception was suppressed. It&#39;s actually
+              a JavaCC quirk that affects many other JavaCC-based languages
+              too, but now FreeMarker has added a workaround in the
+              <code class="inline-code">Template</code> constructor, and so now an exception
+              will be thrown as expected.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed:
+              <code class="inline-code">InvalidReferenceException.FAST_INSTANCE</code> could
+              accidentally store reference to an
+              <code class="inline-code">Environment</code> instance, which hence was never
+              garbage collected.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/426/">426</a>]:
+              When setting <code class="inline-code">incompatible_improvements</code> to
+              2.3.22, the special variable reference
+              <code class="inline-code">.template_name</code> in templates always returns
+              the name of the main (topmost) template, due to an oversight in
+              2.3.22. Setting <code class="inline-code">incompatible_improvements</code> to
+              2.3.23 restores the old, backward compatible behavior. (Note
+              that the old behavior that we emulate is itself broken, as it
+              doesn&#39;t work well with macro calls; you should use
+              <code class="inline-code">.current_template_name</code> or
+              <code class="inline-code">.main_template_name</code> instead.)</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/53/">53</a>]:
+              Template parsing was abnormally slow for templates with very
+              high number AST (abstract syntax tree) nodes on the same
+              hierarchy level.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: When the template was concurrently replaced on
+              the backing store during its first loading was still ongoing,
+              the older version of the template could get into the cache with
+              the time stamp of the new version, hence it wasn&#39;t reloaded
+              after the configured update delay.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: The <code class="inline-code">log_template_exceptions</code>
+              setting (added in 2.3.22) couldn&#39;t be set through the
+              <code class="inline-code">Configurable.setSetting(String, String)</code>
+              API.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed:
+              <code class="inline-code">StringUtil.FTLStringLiteralEnc</code> has escaped
+              <code class="inline-code">$</code> (hence generating an illegal escape) and
+              haven&#39;t escaped <code class="inline-code">{</code> after <code class="inline-code">$</code>
+              and <code class="inline-code">#</code>. While this function is only used for
+              generating error messages by FreeMarker, it&#39;s a public methods
+              so anyone could use it.</p>
+            </li>
+
+            <li>
+              <p>Bugs fixed: Various canonical form glitches (they only
+              affect error messages as far as FreeMarker is concerned).</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_166">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Modernized Manual and site design with improved
+              functionality (always visible navigation tree, search inside the
+              Manual, etc.), thanks to Evangelia Dendramis. (Also now the Site
+              uses the same format and HTML generator as the Manual.)</p>
+            </li>
+
+            <li>
+              <p>Many smaller Manual and site content
+              updates/improvements.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_167">Notes</h2>
+
+
+          <p>Changes compared to 2.3.23 RC1:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">.current_name_name</code> and
+              <code class="inline-code">.main_template_name</code> is now missing
+              (<code class="inline-code">null</code>) instead of <code class="inline-code">&quot;&quot;</code> if
+              the template has no name</p>
+            </li>
+
+            <li>
+              <p>Some minor error message improvements</p>
+            </li>
+
+            <li>
+              <p>Documentation refinements</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_24.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_22.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_24.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_24.html b/builds/2.3.26-nightly/versions_2_3_24.html
new file mode 100644
index 0000000..da73713
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_24.html
@@ -0,0 +1,925 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.24 (incubating at Apache) - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.24 (incubating at Apache)">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_24.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_24.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_24.html"><span itemprop="name">2.3.24 (incubating at Apache)</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.24 (incubating at Apache)"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_25.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_23.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_24" itemprop="headline">2.3.24 (incubating at Apache)</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_160" data-menu-target="autoid_160">Legal changes</a></li><li><a class="page-menu-link" href="#autoid_161" data-menu-target="autoid_161">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_162" data-menu-target="autoid_162">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_163" data-menu-target="autoid_163">Changes compared to 2.3.24 Release Candidate 1</a></li></ul> </div><p>Release date: 2016-03-28</p><p><strong>This is a stable, final
+        release.</strong> The "incubating" suffix is required
+        by the Apache Software Foundation until the project becomes a fully
+        accepted (graduated) Apache project. See disclaimer below.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_160">Legal changes</h2>
+
+
+          <p>The owner of FreeMarker is now the Apache Software Foundation.
+          The license is still Apache License Version 2.0, just like earlier,
+          but the owner is different. The official full product name has
+          changed to Apache FreeMarker.</p>
+
+          <p><strong>Disclaimer:</strong><em> Apache
+          FreeMarker is an effort undergoing incubation at The Apache Software
+          Foundation (ASF), sponsored by the <a href="http://incubator.apache.org">Apache Incubator</a>.
+          Incubation is required of all newly accepted projects until a
+          further review indicates that the infrastructure, communications,
+          and decision making process have stabilized in a manner consistent
+          with other successful ASF projects. While incubation status is not
+          necessarily a reflection of the completeness or stability of the
+          code, it does indicate that the project has yet to be fully endorsed
+          by the ASF.</em></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_161">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>The most important new feature of this release is the
+              <a href="dgui_misc_autoescaping.html">auto-escaping and output
+              formats mechanism</a>, which deprecates escaping with the
+              <a href="ref_directive_escape.html"><code>escape</code>
+              directive</a>. These are the changes related to this new
+              mechanism (see earlier link for a guide):</p>
+
+              <ul>
+                <li>
+                  <p>New <code class="inline-code">ftl</code> header options,
+                  <code class="inline-code">ouput_format</code> and
+                  <code class="inline-code">auto_esc</code> to override the
+                  <code class="inline-code">output_format</code> and
+                  <code class="inline-code">auto_escaping</code> settings of the template,
+                  like <code class="inline-code">&lt;#ftl
+                  output_format=&#39;HTML&#39;</code><code class="inline-code">
+                  auto_esc=false&gt;</code>.</p>
+                </li>
+
+                <li>
+                  <p>New built-in: <a href="ref_builtins_string.html#ref_builtin_no_esc"><code>no_esc</code></a>.
+                  Used to prevent auto-escaping, like
+                  <code class="inline-code">${descriptionInHtml?no_esc}</code>. This doesn&#39;t
+                  work with <code class="inline-code">&lt;#escape
+                  <em class="code-color">...</em>&gt;</code>, only with the
+                  new auto-escaping mechanism.</p>
+                </li>
+
+                <li>
+                  <p>New FTL type, "markup output". This is
+                  somewhat similar to string, but values of this type aren&#39;t
+                  auto-escaped by the new escaping mechanism, because they are
+                  known to already hold markup. (For example,
+                  <code class="inline-code">?esc</code> and <code class="inline-code">?no_esc</code>
+                  returns a value of this type, hence their results are
+                  protected from double-escaping problems.)</p>
+                </li>
+
+                <li>
+                  <p>New built-in: <a href="ref_builtins_string.html#ref_builtin_esc"><code>esc</code></a>.
+                  Used for escaping with the current output format when
+                  auto-escaping is disabled.</p>
+                </li>
+
+                <li>
+                  <p>New built-in: <code class="inline-code">markup_string</code>. This
+                  returns the markup of a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output
+                  value</a> as string.</p>
+                </li>
+
+                <li>
+                  <p>New built-in: <code class="inline-code">is_markup_output</code>,
+                  returns <code class="inline-code">true</code> if the value is of type
+                  "markup output".</p>
+                </li>
+
+                <li>
+                  <p>New directive: <code class="inline-code">outputformat</code>, used
+                  to change the output format for a section of a template,
+                  like <code class="inline-code">&lt;#outputformat
+                  &quot;XML&quot;&gt;<em class="code-color">...</em>&lt;/#outputformat&gt;</code></p>
+                </li>
+
+                <li>
+                  <p>New directives: <code class="inline-code">noautoesc</code> and
+                  <code class="inline-code">autoesc</code>, used to turn auto-escaping off
+                  and on for a section of a template, like
+                  <code class="inline-code">&lt;#noautoesc&gt;<em class="code-color">...</em>&lt;/#noautoesc&gt;</code>.</p>
+                </li>
+
+                <li>
+                  <p>New built-in variable,
+                  <code class="inline-code">.output_format</code>, returns the current
+                  output format at the place of invocation.</p>
+                </li>
+
+                <li>
+                  <p>New built-in variable, <code class="inline-code">.auto_esc</code>,
+                  returns the boolean that tells if auto-escaping is active at
+                  the place of invocation.</p>
+                </li>
+
+                <li>
+                  <p>Block assignments, like <code class="inline-code">&lt;#assign
+                  <em class="code-color">captured</em>&gt;<em class="code-color">...</em>&lt;/#assign&gt;</code>,
+                  when the current <code class="inline-code">output_format</code> is some
+                  kind of markup (like HTML), will store the captured output
+                  not with string type, but with "markup output"
+                  type. Thus
+                  <code class="inline-code">${<em class="code-color">captured</em>}</code>
+                  will not get unwanted escaping.</p>
+                </li>
+
+                <li>
+                  <p>The <code class="inline-code">+</code> operator (concatenation)
+                  works with the new "markup output" type as
+                  well. Like <code class="inline-code">someMarkup + somePlainText</code>
+                  will result in markup where <code class="inline-code">somePlainText</code>
+                  is escaped automatically before it&#39;s appended to the
+                  markup.</p>
+                </li>
+
+                <li>
+                  <p>The <code class="inline-code">has_content</code> built-in now
+                  supports "markup output" values, considering 0
+                  length markup as empty.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>You can now define custom number and date/time/datetime
+              formatters. These are defined by the programmers (and thus can
+              implement any kind of exotic formatting rules) when configuring
+              FreeMarker, and can be referred with strings starting with
+              <code class="inline-code">&quot;@&quot;</code>, like in <code class="inline-code">&lt;#setting
+              number_format=&#39;@foo&#39;&gt;</code>, or
+              <code class="inline-code">${n?string.@foo_params}</code>,
+              <code class="inline-code">&lt;#setting number_format=&#39;@foo params&#39;&gt;</code>,
+              or <code class="inline-code">${n?string.@foo}</code>,
+              <code class="inline-code">${n?string.@foo_params}</code>. For backward
+              compatibility, the initial <code class="inline-code">@</code> only has this
+              special meaning if either you have any custom formats or <a href="pgui_config_incompatible_improvements.html">the
+              <code>incompatible_improvements</code> setting</a> is
+              at lest 2.3.24.</p>
+            </li>
+
+            <li>
+              <p>Everywhere where Java <code class="inline-code">DecimalFormat</code>
+              patterns are used (like in <code class="inline-code">?string(&#39;0.##&#39;)</code> or
+              <code class="inline-code">&lt;#setting number_format=&quot;0.##&quot;&gt;</code>), now
+              it&#39;s possible to specify options like rounding mode or the
+              symbols used, with a FreeMarker-specific <a href="ref_builtins_number.html#topic.extendedJavaDecimalFormat">extension to the
+              <code>DecimalFormat</code> pattern syntax</a>.</p>
+            </li>
+
+            <li>
+              <p>Added new special variable:
+              <code class="inline-code">.incompatible_improvements</code>, which returns the
+              <a href="pgui_config_incompatible_improvements.html"><code>incompatbile_improvements</code>
+              setting</a> of the current FreeMarker configuration, as a
+              string.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">?date</code>, <code class="inline-code">?time</code> and
+              <code class="inline-code">?datetime</code> now can be called as 0 argument
+              method, like <code class="inline-code">?date()</code>, etc., which returns the
+              exact object that <code class="inline-code">TemplateDateFormat.parse</code>
+              returns, instead of the tricky multi-type object that just using
+              <code class="inline-code">?date</code> returns. Because custom
+              <code class="inline-code">TemplateDateFormat</code> implementations may return
+              custom <code class="inline-code">TemplateDateModel</code> implementations,
+              keeping the exact class can be important in some
+              applications.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">&lt;@</code> and <code class="inline-code">&lt;/@</code> is
+              now allowed in string literals that contain
+              <code class="inline-code">${<em class="code-color">exp</em>}</code>, and will
+              be part of the literal as is. Earlier it was a syntactical
+              error.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: With
+              <code class="inline-code">incompatible_improvements</code> set to 2.3.24
+              (<a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">see how
+              here...</a>),
+              <code class="inline-code"><em class="code-color">m</em>?is_sequence</code>
+              doesn&#39;t return <code class="inline-code">true</code> for Java methods wrapped
+              by <code class="inline-code">BeansWrapper</code> and its subclasses (most
+              notably <code class="inline-code">DefaultObjectWrapper</code>) anymore, as
+              they only implement the
+              <code class="inline-code">[<em class="code-color">index</em>]</code> operator,
+              but not <code class="inline-code">?size</code>, which causes
+              <code class="inline-code">&lt;#list <em class="code-color">...</em>&gt;</code>
+              to fail, among others.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_162">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><em>Attention!</em> FreeMarker
+              now requires at least Java 1.5 (aka. Java 5). 2.3.24 has only
+              required Java 1.4. (Reason: Without this, new public API-s
+              couldn&#39;t use generics, which affect negatively the majority of
+              users, while old installations that are still using 1.4 are
+              unlikely to update FreeMarker anyway.)</p>
+            </li>
+
+            <li>
+              <p><em>Attention!</em> FreeMarker&#39;s
+              JSP support (if it&#39;s used) now requires at least JSP 2.0.
+              Earlier it only required JSP 1.1. (Reason: The
+              <code class="inline-code">jsp-api</code> dependency for JSP 1.x, which was
+              needed for building, can&#39;t be legally present in the Maven
+              Central Repository, nor be provided by freemarker.org.)</p>
+            </li>
+
+            <li>
+              <p>Added new configuration setting:
+              <code class="inline-code">template_configurations</code>. This allows
+              overriding the settings coming from the shared
+              <code class="inline-code">Configuration</code> object for individual
+              templates, based on template name patterns. <a href="pgui_config_templateconfigurations.html">See more
+              here...</a></p>
+            </li>
+
+            <li>
+              <p>Related to the <a href="dgui_misc_autoescaping.html">new
+              auto-escaping mechanism</a>:</p>
+
+              <ul>
+                <li>
+                  <p>As FTL has now a new type, "markup
+                  output", there&#39;s also a corresponding new model
+                  interface, <code class="inline-code">TemplateMarkupOutputModel</code>.
+                  This also means that you can prevent the auto-escaping of
+                  values coming from the data-model by returning a
+                  <code class="inline-code">TemplateMarkupOutputModel</code> instead of a
+                  <code class="inline-code">String</code>. Like the template author can just
+                  write <code class="inline-code">${messages.foo}</code>, and it will be
+                  auto-escaped or not depending on if the message is known to
+                  be markup or not.</p>
+                </li>
+
+                <li>
+                  <p>Added new configuration setting:
+                  <code class="inline-code">recognize_standard_file_extensions</code>. When
+                  <code class="inline-code">true</code>, templates whose source name ends
+                  with <code class="inline-code">&quot;.ftlh&quot;</code> will get
+                  <code class="inline-code">HTML</code> <code class="inline-code">output_format</code>,
+                  and those whose name ends with <code class="inline-code">&quot;.ftlx&quot;</code>
+                  get <code class="inline-code">XML</code> <code class="inline-code">output_format</code>,
+                  in both cases with auto-escaping on. If <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">the
+                  <code>incompatible_improvements</code> setting</a>
+                  is set to 2.3.24 (or higher) then this setting defaults to
+                  <code class="inline-code">true</code>. Otherwise it&#39;s default is
+                  <code class="inline-code">false</code>, but enabling it is highly
+                  recommended.</p>
+                </li>
+
+                <li>
+                  <p>Added new configuration setting:
+                  <code class="inline-code">output_format</code>. This specifies the <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output
+                  format</a> object to use (such as
+                  <code class="inline-code">HTMLOutputFormat.INSTANCE</code>,
+                  <code class="inline-code">XMLOutputFormat.INSTANCE</code>, etc.) that
+                  governs auto-escaping. The output format can be different
+                  for different templates, using the
+                  <code class="inline-code">template_configurations</code> setting (<a href="pgui_config_outputformatsautoesc.html">see here
+                  how...</a>).</p>
+                </li>
+
+                <li>
+                  <p>Added new configuration setting:
+                  <code class="inline-code">registered_custom_output_formats</code>. With
+                  this you can add new <code class="inline-code">OutputFormat</code>-s that
+                  templates can refer to by name (like in <code class="inline-code">&lt;#ftl
+                  output_format=&quot;foo&quot;&gt;</code>).</p>
+                </li>
+
+                <li>
+                  <p>Added new configuration setting:
+                  <code class="inline-code">auto_escaping_policy</code>. This decides when
+                  auto-escaping should be enabled depending on the current
+                  output format.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Changes related to the custom number and
+              date/time/datetime formating feature:</p>
+
+              <ul>
+                <li>
+                  <p>Added new classes for implementing custom formatters:
+                  <code class="inline-code">freemarker.core.TemplateNumberFormat</code>,
+                  <code class="inline-code">TemplateNumberFormatFactory</code>,
+                  <code class="inline-code">TemplateDateFormat</code>,
+                  <code class="inline-code">TemplateDateFormatFactory</code>, also the
+                  exceptions these can throw. These allow implementing any
+                  kind of formatting rule that&#39;s doable in Java (i.e., they
+                  aren&#39;t restricted to any <code class="inline-code">java.text</code>
+                  formatters). Furthermore these formatters get the
+                  <code class="inline-code">TemplateModel</code> instead of a the bare
+                  <code class="inline-code">java.lang.Number</code> or
+                  <code class="inline-code">java.util.Date</code>, which lets you use the
+                  extra application-specific meta information that you may
+                  pack into the <code class="inline-code">TemplateModel</code>-s, such as
+                  physical unit, preferred precision, and so on.</p>
+                </li>
+
+                <li>
+                  <p>Added <code class="inline-code">custom_number_formats</code> and
+                  <code class="inline-code">custom_date_formats</code> settings
+                  (<code class="inline-code">Configurable.setCustomNumberFormats(Map&lt;String,
+                  TemplateNumberFormatFactory&gt;)</code> and
+                  <code class="inline-code">Configurable.setCustomDateFormats(Map&lt;String,
+                  TemplateDateFormatFactory&gt;)</code>) with which you can
+                  register your own formats. These formats can be referred
+                  from everywhere where you can use a string to define a
+                  format, with a format string like <code class="inline-code">&quot;@foo&quot;</code>
+                  or <code class="inline-code">&quot;@foo params&quot;</code>, where
+                  <code class="inline-code">&quot;foo&quot;</code> is the key in the
+                  <code class="inline-code">Map&lt;String, ...&gt;</code> parameter of the
+                  earlier shown methods, and the parameters (if any) are
+                  interpreted by the
+                  <code class="inline-code">Template<em class="code-color">Xxx</em>FormatFactory</code>
+                  implementation that you provide. Like, you can issue
+                  <code class="inline-code">cfg.setNumberFormat(&quot;@foo params&quot;)</code>, or
+                  <code class="inline-code">&lt;#setting number_format=&#39;@foo
+                  params&#39;&gt;</code>, or
+                  <code class="inline-code">${n?string.@foo_params}</code>, similarly as you
+                  can issue <code class="inline-code">cfg.setNumberFormat(&quot;0.##&quot;)</code>,
+                  etc. For backward compatibility, the initial
+                  <code class="inline-code">@</code> only has this special meaning if either
+                  you have any custom formats or <a href="pgui_config_incompatible_improvements.html">the
+                  <code>incompatible_improvements</code> setting</a>
+                  is at least 2.3.24. Note that the
+                  <code class="inline-code">custom_number_formats</code> and
+                  <code class="inline-code">custom_date_formats</code> settings can be set
+                  per-template (via the new
+                  <code class="inline-code">template_configurations</code> settings) or
+                  per-<code class="inline-code">Environment</code> too, thus
+                  <code class="inline-code">@foo</code> can mean something different in
+                  different templates.</p>
+                </li>
+
+                <li>
+                  <p>Added new <code class="inline-code">Environment</code> methods
+                  returning <code class="inline-code">TemplateNumberFormat</code> and
+                  <code class="inline-code">TemplateDateFormat</code> objects. See the
+                  <code class="inline-code">getTemplateNumberFormat(<em class="code-color">...</em>)</code>
+                  and
+                  <code class="inline-code">getTemplateDateFormat(<em class="code-color">...</em>)</code>
+                  variations in the API.</p>
+                </li>
+
+                <li>
+                  <p>Added
+                  <code class="inline-code">freemarker.core.AliasTemplateNumberFormatFactory</code>
+                  and <code class="inline-code">AliasTemplateDateFormatFactory</code>, which
+                  can be used to create custom formats that are aliases to
+                  other formats. For example, instead of writing
+                  <code class="inline-code">${n?string[&quot;0.00&quot;]}</code> again and again, you
+                  can define the custom format <code class="inline-code">&quot;price&quot;</code> as
+                  the alias to the format string <code class="inline-code">&quot;0.00&quot;</code> in
+                  the configuration, and then use
+                  <code class="inline-code">${n?string.@price}</code>. Thus, you can control
+                  at a central place how prices look. Furthermore, the alias
+                  can chose a different target format string depending on the
+                  current locale; this is especially useful for dates, where
+                  conventions can significantly differ in different
+                  countries.</p>
+                </li>
+
+                <li>
+                  <p>It&#39;s now possible to have HTML or other markup in
+                  number and date/time/datetime formatting results, like
+                  <code class="inline-code">1.23*10&lt;sup&gt;6&lt;/sup&gt;</code>, which
+                  won&#39;t be accidentally auto-escaped, as FreeMarker knows that
+                  it&#39;s already HTML. This is done by returning a
+                  <code class="inline-code">TemplateMarkupOutputModel</code> instead of a
+                  <code class="inline-code">String</code>; see the new auto-escaping
+                  mechanism earlier. Note that no out-of-the-box format
+                  utilizes this (at the moment), but you could write such
+                  custom format.</p>
+                </li>
+
+                <li>
+                  <p>The internal format object caching architecture has
+                  been reworked, so that it can handle custom formats too.
+                  This reworking also fixes some bottlenecks under highly
+                  concurrent load, and some (otherwise unlikely) memory leak
+                  possibilities.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>In the <code class="inline-code">number_format</code> configuration
+              setting, when it holds a Java <code class="inline-code">DecimalFormat</code>
+              pattern (like <code class="inline-code">&quot;0.##&quot;</code>), it&#39;s now possible to
+              specify options like rounding mode or the symbols used, with a
+              FreeMarker-specific <a href="ref_builtins_number.html#topic.extendedJavaDecimalFormat">extension to the
+              pattern syntax</a>.</p>
+            </li>
+
+            <li>
+              <p>New <code class="inline-code">FreemarkerServlet</code> init-params (see
+              <a href="http://freemarker.org/docs/api/freemarker/ext/servlet/FreemarkerServlet.html">the
+              <code>FreemarkerSerlvet</code> API documentation</a>
+              for details):</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">OverrideResponseContentType</code>:
+                  Specifies when should we override the
+                  <code class="inline-code">contentType</code> that&#39;s already set (i.e.,
+                  non-<code class="inline-code">null</code>) in the
+                  <code class="inline-code">HttpServletResponse</code>. Earlier, we have
+                  always set it, and that&#39;s still the default behavior. But
+                  now that this init-param exists, you can change that
+                  behavior, so that the <code class="inline-code">contentType</code> you
+                  have specified before forwarding to
+                  <code class="inline-code">FreemarkerServlet</code> matters.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">OverrideResponseLocale</code>: Specifies
+                  if we should override the <code class="inline-code">locale</code> that&#39;s
+                  already set (i.e., non-<code class="inline-code">null</code>) in the
+                  <code class="inline-code">HttpServletResponse</code>. Earlier, we have
+                  always set it, but now this behavior can be changed so that
+                  we only set it if it wasn&#39;t already set.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">ResponseCharacterEncoding</code>:
+                  Deprecates the old (and quirky) logic of specifying the
+                  output charset, which is putting it into the
+                  <code class="inline-code">ContentType</code> init-param after the MIME
+                  type, otherwise falling back to the template file charset.
+                  The possible values are <code class="inline-code">legacy</code> (the
+                  default for backward compatibility),
+                  <code class="inline-code">fromTemplate</code> (which is
+                  <code class="inline-code">legacy</code> without quirks, and is aware of
+                  the <code class="inline-code">outputEncoding</code> setting),
+                  <code class="inline-code">doNotSet</code> (keeps what the caller has
+                  already set in the <code class="inline-code">ServletRespone</code>) and
+                  <code class="inline-code">force</code> followed by a charset name (forces
+                  a specific output charset).</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">freemarker.cache.ByteArrayTemplateLoader</code>,
+              which is similar to <code class="inline-code">StringTemplateLoader</code>, but
+              stores the templates as <code class="inline-code">byte[]</code>-s instead of
+              as <code class="inline-code">String</code>-s.</p>
+            </li>
+
+            <li>
+              <p>Upgraded JavaCC (used during build to generate the FTL
+              parser) from 3.2 to 6.1.2.</p>
+            </li>
+
+            <li>
+              <p>Added <code class="inline-code">Configurable.getSettingNames(boolean
+              camelCase)</code>, which returns the set of valid setting
+              names. This can be useful for auto-completion and such.</p>
+            </li>
+
+            <li>
+              <p>Fixes and improvements in the "object
+              builder" mini-language used for configuring FreeMarker
+              from <code class="inline-code">java.util.Properties</code> or other
+              string-only sources (not used in templates). This is
+              <em>not to be confused with the template language
+              syntax</em>, which has nothing to do with the
+              "object builder" syntax we are writing about here.
+              The improvements are:</p>
+
+              <ul>
+                <li>
+                  <p>Bug fixed: For nested builder expressions, the
+                  top-level result class restriction were applied
+                  accidentally.</p>
+                </li>
+
+                <li>
+                  <p>When resolving an expression like
+                  <code class="inline-code">com.example.Foo()</code>, if there&#39;s a builder
+                  class (<code class="inline-code">com.example.FooBuilder</code>), the
+                  non-builder class (<code class="inline-code">com.example.Foo</code>) need
+                  not exist anymore. After all,
+                  <code class="inline-code">FooBuilder.build()</code> instantiates from any
+                  class it wants to anyway.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">TimeZone</code> objects can be created
+                  like <code class="inline-code">TimeZone(&quot;UTC&quot;)</code>, despite that
+                  there&#39;s no a such constructor.</p>
+                </li>
+
+                <li>
+                  <p>Added support for creating lists with <code class="inline-code">[
+                  <em class="code-color">item1</em>,
+                  <em class="code-color">item2</em>,
+                  <em class="code-color">...</em>
+                  <em class="code-color">itemN</em> ]</code> syntax.</p>
+                </li>
+
+                <li>
+                  <p>Added support for creating maps with <code class="inline-code">{
+                  <em class="code-color">key1</em>:
+                  <em class="code-color">value1</em>,
+                  <em class="code-color">key2</em>:
+                  <em class="code-color">value2</em>,
+                  <em class="code-color">...</em>
+                  <em class="code-color">keyN</em>:
+                  <em class="code-color">valueN</em> }</code> syntax.</p>
+                </li>
+
+                <li>
+                  <p>A number without decimal point will now be parsed to
+                  <code class="inline-code">Integer</code>, <code class="inline-code">Long</code>, or
+                  <code class="inline-code">BigInteger</code>, depending on the size of the
+                  number. Earlier all numbers were parsed to
+                  <code class="inline-code">BigDecimal</code>-s, but that had little
+                  importance before lists and maps were added, as the number
+                  was converted to the constructor or setter parameter type
+                  anyway.</p>
+                </li>
+
+                <li>
+                  <p>Number literals can have Java type suffixes
+                  (<code class="inline-code">f</code>, <code class="inline-code">d</code>,
+                  <code class="inline-code">l</code>), plus <code class="inline-code">bd</code> for
+                  <code class="inline-code">BigDecimal</code> and <code class="inline-code">bi</code> for
+                  <code class="inline-code">BigInteger</code>.</p>
+                </li>
+
+                <li>
+                  <p>Public static fields can be referred, like
+                  <code class="inline-code">com.example.MyClass.MY_CONSTANT</code> or
+                  <code class="inline-code">Configuration.AUTO_DETECT_TAG_SYNTAX</code>.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Decreased the stack usage of template execution, which can
+              have importance if you have very very deeply nested
+              templates.</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">MultiTemplateLoader.setSticky(boolean)</code> and
+              <code class="inline-code">MultiTemplateLoader.isSticky()</code>, with which
+              you can disable the default behavior, where once a template was
+              found in a child <code class="inline-code">TemplateLoader</code>, it will be
+              searched there first next time (typically, when the template
+              update delay is expired). With the <code class="inline-code">sticky</code>
+              property set to <code class="inline-code">false</code>, the child
+              <code class="inline-code">TemplateLoader</code>-s will be always searched in
+              the order as they were added to the
+              <code class="inline-code">MultiTemplateLoader</code>.</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">StringTemplateLoader.removeTemplate(String)</code>
+              method.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed, only with
+              <code class="inline-code">incompatible_improvements</code> set to 2.3.24
+              (<a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">see how
+              here...</a>): Expressions inside interpolations that were
+              inside <em>string literal expressions</em> (not
+              <code class="inline-code">${<em class="code-color">...</em>}</code>-s in
+              general), like in <code class="inline-code">&lt;#assign s=&quot;Hello
+              ${name}!&quot;&gt;</code>, always used
+              <code class="inline-code">incompatibleImprovements</code> 0 (2.3.0 in effect).
+              This means that expressions inside string literals had missed
+              the <code class="inline-code">?html</code>,
+              <code class="inline-code">?iso_<em class="code-color">...</em></code>,
+              <code class="inline-code">?is_enumerable</code>, <code class="inline-code">?c</code>, etc.
+              fixes/improvements.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/439/">439</a>]:
+              <code class="inline-code">FileTemplateLoader</code> with
+              <code class="inline-code">emulateCaseSensitiveFileSystem</code> set to
+              <code class="inline-code">true</code> (used for development) wasn&#39;t properly
+              synchronized, leading to random
+              <code class="inline-code">NullPointerException</code>-s or other
+              misbehavior.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: It wasn&#39;t well defined when a Java
+              <code class="inline-code">Iterator</code> counts as empty. Depending on what
+              <code class="inline-code">ObjectWrapper</code> you are using, one of these
+              fixes apply:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">DefaultObjectWrapper</code> (fix is always
+                  active): Operations on the <code class="inline-code">Iterator</code> that
+                  only check if it&#39;s empty without reading an element from it,
+                  such as <code class="inline-code">?has_content</code>, won&#39;t cause a later
+                  iteration (or further emptiness check) to fail anymore.
+                  Earlier, in certain situations, the second operation has
+                  failed saying that the iterator "can be listed only
+                  once".</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">BeansWrapper</code> (when it&#39;s not
+                  extended by <code class="inline-code">DefaultObjectWrapper</code>), if
+                  it&#39;s <code class="inline-code">incompatibleImprovements</code> property is
+                  set to 2.3.24 (or higher): <code class="inline-code">Iterator</code>-s
+                  were always said to be non-empty when using
+                  <code class="inline-code">?has_content</code> and such (i.e., operators
+                  that check emptiness without reading any elements). Now an
+                  <code class="inline-code">Iterator</code> counts as empty exactly if it
+                  has no elements left. (Note that this bug has never affected
+                  basic functionality, like <code class="inline-code">&lt;#list
+                  ...&gt;</code>.)</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Bug fixed: The (rarely used) cause exception of
+              <code class="inline-code">ParseException</code>-s wasn&#39;t set</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: When the
+              <code class="inline-code">incomaptible_improvements</code> setting of an
+              existing <code class="inline-code">Configuration</code> was changed, the
+              template cache sometimes wasn&#39;t recreated, hence old templates
+              could survive.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed, with
+              <code class="inline-code">incompatible_improvements</code> set to 2.3.24
+              (<a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">see how
+              here...</a>): The <code class="inline-code">#import</code> directive meant
+              to copy the library variable into a global variable if it&#39;s
+              executed in the main namespace, but that haven&#39;t happened when
+              the imported template was already imported earlier in another
+              namespace.</p>
+            </li>
+
+            <li>
+              <p>Fixes in the XML processing feature
+              (<code class="inline-code">freemarker.ext.dom</code>):</p>
+
+              <ul>
+                <li>
+                  <p>Bug fixed: XPath queries that has only contained
+                  characters that are valid in XML element names and has also
+                  contained <code class="inline-code">::</code> (which is valid in names in
+                  namespace-unware documents), like
+                  <code class="inline-code">e[&#39;following-sibling::foo&#39;]</code>, were
+                  interpreted as literal element names (giving 0 hits) rather
+                  than as XPath expressions. Note that there were no such
+                  problem with <code class="inline-code">e[&#39;following-sibling::*&#39;]</code>
+                  for example, as it&#39;s not a valid XML element name according
+                  the XML specification. This fix can actually break
+                  applications that has processed namespace unaware XML that
+                  use <code class="inline-code">::</code> as part of element or attribute
+                  names, but such an application is highly unlikely, unlike
+                  running into the fixed problem. (Unfortunately, using
+                  <code class="inline-code">incompatible_improvements</code> wasn&#39;t
+                  technically possible here.)</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: The <code class="inline-code">@@qname</code> of elements
+                  that belong to the XML namespace declared as the default via
+                  <code class="inline-code">&lt;#ftl ns_prefixes={&#39;D&#39;:&#39;...&#39;, ...
+                  }&gt;</code> no longer starts with <code class="inline-code">D:</code>,
+                  instead they just start with no name space prefix.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: In the markup returned by the
+                  <code class="inline-code">@@markup</code> key, when there were multiple
+                  namespaces for which there was no prefix associated with via
+                  <code class="inline-code">&lt;#ftl
+                  ns_prefixes=<em class="code-color">...</em>&gt;</code>,
+                  all those namespaces were assigned to the same
+                  auto-generated <code class="inline-code">xmlns</code> prefix (usually
+                  "a"). Now they will get "a",
+                  "b", "c", etc. prefixes.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>JSP TLD loading now quotes the location of
+              <code class="inline-code">jar</code>-s (and other <code class="inline-code">zip</code>-s)
+              which can&#39;t be loaded due to zip format errors in the error
+              message.</p>
+            </li>
+
+            <li>
+              <p>Added an overload to
+              <code class="inline-code">Configuration.getSupportedBuiltInNames</code> and
+              <code class="inline-code">Configuration.getSupportedBuiltInDirectiveNames</code>
+              that has a <code class="inline-code">namingConvention</code> parameter. This
+              is useful for tooling as since 2.3.23 we support both camel case
+              naming convention (like
+              <code class="inline-code"><em class="code-color">s</em>?upperCase</code>) and
+              the legacy one (like
+              <code class="inline-code"><em class="code-color">s</em>?upper_case</code>).
+              Furthermore the old 0 argument overload will now utilize
+              <code class="inline-code">Configuration.getNamingConvention()</code> to only
+              return the relevant names if it&#39;s not
+              <code class="inline-code">AUTO_DETECT_NAMING_CONVENTION</code>.</p>
+            </li>
+
+            <li>
+              <p>Internal reworking to simplify the AST (the
+              <code class="inline-code">TemplateElement</code> structure). The related
+              technically public API was marked as internal for a good while.
+              For those who still use that API, the visible change is that
+              <code class="inline-code">TemplateElement</code>-s now almost never has a
+              <code class="inline-code">MixedContent</code> parent, instead, the parent is
+              directly whatever element the child element indeed belongs under
+              when you look at the source code (like the enclosing
+              <code class="inline-code">#list</code> for example, while earlier you often
+              had to go through a <code class="inline-code">MixedContent</code> first whose
+              parent was the <code class="inline-code">#list</code>). Note that when you
+              have moved downwards, i.e., towards the child elements, these
+              <code class="inline-code">MixedContent</code> parents weren&#39;t visible and were
+              silently skipped, so the tree traversal API was inconsistent.
+              Now it&#39;s consistent.</p>
+            </li>
+
+            <li>
+              <p>Due to the above change again, the return type of
+              <code class="inline-code">freemarker.core.DebugBreak.accept()</code> and
+              <code class="inline-code">freemarker.core.TextBlock.accept()</code> has
+              changed from <code class="inline-code">void</code> to
+              <code class="inline-code">TemplateElement[]</code>. This again is highly
+              unlikely to affect anyone, and these meant to be internal API-s
+              anyway, but as these two <code class="inline-code">accept</code> methods has
+              wider than package visibility for historical reasons, we mention
+              this change.</p>
+            </li>
+
+            <li>
+              <p>The non-public AST API of
+              <code class="inline-code">freemarker.core.StringLiteral</code>-s has been
+              changed. In principle it doesn&#39;t mater as it isn&#39;t a public API,
+              but some might used these regardless to introspect templates.
+              Earlier it had an "embedded template" parameter
+              inside, now it has 0 (for purely static string literals), one or
+              more "value part"-s, which are
+              <code class="inline-code">String</code>-s and
+              <code class="inline-code">Interpolation</code>-s.</p>
+            </li>
+
+            <li>
+              <p>Internal code cleanup: Mostly for consistent source code
+              formatting, also many parser construction/setup cleanup</p>
+            </li>
+
+            <li>
+              <p>Source code changes to conform to Apache source release
+              policy, such as adding copyright headers and getting rid of test
+              <code class="inline-code">jar</code>-s committed into the source code. Eclipse
+              project files were also removed, instead the
+              <code class="inline-code">README</code> describes how to set up the
+              project.</p>
+            </li>
+
+            <li>
+              <p>Build script and distribution artifact changes to conform
+              to Apache release policy, most notably it produces separate
+              source and binary releases.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_163">Changes compared to 2.3.24 Release Candidate 1</h2>
+
+
+          <ul>
+            <li>
+              <p>Added
+              <code class="inline-code">MultiTemplateLoader.setSticky(boolean)</code> and
+              <code class="inline-code">MultiTemplateLoader.isSticky()</code>, with which
+              you can disable the default behavior, where once a template was
+              found in a child <code class="inline-code">TemplateLoader</code>, it will be
+              searched there first next time (typically, when the template
+              update delay is expired). With the <code class="inline-code">sticky</code>
+              property set to <code class="inline-code">false</code>, the child
+              <code class="inline-code">TemplateLoader</code>-s will be always searched in
+              the order as they were added to the
+              <code class="inline-code">MultiTemplateLoader</code>.</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">StringTemplateLoader.removeTemplate(String)</code>
+              method.</p>
+            </li>
+
+            <li>
+              <p>Source code changes to conform to Apache release policy
+              and recommendations:</p>
+
+              <ul>
+                <li>
+                  <p>No more binary test <code class="inline-code">jar</code>-s committed
+                  into the source code (instead, they are generated
+                  on-the-fly)</p>
+                </li>
+
+                <li>
+                  <p>Eclipse project files were removed, instead, the
+                  <code class="inline-code">README</code> describes how to set up the
+                  project.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_25.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_23.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[21/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_if.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_if.html b/builds/2.3.26-nightly/ref_directive_if.html
new file mode 100644
index 0000000..99de82d
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_if.html
@@ -0,0 +1,196 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>if, else, elseif - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="if, else, elseif">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_if.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_if.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_if.html"><span itemprop="name">if, else, elseif</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","if, else, elseif"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_global.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_import.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_if" itemprop="headline">if, else, elseif</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_94" data-menu-target="autoid_94">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_95" data-menu-target="autoid_95">Description</a></li></ul> </div><a name="ref.directive.if"></a><a name="ref.directive.else"></a><a name="ref.directive.elseif"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_94">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#if <em class="code-color">condition</em>&gt;
+  <em class="code-color">...</em>
+&lt;#elseif <em class="code-color">condition2</em>&gt;
+  <em class="code-color">...</em>
+&lt;#elseif <em class="code-color">condition3</em>&gt;
+  <em class="code-color">...</em>
+<em class="code-color">...</em>
+&lt;#else&gt;
+  <em class="code-color">...</em>
+&lt;/#if&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">condition</em></code>,
+              <code class="inline-code"><em class="code-color">condition2</em></code>,
+              ...etc.: Expression evaluates to a boolean value.
+            </li>
+          </ul>
+
+          <p>The <code class="inline-code">elseif</code>-s and the
+          <code class="inline-code">else</code> are optional.</p>
+
+          <p>Camel case name variant: <code class="inline-code">elseIf</code></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_95">Description</h2>
+
+
+          <p>You can use <code class="inline-code">if</code>, <code class="inline-code">elseif</code>
+          and <code class="inline-code">else</code> directives to conditionally skip a
+          section of the template. The
+          <code class="inline-code"><em class="code-color">condition</em></code>-s must
+          evaluate to a boolean value, or else an error will abort template
+          processing. The <code class="inline-code">elseif</code>-s and
+          <code class="inline-code">else</code>-s must occur inside <code class="inline-code">if</code>
+          (that is, between the <code class="inline-code">if</code> start-tag and end-tag).
+          The <code class="inline-code">if</code> can contain any number of
+          <code class="inline-code">elseif</code>-s (including 0) and at the end optionally
+          one <code class="inline-code">else</code>. Examples:</p>
+
+          <p><code class="inline-code">if</code> with 0 <code class="inline-code">elseif</code> and no
+          <code class="inline-code">else</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if x == 1&gt;
+  x is 1
+&lt;/#if&gt;</pre></div>
+
+          <p><code class="inline-code">if</code> with 0 <code class="inline-code">elseif</code> and
+          <code class="inline-code">else</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if x == 1&gt;
+  x is 1
+&lt;#else&gt;
+  x is not 1
+&lt;/#if&gt;</pre></div>
+
+          <p><code class="inline-code">if</code> with 2 <code class="inline-code">elseif</code> and no
+          <code class="inline-code">else</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if x == 1&gt;
+  x is 1
+&lt;#elseif x == 2&gt;
+  x is 2
+&lt;#elseif x == 3&gt;
+  x is 3
+&lt;/#if&gt;</pre></div>
+
+          <p><code class="inline-code">if</code> with 3 <code class="inline-code">elseif</code> and
+          <code class="inline-code">else</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if x == 1&gt;
+  x is 1
+&lt;#elseif x == 2&gt;
+  x is 2
+&lt;#elseif x == 3&gt;
+  x is 3
+&lt;#elseif x == 4&gt;
+  x is 4
+&lt;#else&gt;
+  x is not 1 nor 2 nor 3 nor 4
+&lt;/#if&gt;</pre></div>
+
+          <p>To see more about boolean expressions, see: <a href="dgui_template_exp.html">Template Author&#39;s Guide/The Template/Expressions</a>.</p>
+
+          <p>You can nest <code class="inline-code">if</code> directives (of
+          course):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if x == 1&gt;
+  x is 1
+  &lt;#if y == 1&gt;
+    and y is 1 too
+  &lt;#else&gt;
+    but y is not
+  &lt;/#if&gt;
+&lt;#else&gt;
+  x is not 1
+  &lt;#if y &lt; 0&gt;
+    and y is less than 0
+  &lt;/#if&gt;
+&lt;/#if&gt;</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>When you want to test if <code class="inline-code">x &gt; 0</code> or
+            <code class="inline-code">x &gt;= 0</code>, writing <code class="inline-code">&lt;#if x &gt;
+            0&gt;</code> and <code class="inline-code">&lt;#if x &gt;= 0&gt;</code> is
+            WRONG, as the first <code class="inline-code">&gt;</code> will close the
+            <code class="inline-code">#if</code> tag. To work that around, write
+            <code class="inline-code">&lt;#if x gt 0&gt;</code> or <code class="inline-code">&lt;#if gte
+            0&gt;</code>. Also note that if the comparison occurs inside
+            parentheses, you will have no such problem, like <code class="inline-code">&lt;#if
+            foo.bar(x &gt; 0)&gt;</code> works as expected.</p>
+            </div>
+
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_global.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_import.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_import.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_import.html b/builds/2.3.26-nightly/ref_directive_import.html
new file mode 100644
index 0000000..965f033
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_import.html
@@ -0,0 +1,153 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>import - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="import">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_import.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_import.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_import.html"><span itemprop="name">import</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","import"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_if.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_include.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_import" itemprop="headline">import</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_96" data-menu-target="autoid_96">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_97" data-menu-target="autoid_97">Description</a></li></ul> </div><a name="ref.directive.import"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_96">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#import <em class="code-color">path</em> as <em class="code-color">hash</em>&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">path</em></code>: The
+              path of a template. This is an expression that evaluates to a
+              string. (With other words, it doesn&#39;t have to be a fixed string,
+              it can also be something like, for example,
+              <code class="inline-code">profile.baseDir + &quot;/menu.ftl&quot;</code>.)
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">hash</em></code>: The
+              unquoted name of hash variable by which you can access the
+              namespace. Not an expression. (If you have to import into a
+              dynamically constructed name, you have to use <a href="app_faq.html#faq_assign_to_dynamic_variable_name">this
+              trick</a>.)
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_97">Description</h2>
+
+
+          <p>Imports a library. That is, it creates a new empty namespace,
+          and then executes the template given with
+          <code class="inline-code"><em class="code-color">path</em></code> parameter in that
+          namespace so the template populates the namespace with variables
+          (macros, functions, ...etc.). Then it makes the newly created
+          namespace available to the caller with a hash variable. The hash
+          variable will be created as a plain variable in the namespace used
+          by the caller of <code class="inline-code">import</code> (as if you would create
+          it with <code class="inline-code">assign</code> directive), with the name given
+          with the <code class="inline-code"><em class="code-color">hash</em></code>
+          parameter. If the import happens in the namespace of the main
+          template, the hash variable is also created in the global
+          namespace.</p>
+
+          <p>If you call <code class="inline-code">import</code> with the same
+          <code class="inline-code"><em class="code-color">path</em></code> for multiple
+          times, it will create the namespace and run the template for the
+          very first call of <code class="inline-code">import</code> only. The later calls
+          will just create a hash by which you can access the
+          <em>same</em> namespace.</p>
+
+          <p>The output printed by the imported template will be ignored
+          (will not be inserted at the place of importing). The template is
+          executed to populate the namespace with variables, and not to write
+          to the output.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;/libs/mylib.ftl&quot; as my&gt;
+
+&lt;@my.copyright date=&quot;1999-2002&quot;/&gt;</pre></div>
+
+          <p>The <code class="inline-code"><em class="code-color">path</em></code>
+          parameter can be a relative path like <code class="inline-code">&quot;foo.ftl&quot;</code>
+          and <code class="inline-code">&quot;../foo.ftl&quot;</code>, or an absolute like
+          <code class="inline-code">&quot;/foo.ftl&quot;</code>. Relative paths are relative to the
+          directory of the template that uses the <code class="inline-code">import</code>
+          directive. Absolute paths are relative to a base (often referred as
+          the &#39;&#39;root directory of the templates&#39;&#39;) that the programmer defines
+          when he configures FreeMarker.</p>
+
+          <p>Always use <code class="inline-code">/</code> (slash) to separate path
+          components, never <code class="inline-code">\</code> (backslash). If you are
+          loading templates from your local file system and it uses
+          backslashes (like under. Windows), FreeMarker will convert them
+          automatically.</p>
+
+          <p>Like with the <code class="inline-code">include</code> directive, <a href="ref_directive_include.html#ref_directive_include_acquisition">acquisition</a> and
+          <a href="ref_directive_include.html#ref_directive_include_localized">localized
+          lookup</a> may be used for resolving the path.</p>
+
+          <p><span class="marked-for-programmers">Note, that it is possible to
+          automatically do the commonly used imports for all templates, with
+          the &quot;auto imports&quot; setting of
+          <code class="inline-code">Configuration</code>.</span></p>
+
+          <p>If you are new to namespaces, you should read: <a href="dgui_misc_namespace.html">Template Author&#39;s Guide/Miscellaneous/Namespaces</a></p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_if.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_include.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_include.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_include.html b/builds/2.3.26-nightly/ref_directive_include.html
new file mode 100644
index 0000000..ebfb785
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_include.html
@@ -0,0 +1,449 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>include - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="include">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_include.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_include.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_include.html"><span itemprop="name">include</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","include"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_import.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_list.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_include" itemprop="headline">include</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_98" data-menu-target="autoid_98">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_99" data-menu-target="autoid_99">Description</a><ul><li><a class="page-menu-link" href="#ref_directive_include_acquisition" data-menu-target="ref_directive_include_acquisition">Using acquisition</a></li><li><a class="page-menu-link" href="#ref_directive_include_localized" data-menu-target="ref_directive_include_localized">Localized lookup</a></li></ul></li></ul> </div><a name="ref.directive.include"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_98">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#include <em class="code-color">path</em>&gt;</code>
+or
+<code class="inline-code">&lt;#include <em class="code-color">path</em> <em class="code-color">options</em>&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">path</em></code>: The
+              path of the file to include; an expression that evaluates to a
+              string. (With other words, it doesn&#39;t have to be a fixed string,
+              it can also be something like, for example,
+              <code class="inline-code">profile.baseDir + &quot;/menu.ftl&quot;</code>.)
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">options</em></code>: One
+              or more of these:
+              <code class="inline-code">encoding=<em class="code-color">encoding</em></code>,
+              <code class="inline-code">parse=<em class="code-color">parse</em></code>
+
+              <ul>
+                <li>
+                  <code class="inline-code"><em class="code-color">encoding</em></code>:
+                  Expression evaluates to string
+                </li>
+
+                <li>
+                  <code class="inline-code"><em class="code-color">parse</em></code>:
+                  Expression evaluates to boolean (also accepts a few string
+                  values for backward compatibility)
+                </li>
+
+                <li>
+                  <code class="inline-code"><em class="code-color">ignore_missing</em></code>:
+                  Expression evaluates to boolean
+                </li>
+              </ul>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_99">Description</h2>
+
+
+          <p>You can use it to insert another FreeMarker template file
+          (specified by the <code class="inline-code"><em class="code-color">path</em></code>
+          parameter) into your template. The output from the included template
+          is inserted at the point where the <code class="inline-code">include</code> tag
+          occurs. The included file shares the variables with the including
+          template, similarly like if it was copy-pasted into it. The
+          <code class="inline-code">include</code> directive is not really replaced by the
+          content of the included file, instead it processes the included file
+          each time when FreeMarker reaches the <code class="inline-code">include</code>
+          directive in the course of template processing. So for example if
+          the <code class="inline-code">include</code> is inside a <code class="inline-code">list</code>
+          loop, you can specify different file names in each cycle.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This directive is not be confused with the JSP (Servlet)
+            include, as it doesn&#39;t involve the Servlet container at all, just
+            processes another FreeMarker template, without &quot;leaving&quot;
+            FreeMarker. Regarding how to do a &quot;JSP include&quot; <a href="app_faq.html#faq_servlet_include">read this...</a></p>
+            </div>
+
+
+          <p>The <code class="inline-code"><em class="code-color">path</em></code>
+          parameter can be a relative path like <code class="inline-code">&quot;foo.ftl&quot;</code>
+          and <code class="inline-code">&quot;../foo.ftl&quot;</code>, or an absolute like
+          <code class="inline-code">&quot;/foo.ftl&quot;</code>. Relative paths are relative to the
+          directory of the template that contains the
+          <code class="inline-code">import</code> directive. Absolute paths are relative to
+          a base (often referred as the &#39;root directory of the templates&#39;)
+          that the programmer defines when he configures FreeMarker.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This is different than the way it worked prior FreeMarker
+            2.1, where the path was always absolute. To preserve the old
+            behavior, enable the classic compatible mode in the
+            <code class="inline-code">Configuration</code> object.</p>
+            </div>
+
+
+          <p>Always use <code class="inline-code">/</code> (slash) to separate path
+          components, never <code class="inline-code">\</code> (backslash). Even if you are
+          loading templates from your local file system and it uses
+          backslashes (like under. Windows), use <code class="inline-code">/</code>.</p>
+
+          <p>Example:</p>
+
+          <p>Assume /common/copyright.ftl contains:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">Copyright 2001-2002 ${me}&lt;br&gt;
+All rights reserved.</pre></div>
+
+          <p>Then this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign me = &quot;Juila Smith&quot;&gt;
+&lt;h1&gt;Some test&lt;/h1&gt;
+&lt;p&gt;Yeah.
+&lt;hr&gt;
+<strong>&lt;#include &quot;/common/copyright.ftl&quot;&gt;</strong></pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;h1&gt;Some test&lt;/h1&gt;
+&lt;p&gt;Yeah.
+&lt;hr&gt;
+<strong>Copyright 2001-2002 Juila Smith
+All rights reserved.</strong></pre></div>
+
+          <p>The supported
+          <code class="inline-code"><em class="code-color">options</em></code> are:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">parse</code>: If it is
+              <code class="inline-code">true</code>, then the included file will be parsed
+              as FTL, otherwise the whole file will be considered as simple
+              text (i.e, no FreeMarker constructs will be searched in it). If
+              you omit this option, then it defaults to
+              <code class="inline-code">true</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">encoding</code>: The encoding (charset) of the
+              included template. You shouldn&#39;t use this option anymore; if
+              different template use different encodings, then the programmers
+              should associated the encoding to the templates via
+              <code class="inline-code">Configuration.setTemplateConfigurations(<em class="code-color">...</em>)</code>-s
+              (which also overrides that you specify here). If
+              <code class="inline-code">Configuration.setTemplateConfigurations(<em class="code-color">...</em>)</code>
+              doesn&#39;t specify an encoding for the included template, then the
+              included file inherits the encoding (the charset) of the
+              top-level template, unless you specify an encoding with this
+              option. Examples of valid names: UTF-8, ISO-8859-1, ISO-8859-2,
+              Shift_JIS, Big5, EUC-KR, GB2312. <span class="marked-for-programmers">Encoding names are the same as the ones
+              supported be java.io.InputStreamReader (as of Java API 1.3:
+              MIME-preferred charset names from the IANA Charset
+              Registry)</span></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">ignore_missing</code>: When
+              <code class="inline-code">true</code>, suppresses the error when the template
+              to include is missing, instead <code class="inline-code">&lt;#include
+              ...&gt;</code> will print nothing. When
+              <code class="inline-code">false</code>, the template processing will stop with
+              error if the template is missing. If you omit this option, then
+              it defaults to <code class="inline-code">false</code>.</p>
+            </li>
+          </ul>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#include &quot;/common/navbar.html&quot; parse=false encoding=&quot;Shift_JIS&quot;&gt;</pre></div>
+
+          <p><span class="marked-for-programmers">Note, that it is possible to
+          automatically do the commonly used inclusions for all templates,
+          with the &quot;auto includes&quot; setting of
+          <code class="inline-code">Configuration</code>.</span></p>
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="ref_directive_include_acquisition">Using acquisition</h3>
+
+
+            
+
+            <p>There&#39;s a special path component represented by an asterisk
+            (<code class="inline-code">*</code>). It is interpreted as &quot;this directory or
+            any of its parents&quot;. Therefore, if the template located in
+            <code class="inline-code">/foo/bar/template.ftl</code> has the following
+            line:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#include &quot;*/footer.ftl&quot;&gt;</pre></div>
+
+            <p>then the engine will look for the template in following
+            locations, in this order:</p>
+
+            <ul>
+              <li>
+                <code class="inline-code">/foo/bar/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/footer.ftl</code>
+              </li>
+            </ul>
+
+            <p>This mechanism is called <strong>acquisition</strong> and allows the designers to
+            place commonly included files in a parent directory, and redefine
+            them on a per-subdirectory basis as needed. We say that the
+            including template acquires the template to include from the first
+            parent directory that has it. Note that you can specify not only a
+            template name to the right of the asterisk, but a subpath as well.
+            I.e. if the previous template instead read:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#include &quot;*/commons/footer.ftl&quot;&gt;</pre></div>
+
+            <p>then the engine would look for the template in following
+            locations, in this order:</p>
+
+            <ul>
+              <li>
+                <code class="inline-code">/foo/bar/commons/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/commons/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/commons/footer.ftl</code>
+              </li>
+            </ul>
+
+            <p>Finally, the asterisk needn&#39;t be the first element of the
+            path:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#include &quot;commons/*/footer.ftl&quot;&gt;</pre></div>
+
+            <p>would cause the engine to look for the template in following
+            locations, in this order:</p>
+
+            <ul>
+              <li>
+                <code class="inline-code">/foo/bar/commons/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/bar/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/footer.ftl</code>
+              </li>
+            </ul>
+
+            <p>However, there can be at most one asterisk in the path. If
+            you specifying more asterisks, the template won&#39;t be found.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="ref_directive_include_localized">Localized lookup</h3>
+
+
+            
+
+            <p>A locale is a language and an optional country or dialect
+            identifier (plus also maybe a further variant identifier, like
+            "MAC"). Whenever a template is requested, a desired
+            locale is always specified (explicitly or implicitly), and
+            FreeMarke will try to find a variant of the template that matches
+            that locale. When a template includes or imports another template,
+            internally that will also be requested for a locale, for the
+            locale that the <code class="inline-code">locale</code> setting is set to, and
+            that&#39;s usually for the locale of the top-level template.</p>
+
+            <p>Suppose your template was loaded with locale
+            <code class="inline-code">en_US</code>, which means U.S. English. When you
+            include another template:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#include &quot;footer.ftl&quot;&gt;</pre></div>
+
+            <p>the engine will in fact look for several templates, in this
+            order:</p>
+
+            <ul>
+              <li>
+                <code class="inline-code">footer_en_US.ftl</code>,
+              </li>
+
+              <li>
+                <code class="inline-code">footer_en.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">footer.ftl</code>
+              </li>
+            </ul>
+
+            <p>and it will use the first one that exists.</p>
+
+            <p>Note that if how (and if) FreeMarker searches the localized
+            variations is configurable by the programmers, so we are just
+            describing the default behavior here.<span class="marked-for-programmers"> You can disable localized lookup with the
+            <code class="inline-code">localized_lookup</code> setting
+            (<code class="inline-code">Configuration.setLocalizedLookup(boolean)</code>).
+            Also, you can define your own sequence of deduced template names
+            with the <code class="inline-code">template_lookup_strategy</code> setting
+            (<code class="inline-code">Configuration.setTemplateLookupStrategy(TemplateLookupStrategy)</code>).</span></p>
+
+            <p>When you use both acquisition (i.e., <code class="inline-code">*</code>
+            step in the path) and localized template lookup, the template with
+            more specific locale in a parent directory takes precedence over
+            template with less specific locale in a child directory. Suppose
+            you use the following include from
+            <code class="inline-code">/foo/bar/template.ftl</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#include &quot;*/footer.ftl&quot;&gt;</pre></div>
+
+            <p>the engine will look for these templates, in this
+            order:</p>
+
+            <ul>
+              <li>
+                <code class="inline-code">/foo/bar/footer_en_US.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/footer_en_US.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/footer_en_US.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/bar/footer_en.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/footer_en.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/footer_en.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/bar/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/foo/footer.ftl</code>
+              </li>
+
+              <li>
+                <code class="inline-code">/footer.ftl</code>
+              </li>
+            </ul>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_import.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_list.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_list.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_list.html b/builds/2.3.26-nightly/ref_directive_list.html
new file mode 100644
index 0000000..f2e0cbc
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_list.html
@@ -0,0 +1,638 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>list, else, items, sep, break - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="list, else, items, sep, break">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_list.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_list.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_list.html"><span itemprop="name">list, else, items, sep, break</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","list, else, items, sep, break"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_include.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_local.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_list" itemprop="headline">list, else, items, sep, break</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_100" data-menu-target="autoid_100">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_101" data-menu-target="autoid_101">Description</a><ul><li><a class="page-menu-link" href="#autoid_102" data-menu-target="autoid_102">Simplest form</a></li><li><a class="page-menu-link" href="#autoid_103" data-menu-target="autoid_103">else directive</a></li><li><a class="page-menu-link" href="#autoid_104" data-menu-target="autoid_104">items directive</a></li><li><a class="page-menu-link" href="#autoid_105" data-menu-target="autoid_105">sep directive</a></li><li><a class="page-menu-link" href="#autoid_106" data-menu-target="autoid_106">break directive</a></li><li><a class="page-menu-link" href="#autoid_107" data-menu-target="autoid_107">Accessing iteration state</a></li><li><a class="page-menu-link" href="#autoid_108" data-menu-target="autoid_108">Nesting loops into each other</a></li><li><a class="page-menu-link" href="#autoid_109" data-menu-
 target="autoid_109">Notes for Java programmers</a></li></ul></li></ul> </div><a name="ref.directive.list"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_100">Synopsis</h2>
+
+
+          <p>The simplest form for listing a sequence (or collection)
+          is:</p>
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#list <em class="code-color">sequence</em> as <em class="code-color">item</em>&gt;
+    <em class="code-color">Part repeated for each item</em>
+&lt;/#list&gt;</code></pre>
+
+
+          <p>and to list the key-value pairs of a hash (since
+          2.3.25):</p>
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#list <em class="code-color">hash</em> as <em class="code-color">key</em>, <em class="code-color">value</em>&gt;
+    <em class="code-color">Part repeated for each key-value pair</em>
+&lt;/#list&gt;</code></pre>
+
+
+          <p>But these are just cases of the generic forms, which are shown
+          below. Note that for simplicity we only show the generic forms for
+          sequence listing; simply replace "<code class="inline-code">as
+          <em class="code-color">item</em></code>" with
+          "<code class="inline-code">as <em class="code-color">key</em>,
+          <em class="code-color">value</em></code>" to get the
+          generic form for hash listing.</p>
+
+          <p>Generic form 1:</p>
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#list <em class="code-color">sequence</em> as <em class="code-color">item</em>&gt;
+    <em class="code-color">Part repeated for each item</em>
+&lt;#else&gt;
+    <em class="code-color">Part executed when there are 0 items</em>
+&lt;/#list&gt;</code></pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              The <code class="inline-code">else</code> part is optional, and is only
+              supported since FreeMarker 2.3.23.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">sequence</em></code>:
+              Expressions evaluates to a sequence or collection of the items
+              we want to iterate through
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">item</em></code>: Name
+              of the <a href="dgui_misc_var.html">loop variable</a> (not
+              an expression)
+            </li>
+
+            <li>
+              The various "parts" between the tags can
+              contain arbitrary FTL (including nested
+              <code class="inline-code">list</code>-s)
+            </li>
+          </ul>
+
+          <p>Generic form 2 (since FreeMarker 2.3.23):</p>
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#list <em class="code-color">sequence</em>&gt;
+    <em class="code-color">Part executed once if we have more than 0 items</em>
+    &lt;#items as <em class="code-color">item</em>&gt;
+    <em class="code-color">    Part repeated for each item</em>
+    &lt;/#items&gt;
+    <em class="code-color">Part executed once if we have more than 0 items</em>
+&lt;#else&gt;
+    <em class="code-color">Part executed when there are 0 items</em>
+&lt;/#list&gt;</code></pre>
+
+
+          <p>Where: see the "Where" section of Form 1 above
+          (and thus the <code class="inline-code">else</code> part is optional here
+          too).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_101">Description</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_102">Simplest form</h3>
+
+
+            <p>Assuming <code class="inline-code">users</code> contains the
+            <code class="inline-code">[&#39;Joe&#39;, &#39;Kate&#39;, &#39;Fred&#39;]</code> sequence:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list users as user&gt;
+  &lt;p&gt;${user}
+&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;Joe
+  &lt;p&gt;Kate
+  &lt;p&gt;Fred</pre></div>
+
+            <p>The <code class="inline-code">list</code> directive executes the code
+            between the <code class="inline-code">list</code> start-tag and
+            <code class="inline-code">list</code> end-tag (the body of
+            <code class="inline-code">list</code> from now on) for each value in the
+            sequence (or collection) specified as its first parameter. For
+            each such iteration the loop variable (<code class="inline-code">user</code> in
+            this example) will store the value of the current item.</p>
+
+            <p>The loop variable (<code class="inline-code">user</code>) only exists
+            inside the <code class="inline-code">list</code> body. Also, macros/functions
+            called from within the loop won&#39;t see it (as if it were a local
+            variable).</p>
+
+            <p>Listing hashes is very similar, but you need to provide two
+            variable names after the <code class="inline-code">as</code>; one for the hash
+            key, and another for the associated value. Assuming
+            <code class="inline-code">products</code> is <code class="inline-code">{ &quot;apple&quot;: 5, &quot;banana&quot;:
+            10, &quot;kiwi&quot;: 15 }</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list products as name, price&gt;
+  &lt;p&gt;${name}: ${price}
+&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;apple: 5
+  &lt;p&gt;banan: 10
+  &lt;p&gt;kiwi: 15</pre></div>
+
+            <p>Note that not all hash variables can be listed, because some
+            of them isn&#39;t able to enumerate its keys. It&#39;s practically safe to
+            assume though that hashes that stand for Java
+            <code class="inline-code">Map</code> objects can be listed.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_103">else directive</h3>
+
+
+            <a name="ref.directive.list.else"></a>
+
+            
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p><code class="inline-code">else</code> inside <code class="inline-code">list</code> is
+              only supported since FreeMarker 2.3.23</p>
+              </div>
+
+
+            <p>The <code class="inline-code">else</code> directive is used if when there
+            are 0 items, you have to print something special instead of just
+            printing nothing:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list users as user&gt;
+  &lt;p&gt;${user}
+&lt;#else&gt;
+  &lt;p&gt;No users
+&lt;/#list&gt;</pre></div>
+
+            <p>This outputs the same as the earlier example, except when
+            <code class="inline-code">users</code> contains 0 items:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;No users</pre></div>
+
+            <p>Note that the loop variable (<code class="inline-code">user</code>)
+            doesn&#39;t exist between the <code class="inline-code">else</code> tag and the
+            <code class="inline-code">list</code> end-tag, since that part is not part of
+            the loop.</p>
+
+            <p><code class="inline-code">else</code> must be literally (means, in the
+            source code) inside the body of the <code class="inline-code">list</code>
+            directive. That is, you can&#39;t moved it out into a macro or
+            included template.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_104">items directive</h3>
+
+
+            <a name="ref.directive.items"></a>
+
+            
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p><code class="inline-code">items</code> exists since FreeMarker
+              2.3.23</p>
+              </div>
+
+
+            <p>The <code class="inline-code">items</code> directive is used if you have
+            to print (or do) something before the first list item, and after
+            the last list item, as far as there&#39;s at least 1 item. A typical
+            example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list users&gt;
+  &lt;ul&gt;
+    &lt;#items as user&gt;
+      &lt;li&gt;${user}&lt;/li&gt;
+    &lt;/#items&gt;
+  &lt;/ul&gt;
+&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;ul&gt;
+      &lt;li&gt;Joe&lt;/li&gt;
+      &lt;li&gt;Kate&lt;/li&gt;
+      &lt;li&gt;Fred&lt;/li&gt;
+  &lt;/ul&gt;</pre></div>
+
+            <p>If there are 0 items, the above won&#39;t print anything, thus
+            you don&#39;t end up with an empty
+            <code class="inline-code">&lt;ul&gt;&lt;/ul&gt;</code>.</p>
+
+            <p>That is, when the <code class="inline-code">list</code> directive has no
+            <code class="inline-code">as <em class="code-color">item</em></code> parameter,
+            the body of its is executed exactly once if there&#39;s at least one
+            item, or not at all otherwise. It&#39;s the body of the mandatory
+            nested <code class="inline-code">items</code> directive that will be run for
+            each item, and hence it&#39;s also the <code class="inline-code">items</code>
+            directive that defines the loop variable with <code class="inline-code">as
+            <em class="code-color">item</em></code>, not
+            <code class="inline-code">list</code>.</p>
+
+            <p>A <code class="inline-code">list</code> directive with
+            <code class="inline-code">items</code> also can have an <code class="inline-code">else</code>
+            directive:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list users&gt;
+  &lt;ul&gt;
+    &lt;#items as user&gt;
+      &lt;li&gt;${user}&lt;/li&gt;
+    &lt;/#items&gt;
+  &lt;/ul&gt;
+&lt;#else&gt;
+  &lt;p&gt;No users
+&lt;/#list&gt;</pre></div>
+
+            <p>Some further details:</p>
+
+            <ul>
+              <li>
+                <p>The parser will check that a <code class="inline-code">list</code>
+                without <code class="inline-code">as <em class="code-color">item</em></code>
+                parameter always has a nested <code class="inline-code">items</code>
+                directive, and that an <code class="inline-code">items</code> directive
+                always has an enclosing <code class="inline-code">list</code> which has no
+                <code class="inline-code">as <em class="code-color">item</em></code>
+                parameter. This is checked when the template is parsed, not
+                when the template is executed. Thus, these rules apply on the
+                FTL source code itself, so you can&#39;t move
+                <code class="inline-code">items</code> out into a macro or included
+                template.</p>
+              </li>
+
+              <li>
+                <p>A <code class="inline-code">list</code> can have multiple
+                <code class="inline-code">items</code> directives, but only one of them will
+                be allowed to run (as far as you don&#39;t leave and re-enter the
+                enclosing <code class="inline-code">list</code> directive); and further
+                attempts to call <code class="inline-code">items</code> will cause error. So
+                multiple <code class="inline-code">items</code> can be utilized on different
+                <code class="inline-code">if</code>-<code class="inline-code">else</code> branches for
+                example, but not for iterating twice.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">items</code> directive can&#39;t have its own
+                nested <code class="inline-code">else</code> directive, only the enclosing
+                <code class="inline-code">list</code> can have</p>
+              </li>
+
+              <li>
+                <p>The loop variable (<code class="inline-code">user</code>) only exists
+                inside the body of the <code class="inline-code">items</code>
+                directive.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_105">sep directive</h3>
+
+
+            <a name="ref.directive.sep"></a>
+
+            
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p><code class="inline-code">sep</code> exists since FreeMarker
+              2.3.23</p>
+              </div>
+
+
+            <p><code class="inline-code">sep</code> is used when you have to display
+            something between each item (but not before the first item or
+            after the last item). For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list users as user&gt;${user}<strong>&lt;#sep&gt;, </strong>&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">Joe, Kate, Fred</pre></div>
+
+            <p>Above, <code class="inline-code">&lt;#sep&gt;, &lt;/#list&gt;</code> is a
+            shorthand for <code class="inline-code">&lt;#sep&gt;,
+            &lt;/#sep&gt;&lt;/#list&gt;</code>; the <code class="inline-code">sep</code>
+            end-tag can be omitted if you would put it where the enclosing
+            directive is closed anyway. In the next example, you couldn&#39;t use
+            such abbreviation (HTML tags close nothing, as they are just raw
+            text to output for FreeMarker):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list users as user&gt;
+  &lt;div&gt;
+    ${user}<strong>&lt;#sep&gt;, &lt;/#sep&gt;</strong>
+  &lt;/div&gt;
+&lt;/#list&gt;</pre></div>
+
+            <p><code class="inline-code">sep</code> is just a shorthand for
+            <code class="inline-code">&lt;#if
+            <em class="code-color">item</em>?has_next&gt;...&lt;/#if&gt;</code>.
+            Thus, it can be used anywhere where there&#39;s a
+            <code class="inline-code">list</code> or <code class="inline-code">items</code> loop variable
+            available, it can occur for multiple times, and it can have
+            arbitrary nested content.</p>
+
+            <p>The parser ensures that <code class="inline-code">sep</code> is only used
+            on a place where there&#39;s a visible loop variable. This happens
+            earlier than the actual execution of the template. Thus, you can&#39;t
+            move <code class="inline-code">sep</code> from inside the associated
+            <code class="inline-code">list</code> or <code class="inline-code">items</code> directive into
+            a macro or included template (the parser can&#39;t know where those
+            will be called from).</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_106">break directive</h3>
+
+
+            <a name="ref.directive.list.break"></a>
+
+            
+
+            <p>You can exit the iteration at any point with the
+            <code class="inline-code">break</code> directive. For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list 1..10 as x&gt;
+  ${x}
+  &lt;#if x == 3&gt;
+    <strong>&lt;#break&gt;</strong>
+  &lt;/#if&gt;
+&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  1
+  2
+  3</pre></div>
+
+            <p>The <code class="inline-code">break</code> directives can be placed
+            anywhere inside <code class="inline-code">list</code> as far as it has
+            <code class="inline-code">as <em class="code-color">item</em></code> parameter,
+            otherwise it can be placed anywhere inside the
+            <code class="inline-code">items</code> directive. If the
+            <code class="inline-code">break</code> is inside <code class="inline-code">items</code>, it
+            will only exit from <code class="inline-code">items</code>, not from
+            <code class="inline-code">list</code>. In general, <code class="inline-code">break</code> will
+            only exit from the directive whose body is called for each item,
+            and can only be placed inside such directive. So for example can&#39;t
+            use <code class="inline-code">break</code> inside <code class="inline-code">list</code>&#39;s
+            <code class="inline-code">else</code> section, unless there&#39;s the
+            <code class="inline-code">list</code> is nested into another
+            <code class="inline-code">break</code>-able directive.</p>
+
+            <p>Just like <code class="inline-code">else</code> and
+            <code class="inline-code">items</code>, <code class="inline-code">break</code> must be
+            literally inside body of the directive to break out from, and
+            can&#39;t be moved out into a macro or included template.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_107">Accessing iteration state</h3>
+
+
+            
+
+            
+
+            <p>Starting from 2.3.23, <a href="ref_builtins_loop_var.html">loop variable built-ins</a> is
+            the preferred way of accessing current state of the iteration. For
+            example, here we use the <code class="inline-code">counter</code> and
+            <code class="inline-code">item_parity</code> loop variable built-ins (see all of
+            them <a href="ref_builtins_loop_var.html">in the
+            Reference</a>):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list users&gt;
+  &lt;table&gt;
+    &lt;#items as user&gt;
+      &lt;tr class=&quot;${user<strong>?item_parity</strong>}Row&quot;&gt;
+        &lt;td&gt;${user<strong>?counter</strong>}
+        &lt;td&gt;${user}
+    &lt;/#items&gt;
+  &lt;/table&gt;
+&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;table&gt;
+      &lt;tr class=&quot;<strong>odd</strong>Row&quot;&gt;
+        &lt;td&gt;<strong>1</strong>
+        &lt;td&gt;Joe
+      &lt;tr class=&quot;<strong>even</strong>Row&quot;&gt;
+        &lt;td&gt;<strong>2</strong>
+        &lt;td&gt;Kate
+      &lt;tr class=&quot;<strong>odd</strong>Row&quot;&gt;
+        &lt;td&gt;<strong>3</strong>
+        &lt;td&gt;Fred
+  &lt;/table&gt;</pre></div>
+
+            <p>In 2.3.22 and earlier, there were two extra loop variables
+            to retrieve the iteration state instead (and they still exist for
+            backward compatibility):</p>
+
+            <ul>
+              <li>
+                <p><code class="inline-code"><em class="code-color">item</em>_index</code>
+                (<em>deprecated</em> by
+                <code class="inline-code"><em class="code-color">item</em>?index</code>): The
+                index (0-based number) of the current item in the loop.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code"><em class="code-color">item</em>_has_next</code>
+                (<em>deprecated</em> by
+                <code class="inline-code"><em class="code-color">item</em>?has_next</code>):
+                Boolean value that tells if the current item is the last in
+                the sequence or not.</p>
+              </li>
+            </ul>
+
+            <p>so in the above example, you could replace
+            <code class="inline-code">${user?counter}</code> with <code class="inline-code">${user_index +
+            1}</code>.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_108">Nesting loops into each other</h3>
+
+
+            <p>Naturally, <code class="inline-code">list</code> or
+            <code class="inline-code">items</code> can contain further
+            <code class="inline-code">list</code>-s:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list 1..2 as i&gt;
+  &lt;#list 1..3 as j&gt;
+    i = ${i}, j = ${j}
+  &lt;/#list&gt;
+&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">    i = 1, j = 1
+    i = 1, j = 2
+    i = 1, j = 3
+    i = 2, j = 1
+    i = 2, j = 2
+    i = 2, j = 3</pre></div>
+
+            <p>It&#39;s also allowed to use clashing loop variable names
+            like:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list 1..2 as i&gt;
+  Outer: ${i}
+  &lt;#list 10..12 as i&gt;
+    Inner: ${i}
+  &lt;/#list&gt;
+  Outer again: ${i}
+&lt;/#list&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">  Outer: 1
+    Inner: 10
+    Inner: 11
+    Inner: 12
+  Outer again: 1
+  Outer: 2
+    Inner: 10
+    Inner: 11
+    Inner: 12
+  Outer again: 2</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_109">Notes for Java programmers</h3>
+
+
+            <p><span class="marked-for-programmers">If classic compatible mode
+            <code class="inline-code">list</code> accepts a scalar too and treats it as a
+            single-element sequence.</span></p>
+
+            <p><span class="marked-for-programmers">If you pass an collection that
+            wraps an <code class="inline-code">java.util.Iterator</code> to the
+            <code class="inline-code">list</code>, you can iterate over its elements only
+            once, since <code class="inline-code">Iterator</code>s are by their nature
+            one-off objects. When you try to list a such collection variable
+            for the second time, an error will abort template
+            processing.</span></p>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_include.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_local.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[25/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_string.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_string.html b/builds/2.3.26-nightly/ref_builtins_string.html
new file mode 100644
index 0000000..6ebdd42
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_string.html
@@ -0,0 +1,2374 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-ins for strings - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-ins for strings">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_string.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_string.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_string.html"><span itemprop="name">Built-ins for strings</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Built-ins for strings"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_alphaidx.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_number.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_string" itemprop="headline">Built-ins for strings</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_boolean" data-menu-target="ref_builtin_boolean">boolean</a></li><li><a class="page-menu-link" href="#ref_builtin_cap_first" data-menu-target="ref_builtin_cap_first">cap_first</a></li><li><a class="page-menu-link" href="#ref_builtin_capitalize" data-menu-target="ref_builtin_capitalize">capitalize</a></li><li><a class="page-menu-link" href="#ref_builtin_chop_linebreak" data-menu-target="ref_builtin_chop_linebreak">chop_linebreak</a></li><li><a class="page-menu-link" href="#ref_builtin_contains" data-menu-target="ref_builtin_contains">contains</a></li><li><a class="page-menu-link" href="#ref_builtin_string_date" data-menu-target="ref_builtin_string_date">date, time, datetime</a></li><li><a class="page-menu-link" href="#ref_builtin_ends_with" data-menu-target="ref_builtin_ends_with">ends_with</a></li><li><a class="page-menu-link" href="#ref_builtin_ensure_ends_with" data-menu-target="ref_builtin_ensure_ends_with">ensure_ends_with</a><
 /li><li><a class="page-menu-link" href="#ref_builtin_ensure_starts_with" data-menu-target="ref_builtin_ensure_starts_with">ensure_starts_with</a></li><li><a class="page-menu-link" href="#ref_builtin_esc" data-menu-target="ref_builtin_esc">esc</a></li><li><a class="page-menu-link" href="#ref_builtin_groups" data-menu-target="ref_builtin_groups">groups</a></li><li><a class="page-menu-link" href="#ref_builtin_html" data-menu-target="ref_builtin_html">html (deprecated)</a></li><li><a class="page-menu-link" href="#ref_builtin_index_of" data-menu-target="ref_builtin_index_of">index_of</a></li><li><a class="page-menu-link" href="#ref_builtin_j_string" data-menu-target="ref_builtin_j_string">j_string</a></li><li><a class="page-menu-link" href="#ref_builtin_js_string" data-menu-target="ref_builtin_js_string">js_string</a></li><li><a class="page-menu-link" href="#ref_builtin_json_string" data-menu-target="ref_builtin_json_string">json_string</a></li><li><a class="page-menu-link" href="#ref_bu
 iltin_keep_after" data-menu-target="ref_builtin_keep_after">keep_after</a></li><li><a class="page-menu-link" href="#ref_builtin_keep_after_last" data-menu-target="ref_builtin_keep_after_last">keep_after_last</a></li><li><a class="page-menu-link" href="#ref_builtin_keep_before" data-menu-target="ref_builtin_keep_before">keep_before</a></li><li><a class="page-menu-link" href="#ref_builtin_keep_before_last" data-menu-target="ref_builtin_keep_before_last">keep_before_last</a></li><li><a class="page-menu-link" href="#ref_builtin_last_index_of" data-menu-target="ref_builtin_last_index_of">last_index_of</a></li><li><a class="page-menu-link" href="#ref_builtin_left_pad" data-menu-target="ref_builtin_left_pad">left_pad</a></li><li><a class="page-menu-link" href="#ref_builtin_length" data-menu-target="ref_builtin_length">length</a></li><li><a class="page-menu-link" href="#ref_builtin_lower_case" data-menu-target="ref_builtin_lower_case">lower_case</a></li><li><a class="page-menu-link" href="#
 ref_builtin_matches" data-menu-target="ref_builtin_matches">matches</a></li><li><a class="page-menu-link" href="#ref_builtin_no_esc" data-menu-target="ref_builtin_no_esc">no_esc</a></li><li><a class="page-menu-link" href="#ref_builtin_number" data-menu-target="ref_builtin_number">number</a></li><li><a class="page-menu-link" href="#ref_builtin_replace" data-menu-target="ref_builtin_replace">replace</a></li><li><a class="page-menu-link" href="#ref_builtin_right_pad" data-menu-target="ref_builtin_right_pad">right_pad</a></li><li><a class="page-menu-link" href="#ref_builtin_remove_beginning" data-menu-target="ref_builtin_remove_beginning">remove_beginning</a></li><li><a class="page-menu-link" href="#ref_builtin_remove_ending" data-menu-target="ref_builtin_remove_ending">remove_ending</a></li><li><a class="page-menu-link" href="#ref_builtin_rtf" data-menu-target="ref_builtin_rtf">rtf (deprecated)</a></li><li><a class="page-menu-link" href="#ref_builtin_split" data-menu-target="ref_builti
 n_split">split</a></li><li><a class="page-menu-link" href="#ref_builtin_starts_with" data-menu-target="ref_builtin_starts_with">starts_with</a></li><li><a class="page-menu-link" href="#ref_builtin_string_for_string" data-menu-target="ref_builtin_string_for_string">string (when used with a string value)</a></li><li><a class="page-menu-link" href="#ref_builtin_substring" data-menu-target="ref_builtin_substring">substring (deprecated)</a></li><li><a class="page-menu-link" href="#ref_builtin_trim" data-menu-target="ref_builtin_trim">trim</a></li><li><a class="page-menu-link" href="#ref_builtin_uncap_first" data-menu-target="ref_builtin_uncap_first">uncap_first</a></li><li><a class="page-menu-link" href="#ref_builtin_upper_case" data-menu-target="ref_builtin_upper_case">upper_case</a></li><li><a class="page-menu-link" href="#ref_builtin_url" data-menu-target="ref_builtin_url">url</a></li><li><a class="page-menu-link" href="#ref_builtin_url_path" data-menu-target="ref_builtin_url_path">ur
 l_path</a></li><li><a class="page-menu-link" href="#ref_builtin_word_list" data-menu-target="ref_builtin_word_list">word_list</a></li><li><a class="page-menu-link" href="#ref_builtin_xhtml" data-menu-target="ref_builtin_xhtml">xhtml (deprecated)</a></li><li><a class="page-menu-link" href="#ref_builtin_xml" data-menu-target="ref_builtin_xml">xml (deprecated)</a></li><li><a class="page-menu-link" href="#ref_builtin_string_flags" data-menu-target="ref_builtin_string_flags">Common flags</a></li></ul> </div><p>These built-ins act on a string left-value. However, if the
+        left-value is number or date/time/date-time or boolean (since 2.3.20),
+        it will automatically converted to string according the current
+        number-, date/time/date-time- and boolean-format settings (which are
+        the same formatters that are applied when inserting such values with
+        <code class="inline-code">${<em class="code-color">...</em>}</code>).</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_boolean">boolean</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>The string converted to boolean value. The string must be
+          <code class="inline-code">true</code> or <code class="inline-code">false</code> (case
+          sensitive!), or must be in the format specified by the
+          <code class="inline-code">boolean_format</code> setting.</p>
+
+          <p>If the string is not in the appropriate format, an error will
+          abort template processing when you try to access this
+          built-in.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_cap_first">cap_first</h2>
+
+
+          
+
+          <p>The string with the very first word of the string capitalized.
+          For the precise meaning of "word" see the <a href="#ref_builtin_word_list">word_list built-in</a>.
+          Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;  green mouse&quot;?cap_first}
+${&quot;GreEN mouse&quot;?cap_first}
+${&quot;- green mouse&quot;?cap_first}</pre></div>
+
+          <p>The output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  Green mouse
+GreEN mouse
+- green mouse</pre></div>
+
+          <p>In the case of <code class="inline-code">&quot;- green mouse&quot;</code>, the first
+          word is the <code class="inline-code">-</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_capitalize">capitalize</h2>
+
+
+          
+
+          <p>The string with all words capitalized. For the precise meaning
+          of "word" see the <a href="#ref_builtin_word_list">word_list built-in</a>.
+          Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;  green  mouse&quot;?capitalize}
+${&quot;GreEN mouse&quot;?capitalize}</pre></div>
+
+          <p>The output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  Green Mouse
+Green Mouse</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_chop_linebreak">chop_linebreak</h2>
+
+
+          
+
+          <p>The string without the <a href="gloss.html#gloss.lineBreak">line-break</a> at its very end if there
+          was a line-break, otherwise the unchanged string.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_contains">contains</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.1. It
+            doesn&#39;t exist in 2.3.</p>
+            </div>
+
+
+          <p>Returns if the substring specified as the parameter to this
+          built-in occurrs in the string. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if &quot;piceous&quot;?contains(&quot;ice&quot;)&gt;It contains &quot;ice&quot;&lt;/#if&gt;</pre></div>
+
+          <p>This will output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">It contains &quot;ice&quot;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_string_date">date, time, datetime</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>The string value converted to a date, time, or date-time
+          value. It will expect the format specified by the <a href="ref_directive_setting.html#topic.dateTimeFormatSettings"><code>date_format</code>,
+          <code>time_format</code> and
+          <code>datetime_format</code> settings</a>. If the string is
+          not in the appropriate format, an error will abort template
+          processing when you try to access this built-in.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- The date_format, time_format and datetime_format settings must match this format! --&gt;
+&lt;#assign someDate = &quot;Oct 25, 1995&quot;?date&gt;
+&lt;#assign someTime = &quot;3:05:30 PM&quot;?time&gt;
+&lt;#assign someDatetime = &quot;Oct 25, 1995 03:05:00 PM&quot;?datetime&gt;
+
+&lt;#-- Changing the setting value changes the expected format: --&gt;
+&lt;#setting datetime_format=&quot;iso&quot;&gt;
+&lt;#assign someDatetime = &quot;1995-10-25T15:05&quot;?datetime&gt;</pre></div>
+
+          <p>You can also specify the format explicitly like
+          <code class="inline-code">?datetime.<em class="code-color">format</em></code> (and
+          hence also as
+          <code class="inline-code">?datetime[&quot;<em class="code-color">format</em>&quot;]</code>)
+          or
+          <code class="inline-code">?datetime(&quot;<em class="code-color">format</em>&quot;)</code>;
+          these three forms do the same. The format can be specified similarly
+          with <code class="inline-code">?date</code> and <code class="inline-code">?time</code> too. For
+          the syntax and meaning of format values see the possible values of
+          the <a href="ref_directive_setting.html#topic.dateTimeFormatSettings"><code>date_format</code>,
+          <code>time_format</code> and
+          <code>datetime_format</code> settings</a>. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Parsing XML Schema xs:date, xs:time and xs:dateTime values: --&gt;
+&lt;#assign someDate = &quot;1995-10-25&quot;?date.xs&gt;
+&lt;#assign someTime = &quot;15:05:30&quot;?time.xs&gt;
+&lt;#assign someDatetime = &quot;1995-10-25T15:05:00&quot;?datetime.xs&gt;
+
+&lt;#-- Parsing ISO 8601 (both extended and basic formats): --&gt;
+&lt;#assign someDatetime = &quot;1995-10-25T15:05&quot;?datetime.iso&gt;
+&lt;#assign someDatetime = &quot;19951025T1505&quot;?datetime.iso&gt;
+
+&lt;#-- Parsing with SimpleDateFormat patterns: --&gt;
+&lt;#assign someDate = &quot;10/25/1995&quot;?date(&quot;MM/dd/yyyy&quot;)&gt;
+&lt;#assign someTime = &quot;15:05:30&quot;?time(&quot;HH:mm:ss&quot;)&gt;
+&lt;#assign someDatetime = &quot;1995-10-25 03:05 PM&quot;?datetime(&quot;yyyy-MM-dd hh:mm a&quot;)&gt;
+
+&lt;#-- Parsing with custom date formats: --&gt;
+&lt;#assign someDatetime = &quot;October/25/1995 03:05 PM&quot;?datetime.@worklog&gt;</pre></div>
+
+          <p>To prevent misunderstandings, the left-hand value need not be
+          a string literal. For example, when you read data from XML DOM (from
+          where all values come as unparsed strings), you may do things like
+          <code class="inline-code">order.confirmDate?date.xs</code> to convert the string
+          value to a real date.</p>
+
+          <p>Of course, the format also can be a variable, like in
+          <code class="inline-code">&quot;<em class="code-color">...</em>&quot;?datetime(myFormat)</code>.</p>
+
+          <p>Note that since 2.3.24, these built-ins can also be called
+          with 0 arguments, like <code class="inline-code">?date()</code>. It&#39;s almost the
+          same as just writing <code class="inline-code">?date</code>. The difference is
+          highly technical and rarely matters: <code class="inline-code">?date()</code> and
+          such returns exactly the same Java object that the date parser
+          (<code class="inline-code">freemarker.core.TemplateDateFormat</code>
+          implementation) returns, while <code class="inline-code">?date</code> without the
+          <code class="inline-code">()</code> returns a tricky wrapper value that&#39;s a date
+          and a method and hash on the same time.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_ends_with">ends_with</h2>
+
+
+          
+
+          <p>Returns whether this string ends with the substring specified
+          in the parameter. For example
+          <code class="inline-code">&quot;ahead&quot;?ends_with(&quot;head&quot;)</code> returns boolean
+          <code class="inline-code">true</code>. Also,
+          <code class="inline-code">&quot;head&quot;?ends_with(&quot;head&quot;)</code> will return
+          <code class="inline-code">true</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_ensure_ends_with">ensure_ends_with</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>If the string doesn&#39;t end with the substring specified as the
+          1st parameter, it adds it after the string, otherwise it returns the
+          original string. For example, both
+          <code class="inline-code">&quot;foo&quot;?ensure_ends_with(&quot;/&quot;)</code> and
+          <code class="inline-code">&quot;foo/&quot;?ensure_ends_with(&quot;/&quot;)</code> returns
+          <code class="inline-code">&quot;foo/&quot;</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_ensure_starts_with">ensure_starts_with</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>If the string doesn&#39;t start with the substring specified as
+          the 1st parameter, it adds it before the string, otherwise it
+          returns the original string. For example, both
+          <code class="inline-code">&quot;foo&quot;?ensure_starts_with(&quot;/&quot;)</code> and
+          <code class="inline-code">&quot;/foo&quot;?ensure_starts_with(&quot;/&quot;)</code> returns
+          <code class="inline-code">&quot;/foo&quot;</code>.</p>
+
+          <p>If you specify two parameters, then the 1st parameter is
+          interpreted as a Java regular expression, and if it doesn&#39;t match
+          the beginning of the string, then the string specified as the 2nd
+          parameter is added before the string. For example
+          <code class="inline-code">someURL?ensure_starts_with(&quot;[a-zA-Z]+://&quot;,
+          &quot;http://&quot;)</code> will check if the string starts with something
+          that matches <code class="inline-code">&quot;[a-zA-Z]+://&quot;</code> (note that no
+          <code class="inline-code">^</code> is needed), and if it doesn&#39;t, it prepends
+          <code class="inline-code">&quot;http://&quot;</code>.</p>
+
+          <p>This method also accepts a 3rd <a href="#ref_builtin_string_flags">flags parameter</a>. As
+          calling with 2 parameters implies <code class="inline-code">&quot;r&quot;</code> there
+          (i.e., regular expression mode), you rarely need this. One notable
+          case is when you don&#39;t want the 1st parameter to be interpreted as a
+          regular expression, only as plain text, but you want the comparison
+          to be case-insensitive, in which case you would use
+          <code class="inline-code">&quot;i&quot;</code> as the 3rd parameter.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_esc">esc</h2>
+
+
+          <p></p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.24.</p>
+            </div>
+
+
+          <p>Escapes the value with the current <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output format</a>,
+          and prevents the <a href="dgui_misc_autoescaping.html">auto-escaping</a> of the
+          returned value (to avoid double escaping). Because of auto-escaping,
+          you usually only need this where auto-escaping was disabled:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;HTML&quot; <strong>auto_esc=false</strong>&gt;
+&lt;#assign s = &quot;R&amp;D&quot;&gt;
+${s}
+${s?esc}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">R&amp;D
+R&amp;amp;D</pre></div>
+
+          <p>In templates, where auto-escaping is on, using it is
+          redundant:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;HTML&quot;&gt;
+&lt;#assign s = &quot;R&amp;D&quot;&gt;
+${s}
+${s?esc} &lt;#-- ?esc is redundant here --&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">R&amp;amp;D
+R&amp;amp;D</pre></div>
+
+          <p>This built-in works by converting the string value to a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output
+          value</a>, by escaping the string with the current output format,
+          and using the result as the markup. The resulting markup output
+          value belongs to the current output format at the point of the
+          invocation.</p>
+
+          <p>This built-in can also be applied on markup output values,
+          which it will bypass without change, as far as the input markup
+          output value belongs to the current output format. If it doesn&#39;t,
+          then the markup has to be converted to the current output format,
+          which currently (as of 2.3.24) will be only successful if that value
+          was created by escaping plain text (usually, with
+          <code class="inline-code">?esc</code>).</p>
+
+          <p>This built-in can&#39;t be used where the current output format is
+          a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_nonmarkupof">non-markup
+          output format</a>. An attempt to do so will cause a <a href="gloss.html#gloss.parseTimeError">parse-time error</a>.</p>
+
+          <p>This built-in is not related to the deprecated <a href="ref_directive_escape.html"><code>escape</code> and
+          <code>noescape</code> directives</a>. In fact, the parser
+          will prevent using them on the same place, to prevent
+          confusion.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_groups">groups</h2>
+
+
+          
+
+          <p>This is used only with the result of the
+          <code class="inline-code">matches</code> built-in. See <a href="#ref_builtin_matches">there...</a></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_html">html (deprecated)</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is <em>deprecated</em> by the
+            <a href="dgui_misc_autoescaping.html">auto-escaping
+            mechanism</a> introduced in 2.3.24. To prevent double escaping
+            and confusion in general, using this built-in on places where
+            auto-escaping is active is a <a href="gloss.html#gloss.parseTimeError">parse-time error</a>. To help
+            migration, this built-in silently bypasses HTML <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output
+            values</a> without changing them.</p>
+            </div>
+
+
+          <p>The string as HTML markup. That is, the string with
+          all:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code">&lt;</code> replaced with
+              <code class="inline-code">&amp;lt;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&gt;</code> replaced with
+              <code class="inline-code">&amp;gt;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&amp;</code> replaced with
+              <code class="inline-code">&amp;amp;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&quot;</code> replaced with
+              <code class="inline-code">&amp;quot;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&#39;</code> is replaced with
+              <code class="inline-code">&amp;#39;</code> <em>if</em> the
+              programmers has <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">set
+              the <code>incompatible_improvements</code> setting</a>
+              to 2.3.24 or higher (also if it&#39;s set to 2.3.20 or higher and
+              you are outside a string literal). Otherwise
+              <code class="inline-code">&#39;</code> won&#39;t be replaced, so you must use
+              quotation mark (<code class="inline-code">&quot;</code>, not <code class="inline-code">&#39;</code>)
+              to quote attribute values where you want to insert a value
+              safely.
+            </li>
+          </ul>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;input type=text name=user value=<strong>&quot;</strong>${user?html}<strong>&quot;</strong>&gt;</pre></div>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>When inserting the value of an attribute, always quote it,
+            or else it can be exploited by attackers! This is WRONG:
+            <code class="inline-code">&lt;input name=&quot;user&quot; value=${user?xhtml}&gt;</code>.
+            This is good: <code class="inline-code">&lt;input name=&quot;user&quot;
+            value=&quot;${user?xhtml}&quot;&gt;</code>.</p>
+            </div>
+
+
+          <p>Note that in HTML pages usually you want to use this built-in
+          for all interpolations. You can spare a lot of typing and lessen the
+          chances of accidental mistakes by using the <a href="ref_directive_escape.html"><code>escape</code>
+          directive</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_index_of">index_of</h2>
+
+
+          
+
+          <p>Returns the index within this string of the first occurrence
+          of the specified substring. For example,
+          <code class="inline-code">&quot;abcabc&quot;?index_of(&quot;bc&quot;)</code> will return 1 (don&#39;t
+          forget that the index of the first character is 0). Also, you can
+          specify the index to start the search from:
+          <code class="inline-code">&quot;abcabc&quot;?index_of(&quot;bc&quot;, 2)</code> will return 4. There
+          is no restriction on the numerical value of the second parameter: if
+          it is negative, it has the same effect as if it were zero, and if it
+          is greater than the length of this string, it has the same effect as
+          if it were equal to the length of this string. Decimal values will
+          be truncated to integers.</p>
+
+          <p>If the 1st parameter does not occur as a substring in this
+          string (starting from the given index, if you use the second
+          parameter), then it returns -1.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_j_string">j_string</h2>
+
+
+          
+
+          <p>Escapes the string with the escaping rules of Java language
+          string literals, so it&#39;s safe to insert the value into a string
+          literal. Note that it will <em>not</em> add quotation
+          marks around the inserted value; you meant to use this
+          <em>inside</em> the string literal.</p>
+
+          <p>All characters under <a href="gloss.html#gloss.UCS">UCS</a> code
+          point 0x20 will be escaped. When they have no dedicated escape
+          sequence in the Java language (like <code class="inline-code">\n</code>,
+          <code class="inline-code">\t</code>, etc.), they will be replaced with a UNICODE
+          escape
+          (<code class="inline-code">\u<em class="code-color">XXXX</em></code>).</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign beanName = &#39;The &quot;foo&quot; bean.&#39;&gt;
+String BEAN_NAME = &quot;${beanName?j_string}&quot;;</pre></div>
+
+          <p>will output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">String BEAN_NAME = &quot;The \&quot;foo\&quot; bean.&quot;;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_js_string">js_string</h2>
+
+
+          
+
+          <p>Escapes the string with the escaping rules of JavaScript
+          language string literals, so it&#39;s safe to insert the value into a
+          string literal. Note that it will <em>not</em> add
+          quotation marks around the inserted value; you meant to use this
+          <em>inside</em> the string literal.</p>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>When inserting into a JavaScript string literal that&#39;s
+            inside a HTML attribute, you also must escape the value with HTML
+            escaping. Thus, of you don&#39;t have <a href="pgui_config_outputformatsautoesc.html">automatic HTML
+            escaping</a>, this is WRONG: <code class="inline-code">&lt;p
+            onclick=&quot;alert(&#39;${message?js_string}&#39;)&quot;&gt;</code>, and this is
+            good: <code class="inline-code">&lt;p
+            onclick=&quot;alert(&#39;${message?js_string?html}&#39;)&quot;&gt;</code>.</p>
+            </div>
+
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign user = &quot;Big Joe&#39;s \&quot;right hand\&quot;&quot;&gt;
+&lt;script&gt;
+  alert(&quot;Welcome ${user?js_string}!&quot;);
+&lt;/script&gt;</pre></div>
+
+          <p>will output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;script&gt;
+  alert(&quot;Welcome Big Joe\&#39;s \&quot;right hand\&quot;!&quot;);
+&lt;/script&gt;</pre></div>
+
+          <p>The exact escaping rules are:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">&quot;</code> is escaped as
+              <code class="inline-code">\&quot;</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">&#39;</code> is escaped as
+              <code class="inline-code">\&#39;</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">\</code> is escaped as
+              <code class="inline-code">\\</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">/</code> is escaped as <code class="inline-code">\/</code>
+              if the <code class="inline-code">/</code> is directly after
+              <code class="inline-code">&lt;</code> in the escaped string, or if it&#39;s at the
+              beginning of the escaped string</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">&gt;</code> is escaped as
+              <code class="inline-code">\&gt;</code> if the <code class="inline-code">&gt;</code> is
+              directly after <code class="inline-code">]]</code> or <code class="inline-code">--</code> in
+              the escaped string, or if it&#39;s at the beginning of the escaped
+              string, or if there&#39;s only a <code class="inline-code">]</code> or
+              <code class="inline-code">-</code> before it at the beginning of the escaped
+              string</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">&lt;</code> is escaped as
+              <code class="inline-code">\u003C</code> if it&#39;s followed by
+              <code class="inline-code">?</code> or <code class="inline-code">!</code> in the escaped
+              string, or if it&#39;s at the end of the escaped string</p>
+            </li>
+
+            <li>
+              <p>Control characters in <a href="gloss.html#gloss.UCS">UCS</a>
+              code point ranges U+0000...U+001f and U+007f...U+009f are
+              escaped as <code class="inline-code">\r</code>, <code class="inline-code">\n</code>, etc.,
+              or as <code class="inline-code">\x<em class="code-color">XX</em></code> where
+              there&#39;s no special escape for them in JavaScript.</p>
+            </li>
+
+            <li>
+              <p>Control characters with <a href="gloss.html#gloss.UCS">UCS</a> code point U+2028 (Line
+              separator) and U+2029 (Paragraph separator) are escaped as
+              <code class="inline-code">\u<em class="code-color">XXXX</em></code>, as they
+              are source code line-breaks in ECMAScript.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_json_string">json_string</h2>
+
+
+          
+
+          <p>Escapes the string with the escaping rules of JSON language
+          string literals, so it&#39;s safe to insert the value into a string
+          literal. Note that it will <em>not</em> add quotation
+          marks around the inserted value; you meant to use this
+          <em>inside</em> the string literal.</p>
+
+          <p>This will not escape <code class="inline-code">&#39;</code> characters, since
+          JSON strings must be quoted with <code class="inline-code">&quot;</code>.</p>
+
+          <p>The escaping rules are almost identical to those <a href="#ref_builtin_j_string">documented for
+          <code>js_string</code></a>. The differences are that
+          <code class="inline-code">&#39;</code> is not escaped at all, that &gt; is escaped as
+          \u003E (not as \&gt;), and that
+          <code class="inline-code">\u<em class="code-color">XXXX</em></code> escapes are
+          used instead of <code class="inline-code">\x<em class="code-color">XX</em></code>
+          escapes.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_keep_after">keep_after</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>Removes the part of the string that is not after the first
+          occurrence of the given substring. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;abcdefgh&quot;?keep_after(&quot;de&quot;)}</pre></div>
+
+          <p>will print</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">fgh</pre></div>
+
+          <p>If the parameter string is not found, it will return an empty
+          string. If the parameter string is a 0-length string, it will return
+          the original string unchanged.</p>
+
+          <p>This method accepts an optional <a href="#ref_builtin_string_flags">flags parameter</a>, as its
+          2nd parameter:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;foo : bar&quot;?keep_after(r&quot;\s*:\s*&quot;, &quot;r&quot;)}</pre></div>
+
+          <p>will print</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">bar</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_keep_after_last">keep_after_last</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.22.</p>
+            </div>
+
+
+          <p>Same as <a href="#ref_builtin_keep_after"><code>keep_after</code></a>,
+          but keeps the part after the last occurrence of the parameter,
+          rather than after the first. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;foo.bar.txt&quot;?keep_after_last(&quot;.&quot;)}</pre></div>
+
+          <p>will print</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">txt</pre></div>
+
+          <p>while with <code class="inline-code">keep_after</code> you would get
+          <code class="inline-code">bar.txt</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_keep_before">keep_before</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>Removes the part of the string that starts with the given
+          substring. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;abcdef&quot;?keep_before(&quot;de&quot;)}</pre></div>
+
+          <p>will print</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">abc</pre></div>
+
+          <p>If the parameter string is not found, it will return the
+          original string unchanged. If the parameter string is a 0-length
+          string, it will return an empty string.</p>
+
+          <p>This method accepts an optional <a href="#ref_builtin_string_flags">flags parameter</a>, as its
+          2nd parameter:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;foo : bar&quot;?keep_before(r&quot;\s*:\s*&quot;, &quot;r&quot;)}</pre></div>
+
+          <p>will print</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">foo</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_keep_before_last">keep_before_last</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.22.</p>
+            </div>
+
+
+          <p>Same as <a href="#ref_builtin_keep_before"><code>keep_before</code></a>,
+          but keeps the part before the last occurrence of the parameter,
+          rather than after the first. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;foo.bar.txt&quot;?keep_after_last(&quot;.&quot;)}</pre></div>
+
+          <p>will print</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">foo.bar</pre></div>
+
+          <p>while with <code class="inline-code">keep_before</code> you would get
+          <code class="inline-code">foo</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_last_index_of">last_index_of</h2>
+
+
+          
+
+          <p>Returns the index within this string of the last (rightmost)
+          occurrence of the specified substring. It returns the index of the
+          first (leftmost) character of the substring. For example:
+          <code class="inline-code">&quot;abcabc&quot;?last_index_of(&quot;ab&quot;)</code> will return 3. Also,
+          you can specify the index to start the search from. For example,
+          <code class="inline-code">&quot;abcabc&quot;?last_index_of(&quot;ab&quot;, 2)</code> will return 0.
+          Note that the second parameter indicates the maximum index of the
+          start of the substring. There is no restriction on the numerical
+          value of the second parameter: if it is negative, it has the same
+          effect as if it were zero, and if it is greater than the length of
+          this string, it has the same effect as if it were equal to the
+          length of this string. Decimal values will be truncated to
+          inegers.</p>
+
+          <p>If the 1st parameter does not occur as a substring in this
+          string (before the given index, if you use the second parameter),
+          then it returns -1.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_left_pad">left_pad</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.1.</p>
+            </div>
+
+
+          <p>If it&#39;s used with 1 parameter, then it inserts spaces on the
+          beginning of the string until it reaches the length that is
+          specified as the parameter. If the string is already as long or
+          longer than the specified length, then it does nothing. For example,
+          this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">[${&quot;&quot;?left_pad(5)}]
+[${&quot;a&quot;?left_pad(5)}]
+[${&quot;ab&quot;?left_pad(5)}]
+[${&quot;abc&quot;?left_pad(5)}]
+[${&quot;abcd&quot;?left_pad(5)}]
+[${&quot;abcde&quot;?left_pad(5)}]
+[${&quot;abcdef&quot;?left_pad(5)}]
+[${&quot;abcdefg&quot;?left_pad(5)}]
+[${&quot;abcdefgh&quot;?left_pad(5)}]</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">[     ]
+[    a]
+[   ab]
+[  abc]
+[ abcd]
+[abcde]
+[abcdef]
+[abcdefg]
+[abcdefgh]</pre></div>
+
+          <p>If it&#39;s used with 2 parameters, then the 1st parameter means
+          the same as if you were using the built-in with only 1 parameter,
+          and the second parameter specifies what to insert instead of space
+          characters. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">[${&quot;&quot;?left_pad(5, &quot;-&quot;)}]
+[${&quot;a&quot;?left_pad(5, &quot;-&quot;)}]
+[${&quot;ab&quot;?left_pad(5, &quot;-&quot;)}]
+[${&quot;abc&quot;?left_pad(5, &quot;-&quot;)}]
+[${&quot;abcd&quot;?left_pad(5, &quot;-&quot;)}]
+[${&quot;abcde&quot;?left_pad(5, &quot;-&quot;)}]</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">[-----]
+[----a]
+[---ab]
+[--abc]
+[-abcd]
+[abcde]</pre></div>
+
+          <p>The 2nd parameter can be a string whose length is greater than
+          1. Then the string will be inserted periodically, for
+          example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">[${&quot;&quot;?left_pad(8, &quot;.oO&quot;)}]
+[${&quot;a&quot;?left_pad(8, &quot;.oO&quot;)}]
+[${&quot;ab&quot;?left_pad(8, &quot;.oO&quot;)}]
+[${&quot;abc&quot;?left_pad(8, &quot;.oO&quot;)}]
+[${&quot;abcd&quot;?left_pad(8, &quot;.oO&quot;)}]</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">[.oO.oO.o]
+[.oO.oO.a]
+[.oO.oOab]
+[.oO.oabc]
+[.oO.abcd]</pre></div>
+
+          <p>The 2nd parameter must be a string value, and it must be at
+          least 1 character long.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_length">length</h2>
+
+
+          
+
+          <p>The number of characters in the string.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_lower_case">lower_case</h2>
+
+
+          
+
+          <p>The lower case version of the string. For example
+          <code class="inline-code">&quot;GrEeN MoUsE&quot;?lower_case</code> will be <code class="inline-code">&quot;green
+          mouse&quot;</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_matches">matches</h2>
+
+
+          
+
+          <p>This is a "power user" built-in. Ignore it if you
+          don&#39;t know <a href="gloss.html#gloss.regularExpression">regular
+          expressions</a>.</p>
+
+          <p>This built-in determines if the string exactly matches the
+          pattern. Also, it returns the list of matching sub-strings. The
+          return value is a multi-type value:</p>
+
+          <ul>
+            <li>
+              <p>Boolean: <code class="inline-code">true</code>, if it the entire string
+              matches the pattern, otherwise <code class="inline-code">false</code>. For
+              example, <code class="inline-code">&quot;fooo&quot;?matches(&#39;fo*&#39;)</code> is
+              <code class="inline-code">true</code>, but
+              <code class="inline-code">&quot;fooo�bar&quot;?matches(&#39;fo*&#39;)</code> is
+              <code class="inline-code">false</code>.</p>
+            </li>
+
+            <li>
+              <p>Sequence: the list of matched substrings of the string.
+              Possibly a 0 length sequence.</p>
+            </li>
+          </ul>
+
+          <p>For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if &quot;fxo&quot;?matches(&quot;f.?o&quot;)&gt;Matches.&lt;#else&gt;Does not match.&lt;/#if&gt;
+
+&lt;#assign res = &quot;foo bar fyo&quot;?matches(&quot;f.?o&quot;)&gt;
+&lt;#if res&gt;Matches.&lt;#else&gt;Does not match.&lt;/#if&gt;
+Matching sub-strings:
+&lt;#list res as m&gt;
+- ${m}
+&lt;/#list&gt;</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Matches.
+
+Does not match.
+Matching sub-strings:
+- foo
+- fyo</pre></div>
+
+          <p>If the regular expression contains groups (parentheses), then
+          you can access them with the <code class="inline-code">groups</code>
+          built-in:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Entire input match --&gt;
+&lt;#assign res = &quot;John Doe&quot;?matches(r&quot;(\w+) (\w+)&quot;)&gt;
+&lt;#if res&gt; &lt;#-- Must not try to access groups if there was no match! --&gt;
+  First name: ${res?groups[1]}
+  Second name: ${res?groups[2]}
+&lt;/#if&gt;
+
+&lt;#-- Subtring matches --&gt;
+&lt;#assign res = &quot;aa/rx; ab/r;&quot;?matches(&quot;(.+?)/*(.+?);&quot;)&gt;
+&lt;#list res as m&gt;
+  - &quot;${m}&quot; is &quot;${m?groups[1]}&quot; per &quot;${m?groups[2]}&quot;
+&lt;/#list&gt;</pre></div>
+
+          <p>This will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  First name: John
+  Second name: Doe
+
+  - &quot;aa/rx;&quot; is &quot;a&quot; per &quot;a/rx&quot;
+  - &quot; ab/r;&quot; is &quot; &quot; per &quot;ab/r&quot;</pre></div>
+
+          <p>Notes regarding the behavior of the <code class="inline-code">groups</code>
+          built-in:</p>
+
+          <ul>
+            <li>
+              <p>It works both with substring matches and with the result
+              of entire string matching (as it was shown in the above
+              example)</p>
+            </li>
+
+            <li>
+              <p>The first item in the sequence that
+              <code class="inline-code">groups</code> returns is the whole substring matched
+              by the regular expression. Hence, the index of the first
+              explicit regular expression group (with other words, of the
+              first <code class="inline-code">(<em class="code-color">...</em>)</code> in the
+              regular expression) is 1, and not 0. Also, because of this, the
+              size of the sequence is one more than the number of explicit
+              regular expression groups.</p>
+            </li>
+
+            <li>
+              <p>The size of the sequence returned by
+              <code class="inline-code">groups</code> only depends on the number of explicit
+              groups in the regular expression, and so it will be the same
+              (non-0) even if there was no match found for the regular
+              expression. Attempting to access an item of the sequence (as in
+              <code class="inline-code">res?groups[1]</code>) when there was match will
+              cause an error. Thus, before accessing the groups, you should
+              always check if there was any match (as in <code class="inline-code">&lt;#if
+              res&gt;<em class="code-color">access the groups
+              here</em>&lt;/#if&gt;</code>).</p>
+            </li>
+
+            <li>
+              <p>When there&#39;s a match for the regular expression, but not
+              for a certain explicit group inside the regular expression, then
+              for that group the sequence will contain a 0 length string. So
+              accessing a group that matches nothing is safe, as far as the
+              containing regular expression has matched something.</p>
+            </li>
+          </ul>
+
+          <p><code class="inline-code">matches</code> accepts an optional 2nd parameter,
+          the <a href="#ref_builtin_string_flags">flags</a>. Note that
+          it doesn&#39;t support flag <code class="inline-code">f</code>, and ignores the
+          <code class="inline-code">r</code> flag.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_no_esc">no_esc</h2>
+
+
+          <p></p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.24.</p>
+            </div>
+
+
+          <p>Prevents the <a href="dgui_misc_autoescaping.html">auto-escaping</a> of a value.
+          For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;HTML&quot;&gt;
+&lt;#assign s = &quot;&lt;b&gt;Test&lt;/b&gt;&quot;&gt;
+${s}
+${s?no_esc}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&amp;lt;b&amp;gt;Test&amp;lt;/b&amp;gt;
+&lt;b&gt;Test&lt;/b&gt;</pre></div>
+
+          <p>This works by converting the string value to a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output
+          value</a>, which uses the string as the markup as is, and belongs
+          to the current <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output format</a>
+          at the point of the invocation.</p>
+
+          <p>This built-in can also be applied on markup output values,
+          which it will bypass without change, as far as the input markup
+          output value belongs to current output format. If it doesn&#39;t, then
+          the markup has to be converted to the current output format, which
+          currently (as of 2.3.24) will be only successful if that value was
+          created by escaping plain text (usually, with
+          <code class="inline-code">?esc</code>).</p>
+
+          <p>This built-in can&#39;t be used where the current output format is
+          a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_nonmarkupof">non-markup
+          output format</a>. An attempt to do so will cause a <a href="gloss.html#gloss.parseTimeError">parse-time error</a>.</p>
+
+          <p>This built-in is not related to the deprecated <a href="ref_directive_escape.html"><code>escape</code> and
+          <code>noescape</code> directives</a>. In fact, the parser
+          will prevent using them on the same place, to prevent
+          confusion.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_number">number</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>The string converted to numerical value. The number must be in
+          "computer language" format. That is, it must be in the
+          locale independent form, where the decimal separator is dot, and
+          there&#39;s no grouping.</p>
+
+          <p>This built-in recognizes numbers in the format that the
+          FreeMarker template language uses. In additionally, it recognizes
+          scientific notation (e.g. <code class="inline-code">&quot;1.23E6&quot;</code>,
+          <code class="inline-code">&quot;1.5e-8&quot;</code>). Since FreeMarker 2.3.21, it also
+          recognizes all XML Schema number formats, like
+          <code class="inline-code">NaN</code>, <code class="inline-code">INF</code>,
+          <code class="inline-code">-INF</code>, plus the Java-native formats
+          <code class="inline-code">Infinity</code> and <code class="inline-code">-Infinity</code>.</p>
+
+          <p>If the string is not in the appropriate format, an error will
+          abort template processing when you try to access this
+          built-in.</p>
+
+          <p><span class="marked-for-programmers">In fact, the string is parsed by
+          the <code class="inline-code">toNumber</code> method of the current
+          <code class="inline-code">arithmetic_engine</code>, which is configuration
+          setting. However, that method should behave similarly as described
+          above.</span></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_replace">replace</h2>
+
+
+          
+
+          <p>It is used to replace all occurrences of a string in the
+          original string with another string. It does not deal with word
+          boundaries. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;this is a car acarus&quot;?replace(&quot;car&quot;, &quot;bulldozer&quot;)}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">this is a bulldozer abulldozerus</pre></div>
+
+          <p>The replacing occurs in left-to-right order. This means that
+          this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;aaaaa&quot;?replace(&quot;aaa&quot;, &quot;X&quot;)}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Xaa</pre></div>
+
+          <p>If the 1st parameter is an empty string, then all occurrences
+          of the empty string will be replaced, like
+          <code class="inline-code">&quot;foo&quot;?replace(&quot;&quot;,&quot;|&quot;)</code> will evaluate to
+          <code class="inline-code">&quot;|f|o|o|&quot;</code>.</p>
+
+          <p><code class="inline-code">replace</code> accepts an optional <a href="#ref_builtin_string_flags">flags parameter</a>, as its
+          3rd parameter.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_right_pad">right_pad</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.1. It
+            doesn&#39;t exist in 2.3.</p>
+            </div>
+
+
+          <p>This is the same as <a href="#ref_builtin_left_pad"><code>left_pad</code></a>,
+          but it inserts the characters at the end of the string instead of
+          the beginning of the string.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">[${&quot;&quot;?right_pad(5)}]
+[${&quot;a&quot;?right_pad(5)}]
+[${&quot;ab&quot;?right_pad(5)}]
+[${&quot;abc&quot;?right_pad(5)}]
+[${&quot;abcd&quot;?right_pad(5)}]
+[${&quot;abcde&quot;?right_pad(5)}]
+[${&quot;abcdef&quot;?right_pad(5)}]
+[${&quot;abcdefg&quot;?right_pad(5)}]
+[${&quot;abcdefgh&quot;?right_pad(5)}]
+
+[${&quot;&quot;?right_pad(8, &quot;.oO&quot;)}]
+[${&quot;a&quot;?right_pad(8, &quot;.oO&quot;)}]
+[${&quot;ab&quot;?right_pad(8, &quot;.oO&quot;)}]
+[${&quot;abc&quot;?right_pad(8, &quot;.oO&quot;)}]
+[${&quot;abcd&quot;?right_pad(8, &quot;.oO&quot;)}]</pre></div>
+
+          <p>This will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">[     ]
+[a    ]
+[ab   ]
+[abc  ]
+[abcd ]
+[abcde]
+[abcdef]
+[abcdefg]
+[abcdefgh]
+
+[.oO.oO.o]
+[aoO.oO.o]
+[abO.oO.o]
+[abc.oO.o]
+[abcdoO.o]</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_remove_beginning">remove_beginning</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>Removes the parameter substring from the beginning of the
+          string, or returns the original string if it doesn&#39;t start with the
+          parameter substring. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;abcdef&quot;?remove_beginning(&quot;abc&quot;)}
+${&quot;foobar&quot;?remove_beginning(&quot;abc&quot;)}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">def
+foobar</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_remove_ending">remove_ending</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>Removes the parameter substring from the ending of the string,
+          or returns the original string if it doesn&#39;t end with the parameter
+          substring. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;abcdef&quot;?remove_ending(&quot;def&quot;)}
+${&quot;foobar&quot;?remove_ending(&quot;def&quot;)}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">abc
+foobar</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_rtf">rtf (deprecated)</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is <em>deprecated</em> by the
+            <a href="dgui_misc_autoescaping.html">auto-escaping
+            mechanism</a> introduced in 2.3.24. To prevent double escaping
+            and confusion in general, using this built-in on places where
+            auto-escaping is active is a <a href="gloss.html#gloss.parseTimeError">parse-time error</a>. To help
+            migration, this built-in silently bypasses RTF <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output
+            values</a> without changing them.</p>
+            </div>
+
+
+          
+
+          
+
+          <p>The string as Rich text (RTF text). That is, the string with
+          all:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">\</code> replaced with
+              <code class="inline-code">\\</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">{</code> replaced with
+              <code class="inline-code">\{</code></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">}</code> replaced with
+              <code class="inline-code">\}</code></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_split">split</h2>
+
+
+          
+
+          <p>It is used to split a string into a sequence of strings along
+          the occurrences of another string. For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list &quot;someMOOtestMOOtext&quot;?split(&quot;MOO&quot;) as x&gt;
+- ${x}
+&lt;/#list&gt;</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">- some
+- test
+- text</pre></div>
+
+          <p>Note that it is assumed that all occurrences of the separator
+          is before a new item (except with <code class="inline-code">&quot;r&quot;</code> flag - see
+          later), thus:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list &quot;some,,test,text,&quot;?split(&quot;,&quot;) as x&gt;
+- &quot;${x}&quot;
+&lt;/#list&gt;</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">- &quot;some&quot;
+- &quot;&quot;
+- &quot;test&quot;
+- &quot;text&quot;
+- &quot;&quot;</pre></div>
+
+          <p><code class="inline-code">split</code> accepts an optional <a href="#ref_builtin_string_flags">flags parameter</a>, as its
+          2nd parameter. There&#39;s a historical glitch with the
+          <code class="inline-code">r</code> (regular expression) flag; it removes the empty
+          elements from the end of the resulting list, so with
+          <code class="inline-code">?split(&quot;,&quot;, &quot;r&quot;)</code> in the last example the last
+          <code class="inline-code">&quot;&quot;</code> would be missing from the output.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>To check if a strings ends with something and append it
+            otherwise, use <a href="#ref_builtin_ensure_ends_with">the
+            <code>ensure_ends_with</code> built-in</a>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_starts_with">starts_with</h2>
+
+
+          
+
+          <p>Returns if this string starts with the specified substring.
+          For example <code class="inline-code">&quot;redirect&quot;?starts_with(&quot;red&quot;)</code> returns
+          boolean <code class="inline-code">true</code>. Also,
+          <code class="inline-code">&quot;red&quot;?starts_with(&quot;red&quot;)</code> will return
+          <code class="inline-code">true</code>.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>To check if a strings starts with something and prepend it
+            otherwise, use <a href="#ref_builtin_ensure_starts_with">the
+            <code>ensure_starts_with</code> built-in</a>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_string_for_string">string (when used with a string value)</h2>
+
+
+          <p>Does nothing, just returns the string as-is. The exception is
+          that if the value is a multi-type value (e.g. it is both string and
+          sequence at the same time), then the resulting value will be only a
+          simple string, not a multi-type value. This can be utilized to
+          prevent the artifacts of multi-typing.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_substring">substring (deprecated)</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is deprecated since FreeMarker 2.3.21 by <a href="dgui_template_exp.html#dgui_template_exp_stringop_slice">slicing
+            expressions</a>, like
+            <code class="inline-code"><em class="code-color">str</em>[<em class="code-color">from</em>..&lt;<em class="code-color">toExclusive</em>]</code>,
+            <code class="inline-code"><em class="code-color">str</em>[<em class="code-color">from</em>..]</code>,
+            and
+            <code class="inline-code"><em class="code-color">str</em>[<em class="code-color">from</em>..*<em class="code-color">maxLength</em>]</code>.</p>
+
+            <p>A warning if you are processing XML: Since slicing
+            expressions work both for sequences and strings, and since XML
+            nodes are typically both sequences and strings at the same time,
+            there the equivalent expression is
+            <code class="inline-code"><em class="code-color">someXmlNode</em>?string[<em class="code-color">from</em>..&lt;<em class="code-color">toExclusive</em>]</code>
+            and
+            <code class="inline-code"><em class="code-color">exp</em>?string[<em class="code-color">from</em>..]</code>,
+            as without <code class="inline-code">?string</code> it would slice the node
+            sequence instead of the text value of the node.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Some of the typical use-cases of string slicing is covered
+            by convenient built-ins: <a href="#ref_builtin_remove_beginning"><code>remove_beginning</code></a>,
+            <a href="#ref_builtin_remove_ending"><code>remove_ending</code></a>,
+            <a href="#ref_builtin_keep_before"><code>keep_before</code></a>,
+            <a href="#ref_builtin_keep_after"><code>keep_after</code></a>,
+            <a href="#ref_builtin_keep_before_last"><code>keep_before_last</code></a>,
+            <a href="#ref_builtin_keep_after_last"><code>keep_after_last</code></a></p>
+            </div>
+
+
+          <p>Synopsis:
+          <code class="inline-code"><em class="code-color">exp</em>?substring(<em class="code-color">from</em>,
+          <em class="code-color">toExclusive</em>)</code>, also callable as
+          <code class="inline-code"><em class="code-color">exp</em>?substring(<em class="code-color">from</em>)</code></p>
+
+          <p>A substring of the string.
+          <code class="inline-code"><em class="code-color">from</em></code> is the index of
+          the first character. It must be a number that is at least 0 and less
+          than or equal with
+          <code class="inline-code"><em class="code-color">toExclusive</em></code>, or else
+          an error will abort the template processing. The
+          <code class="inline-code"><em class="code-color">toExclusive</em></code> is the
+          index of the character position after the last character of the
+          substring, or with other words, it is one greater than the index of
+          the last character. It must be a number that is at least 0 and less
+          than or equal to the length of the string, or else an error will
+          abort the template processing. If the
+          <code class="inline-code"><em class="code-color">toExclusive</em></code> is
+          omitted, then it defaults to the length of the string. If a
+          parameter is a number that is not an integer, only the integer part
+          of the number will be used.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">- ${&#39;abc&#39;?substring(0)}
+- ${&#39;abc&#39;?substring(1)}
+- ${&#39;abc&#39;?substring(2)}
+- ${&#39;abc&#39;?substring(3)}
+
+- ${&#39;abc&#39;?substring(0, 0)}
+- ${&#39;abc&#39;?substring(0, 1)}
+- ${&#39;abc&#39;?substring(0, 2)}
+- ${&#39;abc&#39;?substring(0, 3)}
+
+- ${&#39;abc&#39;?substring(0, 1)}
+- ${&#39;abc&#39;?substring(1, 2)}
+- ${&#39;abc&#39;?substring(2, 3)}</pre></div>
+
+          <p>The output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">- abc
+- bc
+- c
+-
+
+-
+- a
+- ab
+- abc
+
+- a
+- b
+- c</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_trim">trim</h2>
+
+
+          
+
+          <p>The string without leading and trailing white-space.
+          Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">(${&quot;  green mouse  &quot;?trim})</pre></div>
+
+          <p>The output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">(green mouse)</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_uncap_first">uncap_first</h2>
+
+
+          
+
+          <p>The opposite of <a href="#ref_builtin_cap_first"><code>cap_first</code></a>.
+          The string with the very first word of the string
+          un-capitalized.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_upper_case">upper_case</h2>
+
+
+          
+
+          <p>The upper case version of the string. For example
+          <code class="inline-code">&quot;GrEeN MoUsE&quot;</code> will be <code class="inline-code">&quot;GREEN
+          MOUSE&quot;</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_url">url</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.1. It
+            doesn&#39;t exist in 2.3.</p>
+            </div>
+
+
+          <p>The string after URL escaping. This means that all
+          non-US-ASCII and reserved URL characters will be escaped with
+          <code class="inline-code">%<em class="code-color">XX</em></code>. For
+          example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = &#39;a/b c&#39;&gt;
+${x?url}</pre></div>
+
+          <p>The output will be (assuming that the charset used for the
+          escaping is an US-ASCII compatible charset):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">a%2Fb%20c</pre></div>
+
+          <p>Note that it escapes <em>all</em> reserved URL
+          characters (<code class="inline-code">/</code>, <code class="inline-code">=</code>,
+          <code class="inline-code">&amp;</code>, ...etc), so this encoding can be used for
+          encoding query parameter values, for example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;a href=&quot;foo.cgi?x=${x?url}&amp;y=${y?url}&quot;&gt;Click here...&lt;/a&gt;</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Above no HTML encoding (<code class="inline-code">?html</code>) was
+            needed, because URL escaping escapes all reserved HTML characters
+            anyway. But watch: always quote the attribute value, and always
+            with normal quotation mark (<code class="inline-code">&quot;</code>), never with
+            apostrophe quotation mark (<code class="inline-code">&#39;</code>), because
+            apostrophe quotation mark is not escaped by the URL
+            escaping.</p>
+            </div>
+
+
+          <p>To do URL escaping a <a href="gloss.html#gloss.charset">charset</a> must be chosen that will be
+          used for calculating the escaped parts
+          (<code class="inline-code">%<em class="code-color">XX</em></code>). If you are HTML
+          page author and you don&#39;t really understand this, don&#39;t worry: the
+          programmers should configure FreeMarker so that it uses the proper
+          charset by default (<span class="marked-for-programmers">programmers: see
+          more below...</span>). If you are a more technical minded user,
+          then you may want to know that the charset used is specified by the
+          <code class="inline-code">url_escaping_charset</code> setting, that can be set in
+          template execution time (or, preferably, earlier by the
+          programmers). For example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#--
+  This will use the charset specified by the programmers
+  before the template execution has started.
+--&gt;
+&lt;a href=&quot;foo.cgi?x=${x?url}&quot;&gt;foo&lt;/a&gt;
+
+&lt;#-- Use UTF-8 charset for URL escaping from now: --&gt;
+<strong>&lt;#setting url_escaping_charset=&quot;UTF-8&quot;&gt;</strong>
+
+&lt;#-- This will surely use UTF-8 charset --&gt;
+&lt;a href=&quot;bar.cgi?x=${x?url}&quot;&gt;bar&lt;/a&gt;</pre></div>
+
+          <p>Furthermore, you can explicitly specify a charset for a single
+          URL escaping as the parameter to the built-in:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;a href=&quot;foo.cgi?x=${x?url<strong>(&#39;ISO-8895-2&#39;)</strong>}&quot;&gt;foo&lt;/a&gt;</pre></div>
+
+          <p><span class="marked-for-programmers">If the <code class="inline-code">url</code> built-in has no
+          parameter, then it will use the charset specified as the value of
+          the <code class="inline-code">url_escaping_charset</code> setting. This setting
+          should be set by the software that encloses FreeMarker (e.g. a Web
+          application framework), because it is not set
+          (<code class="inline-code">null</code>) by default. If it is not set, then
+          FreeMarker falls back using the value of the
+          <code class="inline-code">output_encoding</code> setting, which is also not set by
+          default, so it is again the task of the enclosing software. If the
+          <code class="inline-code">output_encoding</code> setting is not set either, then
+          the parameterless <code class="inline-code">url</code> built-in can&#39;t be executed,
+          and it will cause execution time error. Of course, the
+          <code class="inline-code">url</code> built-in with parameter always
+          works.</span></p>
+
+          <p><span class="marked-for-programmers">It&#39;s possible to set
+          <code class="inline-code">url_escaping_charset</code> in the template with the
+          <code class="inline-code">setting</code> directive, but it is bad practice, at
+          least in true MVC applications. The
+          <code class="inline-code">output_encoding</code> setting can&#39;t be set with the
+          <code class="inline-code">setting</code> directive, so that&#39;s surely the task of
+          the enclosing software. You may find more information regarding this
+          <a href="pgui_misc_charset.html">here...</a></span></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_url_path">url_path</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.21.</p>
+            </div>
+
+
+          <p>This is the same as <a href="#ref_builtin_url">the
+          <code>url</code> built-in</a>, except that it doesn&#39;t
+          escape slash (<code class="inline-code">/</code>) characters. This meant to be
+          used for converting paths (like paths coming from the OS or some
+          content repository) that use slash (not backslash!) to a path the
+          can be inserted into an URL. The most common reason why this
+          conversion is needed is that folder names or file names might
+          contain non-US-ASCII letters ("national"
+          characters).</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Just like with <a href="#ref_builtin_url">the
+            <code>url</code> built-in</a>, the desired URL escaping
+            charset (or as a fall back, the output encoding) must be set in
+            the FreeMarker configuration settings, or else the built-in will
+            give error. Or, you you have to specify the charset like
+            <code class="inline-code">somePath?url_path(&#39;utf-8&#39;)</code>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_word_list">word_list</h2>
+
+
+          
+
+          <p>A sequence that contains all words of the string in the order
+          as they appear in the string. Words are continual character
+          sequences that contain any character but <a href="gloss.html#gloss.whiteSpace">white-space</a>. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign words = &quot;   a bcd, .   1-2-3&quot;?word_list&gt;
+&lt;#list words as word&gt;[${word}]&lt;/#list&gt;</pre></div>
+
+          <p>will output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">[a][bcd,][.][1-2-3]</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_xhtml">xhtml (deprecated)</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is <em>deprecated</em> by the
+            <a href="dgui_misc_autoescaping.html">auto-escaping
+            mechanism</a> introduced in 2.3.24. To prevent double escaping
+            and confusion in general, using this built-in on places where
+            auto-escaping is active is a <a href="gloss.html#gloss.parseTimeError">parse-time error</a>. To help
+            migration, this built-in silently bypasses HTML <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output
+            values</a> without changing them.</p>
+            </div>
+
+
+          
+
+          
+
+          <p>The string as XHTML text. That is, the string with all:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code">&lt;</code> replaced with
+              <code class="inline-code">&amp;lt;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&gt;</code> replaced with
+              <code class="inline-code">&amp;gt;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&amp;</code> replaced with
+              <code class="inline-code">&amp;amp;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&quot;</code> replaced with
+              <code class="inline-code">&amp;quot;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&#39;</code> replaced with
+              <code class="inline-code">&amp;#39;</code>
+            </li>
+          </ul>
+
+          <p>The only difference between this built-in and the
+          <code class="inline-code">xml</code> built-in is that the <code class="inline-code">xhtml</code>
+          built-in escapes <code class="inline-code">&#39;</code> as
+          <code class="inline-code">&amp;#39;</code> instead of as
+          <code class="inline-code">&amp;apos;</code>, because some older browsers don&#39;t
+          know <code class="inline-code">&amp;apos;</code>.</p>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>When inserting the value of an attribute, always quote it,
+            or else it can be exploited by attacker! This is WRONG:
+            <code class="inline-code">&lt;input name=&quot;user&quot; value=${user?xhtml}/&gt;</code>.
+            These are good: <code class="inline-code">&lt;input name=&quot;user&quot;
+            value=&quot;${user?xhtml}&quot;/&gt;</code>, <code class="inline-code">&lt;input
+            name=&quot;user&quot; value=&#39;${user?xhtml}&#39;/&gt;</code>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_xml">xml (deprecated)</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is <em>deprecated</em> by the
+            <a href="dgui_misc_autoescaping.html">auto-escaping
+            mechanism</a> introduced in 2.3.24. To prevent double escaping
+            and confusion in general, using this built-in on places where
+            auto-escaping is active is a <a href="gloss.html#gloss.parseTimeError">parse-time error</a>. To help
+            migration, this built-in silently bypasses XML and HTML <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output
+            values</a> without changing them.</p>
+            </div>
+
+
+          
+
+          
+
+          <p>The string as XML text. That is, the string with all:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code">&lt;</code> replaced with
+              <code class="inline-code">&amp;lt;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&gt;</code> replaced with
+              <code class="inline-code">&amp;gt;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&amp;</code> replaced with
+              <code class="inline-code">&amp;amp;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&quot;</code> replaced with
+              <code class="inline-code">&amp;quot;</code>
+            </li>
+
+            <li>
+              <code class="inline-code">&#39;</code> replaced with
+              <code class="inline-code">&amp;apos;</code>
+            </li>
+          </ul>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>When inserting the value of an attribute, always quote it,
+            or else it can be exploited by attackers! This is WRONG:
+            <code class="inline-code">&lt;input name=&quot;user&quot; value=${user?xml}/&gt;</code>.
+            These are good: <code class="inline-code">&lt;input name=&quot;user&quot;
+            value=&quot;${user?xml}&quot;/&gt;</code>, <code class="inline-code">&lt;input name=&quot;user&quot;
+            value=&#39;${user?xml}&#39;/&gt;</code>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_string_flags">Common flags</h2>
+
+
+          <p>Many string built-ins accept an optional string parameter, the
+          so called "flags". In this string, each letter
+          influences a certain aspect of the behavior of the built-in. For
+          example, letter <code class="inline-code">i</code> means that the built-in should
+          not differentiate the lower and upper-case variation of the same
+          letter. The order of the letters in the flags string is not
+          significant.</p>
+
+          <p>This is the complete list of letters (flags):</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">i</code>: Case insensitive: do not
+              differentiate the lower and upper-case variation of the same
+              letter.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">f</code>: First only. That is,
+              replace/find/etc. only the first occurrence of something.</p>
+            </li>
+
+            <li>
+              <p> <code class="inline-code">r</code>: The substring to find is a
+              <a href="gloss.html#gloss.regularExpression">regular
+              expression</a>. FreeMarker uses the variation of regular
+              expressions described at <a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html">http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html</a>
+              (note that the presence of some pattern features depends on the
+              Java version used).</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">m</code>: Multi-line mode for regular
+              expressions. In multi-line mode the expressions
+              <code class="inline-code">^</code> and <code class="inline-code">$</code> match just after
+              or just before, respectively, a line terminator or the end of
+              the string. By default these expressions only match at the
+              beginning and the end of the entire string. Note that
+              <code class="inline-code">^</code> and <code class="inline-code">$</code> doesn&#39;t match the
+              line-break character itself.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">s</code>: Enables dot-all mode for regular
+              expressions (same as Perl singe-line mode). In dot-all mode, the
+              expression <code class="inline-code">.</code> matches any character, including
+              a line terminator. By default this expression does not match
+              line terminators.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">c</code>: Permits whitespace and comments in
+              regular expressions.</p>
+            </li>
+          </ul>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign s = &#39;foo bAr baar&#39;&gt;
+${s?replace(&#39;ba&#39;, &#39;XY&#39;)}
+i: ${s?replace(&#39;ba&#39;, &#39;XY&#39;, &#39;i&#39;)}
+if: ${s?replace(&#39;ba&#39;, &#39;XY&#39;, &#39;if&#39;)}
+r: ${s?replace(&#39;ba*&#39;, &#39;XY&#39;, &#39;r&#39;)}
+ri: ${s?replace(&#39;ba*&#39;, &#39;XY&#39;, &#39;ri&#39;)}
+rif: ${s?replace(&#39;ba*&#39;, &#39;XY&#39;, &#39;rif&#39;)}</pre></div>
+
+          <p>This outputs this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">foo bAr XYar
+i: foo XYr XYar
+if: foo XYr baar
+r: foo XYAr XYr
+ri: foo XYr XYr
+rif: foo XYr baar</pre></div>
+
+          <p>This

<TRUNCATED>


[46/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/app_install.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/app_install.html b/builds/2.3.26-nightly/app_install.html
new file mode 100644
index 0000000..fba475f
--- /dev/null
+++ b/builds/2.3.26-nightly/app_install.html
@@ -0,0 +1,97 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-appendix">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Installing FreeMarker - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Installing FreeMarker">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/app_install.html">
+<link rel="canonical" href="http://freemarker.org/docs/app_install.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_install.html"><span itemprop="name">Installing FreeMarker</span></a></li></ul><div class="bookmarks" title=
 "Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Installing FreeMarker"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_0RC1.html"><span>Previous</span></a><a class="paging-arrow next" href="app_legal.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="app_install" itemprop="headline">Installing FreeMarker</h1>
+</div></div><p>No real installation is needed. Simply ensure that
+      <code class="inline-code">freemarker.jar</code> is somewhere where your Java
+      application&#39;s class-loader will find it. In web application this usually
+      means putting <code class="inline-code">freemarker.jar</code> into the
+      <code class="inline-code">WEB-INF/lib</code> directory of your web application. (If
+      you want to use FreeMarker with JSP Model-2 style (which also means that
+      you can use custom JSP taglibs in the templates), some extra steps
+      needed. For more information please see <a href="pgui_misc_servlet.html">the chapter about servlets</a>.)</p><p>FreeMarker has no required dependencies. But to use certain
+      <em>optional</em> FreeMarker features, the related party
+      libraries have to be available for the class-loader:</p><ul>
+        <li>
+          <p>Jaxen (recommended, <a href="http://jaxen.org/">download here</a>) or Apache Xalan
+          is needed for XML XPath support. Please use at least Jaxen
+          1.1-beta-8, not older versions! Apache Xalan classes are included in
+          a package-relocated form in Sun/Oracle J2SE 1.4-1.8 (maybe later
+          too), and FreeMarker will use those if it doesn&#39;t find Jaxen or
+          Xalan elsewhere. But as Oracle can change these internal packages
+          anytime, it&#39;s still recommended to use an external Jaxen or
+          Xalan.</p>
+        </li>
+
+        <li>
+          <p>Obviously, <code class="inline-code">javax.servlet</code> classes are needed
+          for <code class="inline-code">FreemarkerServlet</code>. Servlet version 2.2 or
+          later is needed.</p>
+        </li>
+
+        <li>
+          <p>For the custom JSP taglib support, you will need JSP 2.0 API
+          or later avilable. No JSP implementation is needed, just the API.
+          This is already present in pretty much every servlet container. For
+          more information please see <a href="pgui_misc_servlet.html">the
+          chapter about servlets</a>.</p>
+        </li>
+
+        <li>
+          <p>Jython 2.0 or later classes are needed for the Jython
+          wrapper.</p>
+        </li>
+
+        <li>
+          <p>Pre-1.0 JDOM is needed for the long deprecated
+          <code class="inline-code">freemarker.ext.jdom</code> package. (When it was
+          created, there was no JDOM 1.0 yet.)</p>
+        </li>
+      </ul><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_0RC1.html"><span>Previous</span></a><a class="paging-arrow next" href="app_legal.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/app_legal.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/app_legal.html b/builds/2.3.26-nightly/app_legal.html
new file mode 100644
index 0000000..575d8ed
--- /dev/null
+++ b/builds/2.3.26-nightly/app_legal.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-appendix">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Legal - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Legal">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/app_legal.html">
+<link rel="canonical" href="http://freemarker.org/docs/app_legal.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_legal.html"><span itemprop="name">Legal</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span 
 class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Legal"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="app_install.html"><span>Previous</span></a><a class="paging-arrow next" href="app_license.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="app_legal" itemprop="headline">Legal</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="app_license.html" data-menu-target="app_license">License</a></li><li><a class="page-menu-link" href="app_eccn.html" data-menu-target="app_eccn">Export Control</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="app_install.html"><span>Previous</span></a><a class="paging-arrow next" href="app_license.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/app_license.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/app_license.html b/builds/2.3.26-nightly/app_license.html
new file mode 100644
index 0000000..9c16de6
--- /dev/null
+++ b/builds/2.3.26-nightly/app_license.html
@@ -0,0 +1,275 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>License - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="License">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/app_license.html">
+<link rel="canonical" href="http://freemarker.org/docs/app_license.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_legal.html"><span itemprop="name">Legal</span></a></li><li class="step-3" itemprop="itemListElement" itemsc
 ope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_license.html"><span itemprop="name">License</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Legal","License"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="app_legal.html"><span>Previous</span></a><a class="paging-arrow next" href="app_eccn.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="app_license" itemprop="headline">License</h1>
+</div></div>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      &quot;License&quot; shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      &quot;Licensor&quot; shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      &quot;Legal Entity&quot; shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      &quot;control&quot; means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      &quot;You&quot; (or &quot;Your&quot;) shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      &quot;Source&quot; form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      &quot;Object&quot; form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      &quot;Work&quot; shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      &quot;Derivative Works&quot; shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      &quot;Contribution&quot; shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, &quot;submitted&quot;
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as &quot;Not a Contribution.&quot;
+
+      &quot;Contributor&quot; shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a &quot;NOTICE&quot; text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an &quot;AS IS&quot; BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets &quot;[]&quot;
+      replaced with your own identifying information. (Don&#39;t include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same &quot;printed page&quot; as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
+   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 &quot;AS IS&quot; 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.
+
+==============================================================================
+END LICENSE
+
+
+Historical notes
+----------------
+
+FreeMarker 1.x was released under the LGPL license. Later, by
+community consensus, we have switched over to a BSD-style license. As
+of FreeMarker 2.2pre1, the original author, Benjamin Geer, has
+relinquished the copyright in behalf of Visigoth Software Society.
+
+With FreeMarker 2.3.21 the license has changed to Apache License,
+Version 2.0, and the owner has changed from Visigoth Software Society
+to three of the FreeMarker 2.x developers, Attila Szegedi, Daniel
+Dekany, and Jonathan Revusky.
+
+After FreeMarker 2.3.24-pre01 (2015-09-02), the owner changes to the
+Apache Software Foundation.</pre></div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="app_legal.html"><span>Previous</span></a><a class="paging-arrow next" href="app_eccn.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/app_versions.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/app_versions.html b/builds/2.3.26-nightly/app_versions.html
new file mode 100644
index 0000000..68af610
--- /dev/null
+++ b/builds/2.3.26-nightly/app_versions.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-appendix">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Version history - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Version history">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/app_versions.html">
+<link rel="canonical" href="http://freemarker.org/docs/app_versions.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li></ul><div class="bookmarks" title="Book
 marks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="app_faq.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_26.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="app_versions" itemprop="headline">Version history</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="versions_2_3_26.html" data-menu-target="versions_2_3_26">2.3.26 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_25.html" data-menu-target="versions_2_3_25">2.3.25 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_24.html" data-menu-target="versions_2_3_24">2.3.24 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_23.html" data-menu-target="versions_2_3_23">2.3.23</a></li><li><a class="page-menu-link" href="versions_2_3_22.html" data-menu-target="versions_2_3_22">2.3.22</a></li><li><a class="page-menu-link" href="versions_2_3_21.html" data-menu-target="versions_2_3_21">2.3.21</a></li><li><a class="page-menu-link" href="versions_2_3_20.html" data-menu-target="versions_2_3_20">2.3.20</a></li><li><a class="page-menu-link" href="versions_2_3_19.html" data-menu-target="versions_2_3_19">2.3.19</a></li><li><a class="page-menu-link" href="versions_2_3_18.html" da
 ta-menu-target="versions_2_3_18">2.3.18</a></li><li><a class="page-menu-link" href="versions_2_3_17.html" data-menu-target="versions_2_3_17">2.3.17</a></li><li><a class="page-menu-link" href="versions_2_3_16.html" data-menu-target="versions_2_3_16">2.3.16</a></li><li><a class="page-menu-link" href="versions_2_3_15.html" data-menu-target="versions_2_3_15">2.3.15</a></li><li><a class="page-menu-link" href="versions_2_3_14.html" data-menu-target="versions_2_3_14">2.3.14</a></li><li><a class="page-menu-link" href="versions_2_3_13.html" data-menu-target="versions_2_3_13">2.3.13</a></li><li><a class="page-menu-link" href="versions_2_3_12.html" data-menu-target="versions_2_3_12">2.3.12</a></li><li><a class="page-menu-link" href="versions_2_3_11.html" data-menu-target="versions_2_3_11">2.3.11</a></li><li><a class="page-menu-link" href="versions_2_3_10.html" data-menu-target="versions_2_3_10">2.3.10</a></li><li><a class="page-menu-link" href="versions_2_3_9.html" data-menu-target="versions_2
 _3_9">2.3.9</a></li><li><a class="page-menu-link" href="versions_2_3_8.html" data-menu-target="versions_2_3_8">2.3.8</a></li><li><a class="page-menu-link" href="versions_2_3_7.html" data-menu-target="versions_2_3_7">2.3.7</a></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html" data-menu-target="versions_2_3_7rc1">2.3.7 RC1</a></li><li><a class="page-menu-link" href="versions_2_3_6.html" data-menu-target="versions_2_3_6">2.3.6</a></li><li><a class="page-menu-link" href="versions_2_3_5.html" data-menu-target="versions_2_3_5">2.3.5</a></li><li><a class="page-menu-link" href="versions_2_3_4.html" data-menu-target="versions_2_3_4">2.3.4</a></li><li><a class="page-menu-link" href="versions_2_3_3.html" data-menu-target="versions_2_3_3">2.3.3</a></li><li><a class="page-menu-link" href="versions_2_3_2.html" data-menu-target="versions_2_3_2">2.3.2</a></li><li><a class="page-menu-link" href="versions_2_3_1.html" data-menu-target="versions_2_3_1">2.3.1</a></li><li><a class="page-men
 u-link" href="versions_2_3.html" data-menu-target="versions_2_3">2.3</a></li><li><a class="page-menu-link" href="versions_2_2_8.html" data-menu-target="versions_2_2_8">2.2.8</a></li><li><a class="page-menu-link" href="versions_2_2_7.html" data-menu-target="versions_2_2_7">2.2.7</a></li><li><a class="page-menu-link" href="versions_2_2_6.html" data-menu-target="versions_2_2_6">2.2.6</a></li><li><a class="page-menu-link" href="versions_2_2_5.html" data-menu-target="versions_2_2_5">2.2.5</a></li><li><a class="page-menu-link" href="versions_2_2_4.html" data-menu-target="versions_2_2_4">2.2.4</a></li><li><a class="page-menu-link" href="versions_2_2_3.html" data-menu-target="versions_2_2_3">2.2.3</a></li><li><a class="page-menu-link" href="versions_2_2_2.html" data-menu-target="versions_2_2_2">2.2.2</a></li><li><a class="page-menu-link" href="versions_2_2_1.html" data-menu-target="versions_2_2_1">2.2.1</a></li><li><a class="page-menu-link" href="versions_2_2.html" data-menu-target="version
 s_2_2">2.2</a></li><li><a class="page-menu-link" href="versions_2_1_5.html" data-menu-target="versions_2_1_5">2.1.5</a></li><li><a class="page-menu-link" href="versions_2_1_4.html" data-menu-target="versions_2_1_4">2.1.4</a></li><li><a class="page-menu-link" href="versions_2_1_3.html" data-menu-target="versions_2_1_3">2.1.3</a></li><li><a class="page-menu-link" href="versions_2_1_2.html" data-menu-target="versions_2_1_2">2.1.2</a></li><li><a class="page-menu-link" href="versions_2_1_1.html" data-menu-target="versions_2_1_1">2.1.1</a></li><li><a class="page-menu-link" href="versions_2_1.html" data-menu-target="versions_2_1">2.1</a></li><li><a class="page-menu-link" href="versions_2_01.html" data-menu-target="versions_2_01">2.01</a></li><li><a class="page-menu-link" href="versions_2_0.html" data-menu-target="versions_2_0">2.0</a></li><li><a class="page-menu-link" href="versions_2_0RC3.html" data-menu-target="versions_2_0RC3">2.0 RC3</a></li><li><a class="page-menu-link" href="versions
 _2_0RC2.html" data-menu-target="versions_2_0RC2">2.0 RC2</a></li><li><a class="page-menu-link" href="versions_2_0RC1.html" data-menu-target="versions_2_0RC1">2.0 RC1</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="app_faq.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_26.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[19/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_setting.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_setting.html b/builds/2.3.26-nightly/ref_directive_setting.html
new file mode 100644
index 0000000..85971e2
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_setting.html
@@ -0,0 +1,478 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>setting - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="setting">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_setting.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_setting.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_setting.html"><span itemprop="name">setting</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","setting"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_outputformat.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_stop.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_setting" itemprop="headline">setting</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_124" data-menu-target="autoid_124">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_125" data-menu-target="autoid_125">Description</a></li></ul> </div><a name="ref.directive.setting"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_124">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#setting <em class="code-color">name</em>=<em class="code-color">value</em>&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">name</em></code>: name
+              of the setting. It is not expression!
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">value</em></code>: New
+              value of the setting. Expression
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_125">Description</h2>
+
+
+          <p>Sets a setting for the further part of processing. Settings
+          are values that influence the behavior of FreeMarker. The new value
+          will be present only in the template processing where it was set,
+          and does not touch the template itself. The initial value of
+          settings is set by the programmer <span class="marked-for-programmers">(see: <a href="pgui_config_settings.html">Programmer&#39;s Guide/The Configuration/Settings</a>)</span>.</p>
+
+          <p>The supported settings are:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">locale</code>: The locale (language)
+              of the output. It can influence the presentation format of
+              numbers, dates, etc. The value is a string which consist of a
+              language code (lowercase two-letter ISO-639 code) plus optional
+              county code (uppercase two-letter ISO-3166 code) separated from
+              the language code with underscore, and if we have specified the
+              country then an optional variant code (not standardized)
+              separated from the country with underscore. Examples of valid
+              values: <code class="inline-code">en</code>, <code class="inline-code">en_US</code>,
+              <code class="inline-code">en_US_MAC</code>. FreeMarker will try to use the
+              most specific available locale, so if you specify
+              <code class="inline-code">en_US_MAC</code> but that is not known, then it will
+              try <code class="inline-code">en_US</code>, and then <code class="inline-code">en</code>,
+              and then the default locale of the computer (which is may set by
+              the programmer).</p>
+            </li>
+
+            <li>
+              <p><a name="ref.setting.number_format"></a><code class="inline-code">number_format</code>: The number
+              format that is used to convert numbers to strings when no
+              explicit format is specified. Can be one of the
+              following:</p>
+
+              <ul>
+                <li>
+                  <p>Predefined values defined by the Java platform:
+                  <code class="inline-code">number</code> (the default),
+                  <code class="inline-code">currency</code>, or
+                  <code class="inline-code">percent</code></p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">computer</code>, which formats like <a href="ref_builtins_number.html#ref_builtin_c">the <code>c</code>
+                  built-in</a></p>
+                </li>
+
+                <li>
+                  <p>Format pattern written in <a href="http://java.sun.com/j2se/1.4/docs/api/java/text/DecimalFormat.html">Java
+                  decimal number format syntax</a>, for example
+                  <code class="inline-code">0.###</code>. FreeMarker <a href="ref_builtins_number.html#topic.extendedJavaDecimalFormat">extends this
+                  format</a> to allow specifying rounding mode, symbols
+                  used, etc.</p>
+                </li>
+
+                <li>
+                  <p>Values starting with <code class="inline-code">@</code> that&#39;s also
+                  followed by a letter, refer to a <a href="pgui_config_custom_formats.html">custom format</a>.
+                  For example, <code class="inline-code">&quot;@price&quot;</code> refers to the
+                  custom format registered with the <code class="inline-code">&quot;price&quot;</code>
+                  name. The custom format name is possibly followed by space
+                  or <code class="inline-code">_</code> and then format parameters, whose
+                  interpretation depends on the custom format. For backward
+                  compatibility, the initial <code class="inline-code">@</code> only has
+                  this new meaning if either <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">the
+                  <code>incompatible_improvements</code> setting</a>
+                  is at least 2.3.24, or there&#39;s any custom formats defined.
+                  When the initial <code class="inline-code">@</code> isn&#39;t followed by a
+                  letter (any UNICODE letter), it&#39;s never treated as a
+                  reference to a custom format.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p><code class="inline-code">boolean_format</code>: The
+              comma-separated pair of strings for representing true and false
+              values respectively that is used to convert booleans to strings
+              when no explicit format is specified (like in
+              <code class="inline-code">${<em class="code-color">booleanValue</em>}</code>).
+              Note that currently white space isn&#39;t removed from this string,
+              so don&#39;t put space after the comma. Default value is
+              <code class="inline-code">&quot;true,false&quot;</code>, but FreeMarker will deny using
+              that particular value for
+              <code class="inline-code">${<em class="code-color">booleanValue</em>}</code>,
+              and requires using
+              <code class="inline-code">${<em class="code-color">booleanValue</em>?c}</code>
+              instead (this works since 2.3.21). For any other value, like
+              <code class="inline-code">&quot;Y,N&quot;</code>,
+              <code class="inline-code">${<em class="code-color">booleanValue</em>}</code>
+              will work. See also:<a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean"><code>string</code>
+              built-in</a>.</p>
+            </li>
+
+            <li>
+              <p><a name="topic.dateTimeFormatSettings"></a><a name="topic_date_format_settings"></a> <code class="inline-code">date_format</code>,
+              <code class="inline-code">time_format</code>,
+              <code class="inline-code">datetime_format</code>: The format used to convert
+              date/time/date-time values (Java
+              <code class="inline-code">java.util.Date</code>-s and its subclasses) to
+              strings when no explicit format is specified via the <a href="ref_builtins_date.html#ref_builtin_string_for_date"><code>string</code>
+              built-in</a> (or otherwise), as in the case of
+              <code class="inline-code">${someDate}</code>. The
+              <code class="inline-code">date_format</code> setting only effects the
+              formatting of date values that store no time part,
+              <code class="inline-code">time_format</code> only effects the formatting of
+              times that store no date part, and
+              <code class="inline-code">datetime_format</code> only effects formatting of
+              date-time values. These settings also effects what format do
+              <a href="ref_builtins_string.html#ref_builtin_string_date"><code>?time</code>,
+              <code>?date</code>, and
+              <code>?datetime</code></a> expect when it&#39;s applied on
+              a string value.</p>
+
+              <p>The possible setting values are (the quotation marks
+              aren&#39;t part of the value itself):</p>
+
+              <ul>
+                <li>
+                  <p>Patterns <a href="http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html">accepted
+                  by Java&#39;s <code>SimpleDateFormat</code></a>, for
+                  example <code class="inline-code">&quot;dd.MM.yyyy HH:mm:ss&quot;</code> (where
+                  <code class="inline-code">&quot;HH&quot;</code> means 0-23 hours) or
+                  <code class="inline-code">&quot;MM/dd/yyyy hh:mm:ss a&quot;</code> (where
+                  <code class="inline-code">&quot;a&quot;</code> prints AM or PM, if the current
+                  language is English).</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">&quot;xs&quot;</code> for XML Schema format, or
+                  <code class="inline-code">&quot;iso&quot;</code> for ISO 8601:2004 format. These
+                  formats allow various additional options, separated with
+                  space, like in <code class="inline-code">&quot;iso m nz&quot;</code> (or with
+                  <code class="inline-code">_</code>, like in <code class="inline-code">&quot;iso_m_nz&quot;</code>;
+                  this is useful in a case like
+                  <code class="inline-code">lastModified?string.iso_m_nz</code>). The
+                  options and their meanings are:</p>
+
+                  <ul>
+                    <li>
+                      <p>Accuracy options:</p>
+
+                      <ul>
+                        <li>
+                          <code class="inline-code">ms</code>: Milliseconds, always
+                          shown with all 3 digits, even if it&#39;s all 0-s.
+                          Example: <code class="inline-code">13:45:05.800</code>
+                        </li>
+
+                        <li>
+                          <code class="inline-code">s</code>: Seconds (fraction
+                          seconds are dropped even if non-0), like
+                          <code class="inline-code">13:45:05</code>
+                        </li>
+
+                        <li>
+                          <code class="inline-code">m</code>: Minutes, like
+                          <code class="inline-code">13:45</code>. This isn&#39;t allowed for
+                          <code class="inline-code">&quot;xs&quot;</code>.
+                        </li>
+
+                        <li>
+                          <code class="inline-code">h</code>: Hours, like
+                          <code class="inline-code">13</code>. This isn&#39;t allowed for
+                          <code class="inline-code">&quot;xs&quot;</code>.
+                        </li>
+
+                        <li>
+                          Neither: Up to millisecond accuracy, but
+                          trailing millisecond 0-s are removed, also the whole
+                          milliseconds part if it would be 0 otherwise.
+                          Example: <code class="inline-code">13:45:05.8</code>
+                        </li>
+                      </ul>
+                    </li>
+
+                    <li>
+                      <p>Time zone offset visibility options:</p>
+
+                      <ul>
+                        <li>
+                          <code class="inline-code">fz</code>: "Force
+                          Zone", always show time zone offset (even for
+                          for <code class="inline-code">java.sql.Date</code> and
+                          <code class="inline-code">java.sql.Time</code> values). But,
+                          because ISO 8601 doesn&#39;t allow for dates (means date
+                          without time of the day) to show the zone offset,
+                          this option will have no effect in the case of
+                          <code class="inline-code">&quot;iso&quot;</code> with dates.
+                        </li>
+
+                        <li>
+                          <code class="inline-code">nz</code>: "No Zone",
+                          never show time zone offset
+                        </li>
+
+                        <li>
+                          Neither: Always show time zone offset, except
+                          for <code class="inline-code">java.sql.Date</code> and
+                          <code class="inline-code">java.sql.Time</code>, and for
+                          <code class="inline-code">&quot;iso&quot;</code> date values.
+                        </li>
+                      </ul>
+                    </li>
+
+                    <li>
+                      <p>Time zone options:</p>
+
+                      <ul>
+                        <li>
+                          <code class="inline-code">u</code>: Use UTC instead of what
+                          the <code class="inline-code">time_zone</code> setting suggests.
+                          However, <code class="inline-code">java.sql.Date</code> and
+                          <code class="inline-code">java.sql.Time</code> aren&#39;t affected by
+                          this (see
+                          <code class="inline-code">sql_date_and_time_time_zone</code> to
+                          understand why)
+                        </li>
+
+                        <li>
+                          <code class="inline-code">fu</code>: "Force
+                          UTC", that is, use UTC instead of what the
+                          <code class="inline-code">time_zone</code> or the
+                          <code class="inline-code">sql_date_and_time_time_zone</code>
+                          setting suggests. This also effects
+                          <code class="inline-code">java.sql.Date</code> and
+                          <code class="inline-code">java.sql.Time</code> values
+                        </li>
+
+                        <li>
+                          Neither: Use the time zone suggested by the
+                          <code class="inline-code">time_zone</code> or the
+                          <code class="inline-code">sql_date_and_time_time_zone</code>
+                          configuration setting
+                        </li>
+                      </ul>
+                    </li>
+                  </ul>
+
+                  <p>Options from the same category are mutually exclusive,
+                  like using <code class="inline-code">m</code> and <code class="inline-code">s</code>
+                  together is an error.</p>
+
+                  <p>The options can be specified in any order.</p>
+
+                  <p>The accuracy and time zone offset visibility options
+                  don&#39;t influence parsing, only formatting. For example, even
+                  if you use <code class="inline-code">&quot;iso m nz&quot;</code>,
+                  <code class="inline-code">&quot;2012-01-01T15:30:05.125+01&quot;</code> will be
+                  parsed successfully and with milliseconds accuracy. The time
+                  zone options (like <code class="inline-code">&quot;u&quot;</code>) influence what
+                  time zone is chosen only when parsing a string that doesn&#39;t
+                  contain time zone offset.</p>
+
+                  <p>Parsing with <code class="inline-code">&quot;iso&quot;</code> understands both
+                  "extend format" and "basic
+                  format", like <code class="inline-code">20141225T235018</code>. It
+                  doesn&#39;t, however, support the parsing of all kind of ISO
+                  8601 strings: if there&#39;s a date part, it must use year,
+                  month and day of the month values (not week of the year),
+                  and the day can&#39;t be omitted.</p>
+
+                  <p>The output of <code class="inline-code">&quot;iso&quot;</code> is deliberately
+                  so that it&#39;s also a good representation of the value with
+                  XML Schema format, except for 0 and negative years, where
+                  it&#39;s impossible. Also note that the time zone offset is
+                  omitted for date values in the <code class="inline-code">&quot;iso&quot;</code>
+                  format, while it&#39;s preserved for the <code class="inline-code">&quot;xs&quot;</code>
+                  format.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">&quot;short&quot;</code>,
+                  <code class="inline-code">&quot;medium&quot;</code>, <code class="inline-code">&quot;long&quot;</code>, or
+                  <code class="inline-code">&quot;full&quot;</code>, which has locale-dependent
+                  meaning defined by the Java platform (see in the <a href="http://docs.oracle.com/javase/7/docs/api/java/text/DateFormat.html">documentation
+                  of <code>java.text.DateFormat</code></a>). For
+                  date-time values, you can specify the length of the date and
+                  time part independently, be separating them with
+                  <code class="inline-code">_</code>, like
+                  <code class="inline-code">&quot;short_medium&quot;</code>.
+                  (<code class="inline-code">&quot;medium&quot;</code> means
+                  <code class="inline-code">&quot;medium_medium&quot;</code> for date-time
+                  values.)</p>
+                </li>
+
+                <li>
+                  <p>Values starting with <code class="inline-code">@</code> that&#39;s also
+                  followed by a letter, refer to a <a href="pgui_config_custom_formats.html">custom format</a>,
+                  like <code class="inline-code">&quot;@worklog&quot;</code> refers to the custom
+                  format registered with the <code class="inline-code">&quot;worklog&quot;</code>
+                  name. The format name is possibly followed by space or
+                  <code class="inline-code">_</code> and then format parameters, whose
+                  interpretation depends on the custom format. For backward
+                  compatibility, the initial <code class="inline-code">@</code> only has
+                  this new meaning if either <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">the
+                  <code>incompatible_improvements</code> setting</a>
+                  is at least 2.3.24, or there&#39;s any custom formats defined.
+                  When the initial <code class="inline-code">@</code> isn&#39;t followed by a
+                  letter (any UNICODE letter), it&#39;s never treated as a
+                  reference to a custom format.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p><code class="inline-code">time_zone</code>: The name of the time
+              zone used to format times for display. By default, the default
+              time zone of the JVM is used. Can be any value that is accepted
+              by <a href="http://docs.oracle.com/javase/7/docs/api/java/util/TimeZone.html">Java
+              TimeZone API</a>, or <code class="inline-code">&quot;JVM default&quot;</code> (since
+              FreeMarker 2.3.21) to use the JVM default time zone. Examples:
+              <code class="inline-code">&quot;GMT&quot;</code>, <code class="inline-code">&quot;GMT+2&quot;</code>,
+              <code class="inline-code">&quot;GMT-1:30&quot;</code>, <code class="inline-code">&quot;CET&quot;</code>,
+              <code class="inline-code">&quot;PST&quot;</code>,
+              <code class="inline-code">&quot;America/Los_Angeles&quot;</code>.</p>
+
+                <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+                <p>If you change this setting from its default value, you
+                should certainly also set
+                <code class="inline-code">sql_date_and_time_time_zone</code> to &quot;JVM
+                default&quot;. <span class="marked-for-programmers">See more in the Java
+                API documentation of
+                <code class="inline-code">Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code>.</span></p>
+                </div>
+
+            </li>
+
+            <li>
+              <p><code class="inline-code">sql_date_and_time_time_zone</code>
+              (since FreeMarker 2.3.21): This handles a highly technical
+              issue, so it should usually be set from the Java code by the
+              programmers. <span class="marked-for-programmers">For programmers: If
+              this is set to non-<code class="inline-code">null</code>, for date-only and
+              time-only values coming from SQL database (more precisely, for
+              <code class="inline-code">java.sql.Date</code> and
+              <code class="inline-code">java.sql.Time</code> objects) FreeMarker will use
+              this time zone instead of the time zone specified by the
+              <code class="inline-code">time_zone</code> FreeMarker setting. See more in the
+              Java API documentation of
+              <code class="inline-code">Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code>.</span></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">url_escaping_charset</code>: The
+              charset used for URL escaping (e.g. for
+              <code class="inline-code">${foo?url}</code>) to calculate the escaped
+              (<code class="inline-code">%<em class="code-color">XX</em></code>) parts.
+              Usually the framework that encloses FreeMarker should set it, so
+              you hardly ever should set this setting in templates. <span class="marked-for-programmers">(Programmers can read more about this
+              <a href="pgui_misc_charset.html">here...</a>)</span></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">output_encoding</code>: Tells
+              FreeMarker what the charset of the output is. As FreeMarker
+              outputs a stream of UNICODE characters (<span class="marked-for-programmers">it writes into a
+              <code class="inline-code">java.io.Writer</code></span>), it&#39;s not affected
+              by the output encoding, but some macros/functions and built-ins
+              may want to used this information.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">classic_compatible</code>: This is for
+              experts. Its value should be a boolean. See the documentation of
+              <code class="inline-code">freemarker.template.Configurable</code> for more
+              information.</p>
+            </li>
+          </ul>
+
+          <p>Example: Assume that the initial locale of template is
+          <code class="inline-code">de_DE</code> (German). Then this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${1.2}
+&lt;#setting locale=&quot;en_US&quot;&gt;
+${1.2}</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">1,2
+1.2</pre></div>
+
+          <p>because German people use the comma as their decimal
+          separator, while US people use the dot.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_outputformat.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_stop.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_stop.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_stop.html b/builds/2.3.26-nightly/ref_directive_stop.html
new file mode 100644
index 0000000..6898671
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_stop.html
@@ -0,0 +1,96 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>stop - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="stop">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_stop.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_stop.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_stop.html"><span itemprop="name">stop</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","stop"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_setting.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_switch.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_stop" itemprop="headline">stop</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_126" data-menu-target="autoid_126">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_127" data-menu-target="autoid_127">Description</a></li></ul> </div><a name="ref.directive.stop"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_126">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#stop&gt;</code>
+or
+<code class="inline-code">&lt;#stop <em class="code-color">reason</em>&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">reason</em></code>:
+              Informative message that describes the reason of the terminating
+              error. Expression, must evaluate to a string.
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_127">Description</h2>
+
+
+          <p>Aborts template processing with the given (optional) error
+          message. <em>This must not be used for ending template
+          processing in normal situations!</em> The caller of the
+          FreeMarker template will see this as a failed template rendering,
+          not as a normally finished one.</p>
+
+          <p><span class="marked-for-programmers">This directive throws a
+          <code class="inline-code">StopException</code>, and the
+          <code class="inline-code">StopException</code> will hold the value of the reason
+          parameter.</span></p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_setting.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_switch.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_switch.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_switch.html b/builds/2.3.26-nightly/ref_directive_switch.html
new file mode 100644
index 0000000..9f4f1b3
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_switch.html
@@ -0,0 +1,162 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>switch, case, default, break - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="switch, case, default, break">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_switch.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_switch.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_switch.html"><span itemprop="name">switch, case, default, break</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","switch, case, default, break"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_stop.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_t.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_switch" itemprop="headline">switch, case, default, break</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_128" data-menu-target="autoid_128">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_129" data-menu-target="autoid_129">Description</a></li></ul> </div><a name="ref.directive.switch"></a><a name="ref.directive.case"></a><a name="ref.directive.default"></a><a name="ref.directive.switch.break"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_128">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#switch <em class="code-color">value</em>&gt;
+  &lt;#case <em class="code-color">refValue1</em>&gt;
+    <em class="code-color">...</em>
+    &lt;#break&gt;
+  &lt;#case <em class="code-color">refValue2</em>&gt;
+    <em class="code-color">...</em>
+    &lt;#break&gt;
+  <em class="code-color">...</em>
+  &lt;#case <em class="code-color">refValueN</em>&gt;
+    <em class="code-color">...</em>
+    &lt;#break&gt;
+  &lt;#default&gt;
+    <em class="code-color">...</em>
+&lt;/#switch&gt;
+</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">value</em></code>,
+              <code class="inline-code"><em class="code-color">refValue1</em></code>, etc.:
+              Expressions evaluates to scalars of the same type.
+            </li>
+          </ul>
+
+          <p>The <code class="inline-code">break</code>-s and <code class="inline-code">default</code>
+          are optional.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_129">Description</h2>
+
+
+          <p>The usage of this directive is not recommended, as it&#39;s
+          error-prone because of the fall-through behavior. Use <a href="ref_directive_if.html#ref.directive.elseif"><code>elseif</code></a>-s
+          instead unless you want to exploit the fall-through behavior.</p>
+
+          <p>Switch is used to choose a fragment of template depending on
+          the value of an expression:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#switch animal.size&gt;
+  &lt;#case &quot;small&quot;&gt;
+     This will be processed if it is small
+     &lt;#break&gt;
+  &lt;#case &quot;medium&quot;&gt;
+     This will be processed if it is medium
+     &lt;#break&gt;
+  &lt;#case &quot;large&quot;&gt;
+     This will be processed if it is large
+     &lt;#break&gt;
+  &lt;#default&gt;
+     This will be processed if it is neither
+&lt;/#switch&gt;</pre></div>
+
+          <p>Inside the <code class="inline-code">switch</code> must be one or more
+          <code class="inline-code">&lt;#case <em class="code-color">value</em>&gt;</code>,
+          and after all such <code class="inline-code">case</code> tags optionally one
+          <code class="inline-code">&lt;#default&gt;</code>. When FM reaches the
+          <code class="inline-code">switch</code> directive, it chooses a
+          <code class="inline-code">case</code> directive where
+          <code class="inline-code"><em class="code-color">refValue</em></code> equals with
+          <code class="inline-code"><em class="code-color">value</em></code> and continues
+          the processing of the template there. If there is no
+          <code class="inline-code">case</code> directive with appropriate value then it
+          continues processing at the <code class="inline-code">default</code> directive if
+          that exists, otherwise it continues the processing after the end-tag
+          of <code class="inline-code">switch</code>. And now comes the confusing thing:
+          when it has chosen a <code class="inline-code">case</code> directive, it will
+          continue the processing there, and will go ahead until it reaches a
+          <code class="inline-code">break</code> directive. That is, it will not
+          automatically leave the <code class="inline-code">switch</code> directive when it
+          reaches another <code class="inline-code">case</code> directive or the
+          <code class="inline-code">&lt;#default&gt;</code> tag. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#switch x&gt;
+  &lt;#case 1&gt;
+    1
+  &lt;#case 2&gt;
+    2
+  &lt;#default&gt;
+    d
+&lt;/#switch&gt;</pre></div>
+
+          <p>If <code class="inline-code">x</code> is 1, then it will print 1 2 d; if
+          <code class="inline-code">x</code> is 2 then it will print 2 d; if
+          <code class="inline-code">x</code> is 3 then it will print d. This is the
+          mentioned fall-through behavior. The <code class="inline-code">break</code> tag
+          instructs FM to immediately skip past the <code class="inline-code">switch</code>
+          end-tag.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_stop.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_t.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_t.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_t.html b/builds/2.3.26-nightly/ref_directive_t.html
new file mode 100644
index 0000000..4ffd393
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_t.html
@@ -0,0 +1,149 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>t, lt, rt - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="t, lt, rt">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_t.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_t.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_t.html"><span itemprop="name">t, lt, rt</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","t, lt, rt"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_switch.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_userDefined.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_t" itemprop="headline">t, lt, rt</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_130" data-menu-target="autoid_130">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_131" data-menu-target="autoid_131">Description</a></li></ul> </div><a name="ref.directive.t"></a><a name="ref.directive.lt"></a><a name="ref.directive.rt"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_130">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#t&gt;</code>
+
+<code class="inline-code">&lt;#lt&gt;</code>
+
+<code class="inline-code">&lt;#rt&gt;</code></pre>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_131">Description</h2>
+
+
+          <p>These directives, instruct FreeMarker to ignore certain
+          white-space in the line of the tag:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">t</code> (for trim): Ignore all leading and
+              trailing white-space in this line.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">lt</code> (for left trim): Ignore all leading
+              white-space in this line.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">rt</code> (for right trim): Ignore all
+              trailing white-space in this line.</p>
+            </li>
+          </ul>
+
+          <p>where:</p>
+
+          <ul>
+            <li>
+              <p>"leading white-space" means all space and tab
+              (and other character that are white-space according to <a href="gloss.html#gloss.unicode">UNICODE</a>, except <a href="gloss.html#gloss.lineBreak">line breaks</a>) before the first
+              non-white-space character of the line.</p>
+            </li>
+
+            <li>
+              <p>"trailing white-space" means all space and
+              tab (and other character that are white-space according to <a href="gloss.html#gloss.unicode">UNICODE</a>, except line breaks)
+              after the last non-white-space character of the line,
+              <em>and</em> the line break at the end of the
+              line.</p>
+            </li>
+          </ul>
+
+          <p>It is important to understand that these directives examine
+          the template itself, and <em>not</em> the output what
+          the template generates when you merge it with the data-model.
+          <span class="marked-for-programmers">(That is, the white-space removal
+          happens on parse time.)</span></p>
+
+          <p>For example this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">--
+  1 &lt;#t&gt;
+  2&lt;#t&gt;
+  3&lt;#lt&gt;
+  4
+  5&lt;#rt&gt;
+  6
+--</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">--
+1 23
+  4
+  5  6
+--</pre></div>
+
+          <p>The placement of these directives inside the line has no
+          importance. That is, the effect will be the same regardless if you
+          put the directive at the beginning of the line, or at the end of the
+          line, or in the middle of the line.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_switch.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_userDefined.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_userDefined.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_userDefined.html b/builds/2.3.26-nightly/ref_directive_userDefined.html
new file mode 100644
index 0000000..0646397
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_userDefined.html
@@ -0,0 +1,297 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>User-defined directive (&lt;@...&gt;) - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="User-defined directive (&lt;@...&gt;)">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_userDefined.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_userDefined.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_userDefined.html"><span itemprop="name">User-defined directive (&lt;@...&gt;)</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","User-defined directive (<@...>)"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_t.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_visit.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_userDefined" itemprop="headline">User-defined directive (&lt;@...&gt;)</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_132" data-menu-target="autoid_132">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_133" data-menu-target="autoid_133">Description</a><ul><li><a class="page-menu-link" href="#ref_directive_userDefined_entTag" data-menu-target="ref_directive_userDefined_entTag">End-tag</a></li><li><a class="page-menu-link" href="#ref_directive_userDefined_loopVar" data-menu-target="ref_directive_userDefined_loopVar">Loop variables</a></li><li><a class="page-menu-link" href="#ref_directive_userDefined_positionalParam" data-menu-target="ref_directive_userDefined_positionalParam">Positional parameter passing</a></li></ul></li></ul> </div><a name="ref.directive.userDefined"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_132">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;@<em class="code-color">user_def_dir_exp</em> <em class="code-color">param1</em>=<em class="code-color">val1</em> <em class="code-color">param2</em>=<em class="code-color">val2</em> <em class="code-color">...</em> <em class="code-color">paramN</em>=<em class="code-color">valN</em>/&gt;</code>
+(Note the XML-style <code class="inline-code">/</code> before the <code class="inline-code">&gt;</code>)
+or if you need loop variables (<a href="#ref_directive_userDefined_loopVar">more details...</a>)
+<code class="inline-code">&lt;@<em class="code-color">user_def_dir_exp</em> <em class="code-color">param1</em>=<em class="code-color">val1</em> <em class="code-color">param2</em>=<em class="code-color">val2</em> <em class="code-color">...</em> <em class="code-color">paramN</em>=<em class="code-color">valN</em> ; <em class="code-color">lv1</em>, <em class="code-color">lv2</em>, <em class="code-color">...</em>, <em class="code-color">lvN</em>/&gt;</code>
+
+Or the same as the above two but with end-tag (<a href="#ref_directive_userDefined_entTag">more details...</a>):
+
+<code class="inline-code">&lt;@<em class="code-color">user_def_dir_exp</em> <em class="code-color">...</em>&gt;
+  ...
+&lt;/@<em class="code-color">user_def_dir_exp</em>&gt;</code>
+or
+<code class="inline-code">&lt;@<em class="code-color">user_def_dir_exp</em> <em class="code-color">...</em>&gt;
+  ...
+&lt;/@&gt;</code>
+
+Or all above but with positional parameter passing (<a href="#ref_directive_userDefined_positionalParam">more details...</a>):
+
+<code class="inline-code">&lt;@<em class="code-color">user</em> <em class="code-color">val1</em>, <em class="code-color">val2</em>, <em class="code-color">...</em>, <em class="code-color">valN</em>/&gt;</code>
+...etc.
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">user_def_dir_exp</em></code>:
+              Expression evaluates to an user-defined directive (for example a
+              macro), that will be called.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">param1</em></code>,
+              <code class="inline-code"><em class="code-color">param2</em></code>, ...etc.:
+              The name of parameters. They are <em>not</em>
+              expressions.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">val1</em></code>,
+              <code class="inline-code"><em class="code-color">val2</em></code>, ...etc.: The
+              value of parameters. They <em>are</em>
+              expressions.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">lv1</em></code>,
+              <code class="inline-code"><em class="code-color">lv2</em></code>, ...etc.: The
+              name of <a href="dgui_misc_var.html">loop variables</a>.
+              They are <em>not</em> expressions.
+            </li>
+          </ul>
+
+          <p>The number of parameters can be 0 (i.e. no parameters).</p>
+
+          <p>The order of parameters is not significant (unless you use
+          positional parameter passing). The name of parameters must be
+          unique. Lower- and uppercase letters are considered as different
+          letters in parameter names (i.e. <code class="inline-code">Color</code> and
+          <code class="inline-code">color</code> is not the same).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_133">Description</h2>
+
+
+          <p>This will call an user-defined directive, for example a macro.
+          The meaning of parameters, and the set of supported and required
+          parameters depend on the concrete user-defined directive.</p>
+
+          <p>You may read <a href="dgui_misc_userdefdir.html">the tutorial
+          about user-defined directives</a>.</p>
+
+          <p>Example 1: Calls the directive that is stored in the variable
+          <code class="inline-code">html_escape</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@html_escape&gt;
+  a &lt; b
+  Romeo &amp; Juliet
+&lt;/@html_escape&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  a &amp;lt; b
+  Romeo &amp;amp; Juliet</pre></div>
+
+          <p>Example 2: Calls a macro with parameters:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@list items=[&quot;mouse&quot;, &quot;elephant&quot;, &quot;python&quot;] title=&quot;Animals&quot;/&gt;
+<em>...</em>
+&lt;#macro list title items&gt;
+  &lt;p&gt;${title?cap_first}:
+  &lt;ul&gt;
+    &lt;#list items as x&gt;
+      &lt;li&gt;${x?cap_first}
+    &lt;/#list&gt;
+  &lt;/ul&gt;
+&lt;/#macro&gt;</pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;Animals:
+  &lt;ul&gt;
+      &lt;li&gt;Mouse
+      &lt;li&gt;Elephant
+      &lt;li&gt;Python
+  &lt;/ul&gt;
+
+<em>...</em></pre></div>
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="ref_directive_userDefined_entTag">End-tag</h3>
+
+
+            <p>You can omit the
+            <code class="inline-code"><em class="code-color">user_def_dir_exp</em></code> in
+            the <a href="gloss.html#gloss.endTag">end-tag</a>. That is, you can
+            always write <code class="inline-code">&lt;/@&gt;</code> instead of
+            <code class="inline-code">&lt;/@<em class="code-color">anything</em>&gt;</code>.
+            This rule is mostly useful when the
+            <code class="inline-code"><em class="code-color">user_def_dir_exp</em></code>
+            expression is too complex, because you don&#39;t have to repeat the
+            expression in the end-tag. Furthermore, if the expression contains
+            other than simple variable names and dots, you are not allowed to
+            repeat the expression. For example,
+            <code class="inline-code">&lt;@a_hash[a_method()]&gt;<em class="code-color">...</em>&lt;/@a_hash[a_method()]&gt;</code>
+            is an error; you must write
+            <code class="inline-code">&lt;@a_hash[a_method()]&gt;<em class="code-color">...</em>&lt;/@&gt;</code>.
+            But
+            <code class="inline-code">&lt;@a_hash.foo&gt;<em class="code-color">...</em>&lt;/@a_hash.foo&gt;</code>
+            is OK.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="ref_directive_userDefined_loopVar">Loop variables</h3>
+
+
+            <p>Some user-defined directives create loop variables
+            (similarly to <code class="inline-code">list</code> directive). As with the
+            predefined directives (as <code class="inline-code">list</code>) the
+            <em>name</em> of loop variables is given when you call
+            the directive (as <code class="inline-code">foo</code> in <code class="inline-code">&lt;#list
+            foos as
+            foo&gt;<em class="code-color">...</em>&lt;/#list&gt;</code>),
+            while the <em>value</em> of the variable is set by the
+            directive itself. In the case of user-defined directives the
+            syntax is that the name of loop variables is given after a
+            semicolon. For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@myRepeatMacro count=4 ; <strong>x, last</strong>&gt;
+  ${<strong>x</strong>}. Something... &lt;#if <strong>last</strong>&gt; This was the last!&lt;/#if&gt;
+&lt;/@myRepeatMacro&gt;</pre></div>
+
+            <p>Note that the number of loop variable created by the
+            user-defined directive and the number of loop variables specified
+            after the semicolon need not match. Say, if you are not interested
+            if the repetition is the last, you can simply write:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@myRepeatMacro count=4 ; <strong>x</strong>&gt;
+  ${<strong>x</strong>}. Something...
+&lt;/@myRepeatMacro&gt;</pre></div>
+
+            <p>or you can even:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@myRepeatMacro count=4&gt;
+  Something...
+&lt;/@myRepeatMacro&gt;</pre></div>
+
+            <p>Furthermore, it does not cause error if you specify more
+            loop variables after the semicolon than the user-defined directive
+            creates, just the last few loop variables will not be created
+            (i.e. those will be undefined in the nested content). Trying to
+            use the undefined loop variables, however, will cause error
+            (unless you use built-ins like <code class="inline-code">?default</code>), since
+            you try to access a non-existing variable.</p>
+
+            <p>See the <a href="dgui_misc_userdefdir.html">the tutorial
+            about user-defined directives</a> for more explanation.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="ref_directive_userDefined_positionalParam">Positional parameter passing</h3>
+
+
+            
+
+            <p>Positional parameter passing (as <code class="inline-code">&lt;@heading
+            &quot;Preface&quot;, 1/&gt;</code>) is a shorthand form of normal named
+            parameter passing (as <code class="inline-code">&lt;@heading title=&quot;Preface&quot;
+            level=1/&gt;</code>), where you omit the parameter name. This
+            shorthand form should be used if a user-defined directive has only
+            one parameter, or if it is easy to remember the order of
+            parameters for a frequently used user-defined directive. To use
+            this form, you have to know the order in which the named
+            parameters are declared (trivial if the directive has only one
+            parameter). Say, if <code class="inline-code">heading</code> was created as
+            <code class="inline-code">&lt;#macro heading title
+            level&gt;<em class="code-color">...</em></code>, then
+            <code class="inline-code">&lt;@heading &quot;Preface&quot;, 1/&gt;</code> is equivalent
+            with <code class="inline-code">&lt;@heading title=&quot;Preface&quot; level=1/&gt;</code>
+            (or <code class="inline-code">&lt;@heading level=1 title=&quot;Preface&quot;/&gt;</code>;
+            if you use parameter names, the order is not important). Note that
+            positional parameter passing is currently only supported for
+            macros.</p>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_t.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_visit.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>



[36/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui.html b/builds/2.3.26-nightly/pgui.html
new file mode 100644
index 0000000..4213288
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-part">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Programmer&#39;s Guide - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Programmer&#39;s Guide">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_ex
 p.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_misc_alternativesyntax.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-part" id="pgui" itemprop="headline">Programmer&#39;s Guide</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="pgui_quickstart.html" data-menu-target="pgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="pgui_quickstart_createconfiguration.html" data-menu-target="pgui_quickstart_createconfiguration">Create a configuration instance</a></li><li><a class="page-menu-link" href="pgui_quickstart_createdatamodel.html" data-menu-target="pgui_quickstart_createdatamodel">Create a data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_gettemplate.html" data-menu-target="pgui_quickstart_gettemplate">Get the template</a></li><li><a class="page-menu-link" href="pgui_quickstart_merge.html" data-menu-target="pgui_quickstart_merge">Merging the template with the data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_all.html" data-menu-target="pgui_quickstart_all">Putting all together</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel.html" data-menu-target="pgui_datamodel">The Data Model</a><ul><l
 i><a class="page-menu-link" href="pgui_datamodel_basics.html" data-menu-target="pgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_datamodel_scalar.html" data-menu-target="pgui_datamodel_scalar">Scalars</a></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html" data-menu-target="pgui_datamodel_parent">Containers</a></li><li><a class="page-menu-link" href="pgui_datamodel_method.html" data-menu-target="pgui_datamodel_method">Methods</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html" data-menu-target="pgui_datamodel_directive">Directives</a></li><li><a class="page-menu-link" href="pgui_datamodel_node.html" data-menu-target="pgui_datamodel_node">Node variables</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html" data-menu-target="pgui_datamodel_objectWrapper">Object wrappers</a></li></ul></li><li><a class="page-menu-link" href="pgui_config.html" data-menu-target="pgui_config">The Configuration</a>
 <ul><li><a class="page-menu-link" href="pgui_config_basics.html" data-menu-target="pgui_config_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_config_sharedvariables.html" data-menu-target="pgui_config_sharedvariables">Shared variables</a></li><li><a class="page-menu-link" href="pgui_config_settings.html" data-menu-target="pgui_config_settings">Settings</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html" data-menu-target="pgui_config_templateloading">Template loading</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html" data-menu-target="pgui_config_errorhandling">Error handling</a></li><li><a class="page-menu-link" href="pgui_config_templateconfigurations.html" data-menu-target="pgui_config_templateconfigurations">Template configurations</a></li><li><a class="page-menu-link" href="pgui_config_outputformatsautoesc.html" data-menu-target="pgui_config_outputformatsautoesc">Associating output formats with templates</a></li
 ><li><a class="page-menu-link" href="pgui_config_custom_formats.html" data-menu-target="pgui_config_custom_formats">Custom number and date/time formats</a></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html" data-menu-target="pgui_config_incompatible_improvements">The &quot;incompatible improvements&quot; setting</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc.html" data-menu-target="pgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="pgui_misc_var.html" data-menu-target="pgui_misc_var">Variables, scopes</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html" data-menu-target="pgui_misc_charset">Charset issues</a></li><li><a class="page-menu-link" href="pgui_misc_multithreading.html" data-menu-target="pgui_misc_multithreading">Multithreading</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html" data-menu-target="pgui_misc_beanwrapper">Bean wrapper</a></li><li><a class="page-menu-link" href=
 "pgui_misc_logging.html" data-menu-target="pgui_misc_logging">Logging</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html" data-menu-target="pgui_misc_servlet">Using FreeMarker with servlets</a></li><li><a class="page-menu-link" href="pgui_misc_secureenv.html" data-menu-target="pgui_misc_secureenv">Configuring security policy for FreeMarker</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html" data-menu-target="pgui_misc_xml_legacy">Legacy XML wrapper implementation</a></li><li><a class="page-menu-link" href="pgui_misc_ant.html" data-menu-target="pgui_misc_ant">Using FreeMarker with Ant</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html" data-menu-target="pgui_misc_jythonwrapper">Jython wrapper</a></li></ul></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_misc_alternativesyntax.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstar
 t.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config.html b/builds/2.3.26-nightly/pgui_config.html
new file mode 100644
index 0000000..f6feea0
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The Configuration - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The Configuration">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li></ul><div class="bookmark
 s" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel_objectWrapper.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_basics.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="pgui_config" itemprop="headline">The Configuration</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="pgui_config_basics.html" data-menu-target="pgui_config_basics">Basics</a></li><li><a class="page-menu-link" href="pgui_config_sharedvariables.html" data-menu-target="pgui_config_sharedvariables">Shared variables</a></li><li><a class="page-menu-link" href="pgui_config_settings.html" data-menu-target="pgui_config_settings">Settings</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html" data-menu-target="pgui_config_templateloading">Template loading</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html" data-menu-target="pgui_config_errorhandling">Error handling</a></li><li><a class="page-menu-link" href="pgui_config_templateconfigurations.html" data-menu-target="pgui_config_templateconfigurations">Template configurations</a></li><li><a class="page-menu-link" href="pgui_config_outputformatsautoesc.html" data-menu-target="pgui_config_outputformatsautoesc">Associating output formats with templates</a></li
 ><li><a class="page-menu-link" href="pgui_config_custom_formats.html" data-menu-target="pgui_config_custom_formats">Custom number and date/time formats</a></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html" data-menu-target="pgui_config_incompatible_improvements">The &quot;incompatible improvements&quot; setting</a></li></ul> </div><p>This is just an overview. See the <a href="api/index.html">FreeMarker Java API documentation</a> for the
+      details.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel_objectWrapper.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_basics.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_basics.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_basics.html b/builds/2.3.26-nightly/pgui_config_basics.html
new file mode 100644
index 0000000..47c8a9a
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_basics.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Basics - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Basics">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_basics.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_basics.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_basics.html"><span itemprop="name">Basics</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Basics"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_sharedvariables.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_basics" itemprop="headline">Basics</h1>
+</div></div><p>First of all, be sure you have read the <a href="pgui_quickstart_createconfiguration.html">Getting Started</a>
+        chapter.</p><p>A configuration is a
+        <code class="inline-code">freemarker.template.Configuration</code> object that
+        stores your common (global, application level) settings and defines
+        variables that you want to be available in all templates (so called
+        shared variables). Also, it deals with the creation and caching of
+        <code class="inline-code">Template</code> instances.</p><p>An application typically uses only a single shared
+        <code class="inline-code">Configuration</code> instance. More precisely, typically
+        you have one <code class="inline-code">Configuration</code> instance per
+        independently developed component that internally uses FreeMarker, so
+        they can be configured independently of each other. For example, your
+        e-mail sender component and your report generator component (service)
+        probably want to use their own <code class="inline-code">Configuration</code>-s, as
+        their needs differ.</p><p>As the behavior of templates depends on the configuration
+        settings, each <code class="inline-code">Template</code> instance has an associated
+        <code class="inline-code">Configuration</code> instance. If you obtain the
+        <code class="inline-code">Template</code> instances with
+        <code class="inline-code">Configuration.getTemplate</code>, the associated
+        <code class="inline-code">Configuration</code> instance will be the one whose
+        <code class="inline-code">getTemplate</code> method was called. If you create the
+        <code class="inline-code">Template</code> instances directly with the
+        <code class="inline-code">Template</code> constructor, the
+        <code class="inline-code">Configuration</code> should be specified as constructor
+        parameter.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_sharedvariables.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_custom_formats.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_custom_formats.html b/builds/2.3.26-nightly/pgui_config_custom_formats.html
new file mode 100644
index 0000000..1c083eb
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_custom_formats.html
@@ -0,0 +1,700 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Custom number and date/time formats - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Custom number and date/time formats">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_custom_formats.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_custom_formats.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_custom_formats.html"><span itemprop="name">Custom number and date/time formats</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Custom number and date/time formats"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_outputformatsautoesc.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_incompatible_improvements.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_custom_formats" itemprop="headline">Custom number and date/time formats</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_50" data-menu-target="autoid_50">Overview</a></li><li><a class="page-menu-link" href="#pgui_config_custom_formats_ex_cust_alg_simple" data-menu-target="pgui_config_custom_formats_ex_cust_alg_simple">Simple custom number format example</a></li><li><a class="page-menu-link" href="#pgui_config_custom_formats_ex_cust_algo_advanced" data-menu-target="pgui_config_custom_formats_ex_cust_algo_advanced">Advanced custom number format example</a></li><li><a class="page-menu-link" href="#pgui_config_custom_formats_ex_cust_algo_date" data-menu-target="pgui_config_custom_formats_ex_cust_algo_date">Custom date/time format example</a></li><li><a class="page-menu-link" href="#pgui_config_custom_formats_ex_alias" data-menu-target="pgui_config_custom_formats_ex_alias">Alias format example</a></li><li><a class="page-menu-link" href="#pgui_config_custom_formats_ex_model_aware" data-menu-target="pgui_config_custom_formats_ex_model_aware">Model-aware format 
 example</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_50">Overview</h2>
+
+
+          <p>FreeMarker allows you to define your own number and
+          date/time/datetime formats, and associate a name to them. This
+          mechanism has several applications:</p>
+
+          <ul>
+            <li>
+              <p>Custom formatter algorithms: You can use your own
+              formatter algorithm instead of relying on those provided by
+              FreeMarker. For this, implement
+              <code class="inline-code">freemarker.core.TemplateNumberFormatFactory</code>
+              or <code class="inline-code">freemarker.core.TemplateDateFormatFactory</code>.
+              You will find a few examples of this <a href="#pgui_config_custom_formats_ex_cust_alg_simple">below</a>.</p>
+            </li>
+
+            <li>
+              <p>Aliasing: You can give application-specific names (like
+              "price", "weight",
+              "fileDate", "logEventTime", etc.) to
+              other formats by using
+              <code class="inline-code">AliasTemplateNumberFormatFactory</code> and
+              <code class="inline-code">AliasTemplateDateFormatFactory</code>. Thus
+              templates can just refer to that name, like in
+              <code class="inline-code">${lastModified?string.@fileDate}</code>, instead of
+              specifying the format directly. Thus the formats can be
+              specified on a single central place (where you configure
+              FreeMarker), instead of being specified repeatedly in templates.
+              Also thus template authors don&#39;t have to enter complex and hard
+              to remember formatting patterns. <a href="#pgui_config_custom_formats_ex_alias">See example
+              below</a>.</p>
+            </li>
+
+            <li>
+              <p>Model-sensitive formatting: Applications can put custom
+              <code class="inline-code">freemarker.TemplateModel</code>-s into the
+              data-model instead of dropping plain values (like
+              <code class="inline-code">int</code>-s, <code class="inline-code">double</code>-s, etc.)
+              into it, to attach rendering-related information to the value.
+              Custom formatters can utilize this information (for example, to
+              show the unit after numbers), as they receive the
+              <code class="inline-code">TemplateModel</code> itself, not the wrapped raw
+              value. <a href="#pgui_config_custom_formats_ex_model_aware">See example
+              below</a>.</p>
+            </li>
+
+            <li>
+              <p>Format that prints markup instead of plain text: You might
+              want to use HTML tags (or other markup) in the formatted values,
+              such as coloring negative numbers to red or using HTML
+              <code class="inline-code">sup</code> element for exponents. This is possible
+              if you write a custom format as shown in previous cases, but
+              override the <code class="inline-code">format</code> method in the formatter
+              class so that it returns a
+              <code class="inline-code">TemplateMarkupOutputModel</code> instead of a
+              <code class="inline-code">String</code>. (You shouldn&#39;t just return the markup
+              as <code class="inline-code">String</code>, as then it might will be escaped;
+              see <a href="dgui_misc_autoescaping.html">auto-escaping</a>.)</p>
+            </li>
+          </ul>
+
+          <p>Custom formats can be registered with the
+          <code class="inline-code">custom_number_formats</code> and
+          <code class="inline-code">custom_date_formats</code> configuration settings. After
+          that, anywhere where you can specify formats with a
+          <code class="inline-code">String</code>, now you can refer to your custom format
+          as <code class="inline-code">&quot;@<em class="code-color">name</em>&quot;</code>. So for
+          example, if you have registered your number format implementation
+          with name <code class="inline-code">&quot;smart&quot;</code>, then you could set the
+          <code class="inline-code">number_format</code> setting
+          (<code class="inline-code">Configurable.setNumberFormat(String)</code>) to
+          <code class="inline-code">&quot;@smart&quot;</code>, or issue
+          <code class="inline-code">${n?string.@smart}</code> or <code class="inline-code">&lt;#setting
+          number_format=&quot;@smart&quot;&gt;</code> in a template. Furthermore, you
+          can define parameters for your custom format, like <code class="inline-code">&quot;@smart
+          2&quot;</code>, and the interpretation of the parameters is up to your
+          formatter implementation.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_config_custom_formats_ex_cust_alg_simple">Simple custom number format example</h2>
+
+
+          <p>This custom number format shows numbers in hexadecimal
+          form:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example;
+
+import java.util.Locale;
+
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateNumberModel;
+import freemarker.template.utility.NumberUtil;
+
+public class HexTemplateNumberFormatFactory extends TemplateNumberFormatFactory {
+
+    public static final HexTemplateNumberFormatFactory INSTANCE
+            = new HexTemplateNumberFormatFactory();
+
+    private HexTemplateNumberFormatFactory() {
+        // Defined to decrease visibility
+    }
+
+    @Override
+    public TemplateNumberFormat get(String params, Locale locale, Environment env)
+            throws InvalidFormatParametersException {
+        TemplateFormatUtil.checkHasNoParameters(params);
+        return HexTemplateNumberFormat.INSTANCE;
+    }
+
+    private static class HexTemplateNumberFormat extends TemplateNumberFormat {
+
+        private static final HexTemplateNumberFormat INSTANCE = new HexTemplateNumberFormat();
+
+        private HexTemplateNumberFormat() { }
+
+        @Override
+        public String formatToPlainText(TemplateNumberModel numberModel)
+                throws UnformattableValueException, TemplateModelException {
+            Number n = TemplateFormatUtil.getNonNullNumber(numberModel);
+            try {
+                return Integer.toHexString(NumberUtil.toIntExact(n));
+            } catch (ArithmeticException e) {
+                throw new UnformattableValueException(n + &quot; doesn&#39;t fit into an int&quot;);
+            }
+        }
+
+        @Override
+        public boolean isLocaleBound() {
+            return false;
+        }
+
+        @Override
+        public String getDescription() {
+            return &quot;hexadecimal int&quot;;
+        }
+
+    }
+
+}</pre></div>
+
+          <p>We register the above format with name
+          "hex":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initalize the application-wide Configuration singleton:
+Configuration cfg = ...;
+...
+Map&lt;String, TemplateNumberFormatFactory&gt; customNumberFormats = ...;
+...
+customNumberFormats.put(&quot;hex&quot;, HexTemplateNumberFormatFactory.INSTANCE);
+...
+cfg.setCustomNumberFormats(customNumberFormats);</pre></div>
+
+          <p>Now we can use this format in templates:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${x?string.@hex}</pre></div>
+
+          <p>or even set it as the default number format:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setNumberFormat(&quot;@hex&quot;);</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_config_custom_formats_ex_cust_algo_advanced">Advanced custom number format example</h2>
+
+
+          <p>This is a more complex custom number format that shows how to
+          deal with parameters in the format string, also how to delegate to
+          another format:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example;
+
+import java.util.Locale;
+
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateNumberModel;
+import freemarker.template.utility.NumberUtil;
+import freemarker.template.utility.StringUtil;
+
+/**
+ * Shows a number in base N number system. Can only format numbers that fit into an {@code int},
+ * however, optionally you can specify a fallback format. This format has one required parameter,
+ * the numerical system base. That can be optionally followed by &quot;|&quot; and a fallback format.
+ */
+public class BaseNTemplateNumberFormatFactory extends TemplateNumberFormatFactory {
+
+    public static final BaseNTemplateNumberFormatFactory INSTANCE
+            = new BaseNTemplateNumberFormatFactory();
+
+    private BaseNTemplateNumberFormatFactory() {
+        // Defined to decrease visibility
+    }
+
+    @Override
+    public TemplateNumberFormat get(String params, Locale locale, Environment env)
+            throws InvalidFormatParametersException {
+        TemplateNumberFormat fallbackFormat;
+        {
+            int barIdx = params.indexOf(&#39;|&#39;);
+            if (barIdx != -1) {
+                String fallbackFormatStr = params.substring(barIdx + 1);
+                params = params.substring(0, barIdx);
+                try {
+                    fallbackFormat = env.getTemplateNumberFormat(fallbackFormatStr, locale);
+                } catch (TemplateValueFormatException e) {
+                    throw new InvalidFormatParametersException(
+                            &quot;Couldn&#39;t get the fallback number format (specified after the \&quot;|\&quot;), &quot;
+                            + StringUtil.jQuote(fallbackFormatStr) + &quot;. Reason: &quot; + e.getMessage(),
+                            e);
+                }
+            } else {
+                fallbackFormat = null;
+            }
+        }
+
+        int base;
+        try {
+            base = Integer.parseInt(params);
+        } catch (NumberFormatException e) {
+            if (params.length() == 0) {
+                throw new InvalidFormatParametersException(
+                        &quot;A format parameter is required to specify the numerical system base.&quot;);
+            }
+            throw new InvalidFormatParametersException(
+                    &quot;The format paramter must be an integer, but was (shown quoted): &quot;
+                    + StringUtil.jQuote(params));
+        }
+        if (base &lt; 2) {
+            throw new InvalidFormatParametersException(&quot;A base must be at least 2.&quot;);
+        }
+        return new BaseNTemplateNumberFormat(base, fallbackFormat);
+    }
+
+    private static class BaseNTemplateNumberFormat extends TemplateNumberFormat {
+
+        private final int base;
+        private final TemplateNumberFormat fallbackFormat;
+
+        private BaseNTemplateNumberFormat(int base, TemplateNumberFormat fallbackFormat) {
+            this.base = base;
+            this.fallbackFormat = fallbackFormat;
+        }
+
+        @Override
+        public String formatToPlainText(TemplateNumberModel numberModel)
+                throws TemplateModelException, TemplateValueFormatException {
+            Number n = TemplateFormatUtil.getNonNullNumber(numberModel);
+            try {
+                return Integer.toString(NumberUtil.toIntExact(n), base);
+            } catch (ArithmeticException e) {
+                if (fallbackFormat == null) {
+                    throw new UnformattableValueException(
+                            n + &quot; doesn&#39;t fit into an int, and there was no fallback format &quot;
+                            + &quot;specified.&quot;);
+                } else {
+                    return fallbackFormat.formatToPlainText(numberModel);
+                }
+            }
+        }
+
+        @Override
+        public boolean isLocaleBound() {
+            return false;
+        }
+
+        @Override
+        public String getDescription() {
+            return &quot;base &quot; + base;
+        }
+
+    }
+
+}</pre></div>
+
+          <p>We register the above format with name
+          "base":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initalize the application-wide Configuration singleton:
+Configuration cfg = ...;
+...
+Map&lt;String, TemplateNumberFormatFactory&gt; customNumberFormats = ...;
+...
+customNumberFormats.put(&quot;base&quot;, BaseNTemplateNumberFormatFactory.INSTANCE);
+...
+cfg.setCustomNumberFormats(customNumberFormats);</pre></div>
+
+          <p>Now we can use this format in templates:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${x?string.@base_8}</pre></div>
+
+          <p>Above there the parameter string was <code class="inline-code">&quot;8&quot;</code>,
+          as FreeMarker allows separating that from the format name with
+          <code class="inline-code">_</code> instead of whitespace, so that you don&#39;t have
+          to write the longer
+          <code class="inline-code"><em class="code-color">n</em>?string[&quot;@base 8&quot;]</code>
+          form.</p>
+
+          <p>Of course, we could also set this as the default number format
+          like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setNumberFormat(&quot;@base 8&quot;);</pre></div>
+
+          <p>Here&#39;s an example of using the a fallback number format (which
+          is <code class="inline-code">&quot;0.0###&quot;</code>):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setNumberFormat(&quot;@base 8|0.0###&quot;);</pre></div>
+
+          <p>Note that this functionality, with the <code class="inline-code">|</code>
+          syntax and all, is purely implemented in the example code
+          earlier.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_config_custom_formats_ex_cust_algo_date">Custom date/time format example</h2>
+
+
+          <p>This simple date format formats the date/time value to the
+          milliseconds since the epoch:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example;
+
+import java.util.Date;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import freemarker.template.TemplateDateModel;
+import freemarker.template.TemplateModelException;
+
+public class EpochMillisTemplateDateFormatFactory extends TemplateDateFormatFactory {
+
+    public static final EpochMillisTemplateDateFormatFactory INSTANCE
+            = new EpochMillisTemplateDateFormatFactory();
+
+    private EpochMillisTemplateDateFormatFactory() {
+        // Defined to decrease visibility
+    }
+
+    @Override
+    public TemplateDateFormat get(String params, int dateType,
+            Locale locale, TimeZone timeZone, boolean zonelessInput,
+            Environment env)
+            throws InvalidFormatParametersException {
+        TemplateFormatUtil.checkHasNoParameters(params);
+        return EpochMillisTemplateDateFormat.INSTANCE;
+    }
+
+    private static class EpochMillisTemplateDateFormat extends TemplateDateFormat {
+
+        private static final EpochMillisTemplateDateFormat INSTANCE
+                = new EpochMillisTemplateDateFormat();
+
+        private EpochMillisTemplateDateFormat() { }
+
+        @Override
+        public String formatToPlainText(TemplateDateModel dateModel)
+                throws UnformattableValueException, TemplateModelException {
+            return String.valueOf(TemplateFormatUtil.getNonNullDate(dateModel).getTime());
+        }
+
+        @Override
+        public boolean isLocaleBound() {
+            return false;
+        }
+
+        @Override
+        public boolean isTimeZoneBound() {
+            return false;
+        }
+
+        @Override
+        public Date parse(String s, int dateType) throws UnparsableValueException {
+            try {
+                return new Date(Long.parseLong(s));
+            } catch (NumberFormatException e) {
+                throw new UnparsableValueException(&quot;Malformed long&quot;);
+            }
+        }
+
+        @Override
+        public String getDescription() {
+            return &quot;millis since the epoch&quot;;
+        }
+
+    }
+
+}</pre></div>
+
+          <p>We register the above format with name
+          "epoch":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initalize the application-wide Configuration singleton:
+Configuration cfg = ...;
+...
+Map&lt;String, TemplateDateFormatFactory&gt; customDateFormats = ...;
+...
+customDateFormats.put(&quot;epoch&quot;, EpochMillisTemplateDateFormatFactory.INSTANCE);
+...
+cfg.setCustomDateFormats(customDateFormats);</pre></div>
+
+          <p>Now we can use this format in templates:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${t?string.@epoch}</pre></div>
+
+          <p>Of course, we could also set this as the default date-time
+          format like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setDateTimeFormat(&quot;@epoch&quot;);</pre></div>
+
+          <p>For a more complex that for example uses format parameters,
+          refer to the <a href="#pgui_config_custom_formats_ex_cust_algo_advanced">advanced
+          number format example</a>. Doing that with date formats is very
+          similar.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_config_custom_formats_ex_alias">Alias format example</h2>
+
+
+          <p>In this example we specify some number formats and date
+          formats that are aliases to another format:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initalize the application-wide Configuration singleton:
+Configuration cfg = ...;
+
+Map&lt;String, TemplateNumberFormatFactory&gt; customNumberFormats
+        = new HashMap&lt;String, TemplateNumberFormatFactory&gt;();
+customNumberFormats.put(&quot;price&quot;, new AliasTemplateNumberFormatFactory(&quot;,000.00&quot;));
+customNumberFormats.put(&quot;weight&quot;,
+        new AliasTemplateNumberFormatFactory(&quot;0.##;; roundingMode=halfUp&quot;));
+cfg.setCustomNumberFormats(customNumberFormats);
+
+Map&lt;String, TemplateDateFormatFactory&gt; customDateFormats
+        = new HashMap&lt;String, TemplateDateFormatFactory&gt;();
+customDateFormats.put(&quot;fileDate&quot;, new AliasTemplateDateFormatFactory(&quot;dd/MMM/yy hh:mm a&quot;));
+customDateFormats.put(&quot;logEventTime&quot;, new AliasTemplateDateFormatFactory(&quot;iso ms u&quot;));
+cfg.setCustomDateFormats(customDateFormats);</pre></div>
+
+          <p>So now you can do this in a template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${product.price?string.@price}
+${product.weight?string.@weight}
+${lastModified?string.@fileDate}
+${lastError.timestamp?string.@logEventTime}</pre></div>
+
+          <p>Note that the constructor parameter of
+          <code class="inline-code">AliasTemplateNumberFormatFactory</code> can naturally
+          refer to a custom format too:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Map&lt;String, TemplateNumberFormatFactory&gt; customNumberFormats
+        = new HashMap&lt;String, TemplateNumberFormatFactory&gt;();
+customNumberFormats.put(&quot;base&quot;, BaseNTemplateNumberFormatFactory.INSTANCE);
+customNumberFormats.put(&quot;oct&quot;, new AliasTemplateNumberFormatFactory(&quot;@base 8&quot;));
+cfg.setCustomNumberFormats(customNumberFormats);</pre></div>
+
+          <p>So now
+          <code class="inline-code"><em class="code-color">n</em>?string.@oct</code> will
+          format the number to octal form.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_config_custom_formats_ex_model_aware">Model-aware format example</h2>
+
+
+          <p>In this example we specify a number format that automatically
+          show the unit after the number if that was put into the data-model
+          as <code class="inline-code">UnitAwareTemplateNumberModel</code>. First let&#39;s see
+          <code class="inline-code">UnitAwareTemplateNumberModel</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example;
+
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateNumberModel;
+
+public class UnitAwareTemplateNumberModel implements TemplateNumberModel {
+
+    private final Number value;
+    private final String unit;
+
+    public UnitAwareTemplateNumberModel(Number value, String unit) {
+        this.value = value;
+        this.unit = unit;
+    }
+
+    @Override
+    public Number getAsNumber() throws TemplateModelException {
+        return value;
+    }
+
+    public String getUnit() {
+        return unit;
+    }
+
+}</pre></div>
+
+          <p>When you fill the data-model, you could do something like
+          this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Map&lt;String, Object&gt; dataModel = new HashMap&lt;&gt;();
+dataModel.put(&quot;weight&quot;, new UnitAwareTemplateNumberModel(1.5, &quot;kg&quot;));
+// Rather than just: dataModel.put(&quot;weight&quot;, 1.5);</pre></div>
+
+          <p>Then if we have this in the template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${weight}</pre></div>
+
+          <p>we want to see this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">1.5 kg</pre></div>
+
+          <p>To achieve that, we define this custom number format:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example;
+
+import java.util.Locale;
+
+import freemarker.core.Environment;
+import freemarker.core.TemplateNumberFormat;
+import freemarker.core.TemplateNumberFormatFactory;
+import freemarker.core.TemplateValueFormatException;
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateNumberModel;
+
+/**
+ * A number format that takes any other number format as parameter (specified as a string, as
+ * usual in FreeMarker), then if the model is a {@link UnitAwareTemplateNumberModel}, it  shows
+ * the unit after the number formatted with the other format, otherwise it just shows the formatted
+ * number without unit.
+ */
+public class UnitAwareTemplateNumberFormatFactory extends TemplateNumberFormatFactory {
+
+    public static final UnitAwareTemplateNumberFormatFactory INSTANCE
+            = new UnitAwareTemplateNumberFormatFactory();
+
+    private UnitAwareTemplateNumberFormatFactory() {
+        // Defined to decrease visibility
+    }
+
+    @Override
+    public TemplateNumberFormat get(String params, Locale locale, Environment env)
+            throws TemplateValueFormatException {
+        return new UnitAwareNumberFormat(env.getTemplateNumberFormat(params, locale));
+    }
+
+    private static class UnitAwareNumberFormat extends TemplateNumberFormat {
+
+        private final TemplateNumberFormat innerFormat;
+
+        private UnitAwareNumberFormat(TemplateNumberFormat innerFormat) {
+            this.innerFormat = innerFormat;
+        }
+
+        @Override
+        public String formatToPlainText(TemplateNumberModel numberModel)
+                throws TemplateModelException, TemplateValueFormatException {
+            String innerResult = innerFormat.formatToPlainText(numberModel);
+            return numberModel instanceof UnitAwareTemplateNumberModel
+                    ? innerResult + &quot; &quot; + ((UnitAwareTemplateNumberModel) numberModel).getUnit()
+                    : innerResult;
+        }
+
+        @Override
+        public boolean isLocaleBound() {
+            return innerFormat.isLocaleBound();
+        }
+
+        @Override
+        public String getDescription() {
+            return &quot;unit-aware &quot; + innerFormat.getDescription();
+        }
+
+    }
+
+}</pre></div>
+
+          <p>Finally, we set the above custom format as the default number
+          format:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initalize the application-wide Configuration singleton:
+Configuration cfg = ...;
+
+Map&lt;String, TemplateNumberFormatFactory&gt; customNumberFormats = new HashMap&lt;&gt;();
+customNumberFormats.put(&quot;ua&quot;, UnitAwareTemplateNumberFormatFactory.INSTANCE);
+cfg.setCustomNumberFormats(customNumberFormats);
+
+// Note: &quot;0.####;; roundingMode=halfUp&quot; is a standard format specified in FreeMarker.
+cfg.setNumberFormat(&quot;@ua 0.####;; roundingMode=halfUp&quot;);</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_outputformatsautoesc.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_incompatible_improvements.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[03/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_6.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_6.html b/builds/2.3.26-nightly/versions_2_3_6.html
new file mode 100644
index 0000000..a688a47
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_6.html
@@ -0,0 +1,68 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.6 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.6">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_6.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_6.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_6.html"><span itemprop="name">2.3.6</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.6"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_7rc1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_5.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_6" itemprop="headline">2.3.6</h1>
+</div></div><p>Date of release: 2006-03-15</p><p>Quick release that fixes a serious bug of 2.3.5, days after its
+        release. So for the recently added new features please <a href="versions_2_3_5.html">see the section of 2.3.5.</a></p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_204">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bug fixed: In FreeMarker 2.3.5 only, when you read a bean
+              property for the second time, FreeMarker will say that it&#39;s
+              missing (null).</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_7rc1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_5.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_7.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_7.html b/builds/2.3.26-nightly/versions_2_3_7.html
new file mode 100644
index 0000000..cbce296
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_7.html
@@ -0,0 +1,172 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.7 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.7">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_7.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_7.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_7.html"><span itemprop="name">2.3.7</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.7"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_8.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_7rc1.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_7" itemprop="headline">2.3.7</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_200" data-menu-target="autoid_200">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_201" data-menu-target="autoid_201">Changes on the FTL side</a></li></ul> </div><p>Date of release: 2006-06-23</p><p>This release, compared to 2.3.7 RC1, contains new operators for
+        handling null/missing variables, , the <code class="inline-code">substring</code>
+        built-in, and some more bugfixes. Note that 2.3.7 RC1 has a long
+        change log, so you may want to <a href="versions_2_3_7rc1.html">read
+        that</a> too.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_200">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>The <code class="inline-code">seq_contains</code> built-in now handles
+              <code class="inline-code">TemplateCollectionModel</code>-s as well.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: In 2.3.7 RC1
+              <code class="inline-code">FreemarkerServlet</code> has always died with
+              <code class="inline-code">NullPointerException</code> during
+              initialization.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_201">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>3 new operators were added for terser missing variable
+              handling. These operators make the <code class="inline-code">default</code>,
+              <code class="inline-code">exists</code> and <code class="inline-code">if_exists</code>
+              built-ins deprecated. (The parser doesn&#39;t issue any warning
+              messages when you use deprecated built-ins, and they are still
+              working.):</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code"><em class="code-color">exp1</em>!<em class="code-color">exp2</em></code>
+                  is near equivalent with
+                  <code class="inline-code"><em class="code-color">exp1</em>?default(<em class="code-color">exp2</em>)</code>,
+                  also
+                  <code class="inline-code">(<em class="code-color">exp1</em>)!<em class="code-color">exp2</em></code>
+                  is near equivalent with
+                  <code class="inline-code">(<em class="code-color">exp1</em>)?default(<em class="code-color">exp2</em>)</code>.
+                  The only difference is that this new operator doesn&#39;t
+                  evaluate the
+                  <code class="inline-code"><em class="code-color">exp2</em></code> when the
+                  default value is not needed.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">exp1</em>!</code> is
+                  similar to
+                  <code class="inline-code"><em class="code-color">exp1</em>?if_exists</code>,
+                  also <code class="inline-code">(<em class="code-color">exp1</em>)!</code>
+                  is similar to
+                  <code class="inline-code">(<em class="code-color">exp1</em>)?if_exists</code>.
+                  The difference is that with this new operator the default
+                  value is an empty string and an empty list and empty hash at
+                  the same time (multi-type variable), while with
+                  <code class="inline-code">if_exists</code> the default value was an empty
+                  string and an empty list and empty hash and boolean
+                  <code class="inline-code">false</code> and a transform that does nothing
+                  and ignores all parameters at the same time.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">exp1</em>??</code>
+                  is equivalent with
+                  <code class="inline-code"><em class="code-color">exp1</em>?exists</code>,
+                  also <code class="inline-code">(<em class="code-color">exp1</em>)??</code>
+                  is equivalent with with
+                  <code class="inline-code">(<em class="code-color">exp1</em>)?exists</code>.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>New built-in:
+              <code class="inline-code"><em class="code-color">exp</em>?substring(<em class="code-color">from</em>,
+              <em class="code-color">toExclusive</em>)</code>, also callable
+              as
+              <code class="inline-code"><em class="code-color">exp</em>?substring(<em class="code-color">from</em>)</code>.
+              Getting substrings was possible for a long time like
+              <code class="inline-code"><em class="code-color">myString</em>[<em class="code-color">from</em>..<em class="code-color">toInclusive</em>]</code>
+              and
+              <code class="inline-code"><em class="code-color">myString</em>[<em class="code-color">from</em>..]</code>,
+              but
+              <code class="inline-code"><em class="code-color">myString</em>?substring(<em class="code-color">from</em>,
+              <em class="code-color">toExclusive</em>)</code> and
+              <code class="inline-code"><em class="code-color">myString</em>?substring(<em class="code-color">from</em>)</code>
+              has the advantage that it has an exclusive end, which is more
+              practical. (Edit: Since 2.3.21 ranges are the preferred way
+              again, as it has
+              <code class="inline-code"><em class="code-color">myString</em>[<em class="code-color">from</em>..&lt;<em class="code-color">toExclusive</em>]</code>.)
+              Sequence (list) slices still has to be get with the old syntax,
+              since <code class="inline-code">substring</code> only applies to strings.
+              Please note that the "to" parameter is 1 greater
+              with this new builtin, as it is an exclusive index. Further
+              difference is that the <code class="inline-code">substring</code> built-in
+              requires that the "from" index is less than or
+              equal to the "to" index. So 0 length substrings are
+              possible now, but not reversed substrings.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1487694&amp;group_id=794">[1487694]</a>
+              malfunction when the <code class="inline-code">recover</code> directive has no
+              nested content</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_8.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_7rc1.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_7rc1.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_7rc1.html b/builds/2.3.26-nightly/versions_2_3_7rc1.html
new file mode 100644
index 0000000..9b2e0f7
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_7rc1.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.7 RC1 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.7 RC1">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_7rc1.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_7rc1.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_7rc1.html"><span itemprop="name">2.3.7 RC1</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.7 RC1"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_7.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_6.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_7rc1" itemprop="headline">2.3.7 RC1</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_202" data-menu-target="autoid_202">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_203" data-menu-target="autoid_203">Changes on the FTL side</a></li></ul> </div><p>Date of release: 2006-04-27</p><p>This release contains many bugfixes and some
+        <code class="inline-code">FreemarkerServlet</code> related improvements. It&#39;s a
+        Release Candidate, which means that it shouldn&#39;t be used in production
+        environment yet. We recommend this release for development, however.
+        Please test it.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_202">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><code class="inline-code">FreemarkerServlet</code> improvement:
+              <code class="inline-code">AllHttpScopesHashModel</code> is now public, so you
+              can add unlisted variables to the data-model.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">FreemarkerServlet</code> improvement: When it
+              throws a <code class="inline-code">ServletException</code>, the J2SE 1.4 cause
+              exception is now set under J2SE 1.4.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1469275&amp;group_id=794">[1469275]</a>
+              <code class="inline-code">NullPointerException</code> when using
+              <code class="inline-code">BeansWrapper</code> with reloaded classes</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1449467&amp;group_id=794">[1449467]</a>
+              <code class="inline-code">HttpSessionHashModel</code> is not
+              <code class="inline-code">Serializable</code></p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1435113&amp;group_id=794">[1435113]</a>
+              Error in <code class="inline-code">BeanWrapper</code> with indexed
+              properties</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1411705&amp;group_id=794">[1411705]</a>
+              Acquisition bug in <code class="inline-code">TemplateCache</code></p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1459699&amp;group_id=794&amp;atid=100794">[1459699]</a>
+              Tag syntax can&#39;t set with
+              <code class="inline-code">Configuration.setSetting(String,
+              String)</code></p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1473403&amp;group_id=794">[1473403]</a>
+              <code class="inline-code">ReturnInstruction.Return</code> should be
+              public</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_203">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1463664&amp;group_id=794">[1463664]</a>kup
+              <code class="inline-code">[/#noparse]</code> is printed out</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_7.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_6.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_8.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_8.html b/builds/2.3.26-nightly/versions_2_3_8.html
new file mode 100644
index 0000000..7ee71f4
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_8.html
@@ -0,0 +1,98 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.8 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.8">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_8.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_8.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_8.html"><span itemprop="name">2.3.8</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.8"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_9.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_7.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_8" itemprop="headline">2.3.8</h1>
+</div></div><p>Date of release: 2006-07-09</p><p>This release substantially improves the JSP 2.0 compatibility.
+        (For those who have seen the same points in 2.3.7: Sorry, the version
+        history was incorrect... those JSP 2.0 related changes were not in the
+        release yet.)</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_199">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>JSP support improvement: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1326058&amp;group_id=794">[1326058]</a>
+              Added support for <code class="inline-code">DynamicAttributes</code> (new in
+              JSP 2.0)</p>
+            </li>
+
+            <li>
+              <p>JSP support improvement: Added support for
+              <code class="inline-code">pushBody()</code>/<code class="inline-code">popBody()</code> in
+              <code class="inline-code">FreemarkerPageContext</code></p>
+            </li>
+
+            <li>
+              <p>JSP support improvement: Added support for
+              <code class="inline-code">getVariableResolver()</code> (new in JSP
+              2.0).</p>
+            </li>
+
+            <li>
+              <p>JSP support improvement: Added support for
+              <code class="inline-code">include(String, boolean)</code> (new in JSP
+              2.0).</p>
+            </li>
+
+            <li>
+              <p>JSP support improvement: Added support for
+              <code class="inline-code">getExpressionEvaluator()</code> (new in JSP 2.0).
+              However, it will need Apache commons-el in the class path, or
+              else this method will not work (it&#39;s optional). Note that EL
+              support is not needed in principle, since FreeMarker has it&#39;s
+              own expression language. But some custom JSP 2 tags may still
+              want to use this method, after all it&#39;s in the JSP 2 API.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_9.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_7.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_9.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_9.html b/builds/2.3.26-nightly/versions_2_3_9.html
new file mode 100644
index 0000000..6640b90
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_9.html
@@ -0,0 +1,119 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.9 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.9">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_9.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_9.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_9.html"><span itemprop="name">2.3.9</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.9"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_10.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_8.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_9" itemprop="headline">2.3.9</h1>
+</div></div><p>Date of release: 2007-01-23</p><p>This release contains support for accessing JDK 1.5 enums and
+        public fields of classes from the templates through the
+        BeansWrapper.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_198">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><code class="inline-code">BeansWrapper</code> can now expose public
+              fields of objects to the template if you call the
+              <code class="inline-code">setExposeFields(true)</code> on it. <a href="pgui_misc_beanwrapper.html#beanswrapper_hash">More info...</a></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">BeansWrapper</code> can now pass any sequence
+              model to Java methods expecting a
+              <code class="inline-code">java.util.Collection</code> or a native Java array
+              (including primitive arrays). <a href="pgui_misc_beanwrapper.html#beanswrapper_hash">More info...</a></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">BeansWrapper</code> can now pass any sequence
+              and collection model to Java methods expecting a
+              <code class="inline-code">java.lang.Iterable</code>. <a href="pgui_misc_beanwrapper.html#beanswrapper_hash">More info...</a></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">BeansWrapper</code> can now unwrap numeric
+              models into correct target types when passing to Java methods
+              expecting a primitive or boxed number. Use of various <a href="ref_builtins_expert.html">expert built-ins</a> to
+              manually coerce the types becomes mostly unnecessary.</p>
+            </li>
+
+            <li>
+              <p>Fixed a bug where <code class="inline-code">BeansWrapper</code> would
+              pass a <code class="inline-code">java.util.Collection</code> to a method
+              expecting a <code class="inline-code">java.util.Set</code> in certain rare
+              cases. <a href="pgui_misc_beanwrapper.html#beanswrapper_hash">More
+              info...</a></p>
+            </li>
+
+            <li>
+              <p>Support for JDK 1.5 enums in
+              <code class="inline-code">BeansWrapper</code> and
+              <code class="inline-code">DefaultObjectWrapper</code>. By calling the
+              <code class="inline-code">getEnumModels()</code> method, you can retrieve a
+              hash model that is keyed by class names and allows access to
+              enumerated values. I.e. if you bind this hash model under name
+              <code class="inline-code">enums</code> in the data-model, you can write
+              expressions like
+              <code class="inline-code">enums[&quot;java.math.RoundingMode&quot;].UP</code> in the
+              template. The enum values can be used as scalars and support
+              equality and inequality comparisons. <a href="pgui_misc_beanwrapper.html#jdk_15_enums">More info...</a></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.ext.rhino.RhinoWrapper</code> now
+              correctly translates Rhino <code class="inline-code">Undefined</code>
+              instance, <code class="inline-code">UniqueTag.NOT_FOUND</code>, and
+              <code class="inline-code">UniqueTag.NULL</code> to FreeMarker undefined
+              value.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_10.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_8.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui.html b/builds/2.3.26-nightly/xgui.html
new file mode 100644
index 0000000..bac7641
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-part">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>XML Processing Guide - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="XML Processing Guide">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.
 html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_depr_numerical_interpolation.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_preface.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-part" id="xgui" itemprop="headline">XML Processing Guide</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="xgui_preface.html" data-menu-target="xgui_preface">Preface</a></li><li><a class="page-menu-link" href="xgui_expose.html" data-menu-target="xgui_expose">Exposing XML documents</a><ul><li><a class="page-menu-link" href="xgui_expose_dom.html" data-menu-target="xgui_expose_dom">The DOM tree</a></li><li><a class="page-menu-link" href="xgui_expose_put.html" data-menu-target="xgui_expose_put">Putting the XML into the data-model</a></li></ul></li><li><a class="page-menu-link" href="xgui_imperative.html" data-menu-target="xgui_imperative">Imperative XML processing</a><ul><li><a class="page-menu-link" href="xgui_imperative_learn.html" data-menu-target="xgui_imperative_learn">Basics</a></li><li><a class="page-menu-link" href="xgui_imperative_formal.html" data-menu-target="xgui_imperative_formal">Details</a></li></ul></li><li><a class="page-menu-link" href="xgui_declarative.html" data-menu-target="xgui_declarative">Declarative XML processing</a><ul><li><a
  class="page-menu-link" href="xgui_declarative_basics.html" data-menu-target="xgui_declarative_basics">Basics</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html" data-menu-target="xgui_declarative_details">Details</a></li></ul></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_depr_numerical_interpolation.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_preface.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_declarative.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_declarative.html b/builds/2.3.26-nightly/xgui_declarative.html
new file mode 100644
index 0000000..4d64622
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_declarative.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Declarative XML processing - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Declarative XML processing">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_declarative.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_declarative.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_declarative.html"><span itemprop="name">Declarative XML processing</span></a></li></ul><div cla
 ss="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Declarative XML processing"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_imperative_formal.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_declarative_basics.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="xgui_declarative" itemprop="headline">Declarative XML processing</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="xgui_declarative_basics.html" data-menu-target="xgui_declarative_basics">Basics</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html" data-menu-target="xgui_declarative_details">Details</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_imperative_formal.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_declarative_basics.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[02/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_declarative_basics.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_declarative_basics.html b/builds/2.3.26-nightly/xgui_declarative_basics.html
new file mode 100644
index 0000000..ed6e248
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_declarative_basics.html
@@ -0,0 +1,198 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Basics - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Basics">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_declarative_basics.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_declarative_basics.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_declarative.html"><span itemprop="name">Declarative XML processing</span></a></li><li class="st
 ep-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_declarative_basics.html"><span itemprop="name">Basics</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Declarative XML processing","Basics"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_declarative.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_declarative_details.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="xgui_declarative_basics" itemprop="headline">Basics</h1>
+</div></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>This section uses the DOM tree and the variable made in <a href="xgui_expose.html">a previous chapter</a>.</p>
+          </div>
+<p>With the imperative approach of XML processing -- this was shown
+        in the previous chapter -- you write an FTL program that walks the
+        tree to find the different kind of nodes. With the declarative
+        approach, you rather define how to handle the different kind of nodes,
+        and then let FreeMarker walk the tree an call the handlers you have
+        defined. This approach is useful for complex XML schemas, where the
+        same element can occur as the child of many other elements. Examples
+        of such schemas are XHTML and XDocBook.</p><p>The directive you most often use with the declarative approach
+        is the <a href="ref_directive_visit.html#ref.directive.recurse"><code>recurse</code>
+        directive</a>. This directive gets a node variable as parameter,
+        and "visits" all its children nodes, one after the other,
+        starting with the first child. "Visiting" a node means
+        that it calls a user-defined directive (like a macro) that has the
+        same name as the name of the child node
+        (<code class="inline-code">?node_name</code>). We say on this, that the user-defined
+        directive <em>handles</em> the node. The node that the
+        user-defined directive just handles is available as special variable
+        <code class="inline-code">.node</code>. For example, this FTL:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#recurse doc&gt;
+
+&lt;#macro book&gt;
+  I&#39;m the book element handler, and the title is: ${.node.title}
+&lt;/#macro&gt;</pre></div><p>will print (I have removed some disturbing white-space form the
+        output):</p>
+
+<div class="code-wrapper"><pre class="code-block code-output">I&#39;m the book element handler, and the title is: Test Book</pre></div><p>If you call <code class="inline-code">recurse</code> without parameter, then
+        it uses <code class="inline-code">.node</code>, that is, it visits all children
+        nodes of the node currently handled. So this FTL:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#recurse doc&gt;
+
+&lt;#macro book&gt;
+  Book element with title ${.node.title}
+    &lt;#recurse&gt;
+  End book
+&lt;/#macro&gt;
+
+&lt;#macro title&gt;
+  Title element
+&lt;/#macro&gt;
+
+&lt;#macro chapter&gt;
+  Chapter element with title: ${.node.title}
+&lt;/#macro&gt;</pre></div><p>will print (I have removed disturbing white-space form the
+        output):</p>
+
+<div class="code-wrapper"><pre class="code-block code-output">Book element with title Test Book
+Title element
+Chapter element with title: Ch1
+Chapter element with title: Ch2
+End book</pre></div><p>You have seen how to define handlers for element nodes, but not
+        how to define handler for the text nodes. Since the name of the
+        handler is the same as the node-name of nodes it handles, and as the
+        node-name of all text nodes is <code class="inline-code">@text</code> (see <a href="xgui_imperative_formal.html#misc.xguiTable">the table</a>), you define handler for the
+        text nodes like this:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">
+&lt;#macro @text&gt;${.node?html}&lt;/#macro&gt;</pre></div><p>Note the <code class="inline-code">?html</code>. You have to HTML-escape the
+        text, since you generate output of HTML format.</p><p>Here it is the template that transforms the XML to complete
+        HTML:</p><a name="misc.example.declarativeBookProcessor"></a>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#recurse doc&gt;
+
+&lt;#macro book&gt;
+  &lt;html&gt;
+    &lt;head&gt;
+      &lt;title&gt;&lt;#recurse .node.title&gt;&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+      &lt;h1&gt;&lt;#recurse .node.title&gt;&lt;/h1&gt;
+      &lt;#recurse&gt;
+    &lt;/body&gt;
+  &lt;/html&gt;
+&lt;/#macro&gt;
+
+&lt;#macro chapter&gt;
+  &lt;h2&gt;&lt;#recurse .node.title&gt;&lt;/h2&gt;
+  &lt;#recurse&gt;
+&lt;/#macro&gt;
+
+&lt;#macro para&gt;
+  &lt;p&gt;&lt;#recurse&gt;
+&lt;/#macro&gt;
+
+&lt;#macro title&gt;
+  &lt;#--
+    We have handled this element imperatively,
+    so we do nothing here.
+  --&gt;
+&lt;/#macro&gt;
+
+&lt;#macro @text&gt;${.node?html}&lt;/#macro&gt;</pre></div><p>and the output will be (now I will honestly include the annoying
+        white-space...):</p>
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;html&gt;
+    &lt;head&gt;
+      &lt;title&gt;Test Book&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+      &lt;h1&gt;Test Book&lt;/h1&gt;
+
+
+    &lt;h2&gt;Ch1&lt;/h2&gt;
+
+
+      &lt;p&gt;p1.1
+
+      &lt;p&gt;p1.2
+
+      &lt;p&gt;p1.3
+
+
+    &lt;h2&gt;Ch2&lt;/h2&gt;
+
+
+      &lt;p&gt;p2.1
+
+      &lt;p&gt;p2.2
+
+
+    &lt;/body&gt;
+  &lt;/html&gt;
+
+  </pre></div><p>Note that you can reduce substantially the amount of superfluous
+        whitespace in the output by using the <a href="ref_directive_t.html">trim directives</a>, as
+        <code class="inline-code">&lt;#t&gt;</code>. See also: <a href="dgui_misc_whitespace.html">Template Author&#39;s Guide/Miscellaneous/White-space handling</a></p><p>You may say that the FTL that did it with imperative approach
+        was much shorter. That&#39;s true, but the example XML uses a very simple
+        schema, and as I said, the declarative approach brings its form with
+        XML schemas that are not that firm about what element can occur where.
+        Say, introduce element <code class="inline-code">mark</code>, that should color text
+        to red, does not mater where do you use it; in a
+        <code class="inline-code">title</code>, or in a <code class="inline-code">para</code>. For this,
+        with the declarative approach, you just add a macro:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro mark&gt;&lt;font color=red&gt;&lt;#recurse&gt;&lt;/font&gt;&lt;/#macro&gt;</pre></div><p>And then <code class="inline-code">&lt;mark&gt;...&lt;/mark&gt;</code> will
+        automatically work everywhere. So for certain XML schemas, declarative
+        XML processing will actually result in shorter, and what is even more
+        important, much clearer FTL-s, than imperative XML processing. It&#39;s up
+        to you to decide which approach to use when; don&#39;t forget that you can
+        mix the two approaches freely. Say, in an element handler, you can use
+        imperative approach to process the contents of that element.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_declarative.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_declarative_details.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_declarative_details.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_declarative_details.html b/builds/2.3.26-nightly/xgui_declarative_details.html
new file mode 100644
index 0000000..3d5757c
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_declarative_details.html
@@ -0,0 +1,220 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Details - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Details">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_declarative_details.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_declarative_details.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_declarative.html"><span itemprop="name">Declarative XML processing</span></a></li><li class="st
 ep-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_declarative_details.html"><span itemprop="name">Details</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Declarative XML processing","Details"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_declarative_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="app.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="xgui_declarative_details" itemprop="headline">Details</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_152" data-menu-target="autoid_152">Default handlers</a></li><li><a class="page-menu-link" href="#autoid_153" data-menu-target="autoid_153">Visiting a single node</a></li><li><a class="page-menu-link" href="#autoid_154" data-menu-target="autoid_154">XML namespaces</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_152">Default handlers</h2>
+
+
+          <p>For some XML node types, there is a default handler, which
+          will handle the node if you haven&#39;t defined a handler for the node
+          (i.e. if there is no user-defined directive available with name
+          identical to the node name). Here are these node types, and what the
+          default handler does:</p>
+
+          <ul>
+            <li>
+              <p>Text node: prints the text as it. Note, that in most
+              applications, this will not be good for you, because you should
+              escape the text before you send it to the output (with
+              <code class="inline-code">?html</code> or <code class="inline-code">?xml</code> or
+              <code class="inline-code">?rtf</code>, ...etc. depends on the output
+              format).</p>
+            </li>
+
+            <li>
+              <p>Processing instruction node: call handler called
+              <code class="inline-code">@pi</code> if you have created such user-defined
+              directive, otherwise do nothing (ignore the node).</p>
+            </li>
+
+            <li>
+              <p>Comment node, document type node: Do nothing (ignore the
+              node).</p>
+            </li>
+
+            <li>
+              <p>Document node: Call <code class="inline-code">recurse</code>, that is,
+              visit all children of the document node.</p>
+            </li>
+          </ul>
+
+          <p>Element and attribute nodes will be handled according to the
+          usual, XML independent mechanism. That is,
+          <code class="inline-code">@<em class="code-color">node_type</em></code> will be
+          called as handler, and if that&#39;s not defined, then an error stops
+          template processing.</p>
+
+          <p>In the case of element nodes, this means that if you define a
+          macro (or other kind of user-defined directive) called
+          <code class="inline-code">@element</code>, that will catch all element nodes,
+          which has no more specific handler. If you have no
+          <code class="inline-code">@element</code> handler, then you
+          <em>must</em> define a handler for all possible
+          elements.</p>
+
+          <p>Attribute nodes are not visited by the
+          <code class="inline-code">recurse</code> directive, so you don&#39;t need to write
+          handlers for them.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_153">Visiting a single node</h2>
+
+
+          <p>With the <a href="ref_directive_visit.html#ref.directive.visit"><code>visit</code>
+          directive</a> you can visit a single node, instead of the
+          children of the node:
+          <code class="inline-code">&lt;#visit�<em class="code-color">nodeToVisist</em>&gt;</code>.
+          This can be useful sometimes.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_154">XML namespaces</h2>
+
+
+          
+
+          <p>We said that the name of the handler user-defined directive
+          (like a macro) for an element is the name of the element. In fact,
+          it is the full-qualified name of the element:
+          <code class="inline-code"><em class="code-color">prefix</em>:<em class="code-color">elementName</em></code>.
+          The rules regarding the usage of
+          <code class="inline-code"><em class="code-color">prefix</em></code>-es is the same
+          as with imperative processing. Thus, the user-defined
+          <code class="inline-code">book</code> directive handles only element
+          <code class="inline-code">book</code> that does not belong to any XML namespace
+          (unless you have specified a default XML namespace). So if the
+          example XML would use XML namespace
+          <code class="inline-code">http://example.com/ebook</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;book xmlns=&quot;http://example.com/ebook&quot;&gt;
+<em>...</em></pre></div>
+
+          <p>Then the FTL should look as this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>&lt;#ftl ns_prefixes={&quot;e&quot;:&quot;http://example.com/ebook&quot;}&gt;</strong>
+
+&lt;#recurse doc&gt;
+
+&lt;#macro &quot;<strong>e:</strong>book&quot;&gt;
+  &lt;html&gt;
+    &lt;head&gt;
+      &lt;title&gt;&lt;#recurse .node[&quot;<strong>e:</strong>title&quot;]&gt;&lt;/title&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+      &lt;h1&gt;&lt;#recurse .node[&quot;<strong>e:</strong>title&quot;]&gt;&lt;/h1&gt;
+      &lt;#recurse&gt;
+    &lt;/body&gt;
+  &lt;/html&gt;
+&lt;/#macro&gt;
+
+&lt;#macro &quot;<strong>e:</strong>chapter&quot;&gt;
+  &lt;h2&gt;&lt;#recurse .node[&quot;<strong>e:</strong>title&quot;]&gt;&lt;/h2&gt;
+  &lt;#recurse&gt;
+&lt;/#macro&gt;
+
+&lt;#macro &quot;<strong>e:</strong>para&quot;&gt;
+  &lt;p&gt;&lt;#recurse&gt;
+&lt;/#macro&gt;
+
+&lt;#macro &quot;<strong>e:</strong>title&quot;&gt;
+  &lt;#--
+    We have handled this element imperatively,
+    so we do nothing here.
+  --&gt;
+&lt;/#macro&gt;
+
+&lt;#macro @text&gt;${.node?html}&lt;/#macro&gt;</pre></div>
+
+          <p>Or, you can define a default XML namespace, and then the
+          further part of the template remains the same as in the original XML
+          namespace free example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl ns_prefixes={&quot;<strong>D</strong>&quot;:&quot;http://example.com/ebook&quot;}&gt;
+
+&lt;#recurse doc&gt;
+
+&lt;#macro book&gt;
+<em>...</em></pre></div>
+
+          <p>But in this case don&#39;t forge that in XPath expressions (we
+          didn&#39;t used any in the example) the default XML namespace must be
+          accessed with an explicit <code class="inline-code">D:</code> since names without
+          prefix always refer to nodes with no XML namespace in XPath. Also
+          note that with the same logic as with imperative XML processing, the
+          name of handlers for elements that has no XML namespace is
+          <code class="inline-code">N:<em class="code-color">elementName</em></code> if (and
+          only if) there is a default XML namespace. However, for nodes that
+          are not of type element (such as text nodes), you never use the
+          <code class="inline-code">N</code> prefix in the handler name, because those nodes
+          are free of the idea of XML namespaces. So for example, the handler
+          for text nodes is always just <code class="inline-code">@text</code>.</p>
+
+          <p>For more detailed information, please read <a href="ref_directive_visit.html">the reference of
+          <code>recurse</code> and <code>visit</code></a>
+          directives.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_declarative_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="app.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_expose.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_expose.html b/builds/2.3.26-nightly/xgui_expose.html
new file mode 100644
index 0000000..9bfddb1
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_expose.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Exposing XML documents - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Exposing XML documents">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_expose.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_expose.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_expose.html"><span itemprop="name">Exposing XML documents</span></a></li></ul><div class="bookm
 arks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Exposing XML documents"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_preface.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_expose_dom.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="xgui_expose" itemprop="headline">Exposing XML documents</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="xgui_expose_dom.html" data-menu-target="xgui_expose_dom">The DOM tree</a></li><li><a class="page-menu-link" href="xgui_expose_put.html" data-menu-target="xgui_expose_put">Putting the XML into the data-model</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_preface.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_expose_dom.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_expose_dom.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_expose_dom.html b/builds/2.3.26-nightly/xgui_expose_dom.html
new file mode 100644
index 0000000..d7b6fc5
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_expose_dom.html
@@ -0,0 +1,173 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The DOM tree - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The DOM tree">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_expose_dom.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_expose_dom.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_expose.html"><span itemprop="name">Exposing XML documents</span></a></li><li class="step-3" ite
 mprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_expose_dom.html"><span itemprop="name">The DOM tree</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Exposing XML documents","The DOM tree"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_expose.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_expose_put.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="xgui_expose_dom" itemprop="headline">The DOM tree</h1>
+</div></div><p>We will use this XML document for the examples:</p><a name="misc.example.bookXml"></a>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;book&gt;
+  &lt;title&gt;Test Book&lt;/title&gt;
+  &lt;chapter&gt;
+    &lt;title&gt;Ch1&lt;/title&gt;
+    &lt;para&gt;p1.1&lt;/para&gt;
+    &lt;para&gt;p1.2&lt;/para&gt;
+    &lt;para&gt;p1.3&lt;/para&gt;
+  &lt;/chapter&gt;
+  &lt;chapter&gt;
+    &lt;title&gt;Ch2&lt;/title&gt;
+    &lt;para&gt;p2.1&lt;/para&gt;
+    &lt;para&gt;p2.2&lt;/para&gt;
+  &lt;/chapter&gt;
+&lt;/book&gt;</pre></div><p>W3C DOM models an XML document as a tree of nodes. The node tree
+        of the above XML can be visualized as:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">document
+ |
+ +- element book
+     |
+     +- text &quot;\n  &quot;
+     |
+     +- element title
+     |   |
+     |   +- text &quot;Test Book&quot;
+     |
+     +- text &quot;\n  &quot;
+     |
+     +- element chapter
+     |   |
+     |   +- text &quot;\n    &quot;
+     |   |
+     |   +- element title
+     |   |   |
+     |   |   +- text &quot;Ch1&quot;
+     |   |
+     |   +- text &quot;\n    &quot;
+     |   |
+     |   +- element para
+     |   |   |
+     |   |   +- text &quot;p1.1&quot;
+     |   |
+     |   +- text &quot;\n    &quot;
+     |   |
+     |   +- element para
+     |   |   |
+     |   |   +- text &quot;p1.2&quot;
+     |   |
+     |   +- text &quot;\n    &quot;
+     |   |
+     |   +- element para
+     |      |
+     |      +- text &quot;p1.3&quot;
+     |
+     +- element
+         |
+         +- text &quot;\n    &quot;
+         |
+         +- element title
+         |   |
+         |   +- text &quot;Ch2&quot;
+         |
+         +- text &quot;\n    &quot;
+         |
+         +- element para
+         |   |
+         |   +- text &quot;p2.1&quot;
+         |
+         +- text &quot;\n    &quot;
+         |
+         +- element para
+             |
+             +- text &quot;p2.2&quot;</pre></div><p>Note that the disturbing <code class="inline-code">&quot;\n��&quot;</code>-s are the
+        line-breaks (indicated here with <code class="inline-code">\n</code>, an escape
+        sequence used in FTL string literals) and the indentation spaces
+        between the tags.</p><p>Notes on the DOM related terminology:</p><ul>
+          <li>
+            <p>The topmost node of a tree is called the <strong>root</strong>. In the case of XML documents, it is
+            always the "document" node, and not the top-most
+            element (<code class="inline-code">book</code> in this example).</p>
+          </li>
+
+          <li>
+            <p>We say that node B is the <strong>child</strong> of node A, if B is the
+            <em>immediate</em> descendant of A. For example, the
+            two <code class="inline-code">chapter</code> element nodes are the children of
+            the <code class="inline-code">book</code> element node, but the
+            <code class="inline-code">para</code> element nodes are not.</p>
+          </li>
+
+          <li>
+            <p>We say that node A is the <strong>parent</strong> of node B, if A is the
+            <em>immediate</em> ascendant of node B, that is, if B
+            is the children of A. For example, the <code class="inline-code">book</code>
+            element node is the parent of the two <code class="inline-code">chapter</code>
+            element nodes, but it is not the parent of the
+            <code class="inline-code">para</code> element nodes.</p>
+          </li>
+
+          <li>
+            <p>There are several kind of components that can occur in XML
+            documents, such as elements, text, comments, processing
+            instructions, etc. All such components are nodes in the DOM tree,
+            so there are element nodes, text nodes, comment nodes, etc. In
+            principle, the attributes of elements are also nodes in the tree
+            -- they are the children of the element --, but still, usually we
+            (and other XML related technologies) exclude them of element
+            children. So basically they don&#39;t count as children nodes.</p>
+          </li>
+        </ul><p>The programmer drops the document node of the DOM tree into the
+        FreeMarker data-model, and then the template author can walk the DOM
+        tree using that variable as the starting-point.</p><p>The DOM nodes in FTL correspond to <strong>node
+        variables</strong>. This is a variable type, similarly to type
+        string, number, hash, etc. Node variable type makes it possible for
+        FreeMarker to get the parent node and the child nodes of a node. This
+        is technically required to allow the template author to navigate
+        between the nodes, say, to use the <a href="ref_builtins_node.html">node built-ins</a> or the <a href="ref_directive_visit.html#ref.directive.visit"><code>visit</code></a> and
+        <a href="ref_directive_visit.html#ref.directive.recurse"><code>recurse</code></a>
+        directives; we will show the usage of these in the further
+        chapters.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_expose.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_expose_put.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_expose_put.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_expose_put.html b/builds/2.3.26-nightly/xgui_expose_put.html
new file mode 100644
index 0000000..5c1df21
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_expose_put.html
@@ -0,0 +1,83 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Putting the XML into the data-model - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Putting the XML into the data-model">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_expose_put.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_expose_put.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_expose.html"><span itemprop="name">Exposing XML documents</span></a></li><li class="step-3" ite
 mprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_expose_put.html"><span itemprop="name">Putting the XML into the data-model</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Exposing XML documents","Putting the XML into the data-model"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_expose_dom.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_imperative.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="xgui_expose_put" itemprop="headline">Putting the XML into the data-model</h1>
+</div></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>This section is for programmers.</p>
+          </div>
+<p>It&#39;s easy to create a simple program to try the examples. Just
+        replace the "Create a data-model" part of <a href="pgui_quickstart_all.html">the example of Programmer&#39;s Guide
+        Quickstart</a> with this:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">/* Create a data-model */
+Map root = new HashMap();
+root.put(
+        &quot;doc&quot;,
+        freemarker.ext.dom.NodeModel.parse(new File(&quot;<em>the/path/of/the.xml</em>&quot;)));</pre></div><p>and then you have a program that outputs the result of the XML
+        transformation to the standard output (usually the terminal
+        screen).</p><p>Notes:</p><ul>
+          <li>
+            <p>The <code class="inline-code">parse</code> method removes comment and
+            processing instruction nodes by default. See the API for more
+            details.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">NodeModel</code> also allows you to wrap
+            <code class="inline-code">org.w3c.dom.Node</code>-s directly. You may want to
+            clean up the DOM tree first with the static utility methods, such
+            as <code class="inline-code">NodeModel.simplify</code> or your own custom
+            cleanup routines.</p>
+          </li>
+        </ul><p>Note that there are tools available that you can use to generate
+        files from XML documents, so you don&#39;t have to write your own for this
+        common task. <a href="pgui_misc_ant.html">See here...</a></p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_expose_dom.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_imperative.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/xgui_imperative.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/xgui_imperative.html b/builds/2.3.26-nightly/xgui_imperative.html
new file mode 100644
index 0000000..4dc1cff
--- /dev/null
+++ b/builds/2.3.26-nightly/xgui_imperative.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Imperative XML processing - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Imperative XML processing">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/xgui_imperative.html">
+<link rel="canonical" href="http://freemarker.org/docs/xgui_imperative.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui.html"><span itemprop="name">XML Processing Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="xgui_imperative.html"><span itemprop="name">Imperative XML processing</span></a></li></ul><div class
 ="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","XML Processing Guide","Imperative XML processing"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_expose_put.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_imperative_learn.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="xgui_imperative" itemprop="headline">Imperative XML processing</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="xgui_imperative_learn.html" data-menu-target="xgui_imperative_learn">Basics</a></li><li><a class="page-menu-link" href="xgui_imperative_formal.html" data-menu-target="xgui_imperative_formal">Details</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_expose_put.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui_imperative_learn.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[17/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/sitemap.xml
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/sitemap.xml b/builds/2.3.26-nightly/sitemap.xml
new file mode 100644
index 0000000..ebad5a3
--- /dev/null
+++ b/builds/2.3.26-nightly/sitemap.xml
@@ -0,0 +1,525 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+      <url>
+        <loc>http://freemarker.org/docs/index.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_quickstart.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_quickstart_basics.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_quickstart_datamodel.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_quickstart_template.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_datamodel.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_datamodel_basics.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_datamodel_types.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_template.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_template_overallstructure.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_template_directives.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_template_exp.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_template_valueinsertion.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_misc.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_misc_userdefdir.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_misc_var.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_misc_namespace.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_misc_autoescaping.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_misc_whitespace.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/dgui_misc_alternativesyntax.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_quickstart.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_quickstart_createconfiguration.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_quickstart_createdatamodel.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_quickstart_gettemplate.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_quickstart_merge.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_quickstart_all.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel_basics.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel_scalar.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel_parent.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel_method.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel_directive.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel_node.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_datamodel_objectWrapper.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_basics.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_sharedvariables.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_settings.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_templateloading.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_errorhandling.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_templateconfigurations.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_outputformatsautoesc.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_custom_formats.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_config_incompatible_improvements.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_var.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_charset.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_multithreading.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_beanwrapper.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_logging.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_servlet.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_secureenv.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_xml_legacy.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_ant.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/pgui_misc_jythonwrapper.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_alphaidx.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_string.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_number.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_date.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_boolean.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_sequence.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_hash.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_node.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_loop_var.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_type_independent.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_builtins_expert.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directives.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_alphaidx.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_assign.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_attempt.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_autoesc.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_compress.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_escape.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_flush.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_ftl.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_function.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_global.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_if.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_import.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_include.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_list.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_local.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_macro.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_noautoesc.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_noparse.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_nt.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_outputformat.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_setting.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_stop.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_switch.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_t.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_userDefined.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_directive_visit.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_specvar.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_reservednames.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_deprecated.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_depr_directive.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_depr_builtin.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_depr_oldmacro.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_depr_transform.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_depr_oldsyntax.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/ref_depr_numerical_interpolation.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_preface.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_expose.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_expose_dom.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_expose_put.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_imperative.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_imperative_learn.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_imperative_formal.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_declarative.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_declarative_basics.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/xgui_declarative_details.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/app.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/app_faq.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/app_versions.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_26.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_25.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_24.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_23.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_22.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_21.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_20.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_19.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_18.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_17.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_16.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_15.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_14.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_13.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_12.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_11.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_10.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_9.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_8.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_7.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_7rc1.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_6.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_5.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_4.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_3.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_2.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3_1.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_3.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_8.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_7.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_6.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_5.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_4.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_3.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_2.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2_1.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_2.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_1_5.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_1_4.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_1_3.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_1_2.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_1_1.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_1.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_01.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_0.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_0RC3.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_0RC2.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/versions_2_0RC1.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/app_install.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/app_legal.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/app_license.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/app_eccn.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/gloss.html</loc>
+      </url>
+      <url>
+        <loc>http://freemarker.org/docs/alphaidx.html</loc>
+      </url>
+</urlset>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/toc.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/toc.html b/builds/2.3.26-nightly/toc.html
new file mode 100644
index 0000000..4c4f3f7
--- /dev/null
+++ b/builds/2.3.26-nightly/toc.html
@@ -0,0 +1,64 @@
+<!doctype html>
+<!--
+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
+&quot;License&quot;); 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
+&quot;AS IS&quot; 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.
+-->
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-book">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Apache FreeMarker Manual">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/toc.html">
+<link rel="canonical" href="http://freemarker.org/docs/toc.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489401428287">
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="toc.html" class="navigation-header">Manual</a><div class="navigation-header"></div></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.
 org/ListItem"><span itemprop="name">Table of Contents</span></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = [];</script>
+      <script src="toc.js?1489401428287"></script>
+      <script src="docgen-resources/main.min.js?1489401428287"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><span class="paging-arrow disabled previous"><span>Previous</span></span><a class="paging-arrow next" href="index.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-book" id="autoid_1" itemprop="headline">Apache FreeMarker Manual <span class="subtitle productname">For Freemarker 2.3.26</span>
+</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Table of Contents</div>
+<ul><li><a class="page-menu-link" href="index.html" data-menu-target="preface">What is Apache FreeMarker?</a></li><li><a class="page-menu-link" href="dgui.html" data-menu-target="dgui">Template Author&#39;s Guide</a><ul><li><a class="page-menu-link" href="dgui_quickstart.html" data-menu-target="dgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="dgui_quickstart_basics.html" data-menu-target="dgui_quickstart_basics">Template + data-model = output</a></li><li><a class="page-menu-link" href="dgui_quickstart_datamodel.html" data-menu-target="dgui_quickstart_datamodel">The data-model at a glance</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html" data-menu-target="dgui_quickstart_template">The template at a glance</a></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel.html" data-menu-target="dgui_datamodel">Values, Types</a><ul><li><a class="page-menu-link" href="dgui_datamodel_basics.html" data-menu-target="dgui_datamodel_basi
 cs">Basics</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html" data-menu-target="dgui_datamodel_types">The types</a></li></ul></li><li><a class="page-menu-link" href="dgui_template.html" data-menu-target="dgui_template">The Template</a><ul><li><a class="page-menu-link" href="dgui_template_overallstructure.html" data-menu-target="dgui_template_overallstructure">Overall structure</a></li><li><a class="page-menu-link" href="dgui_template_directives.html" data-menu-target="dgui_template_directives">Directives</a></li><li><a class="page-menu-link" href="dgui_template_exp.html" data-menu-target="dgui_template_exp">Expressions</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html" data-menu-target="dgui_template_valueinsertion">Interpolations</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc.html" data-menu-target="dgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html" data-menu-target="dgui_mi
 sc_userdefdir">Defining your own directives</a></li><li><a class="page-menu-link" href="dgui_misc_var.html" data-menu-target="dgui_misc_var">Defining variables in the template</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html" data-menu-target="dgui_misc_namespace">Namespaces</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html" data-menu-target="dgui_misc_autoescaping">Auto-escaping and output formats</a></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html" data-menu-target="dgui_misc_whitespace">White-space handling</a></li><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html" data-menu-target="dgui_misc_alternativesyntax">Alternative (square bracket) syntax</a></li></ul></li></ul></li><li><a class="page-menu-link" href="pgui.html" data-menu-target="pgui">Programmer&#39;s Guide</a><ul><li><a class="page-menu-link" href="pgui_quickstart.html" data-menu-target="pgui_quickstart">Getting Started</a><ul><li><a class="p
 age-menu-link" href="pgui_quickstart_createconfiguration.html" data-menu-target="pgui_quickstart_createconfiguration">Create a configuration instance</a></li><li><a class="page-menu-link" href="pgui_quickstart_createdatamodel.html" data-menu-target="pgui_quickstart_createdatamodel">Create a data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_gettemplate.html" data-menu-target="pgui_quickstart_gettemplate">Get the template</a></li><li><a class="page-menu-link" href="pgui_quickstart_merge.html" data-menu-target="pgui_quickstart_merge">Merging the template with the data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_all.html" data-menu-target="pgui_quickstart_all">Putting all together</a></li></ul></li><li><a class="page-menu-link" href="pgui_datamodel.html" data-menu-target="pgui_datamodel">The Data Model</a><ul><li><a class="page-menu-link" href="pgui_datamodel_basics.html" data-menu-target="pgui_datamodel_basics">Basics</a></li><li><a class="pag
 e-menu-link" href="pgui_datamodel_scalar.html" data-menu-target="pgui_datamodel_scalar">Scalars</a></li><li><a class="page-menu-link" href="pgui_datamodel_parent.html" data-menu-target="pgui_datamodel_parent">Containers</a></li><li><a class="page-menu-link" href="pgui_datamodel_method.html" data-menu-target="pgui_datamodel_method">Methods</a></li><li><a class="page-menu-link" href="pgui_datamodel_directive.html" data-menu-target="pgui_datamodel_directive">Directives</a></li><li><a class="page-menu-link" href="pgui_datamodel_node.html" data-menu-target="pgui_datamodel_node">Node variables</a></li><li><a class="page-menu-link" href="pgui_datamodel_objectWrapper.html" data-menu-target="pgui_datamodel_objectWrapper">Object wrappers</a></li></ul></li><li><a class="page-menu-link" href="pgui_config.html" data-menu-target="pgui_config">The Configuration</a><ul><li><a class="page-menu-link" href="pgui_config_basics.html" data-menu-target="pgui_config_basics">Basics</a></li><li><a class="pag
 e-menu-link" href="pgui_config_sharedvariables.html" data-menu-target="pgui_config_sharedvariables">Shared variables</a></li><li><a class="page-menu-link" href="pgui_config_settings.html" data-menu-target="pgui_config_settings">Settings</a></li><li><a class="page-menu-link" href="pgui_config_templateloading.html" data-menu-target="pgui_config_templateloading">Template loading</a></li><li><a class="page-menu-link" href="pgui_config_errorhandling.html" data-menu-target="pgui_config_errorhandling">Error handling</a></li><li><a class="page-menu-link" href="pgui_config_templateconfigurations.html" data-menu-target="pgui_config_templateconfigurations">Template configurations</a></li><li><a class="page-menu-link" href="pgui_config_outputformatsautoesc.html" data-menu-target="pgui_config_outputformatsautoesc">Associating output formats with templates</a></li><li><a class="page-menu-link" href="pgui_config_custom_formats.html" data-menu-target="pgui_config_custom_formats">Custom number and d
 ate/time formats</a></li><li><a class="page-menu-link" href="pgui_config_incompatible_improvements.html" data-menu-target="pgui_config_incompatible_improvements">The &quot;incompatible improvements&quot; setting</a></li></ul></li><li><a class="page-menu-link" href="pgui_misc.html" data-menu-target="pgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="pgui_misc_var.html" data-menu-target="pgui_misc_var">Variables, scopes</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html" data-menu-target="pgui_misc_charset">Charset issues</a></li><li><a class="page-menu-link" href="pgui_misc_multithreading.html" data-menu-target="pgui_misc_multithreading">Multithreading</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html" data-menu-target="pgui_misc_beanwrapper">Bean wrapper</a></li><li><a class="page-menu-link" href="pgui_misc_logging.html" data-menu-target="pgui_misc_logging">Logging</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.htm
 l" data-menu-target="pgui_misc_servlet">Using FreeMarker with servlets</a></li><li><a class="page-menu-link" href="pgui_misc_secureenv.html" data-menu-target="pgui_misc_secureenv">Configuring security policy for FreeMarker</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html" data-menu-target="pgui_misc_xml_legacy">Legacy XML wrapper implementation</a></li><li><a class="page-menu-link" href="pgui_misc_ant.html" data-menu-target="pgui_misc_ant">Using FreeMarker with Ant</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html" data-menu-target="pgui_misc_jythonwrapper">Jython wrapper</a></li></ul></li></ul></li><li><a class="page-menu-link" href="ref.html" data-menu-target="ref">Template Language Reference</a><ul><li><a class="page-menu-link" href="ref_builtins.html" data-menu-target="ref_builtins">Built-in Reference</a><ul><li><a class="page-menu-link" href="ref_builtins_alphaidx.html" data-menu-target="ref_builtins_alphaidx">Alphabetical index</a></
 li><li><a class="page-menu-link" href="ref_builtins_string.html" data-menu-target="ref_builtins_string">Built-ins for strings</a></li><li><a class="page-menu-link" href="ref_builtins_number.html" data-menu-target="ref_builtins_number">Built-ins for numbers</a></li><li><a class="page-menu-link" href="ref_builtins_date.html" data-menu-target="ref_builtins_date">Built-ins for date/time/date-time values</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html" data-menu-target="ref_builtins_boolean">Built-ins for booleans</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html" data-menu-target="ref_builtins_sequence">Built-ins for sequences</a></li><li><a class="page-menu-link" href="ref_builtins_hash.html" data-menu-target="ref_builtins_hash">Built-ins for hashes</a></li><li><a class="page-menu-link" href="ref_builtins_node.html" data-menu-target="ref_builtins_node">Built-ins for nodes (for XML)</a></li><li><a class="page-menu-link" href="ref_builtins_loop_
 var.html" data-menu-target="ref_builtins_loop_var">Loop variable built-ins</a></li><li><a class="page-menu-link" href="ref_builtins_type_independent.html" data-menu-target="ref_builtins_type_independent">Type independent built-ins</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html" data-menu-target="ref_builtins_expert">Seldom used and expert built-ins</a></li></ul></li><li><a class="page-menu-link" href="ref_directives.html" data-menu-target="ref_directives">Directive Reference</a><ul><li><a class="page-menu-link" href="ref_directive_alphaidx.html" data-menu-target="ref_directive_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_directive_assign.html" data-menu-target="ref_directive_assign">assign</a></li><li><a class="page-menu-link" href="ref_directive_attempt.html" data-menu-target="ref_directive_attempt">attempt, recover</a></li><li><a class="page-menu-link" href="ref_directive_autoesc.html" data-menu-target="ref_directive_autoesc">a
 utoesc</a></li><li><a class="page-menu-link" href="ref_directive_compress.html" data-menu-target="ref_directive_compress">compress</a></li><li><a class="page-menu-link" href="ref_directive_escape.html" data-menu-target="ref_directive_escape">escape, noescape (deprecated)</a></li><li><a class="page-menu-link" href="ref_directive_flush.html" data-menu-target="ref_directive_flush">flush</a></li><li><a class="page-menu-link" href="ref_directive_ftl.html" data-menu-target="ref_directive_ftl">ftl</a></li><li><a class="page-menu-link" href="ref_directive_function.html" data-menu-target="ref_directive_function">function, return</a></li><li><a class="page-menu-link" href="ref_directive_global.html" data-menu-target="ref_directive_global">global</a></li><li><a class="page-menu-link" href="ref_directive_if.html" data-menu-target="ref_directive_if">if, else, elseif</a></li><li><a class="page-menu-link" href="ref_directive_import.html" data-menu-target="ref_directive_import">import</a></li><li><
 a class="page-menu-link" href="ref_directive_include.html" data-menu-target="ref_directive_include">include</a></li><li><a class="page-menu-link" href="ref_directive_list.html" data-menu-target="ref_directive_list">list, else, items, sep, break</a></li><li><a class="page-menu-link" href="ref_directive_local.html" data-menu-target="ref_directive_local">local</a></li><li><a class="page-menu-link" href="ref_directive_macro.html" data-menu-target="ref_directive_macro">macro, nested, return</a></li><li><a class="page-menu-link" href="ref_directive_noautoesc.html" data-menu-target="ref_directive_noautoesc">noautoesc</a></li><li><a class="page-menu-link" href="ref_directive_noparse.html" data-menu-target="ref_directive_noparse">noparse</a></li><li><a class="page-menu-link" href="ref_directive_nt.html" data-menu-target="ref_directive_nt">nt</a></li><li><a class="page-menu-link" href="ref_directive_outputformat.html" data-menu-target="ref_directive_outputformat">outputformat</a></li><li><a c
 lass="page-menu-link" href="ref_directive_setting.html" data-menu-target="ref_directive_setting">setting</a></li><li><a class="page-menu-link" href="ref_directive_stop.html" data-menu-target="ref_directive_stop">stop</a></li><li><a class="page-menu-link" href="ref_directive_switch.html" data-menu-target="ref_directive_switch">switch, case, default, break</a></li><li><a class="page-menu-link" href="ref_directive_t.html" data-menu-target="ref_directive_t">t, lt, rt</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html" data-menu-target="ref_directive_userDefined">User-defined directive (&lt;@...&gt;)</a></li><li><a class="page-menu-link" href="ref_directive_visit.html" data-menu-target="ref_directive_visit">visit, recurse, fallback</a></li></ul></li><li><a class="page-menu-link" href="ref_specvar.html" data-menu-target="ref_specvar">Special Variable Reference</a></li><li><a class="page-menu-link" href="ref_reservednames.html" data-menu-target="ref_reservednames">R
 eserved names in FTL</a></li><li><a class="page-menu-link" href="ref_deprecated.html" data-menu-target="ref_deprecated">Deprecated FTL constructs</a><ul><li><a class="page-menu-link" href="ref_depr_directive.html" data-menu-target="ref_depr_directive">List of deprecated directives</a></li><li><a class="page-menu-link" href="ref_depr_builtin.html" data-menu-target="ref_depr_builtin">List of deprecated built-ins</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html" data-menu-target="ref_depr_oldmacro">Old-style macro and call directives</a></li><li><a class="page-menu-link" href="ref_depr_transform.html" data-menu-target="ref_depr_transform">Transform directive</a></li><li><a class="page-menu-link" href="ref_depr_oldsyntax.html" data-menu-target="ref_depr_oldsyntax">Old FTL syntax</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html" data-menu-target="ref_depr_numerical_interpolation">#{...}: Numerical interpolation</a></li></ul></li></ul></l
 i><li><a class="page-menu-link" href="xgui.html" data-menu-target="xgui">XML Processing Guide</a><ul><li><a class="page-menu-link" href="xgui_preface.html" data-menu-target="xgui_preface">Preface</a></li><li><a class="page-menu-link" href="xgui_expose.html" data-menu-target="xgui_expose">Exposing XML documents</a><ul><li><a class="page-menu-link" href="xgui_expose_dom.html" data-menu-target="xgui_expose_dom">The DOM tree</a></li><li><a class="page-menu-link" href="xgui_expose_put.html" data-menu-target="xgui_expose_put">Putting the XML into the data-model</a></li></ul></li><li><a class="page-menu-link" href="xgui_imperative.html" data-menu-target="xgui_imperative">Imperative XML processing</a><ul><li><a class="page-menu-link" href="xgui_imperative_learn.html" data-menu-target="xgui_imperative_learn">Basics</a></li><li><a class="page-menu-link" href="xgui_imperative_formal.html" data-menu-target="xgui_imperative_formal">Details</a></li></ul></li><li><a class="page-menu-link" href="xg
 ui_declarative.html" data-menu-target="xgui_declarative">Declarative XML processing</a><ul><li><a class="page-menu-link" href="xgui_declarative_basics.html" data-menu-target="xgui_declarative_basics">Basics</a></li><li><a class="page-menu-link" href="xgui_declarative_details.html" data-menu-target="xgui_declarative_details">Details</a></li></ul></li></ul></li><li><a class="page-menu-link" href="app.html" data-menu-target="app">Appendixes</a><ul><li><a class="page-menu-link" href="app_faq.html" data-menu-target="app_faq">FAQ</a></li><li><a class="page-menu-link" href="app_versions.html" data-menu-target="app_versions">Version history</a><ul><li><a class="page-menu-link" href="versions_2_3_26.html" data-menu-target="versions_2_3_26">2.3.26 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_25.html" data-menu-target="versions_2_3_25">2.3.25 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_24.html" data-menu-target="versions_2_
 3_24">2.3.24 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_23.html" data-menu-target="versions_2_3_23">2.3.23</a></li><li><a class="page-menu-link" href="versions_2_3_22.html" data-menu-target="versions_2_3_22">2.3.22</a></li><li><a class="page-menu-link" href="versions_2_3_21.html" data-menu-target="versions_2_3_21">2.3.21</a></li><li><a class="page-menu-link" href="versions_2_3_20.html" data-menu-target="versions_2_3_20">2.3.20</a></li><li><a class="page-menu-link" href="versions_2_3_19.html" data-menu-target="versions_2_3_19">2.3.19</a></li><li><a class="page-menu-link" href="versions_2_3_18.html" data-menu-target="versions_2_3_18">2.3.18</a></li><li><a class="page-menu-link" href="versions_2_3_17.html" data-menu-target="versions_2_3_17">2.3.17</a></li><li><a class="page-menu-link" href="versions_2_3_16.html" data-menu-target="versions_2_3_16">2.3.16</a></li><li><a class="page-menu-link" href="versions_2_3_15.html" data-menu-target="versions_2_3_
 15">2.3.15</a></li><li><a class="page-menu-link" href="versions_2_3_14.html" data-menu-target="versions_2_3_14">2.3.14</a></li><li><a class="page-menu-link" href="versions_2_3_13.html" data-menu-target="versions_2_3_13">2.3.13</a></li><li><a class="page-menu-link" href="versions_2_3_12.html" data-menu-target="versions_2_3_12">2.3.12</a></li><li><a class="page-menu-link" href="versions_2_3_11.html" data-menu-target="versions_2_3_11">2.3.11</a></li><li><a class="page-menu-link" href="versions_2_3_10.html" data-menu-target="versions_2_3_10">2.3.10</a></li><li><a class="page-menu-link" href="versions_2_3_9.html" data-menu-target="versions_2_3_9">2.3.9</a></li><li><a class="page-menu-link" href="versions_2_3_8.html" data-menu-target="versions_2_3_8">2.3.8</a></li><li><a class="page-menu-link" href="versions_2_3_7.html" data-menu-target="versions_2_3_7">2.3.7</a></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html" data-menu-target="versions_2_3_7rc1">2.3.7 RC1</a></li><li><a c
 lass="page-menu-link" href="versions_2_3_6.html" data-menu-target="versions_2_3_6">2.3.6</a></li><li><a class="page-menu-link" href="versions_2_3_5.html" data-menu-target="versions_2_3_5">2.3.5</a></li><li><a class="page-menu-link" href="versions_2_3_4.html" data-menu-target="versions_2_3_4">2.3.4</a></li><li><a class="page-menu-link" href="versions_2_3_3.html" data-menu-target="versions_2_3_3">2.3.3</a></li><li><a class="page-menu-link" href="versions_2_3_2.html" data-menu-target="versions_2_3_2">2.3.2</a></li><li><a class="page-menu-link" href="versions_2_3_1.html" data-menu-target="versions_2_3_1">2.3.1</a></li><li><a class="page-menu-link" href="versions_2_3.html" data-menu-target="versions_2_3">2.3</a></li><li><a class="page-menu-link" href="versions_2_2_8.html" data-menu-target="versions_2_2_8">2.2.8</a></li><li><a class="page-menu-link" href="versions_2_2_7.html" data-menu-target="versions_2_2_7">2.2.7</a></li><li><a class="page-menu-link" href="versions_2_2_6.html" data-menu
 -target="versions_2_2_6">2.2.6</a></li><li><a class="page-menu-link" href="versions_2_2_5.html" data-menu-target="versions_2_2_5">2.2.5</a></li><li><a class="page-menu-link" href="versions_2_2_4.html" data-menu-target="versions_2_2_4">2.2.4</a></li><li><a class="page-menu-link" href="versions_2_2_3.html" data-menu-target="versions_2_2_3">2.2.3</a></li><li><a class="page-menu-link" href="versions_2_2_2.html" data-menu-target="versions_2_2_2">2.2.2</a></li><li><a class="page-menu-link" href="versions_2_2_1.html" data-menu-target="versions_2_2_1">2.2.1</a></li><li><a class="page-menu-link" href="versions_2_2.html" data-menu-target="versions_2_2">2.2</a></li><li><a class="page-menu-link" href="versions_2_1_5.html" data-menu-target="versions_2_1_5">2.1.5</a></li><li><a class="page-menu-link" href="versions_2_1_4.html" data-menu-target="versions_2_1_4">2.1.4</a></li><li><a class="page-menu-link" href="versions_2_1_3.html" data-menu-target="versions_2_1_3">2.1.3</a></li><li><a class="page-
 menu-link" href="versions_2_1_2.html" data-menu-target="versions_2_1_2">2.1.2</a></li><li><a class="page-menu-link" href="versions_2_1_1.html" data-menu-target="versions_2_1_1">2.1.1</a></li><li><a class="page-menu-link" href="versions_2_1.html" data-menu-target="versions_2_1">2.1</a></li><li><a class="page-menu-link" href="versions_2_01.html" data-menu-target="versions_2_01">2.01</a></li><li><a class="page-menu-link" href="versions_2_0.html" data-menu-target="versions_2_0">2.0</a></li><li><a class="page-menu-link" href="versions_2_0RC3.html" data-menu-target="versions_2_0RC3">2.0 RC3</a></li><li><a class="page-menu-link" href="versions_2_0RC2.html" data-menu-target="versions_2_0RC2">2.0 RC2</a></li><li><a class="page-menu-link" href="versions_2_0RC1.html" data-menu-target="versions_2_0RC1">2.0 RC1</a></li></ul></li><li><a class="page-menu-link" href="app_install.html" data-menu-target="app_install">Installing FreeMarker</a></li><li><a class="page-menu-link" href="app_legal.html" da
 ta-menu-target="app_legal">Legal</a><ul><li><a class="page-menu-link" href="app_license.html" data-menu-target="app_license">License</a></li><li><a class="page-menu-link" href="app_eccn.html" data-menu-target="app_eccn">Export Control</a></li></ul></li></ul></li><li><a class="page-menu-link" href="gloss.html" data-menu-target="gloss">Glossary</a></li><li><a class="page-menu-link" href="alphaidx.html" data-menu-target="alphaidx">Alphabetical Index</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><span class="paging-arrow disabled previous"><span>Previous</span></span><a class="paging-arrow next" href="index.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:37:08Z" title="Monday, March 13, 2017 10:37:08 AM GMT">2017-03-13 10:37:08 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>



[50/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
2.3.26-nightly docs preview


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/commit/52c070a9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/tree/52c070a9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/diff/52c070a9

Branch: refs/heads/asf-site
Commit: 52c070a951f4a78126b9dc8420a6ac32d38d5c7e
Parents: 127455e
Author: ddekany <dd...@apache.org>
Authored: Mon Mar 13 11:57:22 2017 +0100
Committer: ddekany <dd...@apache.org>
Committed: Mon Mar 13 11:57:22 2017 +0100

----------------------------------------------------------------------
 builds/2.3.26-nightly/alphaidx.html             | 1695 ++++++
 builds/2.3.26-nightly/app.html                  |   54 +
 builds/2.3.26-nightly/app_eccn.html             |   56 +
 builds/2.3.26-nightly/app_faq.html              | 1797 +++++++
 builds/2.3.26-nightly/app_install.html          |   97 +
 builds/2.3.26-nightly/app_legal.html            |   54 +
 builds/2.3.26-nightly/app_license.html          |  275 +
 builds/2.3.26-nightly/app_versions.html         |   54 +
 builds/2.3.26-nightly/detailed-toc.html         |   80 +
 builds/2.3.26-nightly/dgui.html                 |   54 +
 builds/2.3.26-nightly/dgui_datamodel.html       |   54 +
 .../2.3.26-nightly/dgui_datamodel_basics.html   |  230 +
 builds/2.3.26-nightly/dgui_datamodel_types.html |  512 ++
 builds/2.3.26-nightly/dgui_misc.html            |   54 +
 .../dgui_misc_alternativesyntax.html            |  119 +
 .../2.3.26-nightly/dgui_misc_autoescaping.html  |  718 +++
 builds/2.3.26-nightly/dgui_misc_namespace.html  |  315 ++
 builds/2.3.26-nightly/dgui_misc_userdefdir.html |  554 ++
 builds/2.3.26-nightly/dgui_misc_var.html        |  197 +
 builds/2.3.26-nightly/dgui_misc_whitespace.html |  296 ++
 builds/2.3.26-nightly/dgui_quickstart.html      |   57 +
 .../2.3.26-nightly/dgui_quickstart_basics.html  |  138 +
 .../dgui_quickstart_datamodel.html              |  199 +
 .../dgui_quickstart_template.html               |  707 +++
 builds/2.3.26-nightly/dgui_template.html        |   60 +
 .../dgui_template_directives.html               |  136 +
 builds/2.3.26-nightly/dgui_template_exp.html    | 2331 +++++++++
 .../dgui_template_overallstructure.html         |  131 +
 .../dgui_template_valueinsertion.html           |  310 ++
 .../docgen-resources/docgen.min.css             |    1 +
 .../docgen-resources/fonts/NOTICE               |   20 +
 .../docgen-resources/fonts/icomoon.eot          |  Bin 0 -> 4220 bytes
 .../docgen-resources/fonts/icomoon.svg          |   29 +
 .../docgen-resources/fonts/icomoon.ttf          |  Bin 0 -> 4056 bytes
 .../docgen-resources/fonts/icomoon.woff         |  Bin 0 -> 4132 bytes
 .../docgen-resources/img/callouts/1.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/10.gif        |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/11.gif        |  Bin 0 -> 244 bytes
 .../docgen-resources/img/callouts/12.gif        |  Bin 0 -> 244 bytes
 .../docgen-resources/img/callouts/13.gif        |  Bin 0 -> 244 bytes
 .../docgen-resources/img/callouts/14.gif        |  Bin 0 -> 244 bytes
 .../docgen-resources/img/callouts/2.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/3.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/4.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/5.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/6.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/7.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/8.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/callouts/9.gif         |  Bin 0 -> 968 bytes
 .../docgen-resources/img/patterned-bg.png       |  Bin 0 -> 4565 bytes
 .../2.3.26-nightly/docgen-resources/img/xxe.png |  Bin 0 -> 2649 bytes
 .../2.3.26-nightly/docgen-resources/main.min.js |    1 +
 builds/2.3.26-nightly/eclipse-toc.xml           |  698 +++
 builds/2.3.26-nightly/favicon.png               |  Bin 0 -> 1291 bytes
 builds/2.3.26-nightly/figures/model2sketch.png  |  Bin 0 -> 21425 bytes
 builds/2.3.26-nightly/figures/overview.png      |  Bin 0 -> 11837 bytes
 builds/2.3.26-nightly/figures/tree.png          |  Bin 0 -> 4699 bytes
 builds/2.3.26-nightly/gloss.html                |  770 +++
 builds/2.3.26-nightly/index.html                |   55 +
 builds/2.3.26-nightly/logo.png                  |  Bin 0 -> 10134 bytes
 builds/2.3.26-nightly/pgui.html                 |   54 +
 builds/2.3.26-nightly/pgui_config.html          |   55 +
 builds/2.3.26-nightly/pgui_config_basics.html   |   75 +
 .../pgui_config_custom_formats.html             |  700 +++
 .../pgui_config_errorhandling.html              |  391 ++
 .../pgui_config_incompatible_improvements.html  |  173 +
 .../pgui_config_outputformatsautoesc.html       |  210 +
 builds/2.3.26-nightly/pgui_config_settings.html |  378 ++
 .../pgui_config_sharedvariables.html            |  143 +
 .../pgui_config_templateconfigurations.html     |  314 ++
 .../pgui_config_templateloading.html            |  364 ++
 builds/2.3.26-nightly/pgui_datamodel.html       |   55 +
 .../2.3.26-nightly/pgui_datamodel_basics.html   |  105 +
 .../pgui_datamodel_directive.html               |  411 ++
 .../2.3.26-nightly/pgui_datamodel_method.html   |   90 +
 builds/2.3.26-nightly/pgui_datamodel_node.html  |  123 +
 .../pgui_datamodel_objectWrapper.html           |  412 ++
 .../2.3.26-nightly/pgui_datamodel_parent.html   |  129 +
 .../2.3.26-nightly/pgui_datamodel_scalar.html   |  154 +
 builds/2.3.26-nightly/pgui_misc.html            |   55 +
 builds/2.3.26-nightly/pgui_misc_ant.html        |  111 +
 .../2.3.26-nightly/pgui_misc_beanwrapper.html   |  666 +++
 builds/2.3.26-nightly/pgui_misc_charset.html    |  172 +
 .../2.3.26-nightly/pgui_misc_jythonwrapper.html |  133 +
 builds/2.3.26-nightly/pgui_misc_logging.html    |  239 +
 .../pgui_misc_multithreading.html               |   73 +
 builds/2.3.26-nightly/pgui_misc_secureenv.html  |   85 +
 builds/2.3.26-nightly/pgui_misc_servlet.html    |  691 +++
 builds/2.3.26-nightly/pgui_misc_var.html        |  113 +
 builds/2.3.26-nightly/pgui_misc_xml_legacy.html |  505 ++
 builds/2.3.26-nightly/pgui_quickstart.html      |   54 +
 builds/2.3.26-nightly/pgui_quickstart_all.html  |  142 +
 .../pgui_quickstart_createconfiguration.html    |  100 +
 .../pgui_quickstart_createdatamodel.html        |  170 +
 .../pgui_quickstart_gettemplate.html            |   70 +
 .../2.3.26-nightly/pgui_quickstart_merge.html   |   78 +
 builds/2.3.26-nightly/ref.html                  |   54 +
 builds/2.3.26-nightly/ref_builtins.html         |   54 +
 .../2.3.26-nightly/ref_builtins_alphaidx.html   |  503 ++
 builds/2.3.26-nightly/ref_builtins_boolean.html |  229 +
 builds/2.3.26-nightly/ref_builtins_date.html    |  545 ++
 builds/2.3.26-nightly/ref_builtins_expert.html  |  762 +++
 builds/2.3.26-nightly/ref_builtins_hash.html    |  142 +
 .../2.3.26-nightly/ref_builtins_loop_var.html   |  526 ++
 builds/2.3.26-nightly/ref_builtins_node.html    |  287 +
 builds/2.3.26-nightly/ref_builtins_number.html  |  797 +++
 .../2.3.26-nightly/ref_builtins_sequence.html   |  577 ++
 builds/2.3.26-nightly/ref_builtins_string.html  | 2374 +++++++++
 .../ref_builtins_type_independent.html          |  210 +
 builds/2.3.26-nightly/ref_depr_builtin.html     |  105 +
 builds/2.3.26-nightly/ref_depr_directive.html   |   91 +
 .../ref_depr_numerical_interpolation.html       |  135 +
 builds/2.3.26-nightly/ref_depr_oldmacro.html    |  198 +
 builds/2.3.26-nightly/ref_depr_oldsyntax.html   |  131 +
 builds/2.3.26-nightly/ref_depr_transform.html   |  163 +
 builds/2.3.26-nightly/ref_deprecated.html       |   54 +
 .../2.3.26-nightly/ref_directive_alphaidx.html  |  228 +
 builds/2.3.26-nightly/ref_directive_assign.html |  212 +
 .../2.3.26-nightly/ref_directive_attempt.html   |  206 +
 .../2.3.26-nightly/ref_directive_autoesc.html   |  125 +
 .../2.3.26-nightly/ref_directive_compress.html  |  107 +
 builds/2.3.26-nightly/ref_directive_escape.html |  232 +
 builds/2.3.26-nightly/ref_directive_flush.html  |   96 +
 builds/2.3.26-nightly/ref_directive_ftl.html    |  285 +
 .../2.3.26-nightly/ref_directive_function.html  |  173 +
 builds/2.3.26-nightly/ref_directive_global.html |  136 +
 builds/2.3.26-nightly/ref_directive_if.html     |  196 +
 builds/2.3.26-nightly/ref_directive_import.html |  153 +
 .../2.3.26-nightly/ref_directive_include.html   |  449 ++
 builds/2.3.26-nightly/ref_directive_list.html   |  638 +++
 builds/2.3.26-nightly/ref_directive_local.html  |  114 +
 builds/2.3.26-nightly/ref_directive_macro.html  |  450 ++
 .../2.3.26-nightly/ref_directive_noautoesc.html |  123 +
 .../2.3.26-nightly/ref_directive_noparse.html   |  105 +
 builds/2.3.26-nightly/ref_directive_nt.html     |   80 +
 .../ref_directive_outputformat.html             |  194 +
 .../2.3.26-nightly/ref_directive_setting.html   |  478 ++
 builds/2.3.26-nightly/ref_directive_stop.html   |   96 +
 builds/2.3.26-nightly/ref_directive_switch.html |  162 +
 builds/2.3.26-nightly/ref_directive_t.html      |  149 +
 .../ref_directive_userDefined.html              |  297 ++
 builds/2.3.26-nightly/ref_directive_visit.html  |  384 ++
 builds/2.3.26-nightly/ref_directives.html       |   54 +
 builds/2.3.26-nightly/ref_reservednames.html    |   96 +
 builds/2.3.26-nightly/ref_specvar.html          |  290 +
 builds/2.3.26-nightly/search-results.html       |   65 +
 builds/2.3.26-nightly/sitemap.xml               |  525 ++
 builds/2.3.26-nightly/toc.html                  |   64 +
 builds/2.3.26-nightly/toc.js                    | 4945 ++++++++++++++++++
 builds/2.3.26-nightly/versions_2_0.html         |  147 +
 builds/2.3.26-nightly/versions_2_01.html        |   59 +
 builds/2.3.26-nightly/versions_2_0RC1.html      |  268 +
 builds/2.3.26-nightly/versions_2_0RC2.html      |  219 +
 builds/2.3.26-nightly/versions_2_0RC3.html      |  138 +
 builds/2.3.26-nightly/versions_2_1.html         |  539 ++
 builds/2.3.26-nightly/versions_2_1_1.html       |  125 +
 builds/2.3.26-nightly/versions_2_1_2.html       |  130 +
 builds/2.3.26-nightly/versions_2_1_3.html       |   94 +
 builds/2.3.26-nightly/versions_2_1_4.html       |   73 +
 builds/2.3.26-nightly/versions_2_1_5.html       |   88 +
 builds/2.3.26-nightly/versions_2_2.html         | 1107 ++++
 builds/2.3.26-nightly/versions_2_2_1.html       |  126 +
 builds/2.3.26-nightly/versions_2_2_2.html       |   74 +
 builds/2.3.26-nightly/versions_2_2_3.html       |  106 +
 builds/2.3.26-nightly/versions_2_2_4.html       |  103 +
 builds/2.3.26-nightly/versions_2_2_5.html       |   68 +
 builds/2.3.26-nightly/versions_2_2_6.html       |  144 +
 builds/2.3.26-nightly/versions_2_2_7.html       |   70 +
 builds/2.3.26-nightly/versions_2_2_8.html       |  112 +
 builds/2.3.26-nightly/versions_2_3.html         | 1629 ++++++
 builds/2.3.26-nightly/versions_2_3_1.html       |  352 ++
 builds/2.3.26-nightly/versions_2_3_10.html      |  116 +
 builds/2.3.26-nightly/versions_2_3_11.html      |  226 +
 builds/2.3.26-nightly/versions_2_3_12.html      |   88 +
 builds/2.3.26-nightly/versions_2_3_13.html      |  125 +
 builds/2.3.26-nightly/versions_2_3_14.html      |  136 +
 builds/2.3.26-nightly/versions_2_3_15.html      |  115 +
 builds/2.3.26-nightly/versions_2_3_16.html      |  135 +
 builds/2.3.26-nightly/versions_2_3_17.html      |  331 ++
 builds/2.3.26-nightly/versions_2_3_18.html      |   87 +
 builds/2.3.26-nightly/versions_2_3_19.html      |  236 +
 builds/2.3.26-nightly/versions_2_3_2.html       |   77 +
 builds/2.3.26-nightly/versions_2_3_20.html      |  691 +++
 builds/2.3.26-nightly/versions_2_3_21.html      | 1419 +++++
 builds/2.3.26-nightly/versions_2_3_22.html      | 1197 +++++
 builds/2.3.26-nightly/versions_2_3_23.html      |  423 ++
 builds/2.3.26-nightly/versions_2_3_24.html      |  925 ++++
 builds/2.3.26-nightly/versions_2_3_25.html      |  228 +
 builds/2.3.26-nightly/versions_2_3_26.html      |  297 ++
 builds/2.3.26-nightly/versions_2_3_3.html       |  223 +
 builds/2.3.26-nightly/versions_2_3_4.html       |  121 +
 builds/2.3.26-nightly/versions_2_3_5.html       |  162 +
 builds/2.3.26-nightly/versions_2_3_6.html       |   68 +
 builds/2.3.26-nightly/versions_2_3_7.html       |  172 +
 builds/2.3.26-nightly/versions_2_3_7rc1.html    |  129 +
 builds/2.3.26-nightly/versions_2_3_8.html       |   98 +
 builds/2.3.26-nightly/versions_2_3_9.html       |  119 +
 builds/2.3.26-nightly/xgui.html                 |   54 +
 builds/2.3.26-nightly/xgui_declarative.html     |   54 +
 .../2.3.26-nightly/xgui_declarative_basics.html |  198 +
 .../xgui_declarative_details.html               |  220 +
 builds/2.3.26-nightly/xgui_expose.html          |   54 +
 builds/2.3.26-nightly/xgui_expose_dom.html      |  173 +
 builds/2.3.26-nightly/xgui_expose_put.html      |   83 +
 builds/2.3.26-nightly/xgui_imperative.html      |   54 +
 .../2.3.26-nightly/xgui_imperative_formal.html  |  545 ++
 .../2.3.26-nightly/xgui_imperative_learn.html   |  656 +++
 builds/2.3.26-nightly/xgui_preface.html         |   74 +
 208 files changed, 56425 insertions(+)
----------------------------------------------------------------------



[29/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_quickstart_all.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_quickstart_all.html b/builds/2.3.26-nightly/pgui_quickstart_all.html
new file mode 100644
index 0000000..608bead
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_quickstart_all.html
@@ -0,0 +1,142 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Putting all together - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Putting all together">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_quickstart_all.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_quickstart_all.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart_all.html"><span itemprop="name">Putting all together</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Getting Started","Putting all together"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_quickstart_merge.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_quickstart_all" itemprop="headline">Putting all together</h1>
+</div></div><p>This is a working source file assembled from the previous
+        fragments. Don&#39;t forget to put <code class="inline-code">freemarker.jar</code> into
+        the <code class="inline-code">CLASSPATH</code>.</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">import freemarker.template.*;
+import java.util.*;
+import java.io.*;
+
+public class Test {
+
+    public static void main(String[] args) throws Exception {
+
+        /* ------------------------------------------------------------------------ */
+        /* You should do this ONLY ONCE in the whole application life-cycle:        */
+
+        /* Create and adjust the configuration singleton */
+        Configuration cfg = new Configuration(Configuration.VERSION_2_3_25);
+        cfg.setDirectoryForTemplateLoading(new File(&quot;<em>/where/you/store/templates</em>&quot;));
+        cfg.setDefaultEncoding(&quot;UTF-8&quot;);
+        cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
+        cfg.setLogTemplateExceptions(false);
+
+        /* ------------------------------------------------------------------------ */
+        /* You usually do these for MULTIPLE TIMES in the application life-cycle:   */
+
+        /* Create a data-model */
+        Map root = new HashMap();
+        root.put(&quot;user&quot;, &quot;Big Joe&quot;);
+        Product latest = new Product();
+        latest.setUrl(&quot;products/greenmouse.html&quot;);
+        latest.setName(&quot;green mouse&quot;);
+        root.put(&quot;latestProduct&quot;, latest);
+
+        /* Get the template (uses cache internally) */
+        Template temp = cfg.getTemplate(&quot;test.ftlh&quot;);
+
+        /* Merge data-model with template */
+        Writer out = new OutputStreamWriter(System.out);
+        temp.process(root, out);
+        // Note: Depending on what `out` is, you may need to call `out.close()`.
+        // This is usually the case for file output, but not for servlet output.
+    }
+}</pre></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>I have suppressed the exceptions for the sake of simplicity.
+          Don&#39;t do it in real products.</p>
+          </div>
+<p>For the sake completeness, here&#39;s the the Product class used in
+        the data model:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">/**
+ * Product bean; note that it must be a public class!
+ */
+public class Product {
+
+    private String url;
+    private String name;
+
+    // As per the JavaBeans spec., this defines the &quot;url&quot; bean property
+    // It must be public!
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    // As per the JavaBean spec., this defines the &quot;name&quot; bean property
+    // It must be public!
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}</pre></div><p>and the template:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Welcome!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h1&gt;Welcome ${user}!&lt;/h1&gt;
+  &lt;p&gt;Our latest product:
+  &lt;a href=&quot;${latestProduct.url}&quot;&gt;${latestProduct.name}&lt;/a&gt;!
+&lt;/body&gt;
+&lt;/html&gt;</pre></div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_quickstart_merge.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_quickstart_createconfiguration.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_quickstart_createconfiguration.html b/builds/2.3.26-nightly/pgui_quickstart_createconfiguration.html
new file mode 100644
index 0000000..df95747
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_quickstart_createconfiguration.html
@@ -0,0 +1,100 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Create a configuration instance - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Create a configuration instance">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_quickstart_createconfiguration.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_quickstart_createconfiguration.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart_createconfiguration.html"><span itemprop="name">Create a configuration instance</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Getting Started","Create a configuration instance"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_quickstart.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_createdatamodel.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_quickstart_createconfiguration" itemprop="headline">Create a configuration instance</h1>
+</div></div><p>First you have to create a
+        <code class="inline-code">freemarker.template.Configuration</code> instance and
+        adjust its settings. A <code class="inline-code">Configuration</code> instance is
+        the central place to store the application level settings of
+        FreeMarker. Also, it deals with the creation and
+        <em>caching</em> of pre-parsed templates (i.e.,
+        <code class="inline-code">Template</code> objects).</p><p>Normally you will <em>do this only once</em> at the
+        beginning of the application (possibly servlet) life-cycle:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Create your Configuration instance, and specify if up to what FreeMarker
+// version (here 2.3.25) do you want to apply the fixes that are not 100%
+// backward-compatible. See the Configuration JavaDoc for details.
+Configuration cfg = new Configuration(Configuration.VERSION_2_3_25);
+
+// Specify the source where the template files come from. Here I set a
+// plain directory for it, but non-file-system sources are possible too:
+cfg.setDirectoryForTemplateLoading(new File(&quot;<em>/where/you/store/templates</em>&quot;));
+
+// Set the preferred charset template files are stored in. UTF-8 is
+// a good choice in most applications:
+cfg.setDefaultEncoding(&quot;UTF-8&quot;);
+
+// Sets how errors will appear.
+// During web page *development* TemplateExceptionHandler.HTML_DEBUG_HANDLER is better.
+cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
+
+// Don&#39;t log exceptions inside FreeMarker that it will thrown at you anyway:
+cfg.setLogTemplateExceptions(false);</pre></div><p>From now you should use this <em>single</em>
+        configuration instance (i.e., its a singleton). Note however that if a
+        system has multiple independent components that use FreeMarker, then
+        of course they will use their own private
+        <code class="inline-code">Configuration</code> instances.</p>  <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+          <p>Do not needlessly re-create <code class="inline-code">Configuration</code>
+          instances; it&#39;s expensive, among others because you lose the
+          template cache. <code class="inline-code">Configuration</code> instances meant to
+          be application-level singletons.</p>
+          </div>
+<p>In multi-threaded applications (like Web sites) the settings in
+        the <code class="inline-code">Configuration</code> instance must not be modified
+        anymore after this point. Thus it can be treated as "effectively
+        immutable" object, so you can continue with <em>safe
+        publishing</em> techniques (see JSR 133 and related literature)
+        to make the instance available for other threads. Like, publish the
+        instance through a final or volatile filed, or through a thread-safe
+        IoC container (like the one provided by Spring).
+        <code class="inline-code">Configuration</code> methods that don&#39;t deal with
+        modifying settings are thread-safe.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_quickstart.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_createdatamodel.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_quickstart_createdatamodel.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_quickstart_createdatamodel.html b/builds/2.3.26-nightly/pgui_quickstart_createdatamodel.html
new file mode 100644
index 0000000..1aec301
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_quickstart_createdatamodel.html
@@ -0,0 +1,170 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Create a data-model - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Create a data-model">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_quickstart_createdatamodel.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_quickstart_createdatamodel.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart_createdatamodel.html"><span itemprop="name">Create a data-model</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Getting Started","Create a data-model"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_quickstart_createconfiguration.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_gettemplate.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_quickstart_createdatamodel" itemprop="headline">Create a data-model</h1>
+</div></div><p>In simple cases you can build data-models using
+        <code class="inline-code">java.lang</code> and <code class="inline-code">java.util</code> classes
+        and custom JavaBeans:</p><ul>
+          <li>
+            <p>Use <code class="inline-code">java.lang.String</code> for strings.</p>
+          </li>
+
+          <li>
+            <p>Use <code class="inline-code">java.lang.Number</code> subclasses for
+            numbers.</p>
+          </li>
+
+          <li>
+            <p>Use <code class="inline-code">java.lang.Boolean</code> for boolean
+            values.</p>
+          </li>
+
+          <li>
+            <p>Use <code class="inline-code">java.util.Date</code> and its subclasses for
+            date/time values</p>
+          </li>
+
+          <li>
+            <p>Use <code class="inline-code">java.util.List</code> or Java arrays for
+            sequences.</p>
+          </li>
+
+          <li>
+            <p>Use <code class="inline-code">java.util.Map</code> with
+            <code class="inline-code">String</code> keys for hashes.</p>
+          </li>
+
+          <li>
+            <p>Use your custom bean class for hashes where the items
+            correspond to the bean properties. For example the
+            <code class="inline-code">price</code> property (<code class="inline-code">getPrice()</code>)
+            of <code class="inline-code">product</code> can be get as
+            <code class="inline-code">product.price</code>. (The actions of the beans can be
+            exposed as well; see much later <a href="pgui_misc_beanwrapper.html">here</a>)</p>
+          </li>
+        </ul><p>For example, let&#39;s build the data-model of the <a href="dgui_quickstart_basics.html#example.first">first example of the Template Author&#39;s
+        Guide</a>. For convenience, here it is again:</p>
+
+<div class="code-wrapper"><pre class="code-block code-data-model">(root)
+  |
+  +- user = &quot;Big Joe&quot;
+  |
+  +- latestProduct
+      |
+      +- url = &quot;products/greenmouse.html&quot;
+      |
+      +- name = &quot;green mouse&quot;</pre></div><p>This Java code fragment that builds this data-model:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Create the root hash. We use a Map here, but it could be a JavaBean too.
+Map&lt;String, Object&gt; root = new HashMap&lt;&gt;();
+
+// Put string &quot;user&quot; into the root
+root.put(&quot;user&quot;, &quot;Big Joe&quot;);
+
+// Create the &quot;latestProduct&quot; hash. We use a JavaBean here, but it could be a Map too.
+Product latest = new Product();
+latest.setUrl(&quot;products/greenmouse.html&quot;);
+latest.setName(&quot;green mouse&quot;);
+// and put it into the root
+root.put(&quot;latestProduct&quot;, latest);</pre></div><p>As demonstrated above, for hashes (something that stores other
+        named items) you can use either a <code class="inline-code">Map</code> or any kind
+        of public class that has public
+        <code class="inline-code">get<em class="code-color">Xxx</em></code>/<code class="inline-code">is<em class="code-color">Xxx</em></code>
+        methods as prescribed by the JavaBeans specification. Like the above
+        <code class="inline-code">Product</code> class could be something like:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">/**
+ * Product bean; note that it must be a public class!
+ */
+public class Product {
+
+    private String url;
+    private String name;
+
+    // As per the JavaBeans spec., this defines the &quot;url&quot; bean property
+    // It must be public!
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    // As per the JavaBean spec., this defines the &quot;name&quot; bean property
+    // It must be public!
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+}</pre></div><p>Regardless if <code class="inline-code">latestProduct</code> is a
+        <code class="inline-code">Map</code> that contains the <code class="inline-code">&quot;name&quot;</code> and
+        <code class="inline-code">&quot;url&quot;</code> keys, or it&#39;s a JavaBean as shown above, in
+        the template you can use <code class="inline-code">${latestProduct.name}</code>. The
+        root itself need not be a <code class="inline-code">Map</code> either; it could be
+        an object with <code class="inline-code">getUser()</code> and
+        <code class="inline-code">getLastestProduct()</code> methods too.</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>The behavior described here only stands if the value of the
+          <code class="inline-code">object_wrapper</code> configuration setting is something
+          that&#39;s used in almost all real world setups anyway. Anything that
+          the <code class="inline-code">ObjectWrapper</code> wraps to be a hash (something
+          that implements the <code class="inline-code">TemplateHashModel</code> interface)
+          can be used as the root, and can be traversed in templates with the
+          dot and <code class="inline-code">[]</code> operators. Something that it doesn&#39;t
+          wrap to be a hash can&#39;t be used as the root or be traversed like
+          that.</p>
+          </div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_quickstart_createconfiguration.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_gettemplate.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_quickstart_gettemplate.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_quickstart_gettemplate.html b/builds/2.3.26-nightly/pgui_quickstart_gettemplate.html
new file mode 100644
index 0000000..5f8846d
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_quickstart_gettemplate.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Get the template - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Get the template">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_quickstart_gettemplate.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_quickstart_gettemplate.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart_gettemplate.html"><span itemprop="name">Get the template</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Getting Started","Get the template"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_quickstart_createdatamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_merge.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_quickstart_gettemplate" itemprop="headline">Get the template</h1>
+</div></div><p>Templates are represented by
+        <code class="inline-code">freemarker.template.Template</code> instances. Typically
+        you obtain a <code class="inline-code">Template</code> instance from the
+        <code class="inline-code">Configuration</code> instance, using its.
+        <code class="inline-code">getTemplate</code> method. If you store <a href="dgui_quickstart_basics.html#example.first">the example template</a> in the
+        <code class="inline-code">test.ftlh</code> file of the <a href="pgui_quickstart_createconfiguration.html">earlier</a> set
+        directory, then you can do this:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Template temp = cfg.getTemplate(&quot;test.ftlh&quot;);</pre></div><p>This gives you a <code class="inline-code">Template</code> instance that was
+        created by reading
+        <code class="inline-code"><em class="code-color">/where/you/store/templates/</em>test.ftlh</code>
+        and parsing it. The <code class="inline-code">Template</code> instance stores the
+        template in parsed form, and not as text. If the template is missing
+        or syntactically incorrect, <code class="inline-code">getTemplate</code> will throw
+        exception instead.</p><p><code class="inline-code">Configuration</code> caches
+        <code class="inline-code">Template</code> instances, so when you call
+        <code class="inline-code">cfg.getTemplate(&quot;test.ftlh&quot;)</code> next time, it probably
+        won&#39;t read and parse the template file again, just returns the same
+        <code class="inline-code">Template</code> instance as for the first time.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_quickstart_createdatamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_merge.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_quickstart_merge.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_quickstart_merge.html b/builds/2.3.26-nightly/pgui_quickstart_merge.html
new file mode 100644
index 0000000..c295aa2
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_quickstart_merge.html
@@ -0,0 +1,78 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Merging the template with the data-model - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Merging the template with the data-model">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_quickstart_merge.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_quickstart_merge.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart_merge.html"><span itemprop="name">Merging the template with the data-model</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Getting Started","Merging the template with the data-model"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_quickstart_gettemplate.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_all.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_quickstart_merge" itemprop="headline">Merging the template with the data-model</h1>
+</div></div><p>As you might already know, data-model + template = output. We
+        already have a data-model (<code class="inline-code">root</code>) and a template
+        (<code class="inline-code">temp</code>), so to get the output we have to merge them.
+        This is done by the <code class="inline-code">process</code> method of the template.
+        It takes the data-model root and a <code class="inline-code">Writer</code> as
+        parameters. It writes the produced output to the
+        <code class="inline-code">Writer</code>. For the sake of simplicity here I write to
+        the standard output:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Writer out = new OutputStreamWriter(System.out);
+temp.process(root, out);</pre></div><p>This will print to your terminal the output you have seen in the
+        <a href="dgui_quickstart_basics.html#example.first">first example</a> of the Template
+        Author&#39;s Guide.</p><p>Java I/O related notes: Depending on what <code class="inline-code">out</code>
+        is, you may need to ensure that <code class="inline-code">out.close()</code> is
+        called. This is typically needed when <code class="inline-code">out</code> writes
+        into a file that was opened to store the output of the template. In
+        other times, like in typical Web applications, you must
+        <em>not</em> close <code class="inline-code">out</code>. FreeMarker
+        calls <code class="inline-code">out.flush()</code> after a successful template
+        execution (but tis can be disabled in
+        <code class="inline-code">Configuration</code>), so you don&#39;t need to worry about
+        that.</p><p>Note that once you have obtained a <code class="inline-code">Template</code>
+        instance, you can merge it with different data-models for unlimited
+        times (<code class="inline-code">Template</code> instances are stateless). Also, the
+        <code class="inline-code">test.ftlh</code> file is accessed only while the
+        <code class="inline-code">Template</code> instance is created, not when you call the
+        process method.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_quickstart_gettemplate.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_all.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref.html b/builds/2.3.26-nightly/ref.html
new file mode 100644
index 0000000..56c7c78
--- /dev/null
+++ b/builds/2.3.26-nightly/ref.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-part">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Template Language Reference - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Template Language Reference">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_templat
 e_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_jythonwrapper.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-part" id="ref" itemprop="headline">Template Language Reference</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="ref_builtins.html" data-menu-target="ref_builtins">Built-in Reference</a><ul><li><a class="page-menu-link" href="ref_builtins_alphaidx.html" data-menu-target="ref_builtins_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_builtins_string.html" data-menu-target="ref_builtins_string">Built-ins for strings</a></li><li><a class="page-menu-link" href="ref_builtins_number.html" data-menu-target="ref_builtins_number">Built-ins for numbers</a></li><li><a class="page-menu-link" href="ref_builtins_date.html" data-menu-target="ref_builtins_date">Built-ins for date/time/date-time values</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html" data-menu-target="ref_builtins_boolean">Built-ins for booleans</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html" data-menu-target="ref_builtins_sequence">Built-ins for sequences</a></li><li><a class="page-menu-link" href="ref_builtins_hash.html" data-menu
 -target="ref_builtins_hash">Built-ins for hashes</a></li><li><a class="page-menu-link" href="ref_builtins_node.html" data-menu-target="ref_builtins_node">Built-ins for nodes (for XML)</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html" data-menu-target="ref_builtins_loop_var">Loop variable built-ins</a></li><li><a class="page-menu-link" href="ref_builtins_type_independent.html" data-menu-target="ref_builtins_type_independent">Type independent built-ins</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html" data-menu-target="ref_builtins_expert">Seldom used and expert built-ins</a></li></ul></li><li><a class="page-menu-link" href="ref_directives.html" data-menu-target="ref_directives">Directive Reference</a><ul><li><a class="page-menu-link" href="ref_directive_alphaidx.html" data-menu-target="ref_directive_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_directive_assign.html" data-menu-target="ref_directive_assign">assig
 n</a></li><li><a class="page-menu-link" href="ref_directive_attempt.html" data-menu-target="ref_directive_attempt">attempt, recover</a></li><li><a class="page-menu-link" href="ref_directive_autoesc.html" data-menu-target="ref_directive_autoesc">autoesc</a></li><li><a class="page-menu-link" href="ref_directive_compress.html" data-menu-target="ref_directive_compress">compress</a></li><li><a class="page-menu-link" href="ref_directive_escape.html" data-menu-target="ref_directive_escape">escape, noescape (deprecated)</a></li><li><a class="page-menu-link" href="ref_directive_flush.html" data-menu-target="ref_directive_flush">flush</a></li><li><a class="page-menu-link" href="ref_directive_ftl.html" data-menu-target="ref_directive_ftl">ftl</a></li><li><a class="page-menu-link" href="ref_directive_function.html" data-menu-target="ref_directive_function">function, return</a></li><li><a class="page-menu-link" href="ref_directive_global.html" data-menu-target="ref_directive_global">global</a></
 li><li><a class="page-menu-link" href="ref_directive_if.html" data-menu-target="ref_directive_if">if, else, elseif</a></li><li><a class="page-menu-link" href="ref_directive_import.html" data-menu-target="ref_directive_import">import</a></li><li><a class="page-menu-link" href="ref_directive_include.html" data-menu-target="ref_directive_include">include</a></li><li><a class="page-menu-link" href="ref_directive_list.html" data-menu-target="ref_directive_list">list, else, items, sep, break</a></li><li><a class="page-menu-link" href="ref_directive_local.html" data-menu-target="ref_directive_local">local</a></li><li><a class="page-menu-link" href="ref_directive_macro.html" data-menu-target="ref_directive_macro">macro, nested, return</a></li><li><a class="page-menu-link" href="ref_directive_noautoesc.html" data-menu-target="ref_directive_noautoesc">noautoesc</a></li><li><a class="page-menu-link" href="ref_directive_noparse.html" data-menu-target="ref_directive_noparse">noparse</a></li><li>
 <a class="page-menu-link" href="ref_directive_nt.html" data-menu-target="ref_directive_nt">nt</a></li><li><a class="page-menu-link" href="ref_directive_outputformat.html" data-menu-target="ref_directive_outputformat">outputformat</a></li><li><a class="page-menu-link" href="ref_directive_setting.html" data-menu-target="ref_directive_setting">setting</a></li><li><a class="page-menu-link" href="ref_directive_stop.html" data-menu-target="ref_directive_stop">stop</a></li><li><a class="page-menu-link" href="ref_directive_switch.html" data-menu-target="ref_directive_switch">switch, case, default, break</a></li><li><a class="page-menu-link" href="ref_directive_t.html" data-menu-target="ref_directive_t">t, lt, rt</a></li><li><a class="page-menu-link" href="ref_directive_userDefined.html" data-menu-target="ref_directive_userDefined">User-defined directive (&lt;@...&gt;)</a></li><li><a class="page-menu-link" href="ref_directive_visit.html" data-menu-target="ref_directive_visit">visit, recurse,
  fallback</a></li></ul></li><li><a class="page-menu-link" href="ref_specvar.html" data-menu-target="ref_specvar">Special Variable Reference</a></li><li><a class="page-menu-link" href="ref_reservednames.html" data-menu-target="ref_reservednames">Reserved names in FTL</a></li><li><a class="page-menu-link" href="ref_deprecated.html" data-menu-target="ref_deprecated">Deprecated FTL constructs</a><ul><li><a class="page-menu-link" href="ref_depr_directive.html" data-menu-target="ref_depr_directive">List of deprecated directives</a></li><li><a class="page-menu-link" href="ref_depr_builtin.html" data-menu-target="ref_depr_builtin">List of deprecated built-ins</a></li><li><a class="page-menu-link" href="ref_depr_oldmacro.html" data-menu-target="ref_depr_oldmacro">Old-style macro and call directives</a></li><li><a class="page-menu-link" href="ref_depr_transform.html" data-menu-target="ref_depr_transform">Transform directive</a></li><li><a class="page-menu-link" href="ref_depr_oldsyntax.html" 
 data-menu-target="ref_depr_oldsyntax">Old FTL syntax</a></li><li><a class="page-menu-link" href="ref_depr_numerical_interpolation.html" data-menu-target="ref_depr_numerical_interpolation">#{...}: Numerical interpolation</a></li></ul></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_jythonwrapper.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins.html b/builds/2.3.26-nightly/ref_builtins.html
new file mode 100644
index 0000000..9d783b9
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-in Reference - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-in Reference">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li></ul><div class="bo
 okmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_alphaidx.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="ref_builtins" itemprop="headline">Built-in Reference</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="ref_builtins_alphaidx.html" data-menu-target="ref_builtins_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_builtins_string.html" data-menu-target="ref_builtins_string">Built-ins for strings</a></li><li><a class="page-menu-link" href="ref_builtins_number.html" data-menu-target="ref_builtins_number">Built-ins for numbers</a></li><li><a class="page-menu-link" href="ref_builtins_date.html" data-menu-target="ref_builtins_date">Built-ins for date/time/date-time values</a></li><li><a class="page-menu-link" href="ref_builtins_boolean.html" data-menu-target="ref_builtins_boolean">Built-ins for booleans</a></li><li><a class="page-menu-link" href="ref_builtins_sequence.html" data-menu-target="ref_builtins_sequence">Built-ins for sequences</a></li><li><a class="page-menu-link" href="ref_builtins_hash.html" data-menu-target="ref_builtins_hash">Built-ins for hashes</a></li><li><a class="page-menu-link" href="ref_builtins_node.ht
 ml" data-menu-target="ref_builtins_node">Built-ins for nodes (for XML)</a></li><li><a class="page-menu-link" href="ref_builtins_loop_var.html" data-menu-target="ref_builtins_loop_var">Loop variable built-ins</a></li><li><a class="page-menu-link" href="ref_builtins_type_independent.html" data-menu-target="ref_builtins_type_independent">Type independent built-ins</a></li><li><a class="page-menu-link" href="ref_builtins_expert.html" data-menu-target="ref_builtins_expert">Seldom used and expert built-ins</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_alphaidx.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[42/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_misc_userdefdir.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_misc_userdefdir.html b/builds/2.3.26-nightly/dgui_misc_userdefdir.html
new file mode 100644
index 0000000..1cdb47b
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_misc_userdefdir.html
@@ -0,0 +1,554 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Defining your own directives - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Defining your own directives">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_misc_userdefdir.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_misc_userdefdir.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itempro
 p="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc_userdefdir.html"><span itemprop="name">Defining your own directives</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Miscellaneous","Defining your own directives"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_misc.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_var.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_misc_userdefdir" itemprop="headline">Defining your own directives</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_19" data-menu-target="autoid_19">Basics</a></li><li><a class="page-menu-link" href="#autoid_20" data-menu-target="autoid_20">Parameters</a></li><li><a class="page-menu-link" href="#autoid_21" data-menu-target="autoid_21">Nested content</a></li><li><a class="page-menu-link" href="#dgui_misc_userdefdir_loopvar" data-menu-target="dgui_misc_userdefdir_loopvar">Macros with loop variables</a></li><li><a class="page-menu-link" href="#autoid_22" data-menu-target="autoid_22">More about user-defined directives and macros</a></li></ul> </div><p>As far as template authors are concerned, user-defined
+        directives can be defined using the <code class="inline-code">macro</code>
+        directive. <span class="marked-for-programmers">Java programmers who want to
+        implement directives in Java Language, rather than in a template,
+        should use
+        <code class="inline-code">freemarker.template.TemplateDirectiveModel</code> (see
+        <a href="pgui_datamodel_directive.html">more
+        here...</a>).</span></p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_19">Basics</h2>
+
+
+          
+
+          <p>A macro is a template fragment associated with a variable. You
+          can use that variable in your template as a user-defined directive,
+          so it helps in repetitive tasks. For example, this creates a macro
+          variable that prints a big "Hello Joe!":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>&lt;#macro greet&gt;</strong>
+  &lt;font size=&quot;+2&quot;&gt;Hello Joe!&lt;/font&gt;
+<strong>&lt;/#macro&gt;</strong></pre></div>
+
+          <p>The <code class="inline-code">macro</code> directive itself does not print
+          anything; it just creates the macro variable, so there will be a
+          variable called <code class="inline-code">greet</code>. Things between the
+          <code class="inline-code">&lt;#macro greet&gt;</code> and
+          <code class="inline-code">&lt;/#macro&gt;</code> (called <strong>macro definition body</strong>) will be executed only
+          when you use the variable as directive. You use user-defined
+          directives by writing <code class="inline-code">@</code> instead of
+          <code class="inline-code">#</code> in the FTL tag. Use the variable name as the
+          directive name. Also, the <a href="gloss.html#gloss.endTag">end-tag</a> for user-defined directives is
+          mandatory. So you use <code class="inline-code">greet</code> like this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@greet&gt;&lt;/@greet&gt;</pre></div>
+
+          <p>But since
+          <code class="inline-code">&lt;<em class="code-color">anything</em>&gt;&lt;/<em class="code-color">anything</em>&gt;</code>
+          is equivalent with
+          <code class="inline-code">&lt;<em class="code-color">anything</em>/&gt;</code> you
+          should use this shorter form (that is familiar for you if you know
+          <a href="gloss.html#gloss.XML">XML</a>):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@greet/&gt;</pre></div>
+
+          <p>This will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;font size=&quot;+2&quot;&gt;Hello Joe!&lt;/font&gt;
+  </pre></div>
+
+          <p>But macros can do much more, since the thing between
+          <code class="inline-code">&lt;#macro <em class="code-color">...</em>&gt;</code> and
+          <code class="inline-code">&lt;/#macro&gt;</code> is a template fragment, thus it
+          can contain interpolations
+          (<code class="inline-code">${<em class="code-color">...</em>}</code>) and FTL tags
+          (e.g. <code class="inline-code">&lt;#if
+          <em class="code-color">...</em>&gt;<em class="code-color">...</em>&lt;/#if&gt;</code>).</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Programmers will say on
+            <code class="inline-code">&lt;@<em class="code-color">...</em>&gt;</code> that
+            you <strong>call</strong> the macro.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_20">Parameters</h2>
+
+
+          <p>Let&#39;s improve the <code class="inline-code">greet</code> macro so it can use
+          arbitrary name, not only "Joe". For this purpose you
+          can use <strong>parameters</strong>. You define the
+          parameters after the name of the macro in the
+          <code class="inline-code">macro</code> directive. Here we define one parameter for
+          the <code class="inline-code">greet</code> macro,
+          <code class="inline-code">person</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro greet <strong>person</strong>&gt;
+  &lt;font size=&quot;+2&quot;&gt;Hello <strong>${person}</strong>!&lt;/font&gt;
+&lt;/#macro&gt;</pre></div>
+
+          <p>and then you can use this macro as:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@greet <strong>person=&quot;Fred&quot;</strong>/&gt; and &lt;@greet <strong>person=&quot;Batman&quot;</strong>/&gt;</pre></div>
+
+          <p>which is similar to HTML syntax. This will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;font size=&quot;+2&quot;&gt;Hello <strong>Fred</strong>!&lt;/font&gt;
+ and   &lt;font size=&quot;+2&quot;&gt;Hello <strong>Batman</strong>!&lt;/font&gt;
+ </pre></div>
+
+          <p>As you can see, the actual value of the macro parameter is
+          accessible in the macro definition body as a variable
+          (<code class="inline-code">person</code>). As with <a href="gloss.html#gloss.predefinedDirective">predefined directives</a>,
+          the value of a parameter (the right side of <code class="inline-code">=</code>) is
+          an <a href="dgui_template_exp.html">FTL expression</a>. Thus,
+          unlike with HTML, the quotation marks around
+          <code class="inline-code">&quot;Fred&quot;</code> and <code class="inline-code">&quot;Batman&quot;</code> are not
+          optional. <code class="inline-code">&lt;@greet person=Fred/&gt;</code> would mean
+          that you use the value of variable <code class="inline-code">Fred</code> for the
+          <code class="inline-code">person</code> parameter, rather than the string
+          <code class="inline-code">&quot;Fred&quot;</code>. Of course parameter value need not be a
+          string, it can be number, boolean, hash, sequence, etc., also you
+          can use complex expression on the right side of <code class="inline-code">=</code>
+          (e.g. <code class="inline-code">someParam=(price + 50)*1.25</code>).</p>
+
+          <p>User-defined directives can have multiple parameters. For
+          example, add a new parameter <code class="inline-code">color</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro greet person <strong>color</strong>&gt;
+  &lt;font size=&quot;+2&quot; color=&quot;${color}&quot;&gt;Hello ${person}!&lt;/font&gt;
+&lt;/#macro&gt;</pre></div>
+
+          <p>and then you can use this macro like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@greet person=&quot;Fred&quot; color=&quot;black&quot;/&gt;</pre></div>
+
+          <p>The order of parameters is not important, so this is
+          equivalent with the previous:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@greet color=&quot;black&quot; person=&quot;Fred&quot;/&gt;</pre></div>
+
+          <p>When you call the macro, you can use only parameters that you
+          have defined in the <code class="inline-code">macro</code> directive (in this
+          case: <code class="inline-code">person</code> and <code class="inline-code">color</code>). So if
+          you try <code class="inline-code">&lt;@greet person=&quot;Fred&quot; color=&quot;black&quot;
+          background=&quot;green&quot;/&gt;</code> then you will get an error, since
+          you haven&#39;t mentioned parameter <code class="inline-code">background</code> in the
+          <code class="inline-code">&lt;#macro
+          <em class="code-color">...</em>&gt;</code>.</p>
+
+          <p>Also, you must give value for all parameters that you have
+          defined for the macro. So if you try <code class="inline-code">&lt;@greet
+          person=&quot;Fred&quot;/&gt;</code> then you will get an error, since you
+          forgot to specify the value of <code class="inline-code">color</code>. However, it
+          often happens that you would specify the same value for a parameter
+          in most cases, so you want to specify the value only when you want a
+          different value for it than the usual. This can be achieved if you
+          specify the parameter in the <code class="inline-code">macro</code> directive as
+          <code class="inline-code"><em class="code-color">param_name</em>=<em class="code-color">usual_value</em></code>.
+          For example, you want to use <code class="inline-code">&quot;black&quot;</code> for
+          <code class="inline-code">color</code> if you don&#39;t specify value for that
+          parameter when you use the <code class="inline-code">greet</code>
+          directive:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro greet person color<strong>=&quot;black&quot;</strong>&gt;
+  &lt;font size=&quot;+2&quot; color=&quot;${color}&quot;&gt;Hello ${person}!&lt;/font&gt;
+&lt;/#macro&gt;</pre></div>
+
+          <p>Now <code class="inline-code">&lt;@greet person=&quot;Fred&quot;/&gt;</code> is OK,
+          since it is equivalent with <code class="inline-code">&lt;@greet person=&quot;Fred&quot;
+          color=&quot;black&quot;/&gt;</code>, thus the value of
+          <code class="inline-code">color</code> parameter is known. If you want
+          <code class="inline-code">&quot;red&quot;</code> for <code class="inline-code">color</code>, then you
+          write <code class="inline-code">&lt;@greet person=&quot;Fred&quot; color=&quot;red&quot;/&gt;</code>,
+          and this value will override the usual value specified with the
+          <code class="inline-code">macro</code> directive, so the value of
+          <code class="inline-code">color</code> parameter will be
+          <code class="inline-code">&quot;red&quot;</code>.</p>
+
+          <p>Also, it is important to realize that -- according to the
+          already explained <a href="dgui_template_exp.html">FTL expression
+          rules</a> -- <code class="inline-code">someParam=foo</code> and
+          <code class="inline-code">someParam=&quot;${foo}&quot;</code> are very different. In the
+          fist case, you use the value of variable <code class="inline-code">foo</code> as
+          the value of the parameter. In the second case, you use a <a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">string literal
+          with interpolation</a>, so the value of the parameter will be a
+          string -- in this case, the value of <code class="inline-code">foo</code> rendered
+          to text -- regardless of the type (as number, date, etc.) of
+          <code class="inline-code">foo</code>. Or, another example:
+          <code class="inline-code">someParam=3/4</code> and
+          <code class="inline-code">someParam=&quot;${3/4}&quot;</code> are different. If the
+          directive wants a numerical value for <code class="inline-code">someParam</code>,
+          it will not like the second variation. Do not exchange these.</p>
+
+          <p>A very important aspect of macro parameters is that they are
+          local variables. For more information about local variables please
+          read: <a href="dgui_misc_var.html">Defining variables in the template</a></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_21">Nested content</h2>
+
+
+          <p>Custom directive can have nested content, similarly as
+          predefined directives like <code class="inline-code">&lt;#if
+          <em class="code-color">...</em>&gt;<em class="code-color">nested
+          content</em>&lt;/#if&gt;</code> can have. For example,
+          this creates a macro that draws borders around its nested
+          content:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro border&gt;
+  &lt;table border=4 cellspacing=0 cellpadding=4&gt;&lt;tr&gt;&lt;td&gt;
+    <strong>&lt;#nested&gt;</strong>
+  &lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;
+&lt;/#macro&gt;</pre></div>
+
+          <p>The <code class="inline-code">&lt;#nested&gt;</code> directive executes the
+          template fragment between the start-tag and end-tags of the
+          directive. So if you do this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@border&gt;The bordered text&lt;/@border&gt;</pre></div>
+
+          <p>the output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;table border=4 cellspacing=0 cellpadding=4&gt;&lt;tr&gt;&lt;td&gt;
+    The bordered text
+  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
+ </pre></div>
+
+          <p>The <code class="inline-code">nested</code> directive can be called for
+          multiple times, for example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro do_thrice&gt;<strong>
+  &lt;#nested&gt;
+  &lt;#nested&gt;
+  &lt;#nested&gt;</strong>
+&lt;/#macro&gt;
+&lt;@do_thrice&gt;
+  Anything.
+&lt;/@do_thrice&gt;</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  Anything.
+  Anything.
+  Anything.</pre></div>
+
+          <p>If you don&#39;t use the <code class="inline-code">nested</code> directive, then
+          the nested content will not be executed. Thus, if you accidentally
+          use the <code class="inline-code">greet</code> directive like this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@greet person=&quot;Joe&quot;&gt;
+  Anything.
+&lt;/@greet&gt;</pre></div>
+
+          <p>then FreeMarker will not see this as an error, and simply
+          prints:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;font size=&quot;+2&quot;&gt;Hello Joe!&lt;/font&gt;</pre></div>
+
+          <p>and the nested content will be ignored, since the
+          <code class="inline-code">greet</code> macro never uses <code class="inline-code">nested</code>
+          directive.</p>
+
+          <p>The nested content can be anything that is valid FTL,
+          including other user-defined directives. Thus this is OK:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@border&gt;
+  &lt;ul&gt;
+  &lt;@do_thrice&gt;
+    &lt;li&gt;&lt;@greet person=&quot;Joe&quot;/&gt;
+  &lt;/@do_thrice&gt;
+  &lt;/ul&gt;
+&lt;/@border&gt;</pre></div>
+
+          <p>and will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;table border=4 cellspacing=0 cellpadding=4&gt;&lt;tr&gt;&lt;td&gt;
+      &lt;ul&gt;
+    &lt;li&gt;&lt;font size=&quot;+2&quot;&gt;Hello Joe!&lt;/font&gt;
+
+    &lt;li&gt;&lt;font size=&quot;+2&quot;&gt;Hello Joe!&lt;/font&gt;
+
+    &lt;li&gt;&lt;font size=&quot;+2&quot;&gt;Hello Joe!&lt;/font&gt;
+
+  &lt;/ul&gt;
+
+  &lt;/tr&gt;&lt;/td&gt;&lt;/table&gt;</pre></div>
+
+          <p>The <a href="dgui_misc_var.html">local variables</a> of a
+          macro are not visible in the nested content. Say, this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro repeat count&gt;
+  &lt;#local y = &quot;test&quot;&gt;
+  &lt;#list 1..count as x&gt;
+    ${y} ${count}/${x}: &lt;#nested&gt;
+  &lt;/#list&gt;
+&lt;/#macro&gt;
+&lt;@repeat count=3&gt;${y!&quot;?&quot;} ${x!&quot;?&quot;} ${count!&quot;?&quot;}&lt;/@repeat&gt;</pre></div>
+
+          <p>will print this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">    test 3/1: ? ? ?
+    test 3/2: ? ? ?
+    test 3/3: ? ? ?</pre></div>
+
+          <p>because the <code class="inline-code">y</code>, <code class="inline-code">x</code> and
+          <code class="inline-code">count</code> are the local (private) variables of the
+          macro, and are not visible from outside the macro definition.
+          Furthermore, a different set of local variables is used for each
+          macro call, so this will not cause confusion:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro test foo&gt;${foo} (&lt;#nested&gt;) ${foo}&lt;/#macro&gt;
+&lt;@test foo=&quot;A&quot;&gt;&lt;@test foo=&quot;B&quot;&gt;&lt;@test foo=&quot;C&quot;/&gt;&lt;/@test&gt;&lt;/@test&gt;</pre></div>
+
+          <p>and will print this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">A (B (C () C) B) A</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_misc_userdefdir_loopvar">Macros with loop variables</h2>
+
+
+          
+
+          <p>Predefined directives like <code class="inline-code">list</code> can use
+          so-called loop variables; you should read <a href="dgui_misc_var.html">Defining variables in the template</a> to understand loop variables.</p>
+
+          <p>User-defined directives can also have loop variables. For
+          example, let&#39;s extend the <code class="inline-code">do_thrice</code> directive of
+          the earlier examples so it exposes the current repetition number as
+          a loop variable. As with the predefined directives (as
+          <code class="inline-code">list</code>) the <em>name</em> of loop
+          variables is given when you call the directive (as
+          <code class="inline-code">foo</code> in <code class="inline-code">&lt;#list foos as
+          foo&gt;<em class="code-color">...</em>&lt;/#list&gt;</code>),
+          while the <em>value</em> of the variables is set by the
+          directive itself.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro do_thrice&gt;
+  &lt;#nested <strong>1</strong>&gt;
+  &lt;#nested <strong>2</strong>&gt;
+  &lt;#nested <strong>3</strong>&gt;
+&lt;/#macro&gt;
+&lt;@do_thrice <strong>; x</strong>&gt; &lt;#-- user-defined directive uses &quot;;&quot; instead of &quot;as&quot; --&gt;
+  ${<strong>x</strong>} Anything.
+&lt;/@do_thrice&gt;</pre></div>
+
+          <p>This will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  1 Anything.
+  2 Anything.
+  3 Anything.
+ </pre></div>
+
+          <p>The syntactical rule is that you pass the actual value of the
+          loop variable for a certain &quot;loop&quot; (i.e. repetition of the nested
+          content) as the parameter of <code class="inline-code">nested</code> directive (of
+          course the parameter can by arbitrary expression). The name of the
+          loop variable is specified in the user-defined directive open tag
+          (<code class="inline-code">&lt;@...&gt;</code>) after the parameters and a
+          semicolon.</p>
+
+          <p>A macro can use more the one loop variable (the order of
+          variables is significant):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro repeat count&gt;
+  &lt;#list 1..count as x&gt;
+    &lt;#nested <strong>x, x/2, x==count</strong>&gt;
+  &lt;/#list&gt;
+&lt;/#macro&gt;
+&lt;@repeat count=4 ; <strong>c, halfc, last</strong>&gt;
+  ${<strong>c</strong>}. ${<strong>halfc</strong>}&lt;#if <strong>last</strong>&gt; Last!&lt;/#if&gt;
+&lt;/@repeat&gt;</pre></div>
+
+          <p>The output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  1. 0.5
+  2. 1
+  3. 1.5
+  4. 2 Last!
+ </pre></div>
+
+          <p>It is not a problem if you specify different number of loop
+          variables in the user-defined directive start-tag (that is, after
+          the semicolon) than with the <code class="inline-code">nested</code> directive. If
+          you specify less loop variables after the semicolon, then simply you
+          will not see the last few values that the <code class="inline-code">nested</code>
+          directive provides, since there is no loop variable to hold those
+          values. So these are all OK:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@repeat count=4 ; <strong>c, halfc, last</strong>&gt;
+  ${c}. ${halfc}&lt;#if last&gt; Last!&lt;/#if&gt;
+&lt;/@repeat&gt;
+&lt;@repeat count=4 ; <strong>c, halfc</strong>&gt;
+  ${c}. ${halfc}
+&lt;/@repeat&gt;
+&lt;@repeat count=4&gt;
+  Just repeat it...
+&lt;/@repeat&gt;</pre></div>
+
+          <p>If you specify more variables after the semicolon than with
+          the <code class="inline-code">nested</code> directive, then the last few loop
+          variables will not be created (i.e. will be undefined in the nested
+          content).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_22">More about user-defined directives and macros</h2>
+
+
+          <p>Now you may read the relevant parts of the FreeMarker
+          Reference:</p>
+
+          <ul>
+            <li>
+              <a href="ref_directive_userDefined.html#ref.directive.userDefined">user-defined
+              directive call</a>
+            </li>
+
+            <li>
+              <a href="ref_directive_macro.html#ref.directive.macro"><code>macro</code>
+              directive</a>
+            </li>
+          </ul>
+
+          <p>You can define methods in FTL as well, see <a href="ref_directive_function.html#ref.directive.function">the <code>function</code>
+          directive</a>.</p>
+
+          <p>Also, you may interested in namespaces: <a href="dgui_misc_namespace.html">Namespaces</a>. Namespaces help you to organize and
+          reuse your commonly used macros.</p>
+
+          <p>Java programmers might want to know that directives (macros
+          are directives) and methods (function-like things) can also be
+          written in Java language, by<a href="pgui_datamodel_directive.html"> implementing the
+          <code>TemplateDirectiveModel</code></a> or
+          <code class="inline-code">TemplateMethodModelEx</code> interfaces, respectively.
+          Then you can pull in the Java implementations into the template like
+          <code class="inline-code">&lt;#assign foo =
+          &quot;com.example.FooDirective&quot;?new()&gt;</code> or
+          <code class="inline-code">&lt;#assign foo =
+          &quot;com.example.FooMethod&quot;?new()&gt;</code> on the same place where
+          you would have <code class="inline-code">&lt;#macro foo
+          <em class="code-color">...</em>&gt;</code> or
+          <code class="inline-code">&lt;#function foo
+          <em class="code-color">...</em>&gt;</code> otherwise.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_misc.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_var.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_misc_var.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_misc_var.html b/builds/2.3.26-nightly/dgui_misc_var.html
new file mode 100644
index 0000000..1f48d80
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_misc_var.html
@@ -0,0 +1,197 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Defining variables in the template - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Defining variables in the template">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_misc_var.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_misc_var.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itempro
 p="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc_var.html"><span itemprop="name">Defining variables in the template</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Miscellaneous","Defining variables in the template"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_misc_userdefdir.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_namespace.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_misc_var" itemprop="headline">Defining variables in the template</h1>
+</div></div><p>Most of the variables that a typical template works with comes
+        from the data-model. But templates can also define variables
+        themselves, usually to hold loops variables, temporary results,
+        macros, etc. Such variables are outside the data-model; modifying the
+        data-model from templates is by design unsupported. Note that each
+        <a href="gloss.html#gloss.templateProcessingJob">template processing
+        job</a> has its own private set of these variables, which will be
+        thrown away when the template processing job is finished.</p><p>You access variables defined in the template the same way as you
+        access variables defined in the data-model root. For example, if you
+        create a variable called "foo" in the template, you can
+        print its value with <code class="inline-code">${foo}</code>. If, coincidently,
+        there&#39;s a variable called "foo" in the data-model too,
+        the variable created in the template will hide (not overwrite!)
+        it.</p><p>There are these kinds of variables that are defined in a
+        template:</p><ul>
+          <li>
+            <p><strong>"plain"
+            variables</strong>: They are accessible from everywhere in the
+            template, or from another templates that was inserted with the
+            <a href="ref_directive_include.html#ref.directive.include"><code>include</code>
+            directive</a>. You can create and replace these variables with
+            the <a href="ref_directive_assign.html#ref.directive.assign"><a href="ref_directive_assign.html#ref.directive.assign"><code>assign</code></a>
+            directive</a>, or, because macros and functions are just
+            variables, with the <a href="ref_directive_macro.html#ref.directive.macro"><code>macro</code>
+            directives</a> and <a href="ref_directive_function.html#ref.directive.function"><code>function</code>
+            directives</a>.</p>
+          </li>
+
+          <li>
+            <p><strong>Local variables</strong>: They can
+            only be set inside a <a href="gloss.html#gloss.macroDefinitionBody">macro definition body</a>
+            or <a href="gloss.html#gloss.functionDefinitionBody">function
+            definition body</a>, and are only visible from there, not from
+            other macros or functions called from there. A local variable only
+            exists for the duration of a macro or function call. You can
+            create and replace local variables inside the definition body with
+            the <a href="ref_directive_local.html#ref.directive.local"><code>local</code>
+            directive</a>. <a href="ref_directive_macro.html#ref.directive.macro">Macro</a>
+            and <a href="ref_directive_function.html#ref.directive.function">function</a>
+            parameters are also local variables.</p>
+          </li>
+
+          <li>
+            <p><strong>Loop variables</strong>: Loop
+            variables are created automatically by directives like <a href="ref_directive_list.html#ref.directive.list"><code>list</code></a> (like
+            <code class="inline-code">x</code> in <code class="inline-code">&lt;#list xs as
+            x&gt;<em class="code-color">...</em>&lt;/#list&gt;</code>), and
+            they only exist between the start-tag and end-tag of the
+            directive. They are only visible directly between these tags, not
+            from macros or functions called from there. As such, they are
+            quite similar to local variables, but they can&#39;t be assigned to
+            directly.</p>
+          </li>
+
+          <li>
+            <p><strong>Global variables</strong>: These
+            should be seldom used. Global variables are shared by all
+            templates, even if they belong to different name spaces because of
+            <a href="ref_directive_import.html#ref.directive.import"><code>import</code>-ing</a>.
+            Thus, their visibility is similar to data-model variables. They
+            are set via the <a href="ref_directive_global.html#ref.directive.global"><code>global</code>
+            directive</a>. Global variables hide (but don&#39;t overwrite) the
+            data-model variables of the same name.</p>
+          </li>
+        </ul><p>Example: Create and replace variables with
+        <code class="inline-code">assign</code>:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = 1&gt;  &lt;#-- create variable x --&gt;
+${x}
+&lt;#assign x = 2&gt; &lt;#-- replace variable x --&gt;
+${x}
+&lt;#assign x++&gt; &lt;#-- replace variable x --&gt;
+${x}</pre></div>
+
+<div class="code-wrapper"><pre class="code-block code-output">1
+2
+3</pre></div><p>In the next example we demonstrate that local variables hide
+        (not overwrite) "plain" variables of the same name, and
+        that loop variables hide (not overwrite) local and
+        "plain" variables of the same name:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = &quot;plain&quot;&gt;
+1. ${x}  &lt;#-- we see the plain var. here --&gt;
+&lt;@test/&gt;
+6. ${x}  &lt;#-- the value of plain var. was not changed --&gt;
+&lt;#list [&quot;loop&quot;] as x&gt;
+    7. ${x}  &lt;#-- now the loop var. hides the plain var. --&gt;
+    &lt;#assign x = &quot;plain2&quot;&gt; &lt;#-- replaces the plain var, not the loop var. --&gt;
+    8. ${x}  &lt;#-- it still hides the plain var. --&gt;
+&lt;/#list&gt;
+9. ${x}  &lt;#-- now the new value of plain var. becomse visible --&gt;
+
+&lt;#macro test&gt;
+  2. ${x}  &lt;#-- we still see the plain var. here --&gt;
+  &lt;#local x = &quot;local&quot;&gt;
+  3. ${x}  &lt;#-- now the local var. hides it --&gt;
+  &lt;#list [&quot;loop&quot;] as x&gt;
+    4. ${x}  &lt;#-- now the loop var. hides the local var. --&gt;
+  &lt;/#list&gt;
+  5. ${x}  &lt;#-- now we see the local var. again --&gt;
+&lt;/#macro&gt;</pre></div>
+
+<div class="code-wrapper"><pre class="code-block code-output">1. plain
+  2. plain
+  3. local
+    4. loop
+  5. local
+6. plain
+    7. loop
+    8. loop
+9. plain2 </pre></div><p>In the next example we demonstrate that an inner loop variable
+        can hide (not overwrite) an outer loop variable of the same
+        name:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&quot;loop 1&quot;] as x&gt;
+  ${x}
+  &lt;#list [&quot;loop 2&quot;] as x&gt;
+    ${x}
+    &lt;#list [&quot;loop 3&quot;] as x&gt;
+      ${x}
+    &lt;/#list&gt;
+    ${x}
+  &lt;/#list&gt;
+  ${x}
+&lt;/#list&gt;</pre></div>
+
+<div class="code-wrapper"><pre class="code-block code-output">  loop 1
+    loop 2
+      loop 3
+    loop 2
+  loop 1</pre></div><p>When a variable hides the variable from the data-model, you can
+        still read that variable from the data-model using <a href="dgui_template_exp.html#dgui_template_exp_var_special">special variable</a>
+        <code class="inline-code">globals</code>. For example, assume we have a variable
+        called <code class="inline-code">user</code> in the data-model with value "Big
+        Joe":</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">${user}          &lt;#-- prints: Big Joe --&gt;
+&lt;#assign user = &quot;Joe Hider&quot;&gt;
+${user}          &lt;#-- prints: Joe Hider --&gt;
+${.globals.user} &lt;#-- prints: Big Joe --&gt;</pre></div><p>You could also write <code class="inline-code">.data_model.user</code>
+        instead, and then not even a <code class="inline-code">&lt;#global user =
+        &quot;<em class="code-color">...</em>&quot;&gt;</code> can hide the value in
+        the data-model. However, global variables are often purposely set to
+        override the value coming from the data-model, so using
+        <code class="inline-code">globals</code> is a better practice usually.</p><p>For information about syntax of variables (allowed characters
+        and such) please read: <a href="dgui_template_exp.html">The Template/Expressions</a></p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_misc_userdefdir.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_namespace.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_misc_whitespace.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_misc_whitespace.html b/builds/2.3.26-nightly/dgui_misc_whitespace.html
new file mode 100644
index 0000000..6a8032a
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_misc_whitespace.html
@@ -0,0 +1,296 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>White-space handling - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="White-space handling">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_misc_whitespace.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_misc_whitespace.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itempro
 p="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc_whitespace.html"><span itemprop="name">White-space handling</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Miscellaneous","White-space handling"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_misc_autoescaping.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_alternativesyntax.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_misc_whitespace" itemprop="headline">White-space handling</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#dgui_misc_whitespace_stripping" data-menu-target="dgui_misc_whitespace_stripping">White-space stripping</a></li><li><a class="page-menu-link" href="#autoid_30" data-menu-target="autoid_30">Using compress directive</a></li></ul> </div><p>The control of the <a href="gloss.html#gloss.whiteSpace">white-space</a> in a template is a
+        problem that to some extent haunts every template engine in the
+        business.</p><p>Let see this template. I have marked the components of template
+        with colors: <span class="marked-text">text</span>, <span class="marked-interpolation">interpolation</span>, <span class="marked-ftl-tag">FTL tag</span>. With the <em><span class="marked-invisible-text">[BR]</span></em>-s I visualize the <a href="gloss.html#gloss.lineBreak">line breaks</a>.</p>
+
+<div class="code-wrapper"><pre class="code-block code-template"><span class="marked-text">&lt;p&gt;List of users:<em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-ftl-tag">&lt;#assign users = [{&quot;name&quot;:&quot;Joe&quot;,        &quot;hidden&quot;:false},<em><span class="marked-invisible-text">[BR]</span></em>
+                  {&quot;name&quot;:&quot;James Bond&quot;, &quot;hidden&quot;:true},<em><span class="marked-invisible-text">[BR]</span></em>
+                  {&quot;name&quot;:&quot;Julia&quot;,      &quot;hidden&quot;:false}]&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+&lt;ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-ftl-tag">&lt;#list users as user&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+  <span class="marked-ftl-tag">&lt;#if !user.hidden&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+  &lt;li&gt;<span class="marked-interpolation">${user.name}</span><em><span class="marked-invisible-text">[BR]</span></em>
+  <span class="marked-ftl-tag">&lt;/#if&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-ftl-tag">&lt;/#list&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+&lt;/ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;p&gt;That&#39;s all.</span></pre></div><p>If FreeMarker were to output all <span class="marked-text">text</span> as is, the output would be:</p>
+
+<div class="code-wrapper"><pre class="code-block code-output"><span class="marked-text">&lt;p&gt;List of users:<em><span class="marked-invisible-text">[BR]</span></em>
+<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+<em><span class="marked-invisible-text">[BR]</span></em>
+  <em><span class="marked-invisible-text">[BR]</span></em>
+  &lt;li&gt;</span>Joe<span class="marked-text"><em><span class="marked-invisible-text">[BR]</span></em>
+  <em><span class="marked-invisible-text">[BR]</span></em>
+<em><span class="marked-invisible-text">[BR]</span></em>
+  <em><span class="marked-invisible-text">[BR]</span></em>
+<em><span class="marked-invisible-text">[BR]</span></em>
+  <em><span class="marked-invisible-text">[BR]</span></em>
+  &lt;li&gt;</span>Julia<span class="marked-text"><em><span class="marked-invisible-text">[BR]</span></em>
+  <em><span class="marked-invisible-text">[BR]</span></em>
+<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;/ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;p&gt;That&#39;s all.</span></pre></div><p>You have a lot of unwanted spaces and line breaks here.
+        Fortunately neither HTML nor XML is typically white-space sensitive,
+        but this amount of superfluous white-space can be annoying, and
+        needlessly increases the size of produced HTML. Of course, it is even
+        bigger problem when outputting white-space-sensitive formats.</p><p>FreeMarker provides the following tools to cope with this
+        problem:</p><ul>
+          <li>
+            <p>Tools to ignore certain white-space of the template files
+            <span class="marked-for-programmers">(parse time white-space
+            removal)</span>:</p>
+
+            <ul>
+              <li>
+                <p>White-space stripping: This feature automatically
+                ignores typical superfluous white-space around FTL tags. It
+                can be enabled or disabled on per template manner.</p>
+              </li>
+
+              <li>
+                <p>Trimmer directives: <code class="inline-code">t</code>,
+                <code class="inline-code">rt</code>, <code class="inline-code">lt</code>. With these
+                directives you can explicitly tell FreeMarker to ignore
+                certain white-space. Read <a href="ref_directive_t.html#ref.directive.t">the
+                reference</a> for more information.</p>
+              </li>
+
+              <li>
+                <p><a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code></a>
+                parameter <code class="inline-code">strip_text</code>: This removes all
+                top-level text from the template. It is useful for templates
+                that contain macro definitions only (and some other
+                non-outputting directives), because it removes the line-breaks
+                that you use between the macro definitions and between the
+                other top-level directives to improve the readability of the
+                template.</p>
+              </li>
+            </ul>
+          </li>
+
+          <li>
+            <p>Tools that remove white-space from the output <span class="marked-for-programmers">(on-the-fly white-space
+            removal)</span>:</p>
+
+            <ul>
+              <li>
+                <p><code class="inline-code">compress</code> directive.</p>
+              </li>
+            </ul>
+          </li>
+        </ul>
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_misc_whitespace_stripping">White-space stripping</h2>
+
+
+          
+
+          <p>If this feature is enabled for a template, then it
+          automatically ignores (i.e. does not print to the output) two kind
+          of typical superfluous white-space:</p>
+
+          <ul>
+            <li>
+              <p>Indentation white-space, and trailing white-space at the
+              end of the line (includes the line break) will be ignored in
+              lines that contains only FTL tags (e.g.
+              <code class="inline-code">&lt;@myMacro/&gt;</code>, <code class="inline-code">&lt;#if
+              <em class="code-color">...</em>&gt;</code>) and/or FTL
+              comments (e.g. <code class="inline-code">&lt;#-- blah --&gt;</code>), apart
+              from the the ignored white-space itself. For example, if a line
+              contains only an <code class="inline-code">&lt;#if
+              <em class="code-color">...</em>&gt;</code>, then the
+              indentation before the tag and the line break after the tag will
+              be ignored. However, if the line contains <code class="inline-code">&lt;#if
+              <em class="code-color">...</em>&gt;x</code>, then the
+              white-space in that line will not be ignored, because of the
+              <code class="inline-code">x</code>, as that is not FTL tag. Note that
+              according these rules, a line that contains <code class="inline-code">&lt;#if
+              <em class="code-color">...</em>&gt;&lt;#list
+              <em class="code-color">...</em>&gt;</code> is subject to
+              white-space ignoring, while a line that contains
+              <code class="inline-code">&lt;#if <em class="code-color">...</em>&gt;�&lt;#list
+              <em class="code-color">...</em>&gt;</code> is not, because the
+              white-space between the two FTL tags is embedded white-space,
+              not indentation or trailing white-space.</p>
+            </li>
+
+            <li>
+              <p>White-space sandwiched between the following directives is
+              ignored: <code class="inline-code">macro</code>, <code class="inline-code">function</code>,
+              <code class="inline-code">assign</code>, <code class="inline-code">global</code>,
+              <code class="inline-code">local</code>, <code class="inline-code">ftl</code>,
+              <code class="inline-code">import</code>, but only if there is
+              <em>only</em> white-space and/or FTL comments
+              between the directives. In practice it means that you can put
+              empty lines between macro definitions and assignments as spacing
+              for better readability, without printing needless empty lines
+              (line breaks) to the output.</p>
+            </li>
+          </ul>
+
+          <p>The output of the last example with white-space stripping
+          enabled will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output"><span class="marked-text">&lt;p&gt;List of users:<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+  &lt;li&gt;</span>Joe<span class="marked-text"><em><span class="marked-invisible-text">[BR]</span></em>
+  &lt;li&gt;</span>Julia<span class="marked-text"><em><span class="marked-invisible-text">[BR]</span></em>
+&lt;/ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;p&gt;That&#39;s all.</span></pre></div>
+
+          <p>This is because after stripping the template becomes the
+          following; the ignored text is not <span class="marked-text">colored</span>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><span class="marked-text">&lt;p&gt;List of users:<em><span class="marked-invisible-text">[BR]</span></em></span>
+<span class="marked-ftl-tag">&lt;#assign users = [{&quot;name&quot;:&quot;Joe&quot;,        &quot;hidden&quot;:false},<em><span class="marked-invisible-text">[BR]</span></em>
+                  {&quot;name&quot;:&quot;James Bond&quot;, &quot;hidden&quot;:true},<em><span class="marked-invisible-text">[BR]</span></em>
+                  {&quot;name&quot;:&quot;Julia&quot;,      &quot;hidden&quot;:false}]&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-text">&lt;ul&gt;<em><span class="marked-invisible-text">[BR]</span></em></span>
+<span class="marked-ftl-tag">&lt;#list users as user&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+  <span class="marked-ftl-tag">&lt;#if !user.hidden&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-text">  &lt;li&gt;<span class="marked-interpolation">${user.name}</span><em><span class="marked-invisible-text">[BR]</span></em></span>
+  <span class="marked-ftl-tag">&lt;/#if&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-ftl-tag">&lt;/#list&gt;</span><em><span class="marked-invisible-text">[BR]</span></em>
+<span class="marked-text">&lt;/ul&gt;<em><span class="marked-invisible-text">[BR]</span></em>
+&lt;p&gt;That&#39;s all.</span></pre></div>
+
+          <p>White-space stripping can be enabled/disabled in per template
+          manner with the <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code> directive</a>.
+          If you don&#39;t specify this with the <code class="inline-code">ftl</code> directive,
+          then white-space stripping will be enabled or disabled depending on
+          how the programmer has configured FreeMarker. The factory default is
+          white-space stripping enabled, and the programmers probably left it
+          so (<span class="marked-for-programmers">recommended</span>). <span class="marked-for-programmers">Note that enabling white-space stripping does
+          <em>not</em> degrade the performance of template
+          execution; white-space stripping is done during template
+          loading.</span></p>
+
+          <p>White-space stripping can be disabled for a single line with
+          the <a href="ref_directive_nt.html#ref.directive.nt"><code>nt</code></a>
+          directive (for No Trim).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_30">Using compress directive</h2>
+
+
+          
+
+          <p>Another solution is to use the <a href="ref_directive_compress.html#ref.directive.compress"><code>compress</code>
+          directive</a>. As opposed to white-space stripping, this works
+          directly on the generated output, not on the template. That is, it
+          will investigate the printed output on the fly, and does not
+          investigate the FTL program that creates the output. It aggressively
+          removes indentations, empty lines and repeated spaces/tabs (for more
+          information read the <a href="ref_directive_compress.html#ref.directive.compress">reference</a>). So the output
+          of:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>&lt;#compress&gt;</strong>
+&lt;#assign users = [{&quot;name&quot;:&quot;Joe&quot;,        &quot;hidden&quot;:false},
+                  {&quot;name&quot;:&quot;James Bond&quot;, &quot;hidden&quot;:true},
+                  {&quot;name&quot;:&quot;Julia&quot;,      &quot;hidden&quot;:false}]&gt;
+List of users:
+&lt;#list users as user&gt;
+  &lt;#if !user.hidden&gt;
+  - ${user.name}
+  &lt;/#if&gt;
+&lt;/#list&gt;
+That&#39;s all.
+<strong>&lt;/#compress&gt;</strong></pre></div>
+
+          <p>will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">List of users:
+- Joe
+- Julia
+That&#39;s all.</pre></div>
+
+          <p>Note that <code class="inline-code">compress</code> is totally independent
+          of white-space stripping. So it is possible that the white-space of
+          template is stripped, and later the produced output is
+          <code class="inline-code">compress</code>-ed.</p>
+
+          <p>Also, by default a user-defined directve called
+          <code class="inline-code">compress</code> is available in the data-model (due to
+          backward compatibility). This is the same as the directive, except
+          that you may optionally set the <code class="inline-code">single_line</code>
+          parameter, which will remove all intervening line breaks. If you
+          replace
+          <code class="inline-code">&lt;#compress&gt;<em class="code-color">...</em>&lt;/#compress&gt;</code>
+          on the last example with <code class="inline-code">&lt;@compress
+          single_line=true&gt;<em class="code-color">...</em>&lt;/@compress&gt;</code>,
+          then you get this output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">List of users: - Joe - Julia That&#39;s all.</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_misc_autoescaping.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_alternativesyntax.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_quickstart.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_quickstart.html b/builds/2.3.26-nightly/dgui_quickstart.html
new file mode 100644
index 0000000..dacd07b
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_quickstart.html
@@ -0,0 +1,57 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Getting Started with template writing - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Getting Started with template writing">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_quickstart.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_quickstart.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li></ul><div class="b
 ookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Getting Started"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart_basics.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="dgui_quickstart" itemprop="headline">Getting Started</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="dgui_quickstart_basics.html" data-menu-target="dgui_quickstart_basics">Template + data-model = output</a></li><li><a class="page-menu-link" href="dgui_quickstart_datamodel.html" data-menu-target="dgui_quickstart_datamodel">The data-model at a glance</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html" data-menu-target="dgui_quickstart_template">The template at a glance</a></li></ul> </div><p>This chapter is a very rough introduction to FreeMarker. The
+      chapters after this will go over things in much greater detail.
+      Nonetheless, once you have read this chapter, you will be able to write
+      simple but useful FreeMarker templates.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart_basics.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[10/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_1.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_1.html b/builds/2.3.26-nightly/versions_2_3_1.html
new file mode 100644
index 0000000..0b646ce
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_1.html
@@ -0,0 +1,352 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.1 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.1">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_1.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_1.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_1.html"><span itemprop="name">2.3.1</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.1"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_1" itemprop="headline">2.3.1</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_214" data-menu-target="autoid_214">Possible backward compatibility issue</a></li><li><a class="page-menu-link" href="#autoid_215" data-menu-target="autoid_215">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_216" data-menu-target="autoid_216">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_217" data-menu-target="autoid_217">Other changes</a></li><li><a class="page-menu-link" href="#autoid_218" data-menu-target="autoid_218">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="#autoid_219" data-menu-target="autoid_219">Differences between the preview release and final
+release</a></li></ul></li></ul> </div><p>Date of release: 2005-01-04</p><p>Maintenance (with some important new features) and bugfix
+        release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_214">Possible backward compatibility issue</h2>
+
+
+          <p>There is a bugfix that may affect the behavior of you Web
+          application if you use JSP tags in FreeMarker templates:
+          FreeMarker&#39;s implementation of
+          <code class="inline-code">javax.servlet.jsp.PageContext.getSession()</code> was
+          incorrect. The <code class="inline-code">getSession()</code> method is a
+          convenience method by which the custom tag can get the current
+          <code class="inline-code">HttpSession</code> object (possibly
+          <code class="inline-code">null</code> if there is no session). Till now, if the
+          session didn&#39;t existed then it has created it automatically, so it
+          never returned <code class="inline-code">null</code>. This was a bug, so starting
+          from 2.3.1 it never creates the session, just returns
+          <code class="inline-code">null</code> if it doesn&#39;t exist. The old incorrect
+          behavior could cause page rendering to fail if the method is called
+          after the page is partially flushed. But beware, the old behavior
+          has possibly hidden some bugs of the Web application, where it
+          forgot to create the session, so with the new correct behavior you
+          may face malfunction caused by previously cloaked bugs of the Web
+          application. (It&#39;s the task of the MVC Controller to create the
+          session, except if the JSP tag that needs a session is written so it
+          creates it automatically, but then it doesn&#39;t expects that
+          <code class="inline-code">getSession()</code> will do it.)</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_215">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>New built-in: <a href="ref_builtins_string.html#ref_builtin_url"><code>url</code></a>. This
+              built-in can be used for URL escaping. Note, however, that to
+              use this built-in conveniently, the software that encapsulates
+              FreeMarker has to be 2.3.1 aware (programmers will find more
+              info bellow...).</p>
+            </li>
+
+            <li>
+              <p>New <a href="ref_specvar.html">special variables</a>:
+              <code class="inline-code">output_encoding</code> and
+              <code class="inline-code">url_escaping_charset</code>. Note, however, that to
+              use these, the software that encapsulates FreeMarker has to be
+              2.3.1 aware (programmers will find more info bellow...).</p>
+            </li>
+
+            <li>
+              <p>New built-ins for sequences: <a href="ref_builtins_sequence.html#ref_builtin_seq_contains"><code>seq_contains</code></a>,
+              <a href="ref_builtins_sequence.html#ref_builtin_seq_index_of"><code>seq_index_of</code></a>,
+              <a href="ref_builtins_sequence.html#ref_builtin_seq_last_index_of"><code>seq_last_index_of</code></a>.</p>
+            </li>
+
+            <li>
+              <p>New built-ins for strings: <a href="ref_builtins_string.html#ref_builtin_left_pad"><code>left_pad</code></a>,
+              <a href="ref_builtins_string.html#ref_builtin_right_pad"><code>right_pad</code></a>
+              and <a href="ref_builtins_string.html#ref_builtin_contains"><code>contains</code></a>.</p>
+            </li>
+
+            <li>
+              <p>New directive: <a href="ref_directive_attempt.html#ref.directive.attempt"><code>attempt</code>/<code>recover</code></a></p>
+            </li>
+
+            <li>
+              <p>The <a href="ref_builtins_string.html#ref_builtin_js_string"><code>js_string</code>
+              built-in</a> now escapes <code class="inline-code">&gt;</code> as
+              <code class="inline-code">\&gt;</code> (to avoid
+              <code class="inline-code">&lt;/script&gt;</code>).</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">sort</code> and <code class="inline-code">sort_by</code>
+              built-ins now can sort by date values. Also,
+              <code class="inline-code">sort_by</code> built-in now can sort by the
+              subvarible of a subvariable of a subvariable... etc. for any
+              level depth. (<a href="ref_builtins_sequence.html#ref_builtin_sort_by">Details...</a>)</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.template.TemplateExceptionHandler.HTML_DEBUG_HANDLER</code>
+              now prints more HTML-context-proof messages.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_216">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>New setting: <code class="inline-code">output_encoding</code>. This
+              setting is used for informing FreeMarker about the charset that
+              the enclosing software (as a Web application framework) uses for
+              the output of FreeMarker. It&#39;s undefined by default, and
+              although it is not strictly required to set it, the enclosing
+              software should do so. This setting must be set if templates
+              want to use the new <code class="inline-code">output_encoding</code> special
+              variable, and possibly if they want to use the new
+              <code class="inline-code">url</code> built-in. Note that the FreeMarker API
+              allows you to set settings for each template execution
+              individually (look at
+              <code class="inline-code">Template.createProcessingEnvironment(...)</code>).</p>
+            </li>
+
+            <li>
+              <p>New setting: <code class="inline-code">url_escaping_charset</code>. This
+              is the charset used for calculating the escaped parts
+              (<code class="inline-code">%<em class="code-color">XX</em></code>) when you do
+              URL escaping with the new <code class="inline-code">url</code> built-in. If it
+              is not set, then the <code class="inline-code">url</code> built-in uses the
+              value of the <code class="inline-code">output_encoding</code> setting, and if
+              that&#39;s not set either, then the parameterless version of
+              <code class="inline-code">url</code> built-in (<code class="inline-code">${foo?url}</code>)
+              can&#39;t be used.</p>
+            </li>
+
+            <li>
+              <p>Using the singleton (static)
+              <code class="inline-code">Configuration</code> instance is clearly a bad
+              practice, so related methods are now deprecated, and the Manual
+              was adjusted, and the <code class="inline-code">FreemarkerXmlTask</code> was
+              updated as well.</p>
+            </li>
+
+            <li>
+              <p>The
+              <code class="inline-code">freemarker.template.utility.Constants</code> class
+              was added that contains various static final fields that store
+              frequently used constant <code class="inline-code">TemplateModel</code>
+              values, as <code class="inline-code">EMPTY_SEQUENCE</code>,
+              <code class="inline-code">ZERO</code>, ...etc.</p>
+            </li>
+
+            <li>
+              <p>When using <code class="inline-code">SecurityManager</code> with
+              FreeMarker, accessing system properties may caused
+              AccessControlException. Now such exceptions are catched and
+              logged with warning level, and the default value of the property
+              is returned.</p>
+            </li>
+
+            <li>
+              <p>The needles <code class="inline-code">InvocationTargetException</code>
+              is now removed from the exception cause trace in certain
+              cases.</p>
+            </li>
+
+            <li>
+              <p>Added a dirty hack that prints
+              <code class="inline-code">ServletException</code> root cause in
+              <code class="inline-code">TemplateException</code>&#39;s stack trace if that&#39;s the
+              direct cause exception of the
+              <code class="inline-code">TemplateException</code>, despite the poorly written
+              <code class="inline-code">ServletException</code> class.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: FreeMarker&#39;s implementation of
+              <code class="inline-code">javax.servlet.jsp.PageContext.getSession()</code>
+              was incorrect. The <code class="inline-code">getSession()</code> method is a
+              convenience method by which the custom tag can get the current
+              <code class="inline-code">HttpSession</code> object (possibly
+              <code class="inline-code">null</code> if there is no session). Till now, if
+              the session didn&#39;t existed then it has created it automatically,
+              so it never returned <code class="inline-code">null</code>. This was a bug, so
+              starting from 2.3.1 it never creates the session, just returns
+              <code class="inline-code">null</code> if it doesn&#39;t exist. The old incorrect
+              behavior could cause page rendering to fail if the method is
+              called after the page is partially flushed. But beware, the old
+              behavior has possibly hidden some bugs of the Web application,
+              where it forgot to create the session, so with the new correct
+              behavior you may face malfunction caused by previously cloaked
+              bugs of the Web application. (It&#39;s the task of the MVC
+              Controller to create the session, except if the JSP tag that
+              needs a session is written so it creates it automatically, but
+              then it doesn&#39;t expects that <code class="inline-code">getSession()</code>
+              will do it.)</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The <code class="inline-code">BeansWrapper</code> didn&#39;t always
+              handled properly the case of a Java class having both a public
+              static field and a public static method with the same
+              name.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: <code class="inline-code">SimpleMethodModel</code> had
+              incorrectly propagate exceptions sometimes, causing null pointer
+              exception.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The template execution may used outdated cached
+              values when you have processed the same
+              <code class="inline-code">Environment</code> for multiple times, and changed
+              settings between the two processings. Note that this could
+              happen only in single-thread environment, where such setting
+              modifications are allowed.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Some of the string built-ins has died with
+              <code class="inline-code">IndexOutOfBounds</code> exception if the template
+              author has forgotten to specify required parameters. Now they
+              die with more helpful error messages.</p>
+            </li>
+
+            <li>
+              <p>Bugfix:
+              <code class="inline-code">freemarker.ext.dom.NodeModel.equals(...)</code> has
+              died with null pointer exception if its argument was
+              <code class="inline-code">null</code>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The cause exception of
+              <code class="inline-code">TemplateException</code>-s was sometimes printed
+              twice in stack traces with J2SE 1.4 or later.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The
+              <code class="inline-code">StringUtil.FTLStringLiteralEnc(String)</code> method
+              was finished.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_217">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Fixes and improvements in the Manual and in the API
+              JavaDoc.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_218">The history of the releases before the final version</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_219">Differences between the preview release and final
+            release</h3>
+
+
+            <ul>
+              <li>
+                <p>Added a dirty hack that prints
+                <code class="inline-code">ServletException</code> root cause in
+                <code class="inline-code">TemplateException</code>&#39;s stack trace if that&#39;s
+                the direct cause exception of the
+                <code class="inline-code">TemplateException</code>, despite the poorly
+                written <code class="inline-code">ServletException</code> class.</p>
+              </li>
+
+              <li>
+                <p>Bugfix:
+                <code class="inline-code">freemarker.ext.dom.NodeModel.equals(...)</code>
+                has died with null pointer exception if its argument was
+                <code class="inline-code">null</code>.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: The cause exception of
+                <code class="inline-code">TemplateException</code>-s was sometimes printed
+                twice in stack traces with J2SE 1.4 or later.</p>
+              </li>
+
+              <li>
+                <p>More minor improvements in the Manual.</p>
+              </li>
+            </ul>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_2.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_10.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_10.html b/builds/2.3.26-nightly/versions_2_3_10.html
new file mode 100644
index 0000000..69c8548
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_10.html
@@ -0,0 +1,116 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.10 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.10">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_10.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_10.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_10.html"><span itemprop="name">2.3.10</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.10"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_11.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_9.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_10" itemprop="headline">2.3.10</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_196" data-menu-target="autoid_196">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_197" data-menu-target="autoid_197">Changes on the FTL side</a></li></ul> </div><p>Date of release: 2007-04-20</p><p>This release contains several important bugfixes.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_196">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>[1589245] <code class="inline-code">MultiTemplateLoader</code> clears
+              its internal cached data (used for optimizing subsequent lookups
+              of the same template) when
+              <code class="inline-code">Configuration.clearTemplateCache()</code> is
+              invoked.</p>
+            </li>
+
+            <li>
+              <p>[1619257] A bug that caused an exception when
+              <code class="inline-code">strict_bean_model</code> was used in a FreeMarker
+              configuration <code class="inline-code">Properties</code> object or in the
+              <code class="inline-code">&lt;#setting .../&gt;</code> directive has been
+              fixed.</p>
+            </li>
+
+            <li>
+              <p>[1685176] A bug that caused
+              <code class="inline-code">StackOverflowError</code> in certain interactions of
+              garbage collector with MRU cache under Sun&#39;s Java 6 JVM has been
+              fixed.</p>
+            </li>
+
+            <li>
+              <p>[1686955] When <code class="inline-code">ResourceBundleModel</code>
+              constructs <code class="inline-code">MessageFormat</code> objects, it passes
+              them its own locale. <a href="pgui_misc_beanwrapper.html#beanswrapper_method">More
+              info...</a></p>
+            </li>
+
+            <li>
+              <p>[1691432] A bug that caused
+              <code class="inline-code">BeansWrapper.EXPOSE_SAFE</code> to be no safer than
+              <code class="inline-code">BeansWrapper.EXPOSE_ALL</code> has been
+              fixed.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_197">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>[1628550] You can now use
+              <code class="inline-code">dateExp?string.full</code> for formatting dates
+              using Java built-in format
+              <code class="inline-code">java.util.Date.FULL</code> <a href="ref_builtins_date.html#ref_builtin_string_for_date">More info...</a></p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_11.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_9.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_11.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_11.html b/builds/2.3.26-nightly/versions_2_3_11.html
new file mode 100644
index 0000000..fa46b60
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_11.html
@@ -0,0 +1,226 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.11 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.11">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_11.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_11.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_11.html"><span itemprop="name">2.3.11</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.11"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_12.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_10.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_11" itemprop="headline">2.3.11</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_193" data-menu-target="autoid_193">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_194" data-menu-target="autoid_194">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_195" data-menu-target="autoid_195">Documentation changes</a></li></ul> </div><p>Date of release: 2007-12-04</p><p>This release contains several performance and usability
+        improvements.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_193">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1687248&amp;group_id=794&amp;atid=100794">[1687248]</a>
+              <strong>Warning! This bugfix may breaks some
+              templates!</strong> Fixed the bugs of the <a href="ref_builtins_number.html#ref_builtin_c"><code>c</code> built-in</a>
+              (<code class="inline-code">?c</code>) that sometimes caused whole numbers to
+              be formatted with ".0" at the end (like: 1.0), and
+              caused numbers sometimes formatted to exponential form (like
+              4E-20). From now whole numbers will never use decimal dot (not
+              even if the wrapped number is a <code class="inline-code">double</code>;
+              remember, the template language knows only a single numerical
+              type), and exponential form will never be used either. Also, the
+              maximum number of digits after the decimal dot was limited to
+              16, so numbers smaller than 1E-16 will be shown as 0.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_194">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>FreeMarker now has much better JSP 2.0 and JSP 2.1
+              compliance. Most notably, the JSP 2.0
+              <code class="inline-code">SimpleTag</code> interface is now supported.
+              Additionally, even when run in an environment that doesn&#39;t have
+              its own JSP implementation, the FreeMarker JSP runtime will make
+              available its own implementation of
+              <code class="inline-code">JspFactory</code> and
+              <code class="inline-code">JspEngineInfo</code> to tags when JSP 2.0 API JAR is
+              available in classpath, as well as an implementation of
+              <code class="inline-code">JspApplicationContext</code> when JSP 2.1 API JAR is
+              available in classpath.</p>
+            </li>
+
+            <li>
+              <p>A new model interface,
+              <code class="inline-code">TemplateDirectiveModel</code> provides an easier
+              paradigm for implementing user-defined directives than
+              <code class="inline-code">TemplateTransformModel</code> did previously.
+              <code class="inline-code">TemplateTransformModel</code> will be
+              deprecated.</p>
+            </li>
+
+            <li>
+              <p>FreeMarker now finds the Xalan-based XPath support
+              included in Sun JRE/JDK 5 and 6, so no separate Xalan jar is
+              required for the XPath support to work. (However, we recommend
+              Jaxen over Xalan, as the FreeMarker XPath support is more
+              complete with that. Of course for that the Jaxen jar is still
+              needed.)</p>
+            </li>
+
+            <li>
+              <p>Wrapping performance of <code class="inline-code">BeansWrapper</code>
+              has been significantly improved by eliminating repetitive
+              execution of various class tests.</p>
+
+              <p><strong>Note for
+              <code class="inline-code">BeansWrapper</code> customizers:</strong>
+              subclasses of <code class="inline-code">BeansWrapper</code> that previously
+              overrode <code class="inline-code">getInstance(Object, ModelFactory)</code>
+              method should now instead override
+              <code class="inline-code">getModelFactory(Class)</code> to take advantage of
+              this improvement. Overriding the old method still works, but it
+              will not take advantage of the performance improvement.</p>
+            </li>
+
+            <li>
+              <p>Memory footprint of a wrapper created by
+              <code class="inline-code">BeansWrapper</code> has been reduced (by a size of
+              one default-sized <code class="inline-code">HashMap</code>) until methods or
+              indexed properties are accessed on it (simple properties can be
+              accessed without increasing memory footprint).</p>
+            </li>
+
+            <li>
+              <p>Rhino objects can be used in templates as scalars,
+              numbers, and booleans, following the JavaScript conversion
+              semantics for these types.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">.data_model</code> is now a
+              <code class="inline-code">TemplatHashModelEx</code> when possible. This means
+              that the list of the data-model variable names usually can be
+              get with <code class="inline-code">.data_model?keys</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">FileTemplateLoader</code> can now optionally
+              allow following symlinks that point out of the base directory.
+              It is disabled by default for backward compatibility.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1670887&amp;group_id=794&amp;atid=100794">[1670887]</a>
+              <code class="inline-code">TaglibFactory</code> taglib matching did not follow
+              JSP 1.2 FCS.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1754320&amp;group_id=794&amp;atid=100794">[1754320]</a>
+              Bug in <code class="inline-code">setXPathSupportClass</code> prevented
+              plugging in a user-supplied <code class="inline-code">XPathSupport</code>
+              implementation.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1803298&amp;group_id=794&amp;atid=100794">[1803298]</a>
+              Parser error while parsing macro with loop variables</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1824122&amp;group_id=794&amp;atid=100794">[1824122]</a>
+              Loading templates from JAR files could lead to leaking of file
+              handles (due to a bug in the Java API implementation of
+              Sun).</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: Cached template is now removed from the cache
+              if the re-loading of the modified template file fails, so no
+              staled template is served.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_195">Documentation changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Substantial reworkings in the Template Authors&#39;s Guide
+              (which was previously called Designer&#39;s Guide), especially in
+              the Getting Started section.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">#{...}</code> is documented as deprected
+              construct from now.</p>
+            </li>
+
+            <li>
+              <p>The &quot;transform&quot; term is now removed from the
+              documentation. Instead the more general &quot;user-defined directive&quot;
+              term is used, which encompasses macros,
+              <code class="inline-code">TemplateTransformModel</code>-s and the new
+              <code class="inline-code">TemplateDirectiveModel</code>-s, which are just
+              different ways of implementing user-defined directives.</p>
+            </li>
+
+            <li>
+              <p>Some more minor improvements in the Manual.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_12.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_10.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_12.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_12.html b/builds/2.3.26-nightly/versions_2_3_12.html
new file mode 100644
index 0000000..ddf737e
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_12.html
@@ -0,0 +1,88 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.12 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.12">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_12.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_12.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_12.html"><span itemprop="name">2.3.12</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.12"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_13.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_11.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_12" itemprop="headline">2.3.12</h1>
+</div></div><p>Date of release: 2008-02-03</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_192">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1857161&amp;group_id=794&amp;atid=100794">[1857161]</a>
+              JSP <code class="inline-code">SimpleTag</code> support was broken in
+              2.3.11.</p>
+            </li>
+
+            <li>
+              <p>In the templates, now you can conveniently call Java
+              methods that use the Java 5 varargs feature (variable-length
+              argument lists). Also the overloaded-method chooser logic now
+              considers vararg methods more intelligently.</p>
+            </li>
+
+            <li>
+              <p>Enum constants are now identified by their
+              <code class="inline-code">name()</code> instead of by their
+              <code class="inline-code">toString()</code> (because the latter can be
+              overridden in subclasses). This doesn&#39;t affect the way enum
+              constants are printed; of course that still uses
+              <code class="inline-code">toString()</code>.</p>
+            </li>
+
+            <li>
+              <p>Messages in parser exceptions now display the name of the
+              template.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_13.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_11.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_13.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_13.html b/builds/2.3.26-nightly/versions_2_3_13.html
new file mode 100644
index 0000000..3ff89e3
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_13.html
@@ -0,0 +1,125 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.13 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.13">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_13.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_13.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_13.html"><span itemprop="name">2.3.13</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.13"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_14.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_12.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_13" itemprop="headline">2.3.13</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_190" data-menu-target="autoid_190">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_191" data-menu-target="autoid_191">Changes on the Java side</a></li></ul> </div><p>Date of release: 2008-05-05</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_190">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>New built-ins for rounding numbers:
+              <code class="inline-code">round</code>, <code class="inline-code">floor</code>,
+              <code class="inline-code">ceiling</code>. See more <a href="ref_builtins_number.html#ref_builtin_rounding">here...</a></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_191">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1898300&amp;group_id=794&amp;atid=350794">[1898300]</a>,
+              <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1818742&amp;group_id=794&amp;atid=350794">[1818742]</a>,
+              <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1780882&amp;group_id=794&amp;atid=350794">[1780882]</a>:
+              Reworked template caching mechanism for radically improved
+              concurrent performance, with help from Azul Systems engineers.
+              (Achieved 20x speedup with Struts2 webapps on a 128-CPU Azul
+              device compared to 2.3.12.) Also, template loading (including
+              parsing) errors are now cached, improving performance in
+              applications that often try to get missing templates.</p>
+            </li>
+
+            <li>
+              <p><a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1892546&amp;group_id=794&amp;atid=100794">[1892546]</a>
+              Allow for custom <code class="inline-code">TemplateLoader</code> in
+              <code class="inline-code">FreemarkerServlet</code>.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1725107&amp;group_id=794&amp;atid=100794">[1725107]</a>
+              Using the FreeMarker JSP taglib support with Servlet 2.4 may
+              generates XML validation warnings.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1939742&amp;group_id=794&amp;atid=100794">[1939742]</a>
+              <code class="inline-code">ConcurrentModificationException</code> on accessing
+              nonexistent <code class="inline-code">SimpleHash</code> entries in a
+              loop</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1902012&amp;group_id=794&amp;atid=100794">[1902012]</a>
+              <code class="inline-code">IteratorModel</code> eats exception causes</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <code class="inline-code">&lt;#assign
+              x&gt;&lt;/#assign&gt;</code> (empty nested content) has
+              caused <code class="inline-code">NullPointerException</code></p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1926150&amp;group_id=794&amp;atid=100794">[1926150]</a>
+              <code class="inline-code">CachedTemplate</code> should be serializable</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_14.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_12.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_14.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_14.html b/builds/2.3.26-nightly/versions_2_3_14.html
new file mode 100644
index 0000000..df9eb61
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_14.html
@@ -0,0 +1,136 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.14 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.14">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_14.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_14.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_14.html"><span itemprop="name">2.3.14</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.14"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_15.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_13.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_14" itemprop="headline">2.3.14</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_188" data-menu-target="autoid_188">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_189" data-menu-target="autoid_189">Changes on the Java side</a></li></ul> </div><p>Date of release: 2008-09-01</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_188">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>New built-in: <code class="inline-code">xhtml</code>. See more <a href="ref_builtins_string.html#ref_builtin_xhtml">here...</a></p>
+            </li>
+
+            <li>
+              <p>New special variable: <code class="inline-code">template_name</code>.
+              See more <a href="ref_specvar.html">here...</a></p>
+            </li>
+
+            <li>
+              <p>Now you can use the values of parameters as the defaults
+              of other parameters, for example <code class="inline-code">&lt;#macro section
+              title label=title&gt;</code>. In earlier versions it worked
+              unreliably. There are no restriction regarding the order of
+              parameters, like <code class="inline-code">&lt;#macro section label=title
+              title&gt;</code> works too.</p>
+            </li>
+
+            <li>
+              <p>Added a new <a href="ref_builtins_number.html#ref_builtin_string_for_number">number format
+              specifier</a>, <code class="inline-code">computer</code>. This uses the
+              same formatting as
+              <code class="inline-code"><em class="code-color">exp</em>?c</code>.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_189">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>The constructor to
+              <code class="inline-code">freemarker.ext.servlet.AllHttpScopesHashModel</code>
+              is now public, allowing it to be reused in 3rd party web
+              frameworks.</p>
+            </li>
+
+            <li>
+              <p>Bugfix:
+              <code class="inline-code">freemarker.ext.beans.SimpleMapModel</code> (unlike
+              either <code class="inline-code">freemarker.ext.beans.MapModel</code> or
+              <code class="inline-code">freemarker.template.SimpleHash</code>) didn&#39;t allow
+              lookup by <code class="inline-code">java.lang.Character</code> key when passed
+              a single-character string as a key.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: permissive unwrapping in
+              <code class="inline-code">freemarker.template.utility.DeepUnwrap</code> class
+              was not recursively permissive with elements of sequences and
+              hashes.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: <code class="inline-code">freemarker.ext.beans.MapModel</code>
+              returns <code class="inline-code">BeansWrapper.wrap(null)</code> instead of
+              <code class="inline-code">null</code> for <code class="inline-code">null</code> values
+              explicitly bound into the map.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Fixed a subtle bug with property getters of
+              classes implementing a type-parametrized interface.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: A further corner case of <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1939742&amp;group_id=794&amp;atid=100794">[1939742]</a>.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_15.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_13.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[43/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_misc_autoescaping.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_misc_autoescaping.html b/builds/2.3.26-nightly/dgui_misc_autoescaping.html
new file mode 100644
index 0000000..f234ea6
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_misc_autoescaping.html
@@ -0,0 +1,718 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Auto-escaping and output formats - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Auto-escaping and output formats">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_misc_autoescaping.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_misc_autoescaping.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itempro
 p="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc_autoescaping.html"><span itemprop="name">Auto-escaping and output formats</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Miscellaneous","Auto-escaping and output formats"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_misc_namespace.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_whitespace.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_misc_autoescaping" itemprop="headline">Auto-escaping and output formats</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#dgui_misc_autoescaping_outputformat" data-menu-target="dgui_misc_autoescaping_outputformat">Output formats</a></li><li><a class="page-menu-link" href="#dgui_misc_autoescaping_overrideoformat" data-menu-target="dgui_misc_autoescaping_overrideoformat">Overriding the output format in templates</a></li><li><a class="page-menu-link" href="#dgui_misc_autoescaping_disableautoesc" data-menu-target="dgui_misc_autoescaping_disableautoesc">Disabling auto escaping</a></li><li><a class="page-menu-link" href="#dgui_misc_autoescaping_movalues" data-menu-target="dgui_misc_autoescaping_movalues">"Markup output" values</a></li><li><a class="page-menu-link" href="#autoid_28" data-menu-target="autoid_28">Further details and tricky cases</a><ul><li><a class="page-menu-link" href="#dgui_misc_autoescaping_nonmarkupof" data-menu-target="dgui_misc_autoescaping_nonmarkupof">Non-markup output formats</a></li><li><a class="page-menu-link" href="#dgui_misc_autoescaping_m
 ixingoutputformats" data-menu-target="dgui_misc_autoescaping_mixingoutputformats">Inserting markup output values from other markups</a></li><li><a class="page-menu-link" href="#dgui_misc_autoescaping_concatenation" data-menu-target="dgui_misc_autoescaping_concatenation">Markup output values and the "+"
+operator</a></li><li><a class="page-menu-link" href="#dgui_misc_autoescaping_stringliteral" data-menu-target="dgui_misc_autoescaping_stringliteral">${...} inside string literals</a></li><li><a class="page-menu-link" href="#autoid_29" data-menu-target="autoid_29">Combined output formats</a></li></ul></li></ul> </div><p>This is a <em>detailed</em> tutorial to
+        auto-escaping and related concepts; for the bare minimum, <a href="dgui_quickstart_template.html#dgui_quickstart_template_autoescaping">read this
+        instead</a>.</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>The kind of automatic escaping described here requires at
+          least FreeMarker 2.3.24. If you have to use an earlier version, use
+          the deprecated <a href="ref_directive_escape.html"><code>escape</code>
+          directive</a> instead.</p>
+          </div>
+
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_misc_autoescaping_outputformat">Output formats</h2>
+
+
+          
+
+          <p>Each template has an associated output format <span class="marked-for-programmers">(a
+          <code class="inline-code">freemarker.core.OutputFormat</code> instance)</span>.
+          The output format dictates the escaping rules, which is applied on
+          all <code class="inline-code">${<em class="code-color">...</em>}</code>-s (and
+          <code class="inline-code">#{<em class="code-color">...</em>}</code>-s) that aren&#39;t
+          <a href="#dgui_misc_autoescaping_stringliteral">inside a string
+          literal</a>. It also specifies a MIME type (e.g.
+          <code class="inline-code">&quot;text/HTML&quot;</code>) and a canonical name (e.g.
+          <code class="inline-code">&quot;HTML&quot;</code>) that the embedding application/framework
+          can use for its own purposes.</p>
+
+          <p>It&#39;s the programmer&#39;s responsibility to <a href="pgui_config_outputformatsautoesc.html">associate output format
+          to templates</a>. Furthermore it&#39;s recommended that FreeMarker is
+          configured so that templates with <code class="inline-code">ftlh</code> and
+          <code class="inline-code">ftlx</code> file extensions are automatically associated
+          with the HTML and XML output formats, respectively.</p>
+
+          <p><a name="topic.predefinedOutputFormats"></a>The predefined output
+          formats are:</p>
+
+            <div class="table-responsive">
+    <table class="table">
+
+            <thead>
+              <tr>
+                <th>Name</th>
+
+
+                <th>Description</th>
+
+
+                <th>MIME Type</th>
+
+
+                <th>Default implementation
+                (<code class="inline-code">freemarker.core.*</code>)</th>
+
+              </tr>
+
+            </thead>
+
+
+            <tbody>
+              <tr>
+                <td><code class="inline-code">HTML</code></td>
+
+
+                <td>Escapes <code class="inline-code">&lt;</code>, <code class="inline-code">&gt;</code>,
+                <code class="inline-code">&amp;</code>, <code class="inline-code">&quot;</code>,
+                <code class="inline-code">&#39;</code> as <code class="inline-code">&amp;lt;</code>,
+                <code class="inline-code">&amp;gt;</code>, <code class="inline-code">&amp;amp;</code>,
+                <code class="inline-code">&amp;quot;</code>,
+                <code class="inline-code">&amp;#39;</code></td>
+
+
+                <td><code class="inline-code">text/html</code></td>
+
+
+                <td><code class="inline-code">HTMLOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">XHTML</code></td>
+
+
+                <td>Escapes <code class="inline-code">&lt;</code>, <code class="inline-code">&gt;</code>,
+                <code class="inline-code">&amp;</code>, <code class="inline-code">&quot;</code>,
+                <code class="inline-code">&#39;</code> as <code class="inline-code">&amp;lt;</code>,
+                <code class="inline-code">&amp;gt;</code>, <code class="inline-code">&amp;amp;</code>,
+                <code class="inline-code">&amp;quot;</code>,
+                <code class="inline-code">&amp;#39;</code></td>
+
+
+                <td><code class="inline-code">application/xhtml+xml</code></td>
+
+
+                <td><code class="inline-code">XHTMLOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+            </tbody>
+
+
+            <tbody>
+              <tr>
+                <td><code class="inline-code">XML</code></td>
+
+
+                <td>Escapes <code class="inline-code">&lt;</code>, <code class="inline-code">&gt;</code>,
+                <code class="inline-code">&amp;</code>, <code class="inline-code">&quot;</code>,
+                <code class="inline-code">&#39;</code> as <code class="inline-code">&amp;lt;</code>,
+                <code class="inline-code">&amp;gt;</code>, <code class="inline-code">&amp;amp;</code>,
+                <code class="inline-code">&amp;quot;</code>,
+                <code class="inline-code">&amp;apos;</code></td>
+
+
+                <td><code class="inline-code">application/xml</code></td>
+
+
+                <td><code class="inline-code">XMLOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">RTF</code></td>
+
+
+                <td>Escapes <code class="inline-code">{</code>, <code class="inline-code">}</code>,
+                <code class="inline-code">\</code> as <code class="inline-code">\{</code>,
+                <code class="inline-code">\}</code>, <code class="inline-code">\\</code></td>
+
+
+                <td><code class="inline-code">application/rtf</code></td>
+
+
+                <td><code class="inline-code">RTFOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">undefined</code></td>
+
+
+                <td>Doesn&#39;t escape. Prints markup output values (concept
+                explained <a href="#dgui_misc_autoescaping_movalues">later</a>) from
+                other output formats as is. The default output format used
+                when no output format was explicitly set in the
+                configuration.</td>
+
+
+                <td>None (<code class="inline-code">null</code>)</td>
+
+
+                <td><code class="inline-code">UndefinedOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">plainText</code></td>
+
+
+                <td>Doesn&#39;t escape.</td>
+
+
+                <td><code class="inline-code">text/plain</code></td>
+
+
+                <td><code class="inline-code">PlainTextOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">JavaScript</code></td>
+
+
+                <td>Doesn&#39;t escape.</td>
+
+
+                <td><code class="inline-code">application/javascript</code></td>
+
+
+                <td><code class="inline-code">JavaScriptOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">JSON</code></td>
+
+
+                <td>Doesn&#39;t escape.</td>
+
+
+                <td><code class="inline-code">application/json</code></td>
+
+
+                <td><code class="inline-code">JSONOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">CSS</code></td>
+
+
+                <td>Doesn&#39;t escape.</td>
+
+
+                <td><code class="inline-code">text/css</code></td>
+
+
+                <td><code class="inline-code">CSSOutputFormat.INSTANCE</code></td>
+
+              </tr>
+
+            </tbody>
+
+              </table>
+  </div>
+
+
+          <p>The programmers can add their your own output formats, so this
+          is maybe not all the output formats in your application!</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_misc_autoescaping_overrideoformat">Overriding the output format in templates</h2>
+
+
+          <p>Especially in legacy applications, you will often find that
+          the output format is <code class="inline-code">undefined</code> (you can check
+          that with <code class="inline-code">${.output_format}</code>), and so no automatic
+          escaping is happening. In other cases, a common output format (like
+          HTML) is set for all templates, but a few templates need a different
+          output format. In any case, the output format of a template can be
+          enforced in the <a href="ref_directive_ftl.html">the
+          <code>ftl</code> header</a>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl output_format=&quot;XML&quot;&gt;
+${&quot;&#39;&quot;}  &lt;#-- Prints: &amp;apos; --&gt;</pre></div>
+
+          <p>Above, the output format was referred by its name shown in the
+          earlier table <em>(looked up via
+          <code class="inline-code">Configuration.getOutputFormat(String name)</code>,
+          actually)</em>.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>If escaping doesn&#39;t happen after adding the above
+            <code class="inline-code">ftl</code> header, then <code class="inline-code">&lt;#ftl
+            output_format=&quot;XML&quot; auto_esc=true&gt;</code> might helps (and
+            that means that FreeMarker was configured to use
+            "disable" auto-escaping <em>policy</em>,
+            which is generally not recommended).</p>
+            </div>
+
+
+          <p>The output format can also be applied to only a section of a
+          template, like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Let&#39;s assume we have &quot;HTML&quot; output format by default. --&gt;
+${&quot;&#39;&quot;}  &lt;#-- Prints: &amp;#39; --&gt;
+&lt;#outputformat &quot;XML&quot;&gt;
+  ${&quot;&#39;&quot;}  &lt;#-- Prints: &amp;apos; --&gt;
+&lt;/#outputformat&gt;
+${&quot;&#39;&quot;}  &lt;#-- Prints: &amp;#39; --&gt;</pre></div>
+
+          <p>Basically, each position in a template has an associated
+          output format, and as you saw above, it might not be the same
+          everywhere in the template. This association sticks to the positions
+          and won&#39;t change as the template executes. So if, for example, you
+          call a macro from inside an <code class="inline-code">outputformat</code> block
+          and the called macro is defined outside that block, it won&#39;t get the
+          output format of it. Or, if you have a macro that&#39;s defined in a
+          template with HTML output format, no mater from where you call it,
+          that macro will always execute with HTML output format. This is like
+          if you were coloring each characters of the template files by output
+          format in the text editor, and then later when the templates are
+          executed, it only considers the color of the statement being
+          executed. This gives you firm control over the output format and
+          hence escaping; you don&#39;t have to consider the possible execution
+          paths that can lead to a point.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_misc_autoescaping_disableautoesc">Disabling auto escaping</h2>
+
+
+          <p>For a single interpolation you can disable auto-escaping with
+          <a href="ref_builtins_string.html#ref_builtin_no_esc"><code>?no_esc</code></a>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Let&#39;s assume we have &quot;HTML&quot; output format by default. --&gt;
+${&#39;&lt;b&gt;test&lt;/b&gt;&#39;}  &lt;#-- prints: &amp;lt;b&amp;gt;test&amp;lt;/b&amp;gt; --&gt;
+${&#39;&lt;b&gt;test&lt;/b&gt;&#39;<strong>?no_esc</strong>}  &lt;#-- prints: &lt;b&gt;test&lt;/b&gt; --&gt;</pre></div>
+
+          <p>You can also disable auto escaping for a whole section with
+          the <a href="ref_directive_noautoesc.html"><code>noautoesc</code>
+          directive</a>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${&#39;&amp;&#39;}  &lt;#-- prints: &amp;amp; --&gt;
+<strong>&lt;#noautoesc&gt;</strong>
+  ${&#39;&amp;&#39;}  &lt;#-- prints: &amp; --&gt;
+  ...
+  ${&#39;&amp;&#39;}  &lt;#-- prints: &amp; --&gt;
+<strong>&lt;/#noautoesc&gt;</strong>
+${&#39;&amp;&#39;}  &lt;#-- prints: &amp;amp; --&gt;</pre></div>
+
+          <p>Just like <code class="inline-code">outputformat</code>, this only applies
+          to the part that&#39;s literally inside the block
+          ("coloring" logic).</p>
+
+          <p>Auto-escaping can also be disabled for the whole template in
+          the <code class="inline-code">ftl</code> header. It can then be re-enabled for a
+          section with the <a href="ref_directive_autoesc.html"><code>autoesc</code>
+          directive</a>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl <strong>autoesc=false</strong>&gt;
+${&#39;&amp;&#39;}  &lt;#-- prints: &amp; --&gt;
+<strong>&lt;#autoesc&gt;</strong>
+  ${&#39;&amp;&#39;}  &lt;#-- prints: &amp;amp; --&gt;
+  ...
+  ${&#39;&amp;&#39;}  &lt;#-- prints: &amp;amp; --&gt;
+<strong>&lt;/#autoesc&gt;</strong>
+${&#39;&amp;&#39;}  &lt;#-- prints: &amp; --&gt;</pre></div>
+
+          <p>You can also force escaping for an individual interpolation
+          when escaping is disabled, with <a href="ref_builtins_string.html#ref_builtin_esc"><code>?esc</code></a>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#ftl <strong>autoesc=false</strong>&gt;
+${&#39;&amp;&#39;}  &lt;#-- prints: &amp; --&gt;
+${&#39;&amp;&#39;<strong>?esc</strong>}  &lt;#-- prints: &amp;amp; --&gt;</pre></div>
+
+          <p>Naturally, both <code class="inline-code">autoesc</code> and
+          <code class="inline-code">?esc</code> works inside <code class="inline-code">noautoesc</code>
+          blocks too.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_misc_autoescaping_movalues">"Markup output" values</h2>
+
+
+          <p>In FTL, <a href="dgui_datamodel_basics.html">values have
+          type</a>, like string, number, boolean, etc. One such type is
+          called "markup output". A value of that type is a piece
+          of text that&#39;s already in the output format (like HTML), and hence
+          needs no further escaping. We have already produced such values
+          earlier:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code"><em class="code-color">s</em>?esc</code>
+              creates a markup output value out of a string value by escaping
+              all special characters in it.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code"><em class="code-color">s</em>?no_esc</code>
+              creates a markup output value out of a string value by assuming
+              that the string already stores markup and so needs no further
+              escaping</p>
+            </li>
+          </ul>
+
+          <p>These can be useful outside
+          <code class="inline-code">${<em class="code-color">...</em>}</code> too. For
+          example, here the caller of the <code class="inline-code">infoBox</code> macro can
+          decide if the message is plain text (hence needs escaping) or HTML
+          (hence it mustn&#39;t be escaped):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- We assume that we have &quot;HTML&quot; output format by default. --&gt;
+
+&lt;@infoBox &quot;Foo &amp; bar&quot; /&gt;
+&lt;@infoBox &quot;Foo &lt;b&gt;bar&lt;/b&gt;&quot;?no_esc /&gt;
+
+&lt;#macro infoBox message&gt;
+  &lt;div class=&quot;infoBox&quot;&gt;
+    ${message}
+  &lt;/div&gt;
+&lt;/#macro&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;div class=&quot;infoBox&quot;&gt;
+    Foo &amp;amp; bar
+  &lt;/div&gt;
+  &lt;div class=&quot;infoBox&quot;&gt;
+    Foo &lt;b&gt;bar&lt;/b&gt;
+  &lt;/div&gt;</pre></div>
+
+          <p>Another case where you get a markup output value is output
+          capturing:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- We assume that we have &quot;HTML&quot; output format by default. --&gt;
+&lt;#assign captured&gt;&lt;b&gt;Test&lt;/b&gt;&lt;/#assign&gt;
+Just a string: ${&quot;&lt;b&gt;Test&lt;/b&gt;&quot;}
+Captured output: ${captured}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Just a string: &amp;lt;b&amp;gt;Test&amp;lt;/b&amp;gt;
+Captured output: &lt;b&gt;Test&lt;/b&gt;</pre></div>
+
+          <p>Because the captured output is markup output, it wasn&#39;t
+          auto-escaped.</p>
+
+          <p>It&#39;s important that markup output values aren&#39;t strings, and
+          aren&#39;t automatically coerced to strings. Thus
+          <code class="inline-code">?upper_case</code>, <code class="inline-code">?starts_with</code>
+          etc., will give an error with them. You won&#39;t be able to pass them
+          to Java methods for <code class="inline-code">String</code> parameters either. But
+          sometimes you need the markup that&#39;s behind the value as a string,
+          which you can get as
+          <code class="inline-code"><em class="code-color">markupOutput</em>?markup_string</code>.
+          Be sure you know what you are doing though. Applying string
+          operations on markup (as opposed to on plain text) can result in
+          invalid markup. Also there&#39;s the danger of unintended double
+          escaping.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- We assume that we have &quot;HTML&quot; output format by default. --&gt;
+
+&lt;#assign markupOutput1=&quot;&lt;b&gt;Test&lt;/b&gt;&quot;?no_esc&gt;
+&lt;#assign markupOutput2=&quot;Foo &amp; bar&quot;?esc&gt;
+
+As expected:
+${markupOutput1}
+${markupOutput2}
+
+Possibly unintended double escaping:
+${markupOutput1?markup_string}
+${markupOutput2?markup_string}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">As expected:
+&lt;b&gt;Test&lt;/b&gt;
+Foo &amp;amp; bar
+
+Possibly unintended double escaping:
+&amp;lt;b&amp;gt;Test&amp;lt;/b&amp;gt;
+Foo &amp;amp;amp; bar</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_28">Further details and tricky cases</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_misc_autoescaping_nonmarkupof">Non-markup output formats</h3>
+
+
+            <p>An output format is said to be a non-markup format if it
+            defines no escaping rules. Examples of such output formats are the
+            <code class="inline-code">undefined</code> format and the
+            <code class="inline-code">plainText</code> format.</p>
+
+            <p>These formats produce no <a href="#dgui_misc_autoescaping_movalues">markup output
+            values</a>, hence you can&#39;t use <code class="inline-code">?esc</code> or
+            <code class="inline-code">?no_esc</code> when they are the current format. You
+            can use output capturing (like <code class="inline-code">&lt;#assign
+            captured&gt;<em class="code-color">...</em>&lt;/#assign&gt;</code>),
+            but the resulting value will be a string, not a markup output
+            value.</p>
+
+            <p>Furthermore, you aren&#39;t allowed to use the
+            <code class="inline-code">autoesc</code> directive or <code class="inline-code">&lt;#ftl
+            auto_esc=true&gt;</code> when the current output format is
+            non-markup.</p>
+
+            <p>Using constructs that aren&#39;t supported by the current output
+            format will give <a href="gloss.html#gloss.parseTimeError">parse-time
+            error</a>.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_misc_autoescaping_mixingoutputformats">Inserting markup output values from other markups</h3>
+
+
+            <p>Each <a href="#dgui_misc_autoescaping_movalues">markup
+            output value</a> has an associated <a href="#dgui_misc_autoescaping_outputformat">output
+            format</a>. When a markup output value is inserted with
+            <code class="inline-code">${<em class="code-color">...</em>}</code> (or
+            <code class="inline-code">#{<em class="code-color">...</em>}</code>), it has to
+            be converted to the current output format at the point of
+            insertion (if they differ). As of this writing (2.3.24), such
+            output format conversion will only be successful if the value to
+            convert was created by escaping plain text:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- We assume that we have &quot;HTML&quot; output format by default. --&gt;
+
+&lt;#assign mo1 = &quot;Foo&#39;s bar {}&quot;?esc&gt;
+HTLM: ${mo1}
+XML:  &lt;#outputformat &#39;XML&#39;&gt;${mo1}&lt;/#outputformat&gt;
+RTF:  &lt;#outputformat &#39;RTF&#39;&gt;${mo1}&lt;/#outputformat&gt;
+
+&lt;#assign mo2&gt;&lt;p&gt;Test&lt;/#assign&gt;
+HTML: ${mo2}
+XML:  &lt;#attempt&gt;&lt;#outputformat &#39;XML&#39;&gt;${mo2}&lt;/#outputformat&gt;&lt;#recover&gt;Failed&lt;/#attempt&gt;
+RTF:  &lt;#attempt&gt;&lt;#outputformat &#39;RTF&#39;&gt;${mo2}&lt;/#outputformat&gt;&lt;#recover&gt;Failed&lt;/#attempt&gt;</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">HTLM: Foo&amp;#39;s bar {}
+XML:  Foo&amp;apos;s bar {}
+RTF:  Foo&#39;s bar \{\}
+
+HTML: &lt;p&gt;Test
+XML:  Failed
+RTF:  Failed</pre></div>
+
+            <p>But, an output format can also chose to insert pieces of
+            other output formats as is, without converting them. Among the
+            standard output formats, <code class="inline-code">undefined</code> is like
+            that, which is the output format used for templates for which no
+            output format was specified in the configuration:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- We assume that we have &quot;undefined&quot; output format here. --&gt;
+
+&lt;#outputformat &quot;HTML&quot;&gt;&lt;#assign htmlMO&gt;&lt;p&gt;Test&lt;/#assign&gt;&lt;/#outputformat&gt;
+&lt;#outputformat &quot;XML&quot;&gt;&lt;#assign xmlMO&gt;&lt;p&gt;Test&lt;/p&gt;&lt;/#assign&gt;&lt;/#outputformat&gt;
+&lt;#outputformat &quot;RTF&quot;&gt;&lt;#assign rtfMO&gt;\par Test&lt;/#assign&gt;&lt;/#outputformat&gt;
+HTML: ${htmlMO}
+XML:  ${xmlMO}
+RTF:  ${rtfMO}</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">HTML: &lt;p&gt;Test
+XML:  &lt;p&gt;Test&lt;/p&gt;
+RTF:  \par Test</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_misc_autoescaping_concatenation">Markup output values and the "+"
+            operator</h3>
+
+
+            <p>As you certainly know, if one of the sides of the
+            <code class="inline-code">+</code> operator is a string then <a href="dgui_template_exp.html#dgui_template_exp_stringop_concatenation">it does
+            concatenation</a>. If there&#39;s a <a href="#dgui_misc_autoescaping_movalues">markup output
+            value</a> in one side, the other side gets promoted to markup
+            output value of the same output format (if it&#39;s not already that),
+            by escaping its string value, and finally the two markups are
+            concatenated to form a new markup output value. Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- We assume that we have &quot;HTML&quot; output format by default. --&gt;
+${&quot;&lt;h1&gt;&quot;?no_esc + &quot;Foo &amp; bar&quot; + &quot;&lt;/h1&gt;&quot;?no_esc}</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">&lt;h1&gt;Foo &amp;amp; bar&lt;/h1&gt;</pre></div>
+
+            <p>If the two sides of the <code class="inline-code">+</code> operator are
+            markup values of different output formats, the right side operand
+            is converted to the output format of the left side. If that&#39;s not
+            possible, then the left side operand is converted to the output
+            format of the right side. If that isn&#39;t possible either, that&#39;s an
+            error. (See the <a href="#dgui_misc_autoescaping_mixingoutputformats">limitations
+            of conversions here</a>.)</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_misc_autoescaping_stringliteral">${...} inside string literals</h3>
+
+
+            <p>When <code class="inline-code">${<em class="code-color">...</em>}</code> is
+            used inside string <em>expressions</em> (e.g., in
+            <code class="inline-code">&lt;#assign s = &quot;Hello ${name}!&quot;&gt;</code>), it&#39;s
+            just a shorthand of using the <code class="inline-code">+</code> operator
+            (<code class="inline-code">&lt;#assign s = &quot;Hello&quot; + name + &quot;!&quot;&gt;</code>).
+            Thus, <code class="inline-code">${<em class="code-color">...</em>}</code>-s
+            inside string expressions aren&#39;t auto-escaped, but of course when
+            the resulting concatenated string is printed later, it will be
+            possibly auto-escaped.</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- We assume that we have &quot;HTML&quot; output format by default. --&gt;
+&lt;#assign name = &quot;Foo &amp; Bar&quot;&gt;
+
+&lt;#assign s = &quot;&lt;p&gt;Hello ${name}!&quot;&gt;
+${s}
+&lt;p&gt;Hello ${name}!
+
+To prove that s didn&#39;t contain the value in escaped form:
+${s?replace(&#39;&amp;&#39;), &#39;and&#39;}</pre></div>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">&amp;lt;p&amp;gt;Hello Foo &amp;amp; Bar!
+&lt;p&gt;Hello Foo &amp;amp; Bar!
+
+To prove that &quot;s&quot; didn&#39;t contain the value in escaped form:
+&amp;lt;p&amp;gt;Hello Foo and Bar!</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_29">Combined output formats</h3>
+
+
+            <p>Combined output formats are output formats that are created
+            ad-hoc from other output formats by nesting them into each other,
+            so that the escaping of both output formats are applied. <a href="ref_directive_outputformat.html#topic.combinedOutputFormats">They are discussed
+            here...</a></p>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_misc_namespace.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_whitespace.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_misc_namespace.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_misc_namespace.html b/builds/2.3.26-nightly/dgui_misc_namespace.html
new file mode 100644
index 0000000..ba514ea
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_misc_namespace.html
@@ -0,0 +1,315 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Namespaces - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Namespaces">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_misc_namespace.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_misc_namespace.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itempro
 p="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc_namespace.html"><span itemprop="name">Namespaces</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Miscellaneous","Namespaces"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_misc_var.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_autoescaping.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_misc_namespace" itemprop="headline">Namespaces</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_23" data-menu-target="autoid_23">Creating a library</a></li><li><a class="page-menu-link" href="#autoid_24" data-menu-target="autoid_24">Writing the variables of imported namespaces</a></li><li><a class="page-menu-link" href="#autoid_25" data-menu-target="autoid_25">Namespaces and data-model</a></li><li><a class="page-menu-link" href="#autoid_26" data-menu-target="autoid_26">The life-cycle of namespaces</a></li><li><a class="page-menu-link" href="#autoid_27" data-menu-target="autoid_27">Auto-importing</a></li></ul> </div><p>When you run templates, you have a (possibly empty) set of
+        variables that you have created with <code class="inline-code">assign</code> and
+        <code class="inline-code">macro</code> and <code class="inline-code">function</code> directives
+        (see in the <a href="dgui_misc_var.html">previous chapter</a>). A
+        set of template-made variables like that is called a <strong>namespace</strong>. In simple cases you use only one
+        namespace, the <strong>main namespace</strong>.
+        Whenever you define a variable in the main template (macros and
+        functions are also variables, mind you), or in templates <a href="ref_directive_include.html#ref.directive.include"><code>include</code>-d</a> in
+        it, that&#39;s where the variable are created. The key property of a
+        namespace is that the variable name uniquely identifies a value in it
+        (i.e, you can&#39;t have multiple variables in it with the same name in
+        the same namespace).</p><p>Sometimes you want to build reusable collection of macros,
+        functions, and other variables, which we call a <strong>library</strong>. It&#39;s important that a library can use
+        its own namespace, to avoid accidental name clashes. Consider, you may
+        have many names in that library, and you intend to use the library in
+        many templates, maybe even reuse it in several projects. It becomes
+        impractical to keep track of where the library used in another
+        template accidentally hides variables from the data-model, or what
+        names you shouldn&#39;t assign to in the template to avoid overwriting the
+        variables of the library. If you have multiple libraries used in the
+        same template, this becomes even harder to track. So you should use a
+        separate namespace for the variables of each library.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_23">Creating a library</h2>
+
+
+          <p>Here&#39;s a simple library, which contains a
+          <code class="inline-code">copyright</code> macro and a <code class="inline-code">mail</code>
+          string:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro copyright date&gt;
+  &lt;p&gt;Copyright (C) ${date} Someone. All rights reserved.&lt;/p&gt;
+&lt;/#macro&gt;
+
+&lt;#assign mail = &quot;user@example.com&quot;&gt;</pre></div>
+
+          <p>Save this into the <code class="inline-code">lib/example.ftl</code> file
+          (inside the directory where you store the templates). Then create a
+          template, let&#39;s say, <code class="inline-code">some_web_page.ftl</code>, and use
+          the library in it:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#<strong>import</strong> &quot;/lib/example.ftl&quot; as <strong>e</strong>&gt;
+
+Some Web page...
+&lt;@<strong>e</strong>.copyright date=&quot;1999-2002&quot;/&gt;
+${<strong>e</strong>.mail}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Some Web page...
+  &lt;p&gt;Copyright (C) 1999-2002 Someone. All rights reserved.&lt;/p&gt;
+user@example.com</pre></div>
+
+          <p>Note the <a href="ref_directive_import.html#ref.directive.import"><code>import</code>
+          directive</a> above, and the subsequent usage of the
+          "<code class="inline-code">e</code>" variable.
+          <code class="inline-code">import</code> is similar to the perhaps already familiar
+          <a href="ref_directive_include.html#ref.directive.include"><code>include</code>
+          directive</a>, but it will create an empty namespace and will run
+          <code class="inline-code">lib/example.ftl</code> in that namespace. So
+          <code class="inline-code">lib/example.ftl</code> will find itself in a clean
+          world, where only the variables of the data-models are visible (and
+          the globals), and will create its two variables
+          (<code class="inline-code">copyright</code> and <code class="inline-code">mail</code>) in this
+          clean namespace. But you will need to access those two variables
+          from another namespace (the main namespace), thus, the
+          <code class="inline-code">import</code> directive creates a hash variable
+          (<code class="inline-code">e</code> in this case) to access the namespace it has
+          created . That variable is in the namespace that the
+          <code class="inline-code">import</code>-ing template uses, and acts as a window to
+          the namespace of the imported library.</p>
+
+          <p>To demonstrate that the two namespaces are separate, consider
+          the example below. Replace <code class="inline-code">lib/example.ftl</code> with
+          this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro copyright date&gt;
+  &lt;p&gt;Copyright (C) ${date} Someone. All rights reserved.
+  &lt;br&gt;Email: <strong>${mail}</strong>&lt;/p&gt;
+&lt;/#macro&gt;
+
+&lt;#assign mail = &quot;user@example.com&quot;&gt;</pre></div>
+
+          <p>and <code class="inline-code">some_web_page.ftl</code> with this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;/lib/example.ftl&quot; as e&gt;
+<strong>&lt;#assign mail=&quot;other@example.com&quot;&gt;</strong>
+&lt;@e.copyright date=&quot;1999-2002&quot;/&gt;
+${e.mail}
+${mail}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;p&gt;Copyright (C) 1999-2002 Someone. All rights reserved.
+  &lt;br&gt;Email: <strong>user@example.com</strong>&lt;/p&gt;
+user@example.com
+other@example.com</pre></div>
+
+          <p>As you can see, the <code class="inline-code">mail</code> variable assigned
+          in <code class="inline-code">some_web_page.ftl</code> is separate from the
+          <code class="inline-code">mail</code> variable assigned in the imported
+          library.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_24">Writing the variables of imported namespaces</h2>
+
+
+          <p>Sometimes you want to create or replace a variable in an
+          imported namespace. You can do that with the
+          <code class="inline-code">assign</code> directive and its
+          <code class="inline-code">namespace</code> parameter:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;/lib/example.ftl&quot; as e&gt;
+${my.mail}
+&lt;#assign mail=&quot;other@example.com&quot; <strong>in e</strong>&gt;
+${my.mail}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">user@example.com
+other@example.com</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_25">Namespaces and data-model</h2>
+
+
+          <p>The variables of the data-model are visible from everywhere.
+          For example, if you have a variable called <code class="inline-code">user</code>
+          in the data-model, <code class="inline-code">lib/example.ftl</code> will access
+          that, exactly like <code class="inline-code">some_web_page.ftl</code> does:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro copyright date&gt;
+  &lt;p&gt;Copyright (C) ${date} <strong>${user}</strong>. All rights reserved.&lt;/p&gt;
+&lt;/#macro&gt;</pre></div>
+
+          <p>Assuming <code class="inline-code">user</code> is "John
+          Doe":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;/lib/my_test.ftl&quot; as my&gt;
+User is: ${user}
+&lt;@my.copyright date=&quot;1999-2002&quot;/&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">User is: John Doe
+  &lt;p&gt;Copyright (C) 1999-2002 John Doe. All rights reserved.&lt;/p&gt;</pre></div>
+
+          <p>Don&#39;t forget that the variables in the namespace (the
+          variables you create with <code class="inline-code">assign</code>,
+          <code class="inline-code">macro</code>, and <code class="inline-code">function</code>
+          directives) have precedence over the variables of the data-model
+          when you are in that namespace. So generally, if a library is
+          interested in a data-model variable, it doesn&#39;t assign to the same
+          name.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>In some unusual applications you want to create variables in
+            the template that are visible from all namespaces, exactly like
+            the variables of the data-model. While templates can&#39;t change the
+            data-model, it&#39;s possible to achieve similar effect with the
+            <code class="inline-code">global</code> directive; see the <a href="ref_directive_global.html#ref.directive.global">reference</a>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_26">The life-cycle of namespaces</h2>
+
+
+          <p>A namespace is identified by the path used in the
+          <code class="inline-code">import</code> directive (after it was normalized to an
+          absolute path). If you try to <code class="inline-code">import</code> with
+          equivalent paths for multiple times, it will create the namespace
+          and run the template for only the first invocation of
+          <code class="inline-code">import</code>. The later <code class="inline-code">import</code>-s
+          with equivalent paths will just assign the same namespace to the
+          variable specified after the <code class="inline-code">as</code> keyword. For
+          example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;/lib/example.ftl&quot; as e&gt;
+&lt;#import &quot;/lib/example.ftl&quot; as e2&gt;
+&lt;#import &quot;/lib/example.ftl&quot; as e3&gt;
+${e.mail}, ${e2.mail}, ${e3.mail}
+&lt;#assign mail=&quot;other@example.com&quot; in my&gt;
+${e.mail}, ${e2.mail}, ${e3.mail}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">user@example.com, user@example.com, user@example.com
+other@example.com, other@example.com, other@example.com</pre></div>
+
+          <p>As you access the same namespace through <code class="inline-code">e</code>,
+          <code class="inline-code">e2</code>, and <code class="inline-code">e3</code>, the
+          <code class="inline-code">email</code> has changed in all of them at once. The
+          practical importance of this is that when you import the same
+          library in multiple templates, only one namespace will be
+          initialized and created for the library, which will be shared by all
+          the importing templates.</p>
+
+          <p>Note that namespaces are not hierarchical; it doesn&#39;t mater
+          what namespace are you in when <code class="inline-code">import</code> creates
+          another namespace. For example, when you <code class="inline-code">import</code>
+          namespace N2 while you are in name space N1, N2 will not be inside
+          N1. N1 just gets the same N2 that you get if you
+          <code class="inline-code">import</code> N2 when you are in the main
+          namespace.</p>
+
+          <p>Each <a href="gloss.html#gloss.templateProcessingJob">template
+          processing job</a> has its own private set of namespaces. Each
+          template processing job is a separate universe that exists only for
+          the short period while the main template is rendered, and then it
+          vanishes with all its populated namespaces. Thus, whenever we say
+          that "<code class="inline-code">import</code> is called for the first
+          time", we always mean the first time within the lifespan of a
+          single template processing job.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_27">Auto-importing</h2>
+
+
+          <p>When you have to import the same libraries again and again in
+          many templates, know that the Java programmers (or whoever is
+          responsible for configuring FreeMarker) can specify auto-imports,
+          which are imports that are automatically done in all templates. Auto
+          imports can also be configured to be "lazy" (since
+          FreeMarker 2.3.25), which means that they are only done when the
+          imported library is actually used in the template. See the Java API
+          documentation for more details: <a href="http://freemarker.org/docs/api/freemarker/template/Configuration.html#setAutoImports-java.util.Map-">Configuration.setAutoImports</a>,
+          <a href="http://freemarker.org/docs/api/freemarker/template/Configuration.html#setLazyAutoImports-java.lang.Boolean-">Configuration.setLazyAutoImports</a>.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_misc_var.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_autoescaping.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[11/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3.html b/builds/2.3.26-nightly/versions_2_3.html
new file mode 100644
index 0000000..4898aa2
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3.html
@@ -0,0 +1,1629 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3.html"><span itemprop="name">2.3</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_8.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3" itemprop="headline">2.3</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_220" data-menu-target="autoid_220">Non backward-compatible changes!</a></li><li><a class="page-menu-link" href="#autoid_221" data-menu-target="autoid_221">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_222" data-menu-target="autoid_222">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_223" data-menu-target="autoid_223">Other changes</a></li><li><a class="page-menu-link" href="#autoid_224" data-menu-target="autoid_224">The history of the releases before the final version</a><ul><li><a class="page-menu-link" href="#autoid_225" data-menu-target="autoid_225">Differences between the final release and Release Candidate
+4</a></li><li><a class="page-menu-link" href="#autoid_226" data-menu-target="autoid_226">Differences between the Release Candidate 4 and Release
+Candidate 3</a></li><li><a class="page-menu-link" href="#autoid_227" data-menu-target="autoid_227">Differences between the Release Candidate 3 and Release
+Candidate 2</a></li><li><a class="page-menu-link" href="#autoid_228" data-menu-target="autoid_228">Differences between the Release Candidate 2 and Release
+Candidate 1</a></li><li><a class="page-menu-link" href="#autoid_229" data-menu-target="autoid_229">Differences between the Release Candidate 1 and Preview 16
+releases</a></li><li><a class="page-menu-link" href="#autoid_230" data-menu-target="autoid_230">Differences between the Preview 16 and Preview 15
+releases</a></li><li><a class="page-menu-link" href="#autoid_231" data-menu-target="autoid_231">Differences between the Preview 15 and Preview 14
+releases</a></li><li><a class="page-menu-link" href="#autoid_232" data-menu-target="autoid_232">Differences between the Preview 14 and Preview 13
+releases</a></li><li><a class="page-menu-link" href="#autoid_233" data-menu-target="autoid_233">Differences between the Preview 13 and Preview 12
+releases</a></li><li><a class="page-menu-link" href="#autoid_234" data-menu-target="autoid_234">Differences between the Preview 12 and Preview 11
+releases</a></li><li><a class="page-menu-link" href="#autoid_235" data-menu-target="autoid_235">Differences between the Preview 11 and Preview 10
+releases</a></li><li><a class="page-menu-link" href="#autoid_236" data-menu-target="autoid_236">Differences between the Preview 10 and Preview 9
+releases</a></li><li><a class="page-menu-link" href="#autoid_237" data-menu-target="autoid_237">Differences between the Preview 9 and Preview 8
+releases</a></li><li><a class="page-menu-link" href="#autoid_238" data-menu-target="autoid_238">Differences between the Preview 8 and Preview 7
+releases</a></li><li><a class="page-menu-link" href="#autoid_239" data-menu-target="autoid_239">Differences between the Preview 7 and Preview 6
+releases</a></li><li><a class="page-menu-link" href="#autoid_240" data-menu-target="autoid_240">Differences between the Preview 6 and Preview 5
+releases</a></li><li><a class="page-menu-link" href="#autoid_241" data-menu-target="autoid_241">Differences between the Preview 5 and Preview 4
+releases</a></li><li><a class="page-menu-link" href="#autoid_242" data-menu-target="autoid_242">Differences between the Preview 4 and Preview 3
+releases</a></li><li><a class="page-menu-link" href="#autoid_243" data-menu-target="autoid_243">Differences between the Preview 3 and Preview 2
+releases</a></li><li><a class="page-menu-link" href="#autoid_244" data-menu-target="autoid_244">Differences between the Preview 2 and Preview 1
+releases</a></li></ul></li></ul> </div><p>Date of release: 2004-June-15</p><p>FreeMarker 2.3 introduces numerous little new features and
+        quality improvements compared to the 2.2.x series. The most notable
+        improvements are the ability to define functions (methods) in
+        templates, the ability to interpolate variables in string literals,
+        the support for a variable number of macro parameters, and the more
+        intelligent default object wrapper. Although none of the improvements
+        is a drastic change, the 2.3.x series is not backward compatible with
+        the 2.2.x series (see the list below), so you may choose to use it for
+        new projects only.</p><p>Probably the most "loudly promoted" new feature is
+        the totally redesigned XML wrapper. With the new XML wrapper
+        FreeMarker targets a new application domain, which is similar to the
+        application domain of XSLT: transforming complex XML to whatever
+        textual output. Although this subproject is young, it is definitely
+        usable in practice. See the <a href="xgui.html">XML Processing
+        Guide</a> for more details.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_220">Non backward-compatible changes!</h2>
+
+
+          <ul>
+            <li>
+              <p>Since interpolations (<code class="inline-code">${...}</code> and
+              <code class="inline-code">#{...}</code>) now work inside string literals, the
+              character sequence <code class="inline-code">${</code> and
+              <code class="inline-code">#{</code> in string literals are reserved for that.
+              So if you have something like <code class="inline-code">&lt;#set x =
+              &quot;${foo}&quot;&gt;</code>, then you have to replace it with
+              <code class="inline-code">&lt;#set x = r&quot;${foo}&quot;&gt;</code> -- beware, escapes
+              such as <code class="inline-code">\n</code> will not work in raw
+              (<code class="inline-code">r</code>) strings.</p>
+            </li>
+
+            <li>
+              <p>The default (initial) value of the
+              <code class="inline-code">strict_syntax</code> setting has been changed from
+              <code class="inline-code">false</code> to <code class="inline-code">true</code>. When
+              <code class="inline-code">strict_syntax</code> is <code class="inline-code">true</code>,
+              tags with old syntax as <code class="inline-code">&lt;include
+              &quot;foo.ftl&quot;&gt;</code> will be considered as static text (so
+              they go to the output as-is, like HTML tags do), and not as FTL
+              tags. Such tags have to be rewritten to <code class="inline-code">&lt;#include
+              &quot;foo.ftl&quot;&gt;</code>, since only parts that starts with
+              <code class="inline-code">&lt;#</code>, <code class="inline-code">&lt;/#</code>,
+              <code class="inline-code">&lt;@</code>, or <code class="inline-code">&lt;/@</code> count as
+              FTL tags. Or, to recover the old transitional behavior, where
+              both legacy and new tag syntax was recognized, you have to
+              explicitly set <code class="inline-code">strict_syntax</code> to
+              <code class="inline-code">false</code>:
+              <code class="inline-code">cfg.setStrictSyntaxMode(false)</code>. Also, for
+              individual templates you can force the old behavior by starting
+              the template with <code class="inline-code">&lt;#ftl
+              strict_syntax=false&gt;</code>. (For more information about
+              why strict syntax is better than old syntax <a href="ref_depr_oldsyntax.html">read this...</a>)</p>
+            </li>
+
+            <li>
+              <p>Several classes were moved from the
+              <code class="inline-code">freemarker.template</code> package, to the new
+              <code class="inline-code">freemarker.core</code> package:</p>
+
+              <ul>
+                <li>
+                  &quot;Normal&quot; classes: <code class="inline-code">ArithmeticEngine</code>,
+                  <code class="inline-code">Configurable</code>,
+                  <em><code class="inline-code">Environment</code></em>
+                </li>
+
+                <li>
+                  Exceptions:
+                  <code class="inline-code">InvalidReferenceException</code>,
+                  <code class="inline-code">NonBooleanException</code>,
+                  <code class="inline-code">NonNumericalException</code>,
+                  <code class="inline-code">NonStringException</code>,
+                  <code class="inline-code">ParseException</code>,
+                  <code class="inline-code">StopException</code>
+                </li>
+
+                <li>
+                  Errors: <code class="inline-code">TokenMgrError</code>
+                </li>
+              </ul>
+
+              <p>The main reason of the splitting of
+              <code class="inline-code">freemarker.template</code> package was that the
+              amount of &quot;expert&quot; public classes and interfaces grows too much,
+              as we introduce API-s for third-party tools, such as debugging
+              API.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.template.TemplateMethodModel.exec</code>
+              now returns <code class="inline-code">Object</code> instead of
+              <code class="inline-code">TemplateModel</code>.</p>
+            </li>
+
+            <li>
+              <p>White-space stripping is now more aggressive as before: it
+              always removes leading and trailing white-space if the line only
+              contains FTL tags. (Earlier the white-space was not removed if
+              the tag was <code class="inline-code">&lt;#include
+              <em class="code-color">...</em>&gt;</code> or user-defined
+              directive tag with empty directive syntax as
+              <code class="inline-code">&lt;@myMacro/&gt;</code> (or its equivalents:
+              <code class="inline-code">&lt;@myMacro&gt;&lt;/@myMacro&gt;</code> and
+              <code class="inline-code">&lt;@myMacro&gt;&lt;/@&gt;</code>). Now white-space
+              is removed in these cases as well.) Also, white-space sandwiched
+              between two non-outputting elements, such as macro definitions,
+              assignments, imports, or property settings, is now ignored. More
+              information: <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">Template Author&#39;s Guide/Miscellaneous/White-space handling/White-space stripping</a></p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">function</code> directive is now used for
+              defining methods. You should replace <code class="inline-code">function</code>
+              with <code class="inline-code">macro</code> in your old templates. Note,
+              however, that old <code class="inline-code">function</code>-s will still work
+              if you don&#39;t use the <code class="inline-code">return</code> directive in
+              them, and you invoke them with the deprecated the
+              <code class="inline-code">call</code> directive.</p>
+            </li>
+
+            <li>
+              <p>The expressions <code class="inline-code">as</code>,
+              <code class="inline-code">in</code>, and <code class="inline-code">using</code> are now
+              keywords in the template language and cannot be used as
+              top-level variable names without square-bracket syntax. If, by
+              some chance, you have top-level variables that use one of these
+              names, you will have to rename them, or use the square-bracket
+              syntax with the <code class="inline-code">.vars</code> special variable:
+              <code class="inline-code">.vars[&quot;in&quot;]</code>.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">?new</code> built-in, as it was
+              implemented, was a security hole. Now, it only allows you to
+              instantiate a java object that implements the
+              <code class="inline-code">freemarker.template.TemplateModel</code> interface.
+              If you want the functionality of the <code class="inline-code">?new</code>
+              built-in as it existed in prior versions, make available an
+              instance of the
+              <code class="inline-code">freemarker.template.utility.ObjectConstructor</code>
+              class to your template. (For example:
+              <code class="inline-code">myDataModel.put(&quot;objConstructor&quot;, new
+              ObjectConstructor());</code>, and then in the template you
+              can do this: <code class="inline-code">&lt;#assign aList =
+              objConstructor(&quot;java.util.ArrayList&quot;, 100)&gt;</code>)</p>
+            </li>
+
+            <li>
+              <p>Changes to the
+              <code class="inline-code">FreemarkerServlet</code>:</p>
+
+              <ul>
+                <li>
+                  <p>The <code class="inline-code">FreemarkerServlet</code> uses
+                  <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code> by default
+                  instead of <code class="inline-code">ObjectWrapper.BEANS_WRAPPER</code>.
+                  What this means is that, by default, objects of type
+                  <code class="inline-code">java.lang.String</code>,
+                  <code class="inline-code">java.lang.Number</code>,
+                  <code class="inline-code">java.util.List</code>, and
+                  <code class="inline-code">java.util.Map</code> will be wrapped as
+                  <code class="inline-code">TemplateModels</code> via the classes
+                  <code class="inline-code">SimpleScalar</code>,
+                  <code class="inline-code">SimpleNumber</code>,
+                  <code class="inline-code">SimpleSequence</code>, and
+                  <code class="inline-code">SimpleHash</code> respectively. Thus, the java
+                  methods on those objects will not be available. The default
+                  wrapper implementation in FreeMarker 2.3 automatically knows
+                  how to wrap Jython objects, and also wraps
+                  <code class="inline-code">org.w3c.dom.Node</code> objects into instances
+                  of <code class="inline-code">freemarker.ext.dom.NodeModel</code>.</p>
+                </li>
+
+                <li>
+                  <p>The <code class="inline-code">FreemarkerServlet</code> base
+                  implementation no longer deduces the locale used for
+                  templates with <code class="inline-code">HttpRequest.getLocale()</code>.
+                  Rather, it simply delegates to the new protected method,
+                  <code class="inline-code">deduceLocale</code>. The default implementation
+                  of this method simply returns the value of configuration the
+                  <code class="inline-code">locale</code> setting.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_221">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Interpolation in string literals. For convenience,
+              interpolations are now supported in string literals. For
+              example: <code class="inline-code">&lt;@message�&quot;Hello�${user}!&quot;�/&gt;</code>
+              is the same as <code class="inline-code">&lt;@message &quot;Hello &quot; + user + &quot;!&quot;
+              /&gt;</code></p>
+            </li>
+
+            <li>
+              <p>Raw string literals: In string literals prefixed with
+              <code class="inline-code">r</code>, interpolations and escape sequences will
+              not be interpreted as special tokens. For example:
+              <code class="inline-code">r&quot;\n${x}&quot;</code> will be simply interpreted as the
+              character sequence <code class="inline-code">&#39;\&#39;</code>,
+              <code class="inline-code">&#39;n&#39;</code>, <code class="inline-code">&#39;$&#39;</code>,
+              <code class="inline-code">&#39;{&#39;</code>, <code class="inline-code">&#39;x&#39;</code>,
+              <code class="inline-code">&#39;}&#39;</code>, and not as line-feed and the value of
+              the <code class="inline-code">x</code> variable.</p>
+            </li>
+
+            <li>
+              <p>Method variables can be defined in FTL, with the <a href="ref_directive_function.html#ref.directive.function"><code>function</code></a>
+              directive.</p>
+            </li>
+
+            <li>
+              <p>Support for a variable number of macro parameters. If the
+              last parameter in a macro declaration ends with
+              <code class="inline-code">...</code>, all extra parameters passed to the macro
+              will be available via that parameter. For macros called with
+              positional parameters, the parameter will be a sequence. For
+              named parameters, the parameter will be a hash. Note that it all
+              works with the new <code class="inline-code">function</code> directive as
+              well.</p>
+            </li>
+
+            <li>
+              <p>A new header parameter, <code class="inline-code">strip_text</code>,
+              that removes all top-level text from a template. This is useful
+              for "include files" to suppress newlines that
+              separate the macro definitions. See <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
+              directive</a></p>
+            </li>
+
+            <li>
+              <p>New <a href="ref_specvar.html">special variable</a>:
+              <code class="inline-code">.vars</code>. This is useful to read top-level
+              variables with square bracket syntax, for example
+              <code class="inline-code">.vars[&quot;name-with-hyphens&quot;]</code> and
+              <code class="inline-code">.vars[dynamicName]</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">macro</code> and assignment directives now
+              accept arbitrary destination variable name with quoted syntax.
+              For example: <code class="inline-code">&lt;#macro
+              &quot;name-with-hyphens&quot;&gt;<em class="code-color">...</em></code>
+              or <code class="inline-code">&lt;#assign &quot;foo�bar&quot; = 123&gt;</code>.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">?keys</code> and
+              <code class="inline-code">?values</code> hash built-ins now return sequences.
+              In practical terms this means you can access their sizes or
+              retrieve their sub variables by index, and use all of the <a href="ref_builtins_sequence.html">sequence built-ins</a>. (Note
+              for the programmers: The <code class="inline-code">TemplateHashModelEx</code>
+              interface has not been changed. Your old code will work. See the
+              API documentation to see why.)</p>
+            </li>
+
+            <li>
+              <p>Existence built-ins (<code class="inline-code">?default</code>,
+              <code class="inline-code">?exists</code>, etc.) are now working with sequence
+              sub variables as well. Read the documentation of the
+              <code class="inline-code">default</code> built-in for more information.</p>
+            </li>
+
+            <li>
+              <p>White-space stripping is now more aggressive as before: it
+              always removes leading and trailing white-space if the line only
+              contains FTL tags. (Earlier the white-space was not removed if
+              the tag was <code class="inline-code">&lt;#include
+              <em class="code-color">...</em>&gt;</code> or user-defined
+              directive tag with empty directive syntax as
+              <code class="inline-code">&lt;@myMacro/&gt;</code> (or its equivalents:
+              <code class="inline-code">&lt;@myMacro&gt;&lt;/@myMacro&gt;</code> and
+              <code class="inline-code">&lt;@myMacro&gt;&lt;/@&gt;</code>). Now white-space
+              is removed in these cases as well.) Also, top-level white-space
+              that separates macro definitions and/or assignments is now
+              ignored. More information: <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">Template Author&#39;s Guide/Miscellaneous/White-space handling/White-space stripping</a></p>
+            </li>
+
+            <li>
+              <p>White-space stripping can be disabled for a single line
+              with the <a href="ref_directive_nt.html#ref.directive.nt"><code>nt</code></a>
+              directive (for No Trim).</p>
+            </li>
+
+            <li>
+              <p>Hashes can be concatenated using the <code class="inline-code">+</code>
+              operator. The keys in the hash on the right-hand side take
+              precedence.</p>
+            </li>
+
+            <li>
+              <p>New built-ins for Java and JavaScript string escaping:
+              <a href="ref_builtins_string.html#ref_builtin_j_string">j_string</a> and <a href="ref_builtins_string.html#ref_builtin_js_string">js_string</a></p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">replace</code> and
+              <code class="inline-code">split</code> built-ins now support case-insensitive
+              comparsion and regular expressions (J2SE 1.4+ only), and some
+              other new options. More information can be found <a href="ref_builtins_string.html#ref_builtin_string_flags">here</a>.</p>
+            </li>
+
+            <li>
+              <p>New built-in for regular expression matching (J2SE 1.4+
+              only): <a href="ref_builtins_string.html#ref_builtin_matches"><code>matches</code></a></p>
+            </li>
+
+            <li>
+              <p>New built-in, <code class="inline-code">eval</code>, to evaluate a
+              string as FTL expression. For example
+              <code class="inline-code">&quot;1+2&quot;?eval</code> returns the number 3.</p>
+            </li>
+
+            <li>
+              <p>New built-ins for Java and JavaScript string escaping:
+              <a href="ref_builtins_string.html#ref_builtin_j_string">j_string</a> and <a href="ref_builtins_string.html#ref_builtin_js_string">js_string</a></p>
+            </li>
+
+            <li>
+              <p>New special variables to read the value of the locale
+              setting: <code class="inline-code">locale</code>, <code class="inline-code">lang</code>. See
+              more <a href="ref_specvar.html">in the
+              reference...</a></p>
+            </li>
+
+            <li>
+              <p>New special variable to read the FreeMarker version
+              number: <code class="inline-code">version</code>. See more <a href="ref_specvar.html">in the reference...</a></p>
+            </li>
+
+            <li>
+              <p>Tree new directives, <code class="inline-code">recurse</code>,
+              <code class="inline-code">visit</code> and <code class="inline-code">fallback</code>, were
+              introduced to support declarative node-tree processing. These
+              are meant to be used typically (though not exclusively) for
+              processing XML input. Together with this, a new variable type
+              has been introduced, the node type. See the <a href="xgui_declarative.html">chapter on declarative XML
+              processing</a> for more details.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">?new</code> built-in, as it was
+              implemented, was a security hole. Now, it only allows you to
+              instantiate a java object that implements the
+              <code class="inline-code">freemarker.template.TemplateModel</code> interface.
+              <span class="marked-for-programmers">If you want the functionality of
+              the <code class="inline-code">?new</code> built-in as it existed in prior
+              versions, make available an instance of the
+              <code class="inline-code">freemarker.template.utility.ObjectConstructor</code>
+              class to your template. (For example:
+              <code class="inline-code">myDataModel.put(&quot;objConstructor&quot;, new
+              ObjectConstructor());</code>, and then in the template you
+              can do this: <code class="inline-code">&lt;#assign aList =
+              objConstructor(&quot;java.util.ArrayList&quot;,
+              100)&gt;</code>)</span></p>
+            </li>
+
+            <li>
+              <p>Variable names can contain <code class="inline-code">@</code> anywhere
+              (without using quote-bracket syntax). For example:
+              <code class="inline-code">&lt;#assign x@@@ = 123&gt;</code> is valid.</p>
+            </li>
+
+            <li>
+              <p>The expressions <code class="inline-code">as</code>,
+              <code class="inline-code">in</code>, and <code class="inline-code">using</code> are now
+              keywords in the template language and cannot be used as
+              top-level variable names without square-bracket syntax (as
+              <code class="inline-code">.vars[&quot;in&quot;]</code>).</p>
+            </li>
+
+            <li>
+              <p>New parameter to the <a href="ref_directive_ftl.html"><code>ftl</code>
+              directive</a>: <code class="inline-code">attributes</code>. The value of
+              this attribute is a hash that associates arbitrary attributes
+              (name-value pairs) to the template. The values of the attributes
+              can be of any type (string, number, sequence... etc.).
+              FreeMarker doesn&#39;t try to understand the meaning of the
+              attributes. It&#39;s up to the application that encapsulates
+              FreeMarker (as a Web application framework). Thus, the set of
+              allowed attributes and their semantic is application (Web
+              application framework) dependent.</p>
+            </li>
+
+            <li>
+              <p>Other minor quality improvements...</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_222">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Smarter default object wrapping: The default object
+              wrapper is now
+              <code class="inline-code">freemarker.template.DefaultObjectWrapper</code>,
+              which falls back on wrapping arbitrary objects as beans using
+              the <code class="inline-code">freemarker.ext.beans.BeansWrapper</code>. Also,
+              it will wrap <code class="inline-code">org.w3c.dom.Node</code> objects with
+              the new DOM wrapper. Also, it is aware of Jython objects, and
+              will use <code class="inline-code">freemarker.ext.jython.JythonWrapper</code>
+              if the object passed in is a Jython object. (We count it as a
+              backward compatible change, since this new object wrapper wraps
+              differently only those objects that the old wrapper was not able
+              to wrap, so it has thrown exception.)</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.template.TemplateMethodModel.exec</code>
+              now returns <code class="inline-code">Object</code> instead of
+              <code class="inline-code">TemplateModel</code>.</p>
+            </li>
+
+            <li>
+              <p>The default (initial) value of the
+              <code class="inline-code">strict_syntax</code> setting has been changed from
+              <code class="inline-code">false</code> to <code class="inline-code">true</code>. When
+              <code class="inline-code">strict_syntax</code> is <code class="inline-code">true</code>,
+              tags with old syntax as <code class="inline-code">&lt;include
+              &quot;foo.ftl&quot;&gt;</code> will be considered as static text (so
+              they go to the output as-is, like HTML tags do), and not as FTL
+              tags. Such tags have to be rewritten to <code class="inline-code">&lt;#include
+              &quot;foo.ftl&quot;&gt;</code>, since only parts that starts with
+              <code class="inline-code">&lt;#</code>, <code class="inline-code">&lt;/#</code>,
+              <code class="inline-code">&lt;@</code>, or <code class="inline-code">&lt;/@</code> count as
+              FTL tags. Or, to recover the old transitional behavior, where
+              both legacy and new tag syntax was recognized, you have to
+              explicitly set <code class="inline-code">strict_syntax</code> to
+              <code class="inline-code">false</code>:
+              <code class="inline-code">cfg.setStrictSyntaxMode(false)</code>. Also, for
+              individual templates you can force the old behavior by starting
+              the template with <code class="inline-code">&lt;#ftl
+              strict_syntax=false&gt;</code>. (For more information about
+              why strict syntax is better than old syntax <a href="ref_depr_oldsyntax.html">read this...</a>)</p>
+            </li>
+
+            <li>
+              <p>New <code class="inline-code">CacheStorage</code> implementation:
+              <code class="inline-code">freemarker.cache.MruCacheStorage</code>. This cache
+              storage implements a two-level Most Recently Used cache. In the
+              first level, items are strongly referenced up to the specified
+              maximum. When the maximum is exceeded, the least recently used
+              item is moved into the second level cache, where they are softly
+              referenced, up to another specified maximum.
+              <code class="inline-code">freemarker.cache.SoftCachseStorage</code> and
+              <code class="inline-code">StrongCachseStorage</code> are deprected,
+              <code class="inline-code">MruCachseStorage</code> is used everywhere instead.
+              The default cache storage is now an
+              <code class="inline-code">MruCachseStorage</code> object with 0 strong size,
+              and infinite soft size.
+              <code class="inline-code">Configuration.setSetting</code> for
+              <code class="inline-code">cache_storage</code> now understands string values
+              as <code class="inline-code">&quot;strong:200, soft:2000&quot;</code>.</p>
+            </li>
+
+            <li>
+              <p>For <code class="inline-code">BeansWrapper</code> generated models, you
+              can now use the <code class="inline-code">${obj.method(args)}</code> syntax to
+              invoke methods whose return type is <code class="inline-code">void</code>.
+              <code class="inline-code">void</code> methods now return
+              <code class="inline-code">TemplateModel.NOTHING</code> as their return
+              value.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.template.SimpleHash</code> now can
+              wrap read-only <code class="inline-code">Map</code>-s, such as the map of HTTP
+              request parameters in Servlet API.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">TemplateNodeModel</code> interface was
+              introduced to support recursive processing of trees of nodes.
+              Typically, this will be used in relation to XML.</p>
+            </li>
+
+            <li>
+              <p>New package: <code class="inline-code">freemarker.ext.dom</code>. This
+              contains the new XML wrapper, that supports the processing of
+              XML documents using the visitor pattern (i.e. with
+              <code class="inline-code">&lt;#visit <em class="code-color">...</em>&gt;</code>
+              and similar directives), and to provide more convenient XML
+              traversing as the legacy wrapper. See the <a href="xgui.html">XML processing guide</a> for more
+              details.</p>
+            </li>
+
+            <li>
+              <p>New package: <code class="inline-code">freemarker.core</code>. Classes
+              used by mostly power-users was moved here from the
+              <code class="inline-code">freemarker.template</code> package. The main reason
+              of the splitting of <code class="inline-code">freemarker.template</code>
+              package was that the amount of &quot;expert&quot; public classes and
+              interfaces grows too much, as we introduce API-s for third-party
+              tools, such as debugging API.</p>
+            </li>
+
+            <li>
+              <p>New package: <code class="inline-code">freemarker.debug</code>. This
+              provides a debugging API, by which you can debug executing
+              templates through network (RMI). You have to write the front-end
+              (client), as the API is just the server side. For more
+              information please read the JavaDoc of the
+              <code class="inline-code">freemarker.debug</code> package.</p>
+            </li>
+
+            <li>
+              <p>You can query the FreeMarker version number with static
+              method <code class="inline-code">Configuration.getVersionNumber()</code>.
+              Also, the <code class="inline-code">Manifest.mf</code> included in
+              <code class="inline-code">freemarker.jar</code> now contains the FreeMarker
+              version number, furthermore, executing it with <code class="inline-code">java
+              -jar freemarker.jar</code> will print the version number to
+              the stdout.</p>
+            </li>
+
+            <li>
+              <p>Added a new protected <code class="inline-code">FreemarkerServlet</code>
+              method: <code class="inline-code">Configuration
+              getConfiguration()</code>.</p>
+            </li>
+
+            <li>
+              <p>Date support is now labeled as final. (It was experimental
+              earlier.)</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">BeansWrapper</code> has been improved to
+              prevent some security exceptions when introspecting.</p>
+            </li>
+
+            <li>
+              <p>Other minor quality improvements and extensions...</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_223">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Fixes and improvements in the Manual and in the API
+              JavaDoc.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_224">The history of the releases before the final version</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_225">Differences between the final release and Release Candidate
+            4</h3>
+
+
+            <ul>
+              <li>
+                <p>Added a new special variable to print the FreeMarker
+                version number: <code class="inline-code">version</code>. See more <a href="ref_specvar.html">in the reference...</a></p>
+              </li>
+
+              <li>
+                <p>Minor documentation fixes and improvements.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_226">Differences between the Release Candidate 4 and Release
+            Candidate 3</h3>
+
+
+            <ul>
+              <li>
+                <p>The <code class="inline-code">BeansWrapper</code> has been improved to
+                prevent some security exceptions when introspecting.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">FreemarkerXmlTask</code> has two new
+                sub-tasks that can be used to prepare template execution with
+                Jython scripts: <code class="inline-code">prepareModel</code> and
+                <code class="inline-code">prepareEnvironment</code>. The
+                <code class="inline-code">jython</code> sub-task is now deprecated, and does
+                the same as <code class="inline-code">prepareEnvironment</code>. See the
+                Java API documentation for more details.</p>
+              </li>
+
+              <li>
+                <p>New special variable to read the FreeMarker version
+                number: <code class="inline-code">version</code>. See more <a href="ref_specvar.html">in the reference...</a></p>
+              </li>
+
+              <li>
+                <p>Bugfix: Greater-than sign doesn&#39;t confuse the
+                <code class="inline-code">eval</code> built-in anymore.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: The <code class="inline-code">BeansWrapper</code> now wrapps
+                the <code class="inline-code">null</code> return values of methods
+                appropriately.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: The <code class="inline-code">FreemarkerXmlTask</code> doesn&#39;t
+                need Jython classes anymore, unless you really use Jython
+                scripts. Several other bugfixes in the Jython related
+                features.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: If the template exception handler has ignored
+                the exception, errors occurring in interpolations inside FTL
+                tags (e.g. <code class="inline-code">&lt;#if &quot;foo${badVar}&quot; !=
+                &quot;foobar&quot;&gt;</code>) were handled in the same way as errors
+                occuring in interpolations outside FTL tags. Thus, the
+                directive call was not skipped, and the problematic
+                interpolation was replaced with an empty string. (This was
+                inconsistent with the behavior of <code class="inline-code">&lt;#if
+                &quot;foo&quot;+badVar != &quot;foobar&quot;&gt;</code>, which should be 100%
+                equivalent with the previous example.)</p>
+              </li>
+
+              <li>
+                <p>Bugfix: The <code class="inline-code">FileTemplateLoader</code> is now
+                more robust when it receives paths that are malformed
+                according the native file system. In the earlier version such
+                paths sometimes caused unexpected
+                <code class="inline-code">IOException</code> that aborted the searching for
+                the template in further
+                <code class="inline-code">FileTemplateLoader</code>-s when you use the
+                <code class="inline-code">MultiTemplateLoader</code>.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_227">Differences between the Release Candidate 3 and Release
+            Candidate 2</h3>
+
+
+            <ul>
+              <li>
+                <p>Bugfix: Fixing a fatal bug in the template cache that
+                was introduced with the latest cache bugfix. The template
+                cache has always reloaded the unchanged template when the
+                update delay has been elapsed, until the template has been
+                actually changed, in which case it has never reloaded the
+                template anymore.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_228">Differences between the Release Candidate 2 and Release
+            Candidate 1</h3>
+
+
+            <ul>
+              <li>
+                <p>Bugfix: The template cache didn&#39;t reload the template
+                when it was replaced with an older version.</p>
+              </li>
+
+              <li>
+                <p>API JavaDoc fix: date/time related classes/interfaces
+                were marked as experimental. They are not experimental.</p>
+              </li>
+
+              <li>
+                <p>Minor site improvements.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_229">Differences between the Release Candidate 1 and Preview 16
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p><em>Warning! Non-backward-compatible
+                change!</em> The default (initial) value of the
+                <code class="inline-code">strict_syntax</code> setting has been changed from
+                <code class="inline-code">false</code> to <code class="inline-code">true</code>. When
+                <code class="inline-code">strict_syntax</code> is <code class="inline-code">true</code>,
+                tags with old syntax as <code class="inline-code">&lt;include
+                &quot;foo.ftl&quot;&gt;</code> will be considered as static text (so
+                they go to the output as-is, like HTML tags do), and not as
+                FTL tags. Such tags have to be rewritten to
+                <code class="inline-code">&lt;#include &quot;foo.ftl&quot;&gt;</code>, since only
+                parts that starts with <code class="inline-code">&lt;#</code>,
+                <code class="inline-code">&lt;/#</code>, <code class="inline-code">&lt;@</code>, or
+                <code class="inline-code">&lt;/@</code> count as FTL tags. Or, to recover
+                the old transitional behavior, where both legacy and new tag
+                syntax was recognized, you have to explicitly set
+                <code class="inline-code">strict_syntax</code> to <code class="inline-code">false</code>:
+                <code class="inline-code">cfg.setStrictSyntaxMode(false)</code>. Also, for
+                individual templates you can force the old behavior by
+                starting the template with <code class="inline-code">&lt;#ftl
+                strict_syntax=false&gt;</code>. (For more information about
+                why strict syntax is better than old syntax <a href="ref_depr_oldsyntax.html">read this...</a>)</p>
+              </li>
+
+              <li>
+                <p>New parameter to the <a href="ref_directive_ftl.html"><code>ftl</code>
+                directive</a>: <code class="inline-code">attributes</code>. The value of
+                this attribute is a hash that associates arbitrary attributes
+                (name-value pairs) to the template. The values of the
+                attributes can be of any type (string, number, sequence...
+                etc.). FreeMarker doesn&#39;t try to understand the meaning of the
+                attributes. It&#39;s up to the application that encapsulates
+                FreeMarker (as a Web application framework). Thus, the set of
+                allowed attributes and their semantic is application (Web
+                application framework) dependent.</p>
+              </li>
+
+              <li>
+                <p>Bugfix:
+                <code class="inline-code">freemarker.template.utility.DeepUnwrap</code>
+                unwrapped sequences to empty
+                <code class="inline-code">ArrayList</code>-s.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: If you included/imported a template with
+                <code class="inline-code">*/</code> in path (acquisition), and that template
+                in turn itself included/imported another template with
+                <code class="inline-code">*/</code> in path, it may failed.</p>
+              </li>
+
+              <li>
+                <p>New methods to the
+                <code class="inline-code">freemarker.core.Environment</code>:
+                <code class="inline-code">importLib(Template loadedTemplate, java.lang.String
+                namespace)</code>,
+                <code class="inline-code">getTemplateForImporting(...)</code>,
+                <code class="inline-code">getTemplateForInclusion(...)</code>.</p>
+              </li>
+
+              <li>
+                <p>Improvements in the
+                <code class="inline-code">java.io.IOException</code> related error messages
+                of the <code class="inline-code">include</code> and
+                <code class="inline-code">import</code> directives.</p>
+              </li>
+
+              <li>
+                <p>Minor improvements in the documentation.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_230">Differences between the Preview 16 and Preview 15
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>New package: <code class="inline-code">freemarker.debug</code>. This
+                provides a debugging API, by which you can debug executing
+                templates through network (RMI). You have to write the
+                front-end (client), as the API is just the server side. For
+                more information please read the JavaDoc of the
+                <code class="inline-code">freemarker.debug</code> package. (The debugging
+                API is present for a while, just I forgot to announce it in
+                the version history. Sorry for that.)</p>
+              </li>
+
+              <li>
+                <p>Bugfix: With the new XML wrapper,
+                <code class="inline-code">@@markup</code> and similar special keys:</p>
+
+                <ul>
+                  <li>
+                    <p>have returned
+                    <code class="inline-code">&lt;foo&gt;&lt;/foo&gt;</code> for empty
+                    elements instead of <code class="inline-code">&lt;foo�/&gt;</code>.
+                    Other than it was needlessly verbose, it has confused
+                    browsers if you generate HTML.</p>
+                  </li>
+
+                  <li>
+                    <p>have showed the attributes that have no explicitly
+                    given value in the original document, just a default value
+                    coming form the DTD.</p>
+                  </li>
+
+                  <li>
+                    <p>have forgot to put space before the system
+                    identifier in the <code class="inline-code">&lt;!DOCTYPE
+                    <em class="code-color">...</em>&gt;</code>.</p>
+                  </li>
+                </ul>
+              </li>
+
+              <li>
+                <p>Bugfix: XPath with Jaxen has died with
+                <code class="inline-code">NullPointerException</code> if the context was an
+                empty node set.</p>
+              </li>
+
+              <li>
+                <p>A bit more intelligent Xalan XPath error
+                messages.</p>
+              </li>
+
+              <li>
+                <p>Revoked fallback-to-classloader logic from the template
+                cache.</p>
+              </li>
+
+              <li>
+                <p>From now on, if no XPath engine is available, and the
+                hash key in an XML query can&#39;t be interpreted without XPath,
+                an error will tell this clearly, rather than silently
+                returning undefined variable (null).</p>
+              </li>
+
+              <li>
+                <p>Bugfix: Some templates have caused the parser to
+                die.</p>
+              </li>
+
+              <li>
+                <p>Some other minor improvements here and there...</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_231">Differences between the Preview 15 and Preview 14
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>Bugfix: The new default template cache storage
+                (<code class="inline-code">MruCacheStorage</code>) has started to
+                continually fail with <code class="inline-code">NullPointerException</code>
+                from a random point of time, usually when the memory usage was
+                high in the JVM.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: In error messages, when the quoted FTL directive
+                had nested content, that was quoted as well, so the quotation
+                could be very long and expose nested lines needlessly.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_232">Differences between the Preview 14 and Preview 13
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p><code class="inline-code">freemarker.template.TemplateMethodModel.exec</code>
+                now returns <code class="inline-code">Object</code> instead of
+                <code class="inline-code">TemplateModel</code>.</p>
+              </li>
+
+              <li>
+                <p>Fixes and improvements for XPath with Jaxen (not Xalan).
+                Non-node-set XPath expressions are now working. FreeMarker
+                variables are accessible in XPath expressions with XPath
+                variable references (e.g.
+                <code class="inline-code">doc[&quot;book/chapter[title=$currentTitle]&quot;]</code>).</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">freemarker.cache.SoftCachseStorage</code>
+                and <code class="inline-code">StrongCachseStorage</code> is deprected. The
+                more flexible <code class="inline-code">MruCachseStorage</code> is used
+                instead everywhere. The default cache storage is now an
+                <code class="inline-code">MruCachseStorage</code> object with 0 strong size,
+                and infinite soft size.
+                <code class="inline-code">Configuration.setSetting</code> for
+                <code class="inline-code">cache_storage</code> now understands string values
+                as <code class="inline-code">&quot;strong:200, soft:2000&quot;</code>.</p>
+              </li>
+
+              <li>
+                <p>Bugfix:
+                <code class="inline-code">freemarker.cache.MruCachseStorage</code> has died
+                with <code class="inline-code">ClassCastException</code> sometimes.</p>
+              </li>
+
+              <li>
+                <p>New built-ins for Java and JavaScript string escaping:
+                <a href="ref_builtins_string.html#ref_builtin_j_string">j_string</a> and <a href="ref_builtins_string.html#ref_builtin_js_string">js_string</a></p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">freemarker.template.TemplateExceptionHandler.HTML_DEBUG_HANDLER</code>
+                now prints more HTML-context-proof messages.</p>
+              </li>
+
+              <li>
+                <p>You can query the FreeMarker version number with static
+                method <code class="inline-code">Configuration.getVersionNumber()</code>.
+                Also, the <code class="inline-code">Manifest.mf</code> included in
+                <code class="inline-code">freemarker.jar</code> now contains the FreeMarker
+                version number, furthermore, executing it with <code class="inline-code">java
+                -jar freemarker.jar</code> will print the version number to
+                the stdout.</p>
+              </li>
+
+              <li>
+                <p>Added a new protected
+                <code class="inline-code">FreemarkerServlet</code> method:
+                <code class="inline-code">Configuration getConfiguration()</code>.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: FreeMarker has frozen on empty conditional
+                blocks in certain contexts.</p>
+              </li>
+
+              <li>
+                <p>Bugfix: Methods called twice on an object using the
+                <code class="inline-code">list</code> directive, as
+                <code class="inline-code">parent.getChildren()</code> with
+                <code class="inline-code">&lt;#list parent.children as child&gt;
+                ...&lt;/#list&gt;</code></p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_233">Differences between the Preview 13 and Preview 12
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>White-space stripping is now more aggressive as before:
+                it always removes leading and trailing white-space if the line
+                only contains FTL tags. (Earlier the white-space was not
+                removed if the tag was <code class="inline-code">&lt;#include
+                <em class="code-color">...</em>&gt;</code> or user-defined
+                directive tag with empty directive syntax as
+                <code class="inline-code">&lt;@myMacro/&gt;</code> (or its equivalents:
+                <code class="inline-code">&lt;@myMacro&gt;&lt;/@myMacro&gt;</code> and
+                <code class="inline-code">&lt;@myMacro&gt;&lt;/@&gt;</code>). Now
+                white-space is removed in these cases as well.) Also,
+                top-level white-space that separates macro definitions and/or
+                assignments is now ignored. More information: <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">Template Author&#39;s Guide/Miscellaneous/White-space handling/White-space stripping</a></p>
+              </li>
+
+              <li>
+                <p>White-space stripping can be disabled for a single line
+                with the <a href="ref_directive_nt.html#ref.directive.nt"><code>nt</code></a>
+                directive (for No Trim).</p>
+              </li>
+
+              <li>
+                <p>A new directive for the declarative XML processing:
+                <a href="ref_directive_visit.html#ref.directive.fallback"><code>fallback</code></a></p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">freemarker.template.SimpleHash</code> now
+                can wrap read-only <code class="inline-code">Map</code>-s, such as the map
+                of HTTP request parameters in Servlet API.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_234">Differences between the Preview 12 and Preview 11
+            releases</h3>
+
+
+            <p>The only change between this and the previous preview
+            release is that Preview 11 had a bug where DOM trees would
+            <em>never</em> be garbage-collected.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_235">Differences between the Preview 11 and Preview 10
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>Many XML related changes. Some of them are incompatible
+                with the previous preview releases! For a more detailed
+                explanation of how XML related features now work, see: <a href="xgui.html">XML Processing Guide</a></p>
+
+                <ul>
+                  <li>
+                    <p>Attention! Attribute queries such as
+                    <code class="inline-code">foo.@bar</code> now return sequences
+                    (similarly to child element queries and XPath queries),
+                    not single nodes. Because of the rule with node sequences
+                    of size 1, it is still good to write
+                    <code class="inline-code">${foo.@bar}</code>, but built-ins such as
+                    <code class="inline-code">?exists</code>, <code class="inline-code">?if_exists</code>
+                    or <code class="inline-code">?default</code> don&#39;t work as before. For
+                    example, instead of
+                    <code class="inline-code">foo.@bar?default(&#39;black&#39;)</code>, you now have
+                    to write <code class="inline-code">foo.@bar[0]?default(&#39;black&#39;)</code>.
+                    So if you have used existence built-ins with attributes,
+                    you have to find those occurrences in the templates and
+                    add that <code class="inline-code">[0]</code>.</p>
+                  </li>
+
+                  <li>
+                    <p>Attention! XML name-space handling has been totally
+                    reworked and is absolutely incompatible with pre 10. Don&#39;t
+                    worry about this if none of your XML input documents use
+                    you use <code class="inline-code">xmlns</code> attributes. Worry,
+                    though, if you have utilized the "loose
+                    mode", where only the local name of elements were
+                    compared, because that&#39;s now gone. Sorry...</p>
+                  </li>
+
+                  <li>
+                    <p>Attention! Special-keys <code class="inline-code">@@</code> and
+                    <code class="inline-code">@*</code> now return a sequence of attribute
+                    nodes instead of the hash of them.</p>
+                  </li>
+
+                  <li>
+                    <p>Several hash keys are now working for node sequences
+                    that store multiple nodes. For example, to get the list of
+                    all <code class="inline-code">para</code> elements of all
+                    <code class="inline-code">chapter</code>-s, just write
+                    <code class="inline-code">doc.book.chapter.para</code>. Or, to get list
+                    of title attributes of all <code class="inline-code">chapter</code>-s
+                    write <code class="inline-code">doc.book.chapter.@title</code>.</p>
+                  </li>
+
+                  <li>
+                    <p>New special hash keys: <code class="inline-code">**</code>,
+                    <code class="inline-code">@@start_tag</code>,
+                    <code class="inline-code">@@end_tag</code>,
+                    <code class="inline-code">@@attribute_markup</code>,
+                    <code class="inline-code">@@text</code>,
+                    <code class="inline-code">@@qname</code>.</p>
+                  </li>
+
+                  <li>
+                    <p><code class="inline-code">?parent</code> for attribute nodes now
+                    returns the element node the attribute node belongs
+                    to.</p>
+                  </li>
+
+                  <li>
+                    <p>You can use Jaxen instead of Xalan for XPath
+                    expressions, if you call the static
+                    <code class="inline-code">freemarker.ext.dom.NodeModel.useJaxenXPathSupport()</code>
+                    method once. We plan to use Jaxen automatically instead of
+                    Xalan if it is available, just the Jaxen support is not
+                    fully functional yet.</p>
+                  </li>
+                </ul>
+              </li>
+
+              <li>
+                <p>New special variable: <code class="inline-code">.vars</code>. This is
+                useful to read top-level variables with square bracket syntax,
+                for example <code class="inline-code">.vars[&quot;name-with-hyphens&quot;]</code> and
+                <code class="inline-code">.vars[dynamicName]</code>.</p>
+              </li>
+
+              <li>
+                <p>New built-in, <code class="inline-code">eval</code>, to evaluate a
+                string as FTL expression. For example
+                <code class="inline-code">&quot;1+2&quot;?eval</code> returns the number 3.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">FreemarkerServlet</code> now uses the
+                configuration&#39;s <code class="inline-code">locale</code> setting, rather than
+                <code class="inline-code">Locale.getDefault()</code>, to set the locale of
+                the templates. Also, the signature of the
+                <code class="inline-code">deduceLocale</code> method has been
+                changed.</p>
+              </li>
+
+              <li>
+                <p>We have a new (beta status)
+                <code class="inline-code">CacheStorage</code> implementation:
+                <code class="inline-code">freemarker.cache.MruCacheStorage</code>. This
+                cache storage implements a two-level Most Recently Used cache.
+                In the first level, items are strongly referenced up to the
+                specified maximum. When the maximum is exceeded, the least
+                recently used item is moved into the second level cache, where
+                they are softly referenced, up to another specified maximum.
+                You can plug to try it with <code class="inline-code">cfg.setCacheStorage(new
+                freemarker.cache.MruCacheStorage(maxStrongSize,
+                maxSoftSize))</code>.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_236">Differences between the Preview 10 and Preview 9
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>The special key <code class="inline-code">@@xmlns</code> was removed
+                in favor of a new FTL directive for the same purpose,
+                <code class="inline-code">&lt;#xmlns...&gt;</code>.</p>
+              </li>
+
+              <li>
+                <p>By default, the system is stricter about the use of
+                namespace prefixes. In general, you must use a prefix to
+                qualify subelements that are associated with an XML
+                nampespace. You can do this with the new
+                <code class="inline-code">&lt;#xmlns...&gt;</code> directive, but prefixes
+                declared in the input XML doc will actually work with no
+                declaration.</p>
+              </li>
+
+              <li>
+                <p>Introduced a new special key called
+                <code class="inline-code">@@text</code> that returns all the text nodes
+                contained (recursively) in an element all concatenated
+                together.</p>
+              </li>
+
+              <li>
+                <p>Either Jaxen or Xalan can be used to provide XPath
+                functionality. Prior versions only worked with Xalan.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">FreemarkerServlet</code> uses
+                <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code> by default
+                instead of <code class="inline-code">ObjectWrapper.BEANS_WRAPPER</code>.
+                What this means is that, by default, objects of type
+                <code class="inline-code">java.lang.String</code>,
+                <code class="inline-code">java.lang.Number</code>,
+                <code class="inline-code">java.util.List</code>, and
+                <code class="inline-code">java.util.Map</code> will be wrapped as
+                <code class="inline-code">TemplateModels</code> via the classes
+                <code class="inline-code">SimpleScalar</code>,
+                <code class="inline-code">SimpleNumber</code>,
+                <code class="inline-code">SimpleSequence</code>, and
+                <code class="inline-code">SimpleHash</code> respectively. Thus, the java
+                methods on those objects will not be available. The default
+                wrapper implementation in FreeMarker 2.3 automatically knows
+                how to wrap Jython objects, and also wraps
+                <code class="inline-code">org.w3c.dom.Node</code> objects into instances of
+                <code class="inline-code">freemarker.ext.dom.NodeModel</code>.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">FreemarkerServlet</code> base
+                implementation no longer deduces the locale to use from the
+                HttpRequest.getLocale() hook. Rather, it simply delegates to a
+                <code class="inline-code">deduceLocale()</code> hook that is overridable in
+                subclasses. The base implementation simply uses
+                <code class="inline-code">Locale.getDefault()</code></p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_237">Differences between the Preview 9 and Preview 8
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>Fixed bugs introduced with Preview 8: XPath,
+                <code class="inline-code">@@markup</code> and
+                <code class="inline-code">@@nested_markup</code> now works with the document
+                node.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_238">Differences between the Preview 8 and Preview 7
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p><code class="inline-code">macro</code> and assignment directives now
+                accept arbitrary destination variable name with quoted syntax.
+                For example: <code class="inline-code">&lt;#macro
+                &quot;foo-bar&quot;&gt;<em class="code-color">...</em></code> or
+                <code class="inline-code">&lt;#assign &quot;this+that&quot; = 123&gt;</code>. This is
+                important, because XML element names can contain hyphen, and
+                it was not possible to define a handler macro for those
+                elements, till now.</p>
+              </li>
+
+              <li>
+                <p>Special key <code class="inline-code">@@content</code> was renamed to
+                <code class="inline-code">@@nested_markup</code>.</p>
+              </li>
+
+              <li>
+                <p>Fixed outdated XML related Manual parts (that were
+                outdated even in Preview 7).</p>
+              </li>
+
+              <li>
+                <p>Better parse-error messages.</p>
+              </li>
+
+              <li>
+                <p>Minor bugfixes here and there...</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_239">Differences between the Preview 7 and Preview 6
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>Caching of XPath queries should lead to significant
+                performance improvements for XML processing, at least when
+                XPath is heavily used.</p>
+              </li>
+
+              <li>
+                <p>Refinements in handling of XML namespaces in the XML
+                processing functionality. The new
+                <code class="inline-code">strict_namespace_handling</code> setting
+                introduced in 2.3pre6 was removed. A general-purpose solution
+                was arrived at that should make that configuration setting
+                unnecessary.</p>
+              </li>
+
+              <li>
+                <p>Special key <code class="inline-code">@xmlns</code> was renamed to
+                @@xmlns. Reserved namespace prefix <code class="inline-code">default</code>
+                was renamed to <code class="inline-code">@@default</code>.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">ftl</code> directive now accepts
+                non-string types.</p>
+              </li>
+
+              <li>
+                <p>New special keys were introduced for XML node wrappers
+                in the freemarker.ext.dom package. The
+                <code class="inline-code">@@markup</code> key returns the literal markup
+                that make up that element and the <code class="inline-code">@@content</code>
+                key returns all the element&#39;s markup excluding the opening and
+                closing tags.</p>
+              </li>
+
+              <li>
+                <p>Minor bugfixes here and there...</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_240">Differences between the Preview 6 and Preview 5
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>Existence built-ins (<code class="inline-code">?default</code>,
+                <code class="inline-code">?exists</code>, etc.) now work with sequence sub
+                variables as well. Read the <a href="ref_directive_switch.html#ref.directive.default">documentation of the
+                <code>default</code> built-in</a> for more
+                information.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">matches</code> built-in now returns a
+                sequence instead of a collection.</p>
+              </li>
+
+              <li>
+                <p>Refinements in handling of XML namespaces in the XML
+                processing functionality. A new setting,
+                <code class="inline-code">strict_namespace_handling</code> was introduced.
+                If this is set (it is off by default) any node-handling macro
+                used in with the visit/recurse machinery must be from a macro
+                library that declares in its ftl header that it handles the
+                namespace in question.</p>
+              </li>
+
+              <li>
+                <p>Minor bugfixes here and there...</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_241">Differences between the Preview 5 and Preview 4
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>The <code class="inline-code">replace</code> and
+                <code class="inline-code">split</code> built-ins now support
+                case-insensitive comparison and regular expressions (J2SE 1.4+
+                only), and some other new options. More information can be
+                found <a href="ref_builtins_string.html#ref_builtin_string_flags">here</a>.</p>
+              </li>
+
+              <li>
+                <p>New butilt-in for regular expression matching (J2SE 1.4+
+                only): <a href="ref_builtins_string.html#ref_builtin_matches"><code>matches</code></a></p>
+              </li>
+
+              <li>
+                <p>Minor bugfixes here and there...</p>
+              </li>
+
+              <li>
+                <p>Manual: More browser-safe HTML-s. More updated
+                content.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_242">Differences between the Preview 4 and Preview 3
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>Bugfix: with multi-type variables, <code class="inline-code">+</code>
+                operator overload for hash type had higher precedence than the
+                precedence of some older overloads.</p>
+              </li>
+
+              <li>
+                <p>The API documentation was missing from the distribution
+                <code class="inline-code">tar.gz</code>.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_243">Differences between the Preview 3 and Preview 2
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>XML processing: Many various bugfixes, especially with
+                the declarative processing.</p>
+              </li>
+
+              <li>
+                <p>XML processing: the <code class="inline-code">namespace_uri</code>
+                built-in, the <code class="inline-code">xmlnsuri</code> header parameter,
+                and the <code class="inline-code">TemplateNodeModel.getNodeNamespace</code>
+                method were renamed to <code class="inline-code">node_namespace</code> and
+                <code class="inline-code">getNodeNamespace</code> respectively.</p>
+              </li>
+
+              <li>
+                <p>XML processing: Better documentation. Especially, note:
+                <a href="xgui.html">XML Processing Guide</a></p>
+              </li>
+
+              <li>
+                <p>A new header parameter, <code class="inline-code">strip_text</code>,
+                that removes all top-level text from a template. See <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
+                directive</a></p>
+              </li>
+
+              <li>
+                <p>Support for a variable number of macro parameters. If
+                the last parameter in a macro declaration ends with
+                <code class="inline-code">...</code>, all extra parameters passed to the
+                macro will be available via that parameter. For macros called
+                with positional parameters, the parameter will be a sequence.
+                For named parameters, the parameter will be a hash.</p>
+              </li>
+
+              <li>
+                <p>For <code class="inline-code">BeansWrapper</code> generated models,
+                you can now use the <code class="inline-code">${obj.method(args)}</code>
+                syntax to invoke methods whose return type is
+                <code class="inline-code">void</code>. <code class="inline-code">void</code> methods now
+                return <code class="inline-code">TemplateModel.NOTHING</code> as their
+                return value.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_244">Differences between the Preview 2 and Preview 1
+            releases</h3>
+
+
+            <ul>
+              <li>
+                <p>The <code class="inline-code">freemarker.ext.dom.NodeModel</code> API
+                changed slightly. The <code class="inline-code">setDocumentBuilder()</code>
+                method was changed to
+                <code class="inline-code">setDocumentBuilderFactory()</code> because the
+                older scheme was not thread-safe. The
+                <code class="inline-code">stripComments</code> and
+                <code class="inline-code">stripPIs</code> methods are renamed to The
+                <code class="inline-code">removeComments</code> and
+                <code class="inline-code">removePIs</code>, and are fixed now. A new method,
+                <code class="inline-code">simplify</code> has been added.</p>
+              </li>
+
+              <li>
+                <p>The expressions <code class="inline-code">as</code>,
+                <code class="inline-code">in</code>, and <code class="inline-code">using</code> are now
+                keywords in the template language and cannot be used as
+                top-level variable names without square-bracket syntax (as
+                <code class="inline-code">.vars[&quot;in&quot;]</code>). If, by some chance, you have
+                top-level variables that use one of these names, you will have
+                to rename them (or use the square-bracket syntax). Sorry for
+                the inconvenience.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">?new</code> built-in, as it was
+                implemented, was a security hole. Now, it only allows you to
+                instantiate a java object that implements the
+                <code class="inline-code">freemarker.template.TemplateModel</code>
+                interface. If you want the functionality of the
+                <code class="inline-code">?new</code> built-in as it existed in prior
+                versions, make available an instance of the new
+                <code class="inline-code">freemarker.template.utility.ObjectConstructor</code>
+                class to your template.</p>
+              </li>
+
+              <li>
+                <p>The <code class="inline-code">&lt;#recurse&gt;</code> directive was
+                broken. It did not work with a <code class="inline-code">using</code>
+                clause. This is now fixed.</p>
+              </li>
+            </ul>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_1.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_2_8.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[06/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_22.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_22.html b/builds/2.3.26-nightly/versions_2_3_22.html
new file mode 100644
index 0000000..15a52c2
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_22.html
@@ -0,0 +1,1197 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.22 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.22">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_22.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_22.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_22.html"><span itemprop="name">2.3.22</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.22"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_23.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_21.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_22" itemprop="headline">2.3.22</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_168" data-menu-target="autoid_168">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_169" data-menu-target="autoid_169">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_170" data-menu-target="autoid_170">Notes</a></li></ul> </div><p>Date of release: 2015-03-01</p><p>Note that since 2.3.22 is designed to be fully backward
+        compatible with the previous 2.3.x releases, <em>some of the
+        improvements and fixes described below are only activated when you
+        specifically ask for 2.3.22 "incompatible
+        improvements"</em> (it&#39;s always clearly indicated),
+        because they could, with very small chance, break existing
+        applications. For actively maintained applications it&#39;s probably
+        better to allow them. See <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">how to set
+        "incomplatible improvements" here</a>.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_168">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>New built-ins: <code class="inline-code">api</code> and
+              <code class="inline-code">has_api</code>.
+              <code class="inline-code"><em class="code-color">value</em>?api</code> provides
+              access to the API (usually, the Java API) of
+              <code class="inline-code"><em class="code-color">value</em></code>, like
+              <code class="inline-code"><em class="code-color">value</em>?api.<em class="code-color">someJavaMethod()</em></code>
+              or
+              <code class="inline-code"><em class="code-color">value</em>?api.<em class="code-color">someBeanProperty</em></code>),
+              if the value itself supports exposing its API. This meant to be
+              used rarely, when you need to call a Java method of an object,
+              but the by-design simplistic view of the value that FreeMarker
+              exposes to the templates hides that, and there&#39;s no equivalent
+              built-in either. For example, when you put a
+              <code class="inline-code">Map</code> into the data-model (and you are using
+              the default object wrapper), <code class="inline-code">myMap.myMethod()</code>
+              in a template basically translates to <code class="inline-code">((Method)
+              myMap.get(&quot;myMethod&quot;)).invoke(...)</code> in Java, thus you
+              can&#39;t call <code class="inline-code">myMethod</code>. If, however, you write
+              <code class="inline-code">myMap?api.myMethod()</code> instead, that means
+              <code class="inline-code">myMap.myMethod()</code> in Java. Similarly,
+              <code class="inline-code">myMap?api.myProperty</code> translates to
+              <code class="inline-code">myMap.getMyProperty()</code> in Java, instead of to
+              <code class="inline-code">myMap.get(&quot;myProperty&quot;)</code>.</p>
+
+              <p><em>If you can, rely on the capabilities of the FTL
+              types and the related built-ins as far as possible. Using
+              <code class="inline-code">?api</code> is only the last
+              resort.</em></p>
+
+              <p>Using <code class="inline-code">?api</code> also happens to offer a
+              workaround for the lack of non-<code class="inline-code">String</code>
+              <code class="inline-code">Map</code> key support in FTL&#39;s
+              <code class="inline-code">[]</code> operator (as in
+              <code class="inline-code">myMap[key]</code>), because now you can write
+              <code class="inline-code">myMap?api.get(nonStringKey)</code>.</p>
+
+              <p><code class="inline-code">?api</code> is not enabled by default and
+              isn&#39;t available for all values. <a href="ref_builtins_expert.html#ref_buitin_api_and_has_api">See more
+              here...</a></p>
+            </li>
+
+            <li>
+              <p>Identifiers (like <code class="inline-code">someVariable</code>) can now
+              contain minus (<code class="inline-code">-</code>), dot
+              (<code class="inline-code">.</code>), and colon (<code class="inline-code">:</code>) at any
+              position, but those characters <em>must be escaped with a
+              preceding backslash</em> (<code class="inline-code">\</code>), or else
+              they would be interpreted as operators. For example, to read the
+              variable whose name is "data-id", the correct
+              expression is <code class="inline-code">data\-id</code>, as
+              <code class="inline-code">data-id</code> would be interpreted as "data
+              minus id". This also works for named macro parameters,
+              which is useful when you want to accept arbitrary HTML
+              attributes in a catch-all parameter, like in <code class="inline-code">&lt;@box
+              class=&quot;someCssClass&quot; data\-id=product.id /&gt;</code>. (When
+              you enumerate the catch-all parameter names inside the macro,
+              the key string you get is <code class="inline-code">&quot;data-id&quot;</code> without
+              <code class="inline-code">\</code> of course.)</p>
+            </li>
+
+            <li>
+              <p>Added <code class="inline-code">?lower_abc</code> and
+              <code class="inline-code">?upper_abc</code>. This converts
+              <code class="inline-code">1</code>, <code class="inline-code">2</code>,
+              <code class="inline-code">3</code>, etc., to the string
+              <code class="inline-code">&quot;a&quot;</code>, <code class="inline-code">&quot;b&quot;</code>,
+              <code class="inline-code">&quot;c&quot;</code>, etc. (or for <code class="inline-code">&quot;A&quot;</code>,
+              <code class="inline-code">&quot;B&quot;</code>, <code class="inline-code">&quot;C&quot;</code>, etc.). When
+              reaching <code class="inline-code">&quot;z&quot;</code>, it continues like
+              <code class="inline-code">&quot;aa&quot;</code>, <code class="inline-code">&quot;ab&quot;</code>, etc. This is
+              the same logic that you can see in column labels in spreadsheet
+              applications (like Excel or Calc). <a href="ref_builtins_number.html#ref_builtin_lower_abc">More details...</a></p>
+            </li>
+
+            <li>
+              <p>Added <code class="inline-code">?keep_before_last</code> and
+              <code class="inline-code">?keep_after_last</code>. Example:
+              <code class="inline-code">&quot;foo.bar.txt&quot;?keep_before_last(&quot;.&quot;)</code> returns
+              <code class="inline-code">&quot;foo.bar&quot;</code>,
+              <code class="inline-code">&quot;foo.bar.txt&quot;?keep_after_last(&quot;.&quot;)</code> returns
+              <code class="inline-code">&quot;txt&quot;</code>. (These work like
+              <code class="inline-code">?keep_before</code> and
+              <code class="inline-code">?keep_after</code>, but those look for the first
+              occurrence of the separator.)</p>
+            </li>
+
+            <li>
+              <p>Added many missing UNICODE letters and digits to the set
+              of legal identifier characters, like Korean letters (bug fixed:
+              [<a href="https://sourceforge.net/p/freemarker/bugs/129/">129</a>])</p>
+            </li>
+
+            <li>
+              <p>Error message quality improvements:</p>
+
+              <ul>
+                <li>
+                  <p>Several improvements when calling custom JSP tags; see
+                  them in its own section later.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: When localized lookup or template
+                  acquisition has kicked in, error messages have still quoted
+                  the name used for requesting the template, rather that the
+                  actual template source name (like <code class="inline-code">foo.ftl</code>
+                  instead of <code class="inline-code">foo_en.ftl</code>, when the template
+                  was get as <code class="inline-code">foo.ftl</code>, but behind the scenes
+                  was loaded from <code class="inline-code">foo_en.ftl</code>).</p>
+                </li>
+
+                <li>
+                  <p>"Template not found" errors are now more
+                  detailed, giving hints about accidentally using
+                  <code class="inline-code">\</code> instead of <code class="inline-code">/</code>, or
+                  backing out of the <code class="inline-code">TemplateLoader</code>&#39;s root
+                  directory.</p>
+                </li>
+
+                <li>
+                  <p>The <code class="inline-code">#setting</code> directive gives more
+                  helpful error message when the setting name is not
+                  recognized, and lists the allowed setting names or a
+                  correction suggestion.</p>
+                </li>
+
+                <li>
+                  <p>When a bad special variable name
+                  (<code class="inline-code">.<em class="code-color">name</em></code>) is
+                  encountered, the list of available names is shown in the
+                  error message.</p>
+                </li>
+
+                <li>
+                  <p>When <code class="inline-code">Map.get</code> or
+                  <code class="inline-code">Map.containsKey</code> of a wrapped
+                  <code class="inline-code">Map</code> throws a
+                  <code class="inline-code">ClassCastException</code> or
+                  <code class="inline-code">NullPointerException</code>, the error will
+                  point to the causing FTL expression (with some explanation),
+                  rather than bubbling up as low level runtime error.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_169">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Object wrapping improvements:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">DefaultObjectWrapper</code>, only with its
+                  <code class="inline-code">incompatible_improvements</code> set to 2.3.22
+                  (<a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">see how
+                  here...</a>), or more precisely, with its new
+                  <code class="inline-code">useAdaptersForContainers</code> setting set to
+                  <code class="inline-code">true</code> (which defaults to
+                  <code class="inline-code">true</code> when
+                  <code class="inline-code">incompatible_improvements</code> is set to
+                  2.3.22): It doesn&#39;t copy <code class="inline-code">Map</code>-s,
+                  <code class="inline-code">List</code>-s, and arrays anymore when wrapping
+                  them into <code class="inline-code">TemplateModel</code>-s (which is the
+                  interface through with templates access all values), just
+                  wraps them into thin <code class="inline-code">TemplateModel</code>
+                  adapters, that will reach the original object for all
+                  operations. The wrapped values will be instances of the new
+                  <code class="inline-code">DefaultMapAdapter</code>,
+                  <code class="inline-code">DefaultListAdapter</code> and
+                  <code class="inline-code">DefaultArrayAdapter</code> classes, instead of
+                  the legacy (copying) <code class="inline-code">SimpleHash</code> and
+                  <code class="inline-code">SimpleSequence</code> classes. (Note that many
+                  projects use pure <code class="inline-code">BeansWrapper</code> instead of
+                  <code class="inline-code">DefaultObjectWrapper</code>, which has always
+                  used the adapter approach, albeit a different implementation
+                  of it. As the shortcomings of
+                  <code class="inline-code">DefaultObjectWrapper</code> are fixed now, it&#39;s
+                  always recommended over <code class="inline-code">BeansWrapper</code>, as
+                  <code class="inline-code">BeansWrapper</code> gives quite confusing
+                  multi-typed values and is substantially slower.)</p>
+
+                  <p>While keeping backward compatibility as much as
+                  possible was an important factor in this change, this is a
+                  quite deep change, so you may want to <a href="#topic.defaultObjectWrapperSwitchToAdapters">review
+                  the consequences and reasons here...</a> (But again, this
+                  change is <em>not</em> active by default, so
+                  merely updating FreeMarker wont risk the stability of
+                  existing applications)</p>
+                </li>
+
+                <li>
+                  <p>Added <code class="inline-code">TemplateMethodModelEx
+                  BeansWrapper.wrap(Object object, Method method)</code>
+                  for wrapping methods without wrapping their parent object
+                  and without going through overloaded method selection on
+                  invocation time.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/372/">372</a>]:
+                  <code class="inline-code">ClassCastException</code> when a
+                  <code class="inline-code">SortedMap</code> (typically, a
+                  <code class="inline-code">TreeMap</code>) is wrapped with
+                  <code class="inline-code">DefaultObjectWrapper</code> and then a 1
+                  character long string is get from it that doesn&#39;t exist. To
+                  fix the issue, if the wrapped <code class="inline-code">Map</code> is a
+                  <code class="inline-code">SortedMap</code> and it&#39;s wrapped by
+                  <code class="inline-code">DefaultObjectWrapper</code>, it won&#39;t try to
+                  fall back to a <code class="inline-code">Character</code> key after with
+                  the <code class="inline-code">String</code> key has got
+                  <code class="inline-code">null</code>. (This change should be backward
+                  compatible, because when a <code class="inline-code">SortedMap</code> has
+                  <code class="inline-code">Character</code> keys, the initial attempt with
+                  <code class="inline-code">String</code> key causes
+                  <code class="inline-code">ClassCastException</code>, thus, such
+                  <code class="inline-code">SortedMap</code>-s were never usable as FTL
+                  hashes.)</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/368/">368</a>]:
+                  Only with <code class="inline-code">incompatible_improvements</code> set
+                  to 2.3.22 or with its new
+                  <code class="inline-code">useAdaptersForContainers</code> setting set to
+                  <code class="inline-code">true</code>: Key order and other behavioral
+                  peculiarities of "custom"
+                  <code class="inline-code">Map</code> types isn&#39;t lost anymore. The same
+                  stands for <code class="inline-code">List</code>-s too.</p>
+                </li>
+
+                <li>
+                  <p>Added new setting,
+                  <code class="inline-code">forceLegacyNonListCollections</code>. This only
+                  matters when <code class="inline-code">useAdaptersForContainers</code> is
+                  <code class="inline-code">true</code>. Then, unless you set this to
+                  <code class="inline-code">true</code>,
+                  <code class="inline-code">java.util.Collection</code>-s that aren&#39;t
+                  <code class="inline-code">List</code>-s (like <code class="inline-code">Set</code>-s)
+                  will continue using <code class="inline-code">SimpleSequence</code> (i.e.,
+                  the copying approach) instead of the adapter approach. The
+                  default is <code class="inline-code">false</code>, at least until
+                  <code class="inline-code">incompatible_improvements</code> 2.4.0, because
+                  <code class="inline-code">SimpleSequence</code> gave indexed access to
+                  these non-<code class="inline-code">List</code>-s, like in
+                  <code class="inline-code">mySet[2]</code>, which is strange but some
+                  existing templates may utilize this, even if only
+                  accidentally. With
+                  <code class="inline-code">forceLegacyNonListCollections</code> set to
+                  <code class="inline-code">false</code>, indexed access won&#39;t be possible
+                  for <code class="inline-code">Set</code>-s and such anymore (nor will
+                  <code class="inline-code">?first</code> and <code class="inline-code">?last</code> work,
+                  but <code class="inline-code">?size</code> will still do), so you may want
+                  to retest old templates. On the other hand, you get the
+                  advantages of the adapter approach. Hence, in new projects
+                  it&#39;s highly recommended to set
+                  <code class="inline-code">forceLegacyNonListCollections</code> to
+                  <code class="inline-code">false</code>. (The adapter approach is
+                  implemented by
+                  <code class="inline-code">DefaultNonListCollectionAdapter</code>.)</p>
+                </li>
+
+                <li>
+                  <p>Added new, <em>experimental</em> FTL type
+                  interface,
+                  <code class="inline-code">freemarker.template.TemplateCollectionModelEx</code>,
+                  which adds the <code class="inline-code">size()</code>,
+                  <code class="inline-code">isEmpty()</code>, and <code class="inline-code">boolean
+                  contains(TemplateModel)</code> methods to the
+                  <code class="inline-code">TemplateCollectionModel</code> interface. This
+                  was added because when wrapping
+                  <code class="inline-code">java.util.Collections</code> these extra
+                  capabilities area available anyway, but FTL couldn&#39;t tap on
+                  them till now. While the exact interface details are marked
+                  as experimental, the feature itself is already utilized for
+                  <code class="inline-code">?size</code> when setting the
+                  <code class="inline-code">forceLegacyNonListCollections</code> property of
+                  <code class="inline-code">DefaultObjectWrapper</code> to
+                  <code class="inline-code">false</code> (see earlier).</p>
+                </li>
+
+                <li>
+                  <p>Added new <em>experimental</em> interface,
+                  <code class="inline-code">freemarker.template.ObjectWrapperAndUnwrapper</code>.
+                  This extends <code class="inline-code">ObjectWrapper</code> with
+                  unwrapping functionality. This functionality has already
+                  existed for a long time in <code class="inline-code">BeansWrapper</code>
+                  and its subclasses, like in
+                  <code class="inline-code">DefaultObjectWrapper</code>, but it wasn&#39;t
+                  "factored out" into its own published interface
+                  that other <code class="inline-code">ObjectWrapper</code>-s could
+                  implement. This is useful for
+                  <code class="inline-code">TemplateModel</code> implementations that don&#39;t
+                  want to require a <code class="inline-code">BeansWrapper</code> (or its
+                  subclass), only the availability of the unwrapping
+                  functionality.</p>
+                </li>
+
+                <li>
+                  <p>Added new <em>experimental</em> interfaces
+                  to implement <code class="inline-code">?api</code> (see it in the FTL
+                  section): <code class="inline-code">TemplateModelWithAPISupport</code>,
+                  <code class="inline-code">ObjectAPIWrapper</code>,
+                  <code class="inline-code">RichObjectWrapper</code>. Note that while the
+                  interfaces are experimental, <code class="inline-code">?api</code> itself
+                  isn&#39;t.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p><code class="inline-code">FreemarkerServlet</code> improvements:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">FreemarkerServlet</code> now supports
+                  custom JSP EL functions (defined in TLD-s with
+                  <code class="inline-code">function</code> XML elements). Earlier it has
+                  ignored them. The custom EL function can be called like a
+                  Java method, for example: <code class="inline-code">&lt;#assign
+                  u=JspTaglibs[&quot;/WEB-INF/utils.tld&quot;]&gt; ...
+                  ${u.truncate(title, 25)}</code>.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: Error message was unhelpful when there was
+                  a type mismatch between the actual and the expected type of
+                  a custom tag parameter. This was a very frequent problem of
+                  users who call JSP taglibs from FTL (the typical
+                  &quot;java.lang.IllegalArgumentException: argument type
+                  mismatch&quot;, without any FTL context). Now it&#39;s a proper error
+                  with explanation, solution tip, and FTL error
+                  position/quotation.</p>
+                </li>
+
+                <li>
+                  <p>RFE resolved [<a href="https://sourceforge.net/p/freemarker/feature-requests/113/">113</a>]
+                  [<a href="https://sourceforge.net/p/freemarker/feature-requests/114/">114</a>]:
+                  <code class="inline-code">FreemarkerServlet</code> can now discover
+                  <code class="inline-code">META-INF/**/*.tld</code>-s that are visible for
+                  the class loader but aren&#39;t in
+                  <code class="inline-code">WEB-INF/lib/*.jar</code>-s. For this feature to
+                  be active, you must setup the extra TLD lookup with the
+                  <code class="inline-code">MetaInfTldSources</code> and/or
+                  <code class="inline-code">ClasspathTlds</code>
+                  <code class="inline-code">FreemarkerServlet</code> init-params (see the
+                  <a href="http://freemarker.org/docs/api/freemarker/ext/servlet/FreemarkerServlet.html">Java
+                  API documentation of
+                  <code>FreemarkerServlet</code></a> for the
+                  description of these). For example, if you run your
+                  application from Eclipse with an embedded Servlet container,
+                  and thus the tag library jar-s aren&#39;t on the standard
+                  locations but are in the classpath like any other
+                  dependencies, now you can just write:</p>
+
+                  
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;init-param&gt;
+  &lt;param-name&gt;MetaInfTldSources&lt;/param-name&gt;
+  &lt;param-value&gt;classpath&lt;/param-value&gt;
+&lt;/init-param&gt;</pre></div>
+
+                  <p>and then all the <code class="inline-code">META-INF</code>
+                  directories that are visible for the class loader will be
+                  searched for TLD-s.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">MetaInfTldSources</code> and
+                  <code class="inline-code">ClasspathTlds</code> can also be appended to or
+                  replaced by the values of Java system properties
+                  <code class="inline-code">org.freemarker.jsp.metaInfTldSources</code> and
+                  <code class="inline-code">org.freemarker.jsp.classpathTlds</code>,
+                  respectively. Thus one can adjust these in the Eclipse run
+                  configuration without modifying the
+                  <code class="inline-code">web.xml</code>. (See the <a href="http://freemarker.org/docs/api/freemarker/ext/servlet/FreemarkerServlet.html">Java
+                  API documentation of
+                  <code>FreemarkerServlet</code></a> for
+                  more.)</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">FreemarkerServlet</code> now recognizes
+                  the
+                  <code class="inline-code">org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</code>
+                  servlet context attribute, and adds entries to
+                  <code class="inline-code">MetaInfTldSources</code> (introduced above) from
+                  it.</p>
+                </li>
+
+                <li>
+                  <p>Added <code class="inline-code">protected
+                  FreemarkerServlet.createTaglibFactory()</code> to allow
+                  fine tuning the settings of the
+                  <code class="inline-code">TaglibFactory</code>. It now have a few setters,
+                  like <code class="inline-code">setObjectWrapper</code>,
+                  <code class="inline-code">setMetaInfTldSource</code>, etc.</p>
+                </li>
+
+                <li>
+                  <p>Added new servlet init-param,
+                  <code class="inline-code">BufferSize</code>. This sets the buffer size via
+                  <code class="inline-code">HTTPServletResponse.setBufferSize()</code> if
+                  the response state still allows that, ignores it
+                  otherwise.</p>
+                </li>
+
+                <li>
+                  <p>The <code class="inline-code">TemplatePath</code> servlet init-param
+                  now supports a new kind of path, that looks like
+                  <code class="inline-code">classpath:com/example/myapp/templates</code>.
+                  This is similar to the old
+                  <code class="inline-code">class://com/example/myapp/templates</code>, but
+                  it uses the Thread Context Class Loader of the thread that
+                  initializes <code class="inline-code">FreemarkerSerlvet</code>, and thus
+                  will work even if <code class="inline-code">freemarker.jar</code> is not
+                  local to the web application. <code class="inline-code">class://</code>
+                  has the problem that it uses the defining class loader of
+                  <code class="inline-code">FreemarkerSerlvet</code> itself (or of its
+                  subclass).</p>
+                </li>
+
+                <li>
+                  <p>If <code class="inline-code">incompatible_improvements</code> is set
+                  to 2.3.22 (or higher), the <code class="inline-code">TemplatePath</code>
+                  servlet init-param supports specifying multiple comma
+                  separated paths inside
+                  <code class="inline-code">[<em class="code-color">...</em>]</code>, like
+                  <code class="inline-code">&lt;param-value&gt;[ WEB-INF/templates,
+                  classpath:com/example/myapp/templates
+                  ]&lt;/param-value&gt;</code>. This internally creates a
+                  <code class="inline-code">freemarker.cache.MultiTemplateLoader</code>.</p>
+                </li>
+
+                <li>
+                  <p>Added new servlet <code class="inline-code">init-param</code>,
+                  <code class="inline-code">ExceptionOnMissingTemplate</code>. Setting this
+                  to <code class="inline-code">true</code> changes the behavior on
+                  template-not-found errors to similar to what you experience
+                  with other kind of template exceptions (a HTTP 500
+                  "Internal Server error" response on most
+                  setups). When it&#39;s <code class="inline-code">false</code> (the legacy
+                  behavior), you only get a HTTP 404 "Not found".
+                  While that&#39;s also how JSP views work, this turns out to be a
+                  problem, because some frameworks give 404 to the visitor too
+                  if the MVC view gives 404. But to get to the point where you
+                  forward to the MVC View, the visitor had to visit a valid
+                  URL, only that page misses its View, so its broken on the
+                  server side, so it should be a 500.</p>
+                </li>
+
+                <li>
+                  <p>Added new overridable method:
+                  <code class="inline-code">FreemarkerServlet.createDefaultObjectWrapper()</code>.
+                  This can be used for what
+                  <code class="inline-code">createObjectWrapper()</code> is usually
+                  overridden for, but without unwillingly disabling the
+                  processing of the related init-params (like of
+                  <code class="inline-code">object_wrapper</code>).</p>
+                </li>
+
+                <li>
+                  <p>Improved (or fixed) error logging: Now logs will
+                  always get into FreeMarker&#39;s own log, not only into the
+                  servlet container log. Also, earlier template-not-found and
+                  template parsing error details logs were sometimes lost,
+                  depending on the servlet container.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed, only active with
+                  <code class="inline-code">incompatible_improvements</code> set to 2.3.22
+                  (or higher): Some kind of values, when put into the JSP
+                  <em>page</em> scope (via
+                  <code class="inline-code">#global</code> or via the JSP
+                  <code class="inline-code">PageContext</code> API) and later read back with
+                  the JSP <code class="inline-code">PageContext</code> API (typically in a
+                  custom JSP tag), might come back as FreeMarker
+                  <code class="inline-code">TemplateModel</code> objects instead of as
+                  objects with a standard Java type. Other Servlet scopes
+                  aren&#39;t affected. It&#39;s highly unlikely that something expects
+                  the presence of this bug. The affected values are of the FTL
+                  types listed below, and to trigger the bug, they either had
+                  to be created directly in the template (like as an FTL
+                  literal or with
+                  <code class="inline-code">?date</code>/<code class="inline-code">time</code>/<code class="inline-code">datetime</code>),
+                  or you had to use <code class="inline-code">DefaultObjectWrapper</code> or
+                  <code class="inline-code">SimpleObjectWrapper</code> (or a subclass of
+                  them):</p>
+
+                  <ul>
+                    <li>
+                      <p>FTL date/time/date-time values may came back as
+                      <code class="inline-code">freemarker.template.SimpleDate</code>-s, now
+                      they come back as <code class="inline-code">java.util.Date</code>-s
+                      instead.</p>
+                    </li>
+
+                    <li>
+                      <p>FTL sequence values may came back as
+                      <code class="inline-code">SimpleSequence</code>-s, now they come back
+                      as <code class="inline-code">java.util.List</code>-s as expected. This
+                      stands assuming that the
+                      <code class="inline-code">object_wrapper</code> configuration setting
+                      is a subclass of <code class="inline-code">BeansWrapper</code> (such
+                      as <code class="inline-code">DefaultObjectWrapper</code>), but that&#39;s
+                      practically always the case in applications that use
+                      FreeMarker&#39;s JSP extension (otherwise it can still work,
+                      but it depends on the quality and capabilities of the
+                      <code class="inline-code">ObjectWrapper</code> implementation).</p>
+                    </li>
+
+                    <li>
+                      <p>FTL hash values may came back as
+                      <code class="inline-code">SimpleHash</code>-es, now they come back as
+                      <code class="inline-code">java.util.Map</code>-s as expected (again,
+                      assuming that the object wrapper is a subclass of
+                      <code class="inline-code">BeansWrapper</code>).</p>
+                    </li>
+
+                    <li>
+                      <p>FTL collection values may came back as
+                      <code class="inline-code">SimpleCollection</code>-s, now they come
+                      back as <code class="inline-code">java.util.Collection</code>-s as
+                      expected (again, assuming that the object wrapper is a
+                      subclass of <code class="inline-code">BeansWrapper</code>).</p>
+                    </li>
+                  </ul>
+                </li>
+
+                <li>
+                  <p>Bug fixed: Now <code class="inline-code">*.tld</code> files are
+                  searched in <code class="inline-code">WEB-INF/</code> and in all its
+                  subdirectories recursively. Earlier they were only searched
+                  directly under <code class="inline-code">WEB-INF/</code> and
+                  <code class="inline-code">WEB-INF/lib/</code>.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: Leading and trailing whitespace in TLD-s
+                  inside the <code class="inline-code">name</code> and
+                  <code class="inline-code">tag-class</code> elements is now removed.</p>
+                </li>
+
+                <li>
+                  <p>Unwanted behavior fixed: In case multiple TLD-s map to
+                  the same tag library URI, now
+                  <code class="inline-code">WEB-INF/**/*.tld</code>-s has priority over
+                  <code class="inline-code">META-INF/**/*.tld</code>-s coming from jar-s or
+                  classpath directories. Earlier, it was the other way around,
+                  except that <code class="inline-code">META-INF/lib/*.tld</code>-s could
+                  still take precedence randomly. While the JSP specification
+                  (2.2) explicitly states that the order is not defined and
+                  shouldn&#39;t be relied upon, it&#39;s just logical that if someone
+                  puts a TLD directly under <code class="inline-code">WEB-INF</code>, he
+                  meant that to be used in that particular web application,
+                  rather than the TLD-s coming from the dependency jars which
+                  are often shared by multiple web applications.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: Defaults set in an overridden
+                  <code class="inline-code">FreemarkerServlet.createConfiguration</code>
+                  won&#39;t be accidentally overwritten by
+                  <code class="inline-code">FreemarkerServlet</code>&#39;s factory defaults
+                  anymore. This was a problem with theses settings only:
+                  <code class="inline-code">template_exception_handler</code>,
+                  <code class="inline-code">log_template_exceptions</code>,
+                  <code class="inline-code">object_wrapper</code>,
+                  <code class="inline-code">template_loader</code>.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: If you had multiple
+                  <code class="inline-code">FreemarkerServlet</code>-s with different
+                  configuration settings in the same servlet context, that
+                  could lead to malfunction. (Normally, you only have one,
+                  just like there&#39;s only one servlet that processes
+                  <code class="inline-code">*.jsp</code>.)</p>
+                </li>
+
+                <li>
+                  <p>Removed all the <code class="inline-code">xsd</code> files
+                  (<code class="inline-code">web-app</code> and <code class="inline-code">taglib</code>
+                  schemas) from the FreeMarker artifact and from the XML
+                  entity resolver, as they were unused during XML
+                  parsing.</p>
+                </li>
+
+                <li>
+                  <p>Generally improved implementation quality
+                  (maintainability, error messages, performance bug fixes,
+                  test coverage) and better API documentation.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Logging facility improvements:</p>
+
+              <ul>
+                <li>
+                  <p>Just like earlier, when auto-selecting the logger
+                  library (the default behavior), FreeMarker choses Log4j if
+                  it&#39;s available. But now, if that turns out to be
+                  <code class="inline-code">log4j-over-slf4j</code>, FreeMarker will use
+                  SLF4J directly instead. (This fixes the issue where the
+                  logged location points to FreeMarker&#39;s log adapter class
+                  instead of the real call place.)</p>
+                </li>
+
+                <li>
+                  <p>FreeMarker now recognizes the
+                  <code class="inline-code">org.freemarker.loggerLibrary</code> system
+                  property, which specifies which logger to use, like
+                  <code class="inline-code">java <em class="code-color">...</em>
+                  -Dorg.freemarker.loggerLibrary=SLF4J</code>. This option
+                  deprecates
+                  <code class="inline-code">Logger.selectLoggerLibrary(int)</code> as that
+                  was inherently unreliable (because you usually can&#39;t control
+                  class initialization order very well). The system property
+                  has precedence over
+                  <code class="inline-code">Logger.selectLoggerLibrary</code>.</p>
+                </li>
+
+                <li>
+                  <p>Generally improved implementation quality (more info
+                  printed when something fails, etc.).</p>
+                </li>
+
+                <li>
+                  <p>New configuration setting:
+                  <code class="inline-code">log_template_exceptions</code>
+                  (<code class="inline-code">Configuration.setLogTemplateExceptions(boolean)</code>).
+                  This specifies if <code class="inline-code">TemplateException</code>-s
+                  thrown by template processing are logged by FreeMarker or
+                  not. The default is <code class="inline-code">true</code> for backward
+                  compatibility, but that results in logging the exception
+                  twice in properly written applications, because there the
+                  <code class="inline-code">TemplateException</code> thrown by the public
+                  FreeMarker API is also logged by the caller (even if only as
+                  the cause exception of a higher level exception). Hence, in
+                  modern applications it should be set to
+                  <code class="inline-code">false</code>. (Note that this setting has no
+                  effect on the logging of exceptions caught by
+                  <code class="inline-code">#attempt</code>/<code class="inline-code">#recover</code>;
+                  those are always logged.)</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Environment</code> and custom directive
+              related improvements:</p>
+
+              <ul>
+                <li>
+                  <p>Added
+                  <code class="inline-code">Environment.getCurrentDirectiveCallPlace()</code>,
+                  which returns a <code class="inline-code">DirectiveCallPlace</code> object
+                  when called from a custom directive (i.e., from
+                  <code class="inline-code">TemplateDirectiveModel.execute()</code>). The
+                  <code class="inline-code">DirectiveCallPlace</code> objects lets you
+                  associate an arbitrary object to the directive invocation
+                  inside the template, which can be used for call-place-bound
+                  caching (like the minification of non-dynamic nested
+                  content). See <code class="inline-code">DirectiveCallPlace</code> in the
+                  Java API documentation for more.</p>
+                </li>
+
+                <li>
+                  <p>Added
+                  <code class="inline-code">Environment.getMainTemplate()</code>. Deprecated
+                  the ambiguous (and often broken: [<a href="https://sourceforge.net/p/freemarker/bugs/145/">145</a>])
+                  <code class="inline-code">Environment.getTemplate()</code>.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Template loading:</p>
+
+              <ul>
+                <li>
+                  <p>Added new <code class="inline-code">Configuration</code> setting,
+                  <code class="inline-code">template_lookup_strategy</code>
+                  (<code class="inline-code">Configuration.setTemplateLookupStrategy(TemplateLookupStrategy)</code>).
+                  This allows customizing what
+                  <code class="inline-code">TemplateLoader</code>-level names will be tried
+                  when a template is requested. With this you can, for
+                  example, define a custom localized lookup sequence instead
+                  of the default (which looks like:
+                  <code class="inline-code">foo_de_LU_MAC.ftl, foo_de_LU.ftl,
+                  foo_de.ftl,</code><code class="inline-code"> foo.ftl</code>).</p>
+                </li>
+
+                <li>
+                  <p>Added new
+                  <code class="inline-code">Configuration.getTemplate(<em class="code-color">...</em>)</code>
+                  parameter, <code class="inline-code">Object customLookupCondition</code>.
+                  This parameter can be used by custom a
+                  <code class="inline-code">TemplateLookupStrategy</code> to deduce the
+                  actual template name(s) from the requested name (similarly
+                  to as the default lookup strategy does that based on the
+                  locale). For example, on a multi-domain Web site, one may
+                  want to define some templates that are specialized to a
+                  domain, and thus use the domain name as the custom lookup
+                  condition. Then, when <code class="inline-code">foo.ftl</code> is
+                  requested, a custom
+                  <code class="inline-code">TemplateLookupStrategy</code> could first look
+                  for <code class="inline-code">@somedomain.com/foo.ftl</code>, and then for
+                  <code class="inline-code">@default/foo.ftl</code>. See the JavaDoc of the
+                  relevant
+                  <code class="inline-code">Configuration.getTemplate(<em class="code-color">...</em>)</code>
+                  overload for more details; note there the requirements
+                  regarding the <code class="inline-code">hashCode</code> and
+                  <code class="inline-code">equals</code> of the
+                  <code class="inline-code">customLookupCondition</code>.</p>
+                </li>
+
+                <li>
+                  <p>Added new <code class="inline-code">Configuration</code> setting,
+                  <code class="inline-code">template_name_format</code>
+                  (<code class="inline-code">Configuration.setTemplateNameFormat(TemplateNameFormat)</code>).
+                  This allows specifying the naming rules used by FreeMarker.
+                  For now, custom implementations aren&#39;t allowed, and you can
+                  only chose between
+                  <code class="inline-code">TemplateNameFormat.DEFAULT_2_3_0</code> (the
+                  default) and <code class="inline-code">DEFAULT_2_4_0</code> (recommended,
+                  at least for new projects). <code class="inline-code">DEFAULT_2_4_0</code>
+                  has several advantages, but isn&#39;t fully backward compatible
+                  (though most applications won&#39;t be affected). For typical
+                  mistakes like using backslash instead of slash, or backing
+                  out of the root, it gives
+                  <code class="inline-code">MalformedTemplateNameFormatException</code>
+                  instead of <code class="inline-code">TempalteNotFoundException</code>. It
+                  allows scheme names to be terminated with
+                  <code class="inline-code">:</code> alone, instead of a
+                  <code class="inline-code">://</code> (which is also supported), like in
+                  <code class="inline-code">classpath:foo/bar.ftl</code>. It fixes numerous
+                  legacy glitches (bugs), mostly related to the interpretation
+                  of <code class="inline-code">..</code> after special steps like
+                  <code class="inline-code">.</code> or <code class="inline-code">*</code>. See the full
+                  list of differences in the <a href="http://freemarker.org/docs/api/freemarker/cache/TemplateNameFormat.html#DEFAULT_2_4_0">Java
+                  API documentation of
+                  <code>TemplateNameFormat.DEFAULT_2_4_0</code></a>.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">ClassTemplateLoader</code> now can be
+                  created by specifying a <code class="inline-code">ClassLoader</code>
+                  directly, rather than by specifying a base
+                  <code class="inline-code">Class</code>. That is, now there&#39;s
+                  <code class="inline-code">ClassTemplateLoader(ClassLoader, String)</code>
+                  constructor, and also a
+                  <code class="inline-code">Configuration.setClassLoaderForTemplateLoading(ClassLoader,
+                  String)</code> method.</p>
+                </li>
+
+                <li>
+                  <p>Added new exception,
+                  <code class="inline-code">TemplateNotFoundException</code>, which is now
+                  used instead of <code class="inline-code">TemplateNotFoundException</code>
+                  when getting a template. As it extends
+                  <code class="inline-code">TemplateNotFoundException</code>, this change is
+                  backward compatible. The main goal was to counter the common
+                  misunderstanding that template paths are real file paths.
+                  However, the new exception also has the benefit that it can
+                  give additional FreeMarker-specific information about the
+                  error, like right now it has
+                  <code class="inline-code">getTemplateName()</code> and
+                  <code class="inline-code">getCustomLookupCondition()</code>
+                  methods.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">Template</code>-s now have a
+                  <code class="inline-code">getSourceName()</code> method, in additionally
+                  to <code class="inline-code">getName()</code>. These two return the same
+                  as far as no localized lookup or acquisition
+                  (<code class="inline-code">*</code> in the name) or other lookup strategy
+                  was actively involved. But when it was,
+                  <code class="inline-code">getSourceName()</code> gives the name with which
+                  the template was actually loaded from the
+                  <code class="inline-code">TemplateLoader</code>, while
+                  <code class="inline-code">getName()</code> returns (and had always
+                  returned) the name with which the template was requested (in
+                  canonicalized form). <code class="inline-code">getName()</code> is used
+                  for everything (like for relative inclusion resolution),
+                  except for location information in error messages, which now
+                  uses <code class="inline-code">getSourceName()</code>. Also,
+                  <code class="inline-code">TemplateException</code> now has a
+                  <code class="inline-code">getSourceName()</code> method.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">Configuration.getTemplate(<em class="code-color">...</em>)</code>
+                  overloads now accept <code class="inline-code">null</code> for the
+                  <code class="inline-code">locale</code> and <code class="inline-code">encoding</code>
+                  parameters, in which case they use the same defaults as the
+                  overloads where the parameter is omitted.</p>
+                </li>
+
+                <li>
+                  <p>Debugger SPI implementators, attention: The
+                  <code class="inline-code">DebugBreak</code> instruction will now send the
+                  <code class="inline-code">sourceName</code> of the template to the
+                  <code class="inline-code">suspendEnvironmentSpi</code> callback, rather
+                  than its <code class="inline-code">name</code>. You should also use the
+                  <code class="inline-code">sourceName</code> in
+                  <code class="inline-code">registerTemplateSpi</code> and such, not the
+                  <code class="inline-code">name</code>.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Configuration:</p>
+
+              <ul>
+                <li>
+                  <p>Added
+                  <code class="inline-code">Configuration.unset<em class="code-color">Xxx</em></code>
+                  and
+                  <code class="inline-code">is<em class="code-color">Xxx</em>ExplicitlySet</code>
+                  methods for several settings. Unsetting a setting makes it
+                  behave as if
+                  <code class="inline-code">set<em class="code-color">Xxx</em></code> was
+                  never called, thus the setting will use the default value
+                  that fits the current
+                  <code class="inline-code">incompatible_improvements</code> value and will
+                  be adjusted as <code class="inline-code">incompatible_improvements</code>
+                  is changed later.</p>
+                </li>
+
+                <li>
+                  <p>When configuring FreeMarker from
+                  <code class="inline-code">java.util.Properties</code> (or with
+                  <code class="inline-code">String</code>-<code class="inline-code">String</code>
+                  name-value pairs in general):</p>
+
+                  <ul>
+                    <li>
+                      <p>The <code class="inline-code">default</code> setting value is
+                      now recognized by
+                      <code class="inline-code">template_exception_handler</code>,
+                      <code class="inline-code">template_storage</code>,
+                      <code class="inline-code">template_loader</code> (and by the new
+                      <code class="inline-code">template_lookup_strategy</code> and
+                      <code class="inline-code">template_name_format</code>) settings, and
+                      it causes
+                      <code class="inline-code">Configuration.unset<em class="code-color">Xxx</em>()</code>
+                      to be called.</p>
+                    </li>
+
+                    <li>
+                      <p>Bug fixed: When setting
+                      <code class="inline-code">object_wrapper</code> to
+                      <code class="inline-code">default</code> (as opposed to not specifying
+                      it), it has ignored the
+                      <code class="inline-code">incompatible_improvements</code> and has
+                      always used
+                      <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code>. This
+                      fix only matters when
+                      <code class="inline-code">incompatible_improvements</code> is exactly
+                      2.3.21, as that&#39;s when the default object wrapper was
+                      changed from
+                      <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code> to the
+                      result of <code class="inline-code">new
+                      DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_21).build()</code>,
+                      which is a bit different singleton, as it has read-only
+                      configuration settings and bug fixed overloaded method
+                      selection rules. To use
+                      <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code>
+                      regardless of the value of the
+                      <code class="inline-code">incompatible_improvements</code> setting,
+                      use the new <code class="inline-code">default_2_3_0</code>
+                      value.</p>
+                    </li>
+                  </ul>
+                </li>
+
+                <li>
+                  <p>Bug fixed: Changing the value of the
+                  <code class="inline-code">localized_lookup</code> setting now empties the
+                  template cache, so that old lookup results won&#39;t be reused.
+                  (This of course only matters if you change this setting
+                  under an already running service, which is very
+                  unlikely.)</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Miscellaneous:</p>
+
+              <ul>
+                <li>
+                  <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/145/">145</a>],
+                  active only with
+                  <code class="inline-code">incompatible_improvements</code> set to 2.3.22
+                  (or higher): <code class="inline-code">#include</code> and
+                  <code class="inline-code">#nested</code> doesn&#39;t change the parent
+                  <code class="inline-code">Template</code> (see
+                  <code class="inline-code">Configurable.getParent()</code>) of the
+                  <code class="inline-code">Environment</code> anymore to the
+                  <code class="inline-code">Template</code> that&#39;s included or where
+                  <code class="inline-code">#nested</code> "returns" to. Thus,
+                  the parent of <code class="inline-code">Environment</code> will be now
+                  always the main <code class="inline-code">Template</code>. (The main
+                  <code class="inline-code">Template</code> is the
+                  <code class="inline-code">Template</code> whose <code class="inline-code">process</code>
+                  or <code class="inline-code">createProcessingEnvironment</code> method was
+                  called to initiate the output generation.) Note that this
+                  only matters if you have set settings directly on
+                  <code class="inline-code">Template</code> objects (not to be confused with
+                  setting settings in templates via
+                  <code class="inline-code">#setting</code>, which just modifies the
+                  <code class="inline-code">Environment</code>, and so isn&#39;t affected by
+                  this fix), and almost nobody does that. Also note that macro
+                  calls have never changed the <code class="inline-code">Environment</code>
+                  parent to the <code class="inline-code">Template</code> that contains the
+                  macro definition, so there&#39;s no change there now.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/419/">419</a>]:
+                  FreeMarker doesn&#39;t fail anymore when it has no permission to
+                  read Java system properties, like when used in unsigned
+                  applets. It just logs some warnings.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">HTML_DEBUG</code> and
+                  <code class="inline-code">DEBUG</code>
+                  <code class="inline-code">TemplateExceptionHandler</code> output now
+                  contains a warning like "HTML_DEBUG mode; use RETHROW
+                  in production!", due to frequent misuse.</p>
+                </li>
+
+                <li>
+                  <p>Some fixes and improvements in template canonical form
+                  output, and as a consequence of that, in FTL stack trace
+                  instruction displaying.</p>
+                </li>
+
+                <li>
+                  <p>Marked some historically public but otherwise internal
+                  API-s as deprecated, so that the disclaimer is more apparent
+                  in IDE-s.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_170">Notes</h2>
+
+
+          <p><a name="topic.defaultObjectWrapperSwitchToAdapters"></a>The
+          consequences and reasons of introducing adapter approach for
+          container types in <code class="inline-code">DefaultObjectWrapper</code> when its
+          incompatibleImprovements is set to 2.3.22:</p>
+
+          <ul>
+            <li>
+              <p>With the new approach (the adapter approach), the key
+              order of <code class="inline-code">Map</code>-s is never lost. The copying
+              approach could only keep that for <code class="inline-code">HashMap</code>
+              subclasses (such as <code class="inline-code">LinkedHashMap</code>) and
+              <code class="inline-code">SortedMap</code>-s (such as
+              <code class="inline-code">TreeMap</code>), but not for more exotic
+              <code class="inline-code">Map</code>-s, like Guava&#39;s
+              <code class="inline-code">ImmutableMap</code>. Also, any other behavioral
+              peculiarities of the original <code class="inline-code">Map</code> (e.g., case
+              insensitive key lookup) is kept now.</p>
+            </li>
+
+            <li>
+              <p>The exact type and identity of the
+              <code class="inline-code">Map</code>/<code class="inline-code">List</code> is kept when the
+              wrapped value is passed back to a Java method from the template.
+              With the legacy approach the Java methods have received a
+              <code class="inline-code">Map</code> or <code class="inline-code">List</code> of a special
+              FreeMarker specific type (that acted as an adapter for the
+              <code class="inline-code">TemplateModel</code>).</p>
+            </li>
+
+            <li>
+              <p>Performance characteristics change, mostly for the better,
+              but it depends on the application. If the template reads the
+              <em>same(!)</em> entry <em>from the data
+              model</em> roughly once or twice (or not at all), which is
+              typical, them the adapter approach gives better results,
+              otherwise the legacy copying approach is faster (as it can reuse
+              the wrapped entry from the previous read), though this slowdown
+              certainly not a concern for most applications. The performance
+              of the new adapter approach is more predictable, because it has
+              no initial "spike" to set up the container copy
+              (especially painful for huge collections), instead the
+              performance is linearly proportional to the number of data model
+              reads (and not to the number of collection entries).</p>
+            </li>
+
+            <li>
+              <p>If the
+              <code class="inline-code">Map</code>/<code class="inline-code">List</code>/array is changed
+              after it was wrapped, the change will now become visible in the
+              data-model. With the copying approach, the wrapped value was a
+              shallow-snapshot of the original
+              <code class="inline-code">Map</code>/<code class="inline-code">List</code>/array. While it&#39;s
+              unlikely that someone has deliberately utilized this, it&#39;s a
+              risk factor when switching to adapters.</p>
+            </li>
+
+            <li>
+              <p>It&#39;s theoretically possible that some code (mostly
+              <code class="inline-code">TemplateDirectiveModel</code> implementations)
+              mistakenly assumed that wrapped <code class="inline-code">Map</code>-s are
+              <code class="inline-code">SimpleHash</code>-es, and wrapped
+              <code class="inline-code">List</code>-s are
+              <code class="inline-code">SimpleSequence</code>-s, etc., instead of them just
+              being <code class="inline-code">TemplateHashModel</code>-s and
+              <code class="inline-code">TemplateSequenceModel</code>-s. Such code was always
+              wrong, but now it will indeed break, so it&#39;s a risk
+              factor.</p>
+            </li>
+
+            <li>
+              <p>As now the exact type of the wrapped original object is
+              used for overloaded method selection, the choice can be
+              different (and similar to what it would be with pure
+              <code class="inline-code">BeansWrapper</code>). It&#39;s difficult to find cases
+              where this matters. A change is most probable around arrays, as
+              with the copying approach they were unwrapped to
+              <code class="inline-code">List</code>-s, not to the original array. As the
+              overloaded method mechanism can convert between arrays and lists
+              (in both directions), it&#39;s usually not a problem. But, it
+              doesn&#39;t do conversion between different array types when the
+              overloaded method has various types on the parameter position of
+              the array, so that&#39;s a risk factor.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">SimpleHash</code> and
+              <code class="inline-code">SimpleSequence</code> haven&#39;t become deprecated.
+              They are still used for hashes and sequences created in FTL, and
+              are recommended for values that are built specifically to be
+              used from templates, rather than wrapping an already existing
+              <code class="inline-code">Map</code> or <code class="inline-code">List</code> or
+              array.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">List</code>-s and <code class="inline-code">Map</code>-s
+              that are exposed to templates in multiple threads are now under
+              greater stress regarding their correct operation under
+              multi-threaded read-only access. This is because the adapters
+              won&#39;t copy their contents into well known
+              <code class="inline-code">List</code> and <code class="inline-code">Map</code>
+              implementations (<code class="inline-code">HashMap</code>,
+              <code class="inline-code">ArrayList</code>, etc.) before accessing them from
+              multiple threads. So this is mostly a concern with custom
+              <code class="inline-code">List</code> and <code class="inline-code">Map</code>
+              implementations, which aren&#39;t as mature as the standard Java
+              classes. Note that this was always like so with pure
+              <code class="inline-code">BeansWrapper</code>, which is used by a lot of
+              projects/frameworks (like by Struts) for a long time, so it&#39;s
+              not an uncharted territory.</p>
+            </li>
+
+            <li>
+              <p>When the wrapped <code class="inline-code">List</code> is a
+              <code class="inline-code">AbstractSequentialList</code> (like a
+              <code class="inline-code">LinkedList</code>), the resulting adapter will
+              implement <code class="inline-code">TemplateCollectionModel</code> for more
+              efficient enumeration (<code class="inline-code">#list</code>-ing), in
+              additionally to <code class="inline-code">TemplateSequenceModel</code> of
+              course. <code class="inline-code">TemplateCollectionModel</code> allows FTL to
+              traverse the list without accessing elements by index. With the
+              legacy copying approach
+              <code class="inline-code">TemplateCollectionModel</code> wasn&#39;t implemented as
+              it wasn&#39;t needed for efficient enumeration there.</p>
+            </li>
+
+            <li>
+              <p>Iterators (when you put them directly into the data-model)
+              are wrapped into <code class="inline-code">DefaultIteratorAdapter</code>
+              instead of <code class="inline-code">SimpleCollection</code>. This has two
+              consequences:</p>
+
+              <ul>
+                <li>
+                  <p>The wrapped <code class="inline-code">Iterator</code> is now
+                  unwrapped properly to the original Java object when it&#39;s
+                  passed to Java method from the template.</p>
+                </li>
+
+                <li>
+                  <p>Wrapped <code class="inline-code">Iterator</code>-s (not to be
+                  confused with <code class="inline-code">Iterable</code>) aren&#39;t
+                  thread-safe anymore, to spare some synchronizations, after
+                  all, exposing the same <code class="inline-code">Iterator</code> to
+                  multiple parallel template executions doesn&#39;t make much
+                  sense. This shouldn&#39;t be a migration concern, as even
+                  earlier, only one of those template executions could succeed
+                  (the "content" of <code class="inline-code">Iterator</code>-s
+                  wasn&#39;t copied, so the one who first accessed it become the
+                  exclusive owner). The change is just that earlier it was
+                  guaranteed that the other threads will fail (that was the
+                  thread-safe about it), while now there are no such
+                  guarantees.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_23.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_21.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[33/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel_directive.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel_directive.html b/builds/2.3.26-nightly/pgui_datamodel_directive.html
new file mode 100644
index 0000000..80af372
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel_directive.html
@@ -0,0 +1,411 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Directives - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Directives">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel_directive.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel_directive.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel_directive.html"><span itemprop="name">Directives</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model","Directives"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel_method.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_node.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_datamodel_directive" itemprop="headline">Directives</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_35" data-menu-target="autoid_35">Example 1</a></li><li><a class="page-menu-link" href="#autoid_36" data-menu-target="autoid_36">Example 2</a></li><li><a class="page-menu-link" href="#autoid_37" data-menu-target="autoid_37">Notices</a></li></ul> </div><p>Java programmers can implement user-defined directives in Java
+        using the <code class="inline-code">TemplateDirectiveModel</code> interface. See in
+        the API documentation.</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p><code class="inline-code">TemplateDirectiveModel</code> was introduced in
+          FreeMarker 2.3.11, replacing the soon to be depreciated
+          <code class="inline-code">TemplateTransformModel</code>.</p>
+          </div>
+
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_35">Example 1</h2>
+
+
+          <p>We will implement a directive which converts all output
+          between its start-tag and end-tag to upper case. Like, this
+          template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">foo
+<strong>&lt;@upper&gt;</strong>
+  bar
+  &lt;#-- All kind of FTL is allowed here --&gt;
+  &lt;#list [&quot;red&quot;, &quot;green&quot;, &quot;blue&quot;] as color&gt;
+    ${color}
+  &lt;/#list&gt;
+  baaz
+<strong>&lt;/@upper&gt;</strong>
+wombat</pre></div>
+
+          <p>will output this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">foo
+  BAR
+    RED
+    GREEN
+    BLUE
+  BAAZ
+wombat</pre></div>
+
+          <p>This is the source code of the directive class:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Map;
+
+import freemarker.core.Environment;
+import freemarker.template.TemplateDirectiveBody;
+import freemarker.template.TemplateDirectiveModel;
+import freemarker.template.TemplateException;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+
+/**
+ *  FreeMarker user-defined directive that progressively transforms
+ *  the output of its nested content to upper-case.
+ *
+ *
+ *  &lt;p&gt;&lt;b&gt;Directive info&lt;/b&gt;&lt;/p&gt;
+ *
+ *  &lt;p&gt;Directive parameters: None
+ *  &lt;p&gt;Loop variables: None
+ *  &lt;p&gt;Directive nested content: Yes
+ */
+public class UpperDirective implements TemplateDirectiveModel {
+
+    public void execute(Environment env,
+            Map params, TemplateModel[] loopVars,
+            TemplateDirectiveBody body)
+            throws TemplateException, IOException {
+        // Check if no parameters were given:
+        if (!params.isEmpty()) {
+            throw new TemplateModelException(
+                    &quot;This directive doesn&#39;t allow parameters.&quot;);
+        }
+        if (loopVars.length != 0) {
+                throw new TemplateModelException(
+                    &quot;This directive doesn&#39;t allow loop variables.&quot;);
+        }
+
+        // If there is non-empty nested content:
+        if (body != null) {
+            // Executes the nested body. Same as &lt;#nested&gt; in FTL, except
+            // that we use our own writer instead of the current output writer.
+            body.render(new UpperCaseFilterWriter(env.getOut()));
+        } else {
+            throw new RuntimeException(&quot;missing body&quot;);
+        }
+    }
+
+    /**
+     * A {@link Writer} that transforms the character stream to upper case
+     * and forwards it to another {@link Writer}.
+     */
+    private static class UpperCaseFilterWriter extends Writer {
+
+        private final Writer out;
+
+        UpperCaseFilterWriter (Writer out) {
+            this.out = out;
+        }
+
+        public void write(char[] cbuf, int off, int len)
+                throws IOException {
+            char[] transformedCbuf = new char[len];
+            for (int i = 0; i &lt; len; i++) {
+                transformedCbuf[i] = Character.toUpperCase(cbuf[i + off]);
+            }
+            out.write(transformedCbuf);
+        }
+
+        public void flush() throws IOException {
+            out.flush();
+        }
+
+        public void close() throws IOException {
+            out.close();
+        }
+    }
+
+}</pre></div>
+
+          <p>Now we still need to create an instance of this class, and
+          make this directive available to the template with the name &quot;upper&quot;
+          (or with whatever name we want) somehow. A possible solution is to
+          put the directive in the data-model:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">root.put(&quot;upper&quot;, new com.example.UpperDirective());</pre></div>
+
+          <p>But typically it is better practice to put commonly used
+          directives into the <code class="inline-code">Configuration</code> as <a href="pgui_config_sharedvariables.html">shared
+          variables</a>.</p>
+
+          <p>It is also possible to put the directive into an FTL library
+          (collection of macros and like in a template, that you
+          <code class="inline-code">include</code> or <code class="inline-code">import</code> in other
+          templates) using the <a href="ref_builtins_expert.html#ref_builtin_new"><code>new</code>
+          built-in</a>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Maybe you have directives that you have implemented in FTL --&gt;
+&lt;#macro something&gt;
+  ...
+&lt;/#macro&gt;
+
+&lt;#-- Now you can&#39;t use &lt;#macro upper&gt;, but instead you can: --&gt;
+&lt;#assign upper = &quot;com.example.UpperDirective&quot;?new()&gt;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_36">Example 2</h2>
+
+
+          <p>We will create a directive that executes its nested content
+          again and again for the specified number of times (similarly to
+          <code class="inline-code">list</code> directive), optionally separating the the
+          output of the repetations with a <code class="inline-code">&lt;hr&gt;</code>-s.
+          Let&#39;s call this directive &quot;repeat&quot;. Example template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = 1&gt;
+
+<strong>&lt;@repeat count=4&gt;</strong>
+  Test ${x}
+  &lt;#assign x++&gt;
+<strong>&lt;/@repeat&gt;</strong>
+
+<strong>&lt;@repeat count=3 hr=true&gt;</strong>
+  Test
+<strong>&lt;/@repeat&gt;</strong>
+
+<strong>&lt;@repeat count=3; cnt&gt;</strong>
+  ${cnt}. Test
+<strong>&lt;/@repeat&gt;</strong></pre></div>
+
+          <p>Output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  Test 1
+  Test 2
+  Test 3
+  Test 4
+
+  Test
+&lt;hr&gt;  Test
+&lt;hr&gt;  Test
+
+  1. Test
+  2. Test
+  3. Test
+ </pre></div>
+
+          <p>The class:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example;
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Iterator;
+import java.util.Map;
+
+import freemarker.core.Environment;
+import freemarker.template.SimpleNumber;
+import freemarker.template.TemplateBooleanModel;
+import freemarker.template.TemplateDirectiveBody;
+import freemarker.template.TemplateDirectiveModel;
+import freemarker.template.TemplateException;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateNumberModel;
+
+/**
+ * FreeMarker user-defined directive for repeating a section of a template,
+ * optionally with separating the output of the repetations with
+ * &lt;tt&gt;&amp;lt;hr&gt;&lt;/tt&gt;-s.
+ *
+ *
+ * &lt;p&gt;&lt;b&gt;Directive info&lt;/b&gt;&lt;/p&gt;
+ *
+ * &lt;p&gt;Parameters:
+ * &lt;ul&gt;
+ *   &lt;li&gt;&lt;code&gt;count&lt;/code&gt;: The number of repetations. Required!
+ *       Must be a non-negative number. If it is not a whole number then it will
+ *       be rounded &lt;em&gt;down&lt;/em&gt;.
+ *   &lt;li&gt;&lt;code&gt;hr&lt;/code&gt;: Tells if a HTML &quot;hr&quot; element could be printed between
+ *       repetations. Boolean. Optional, defaults to &lt;code&gt;false&lt;/code&gt;.
+ * &lt;/ul&gt;
+ *
+ * &lt;p&gt;Loop variables: One, optional. It gives the number of the current
+ *    repetation, starting from 1.
+ *
+ * &lt;p&gt;Nested content: Yes
+ */
+public class RepeatDirective implements TemplateDirectiveModel {
+
+    private static final String PARAM_NAME_COUNT = &quot;count&quot;;
+    private static final String PARAM_NAME_HR = &quot;hr&quot;;
+
+    public void execute(Environment env,
+            Map params, TemplateModel[] loopVars,
+            TemplateDirectiveBody body)
+            throws TemplateException, IOException {
+
+        // ---------------------------------------------------------------------
+        // Processing the parameters:
+
+        int countParam = 0;
+        boolean countParamSet = false;
+        boolean hrParam = false;
+
+        Iterator paramIter = params.entrySet().iterator();
+        while (paramIter.hasNext()) {
+            Map.Entry ent = (Map.Entry) paramIter.next();
+
+            String paramName = (String) ent.getKey();
+            TemplateModel paramValue = (TemplateModel) ent.getValue();
+
+            if (paramName.equals(PARAM_NAME_COUNT)) {
+                if (!(paramValue instanceof TemplateNumberModel)) {
+                    throw new TemplateModelException(
+                            &quot;The \&quot;&quot; + PARAM_NAME_HR + &quot;\&quot; parameter &quot;
+                            + &quot;must be a number.&quot;);
+                }
+                countParam = ((TemplateNumberModel) paramValue)
+                        .getAsNumber().intValue();
+                countParamSet = true;
+                if (countParam &lt; 0) {
+                    throw new TemplateModelException(
+                            &quot;The \&quot;&quot; + PARAM_NAME_HR + &quot;\&quot; parameter &quot;
+                            + &quot;can&#39;t be negative.&quot;);
+                }
+            } else if (paramName.equals(PARAM_NAME_HR)) {
+                if (!(paramValue instanceof TemplateBooleanModel)) {
+                    throw new TemplateModelException(
+                            &quot;The \&quot;&quot; + PARAM_NAME_HR + &quot;\&quot; parameter &quot;
+                            + &quot;must be a boolean.&quot;);
+                }
+                hrParam = ((TemplateBooleanModel) paramValue)
+                        .getAsBoolean();
+            } else {
+                throw new TemplateModelException(
+                        &quot;Unsupported parameter: &quot; + paramName);
+            }
+        }
+        if (!countParamSet) {
+                throw new TemplateModelException(
+                        &quot;The required \&quot;&quot; + PARAM_NAME_COUNT + &quot;\&quot; paramter&quot;
+                        + &quot;is missing.&quot;);
+        }
+
+        if (loopVars.length &gt; 1) {
+                throw new TemplateModelException(
+                        &quot;At most one loop variable is allowed.&quot;);
+        }
+
+        // Yeah, it was long and boring...
+
+        // ---------------------------------------------------------------------
+        // Do the actual directive execution:
+
+        Writer out = env.getOut();
+        if (body != null) {
+            for (int i = 0; i &lt; countParam; i++) {
+                // Prints a &lt;hr&gt; between all repetations if the &quot;hr&quot; parameter
+                // was true:
+                if (hrParam &amp;&amp; i != 0) {
+                    out.write(&quot;&lt;hr&gt;&quot;);
+                }
+
+                // Set the loop variable, if there is one:
+                if (loopVars.length &gt; 0) {
+                    loopVars[0] = new SimpleNumber(i + 1);
+                }
+
+                // Executes the nested body (same as &lt;#nested&gt; in FTL). In this
+                // case we don&#39;t provide a special writer as the parameter:
+                body.render(env.getOut());
+            }
+        }
+    }
+
+}</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_37">Notices</h2>
+
+
+          <p>It&#39;s important that a
+          <code class="inline-code">TemplateDirectiveModel</code> object usually should not
+          be stateful. The typical mistake is the storing of the state of the
+          directive call execution in the fields of the object. Think of
+          nested calls of the same directive, or directive objects used as
+          shared variables accessed by multiple threads concurrently.</p>
+
+          <p>Unfortunately, <code class="inline-code">TemplateDirectiveModel</code>-s
+          don&#39;t support passing parameters by position (rather than by name).
+          This is fixed starting from FreeMarker 2.4.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel_method.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_node.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel_method.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel_method.html b/builds/2.3.26-nightly/pgui_datamodel_method.html
new file mode 100644
index 0000000..172aeed
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel_method.html
@@ -0,0 +1,90 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Methods - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Methods">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel_method.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel_method.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel_method.html"><span itemprop="name">Methods</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model","Methods"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel_parent.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_directive.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_datamodel_method" itemprop="headline">Methods</h1>
+</div></div><p>Method variables exposed to a template implement the
+        <code class="inline-code">TemplateMethodModel</code> interface. This contains one
+        method: <code class="inline-code">TemplateModel exec(java.util.List
+        arguments)</code>. When you call a method with a <a href="dgui_template_exp.html#dgui_template_exp_methodcall">method call expression</a>,
+        then the <code class="inline-code">exec</code> method will be called. The arguments
+        parameter will contain the values of the FTL method call arguments.
+        The return value of <code class="inline-code">exec</code> gives the value of the FTL
+        method call expression.</p><p>The <code class="inline-code">TemplateMethodModelEx</code> interface extends
+        <code class="inline-code">TemplateMethodModel</code>. It does not add any new
+        methods. The fact that the object implements this
+        <em>marker</em> interface indicates to the FTL engine that
+        the arguments should be put to the <code class="inline-code">java.util.List</code>
+        directly as <code class="inline-code">TemplateModel</code>-s. Otherwise they will be
+        put to the list as <code class="inline-code">String</code>-s.</p><p>For obvious reasons there is no default implementation for these
+        interfaces.</p><p>Example: This is a method, which returns the index within the
+        second string of the first occurrence of the first string, or -1 if
+        the second string doesn&#39;t contains the first.</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">public class IndexOfMethod implements TemplateMethodModel {
+
+    public TemplateModel exec(List args) throws TemplateModelException {
+        if (args.size() != 2) {
+            throw new TemplateModelException(&quot;Wrong arguments&quot;);
+        }
+        return new SimpleNumber(
+            ((String) args.get(1)).indexOf((String) args.get(0)));
+    }
+}</pre></div><p>If you put an instance of this, say, into the root:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">root.put(&quot;indexOf&quot;, new IndexOfMethod());</pre></div><p>then you can call it in the template:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = &quot;something&quot;&gt;
+${indexOf(&quot;met&quot;, x)}
+${indexOf(&quot;foo&quot;, x)}</pre></div><p>and then the output will be:</p>
+
+<div class="code-wrapper"><pre class="code-block code-output">2
+-1</pre></div><p>If you need to access the runtime FTL environment (read/write
+        variables, get the current locale, etc.), you can get it with
+        <code class="inline-code">Environment.getCurrentEnvironment()</code>.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel_parent.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_directive.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel_node.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel_node.html b/builds/2.3.26-nightly/pgui_datamodel_node.html
new file mode 100644
index 0000000..e00919a
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel_node.html
@@ -0,0 +1,123 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Node variables - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Node variables">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel_node.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel_node.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel_node.html"><span itemprop="name">Node variables</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model","Node variables"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel_directive.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_objectWrapper.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_datamodel_node" itemprop="headline">Node variables</h1>
+</div></div><p>A node variable embodies a node in a tree structure. Node
+        variables were introduced to help <a href="xgui.html">the handling of
+        XML documents in the data-model</a>, but they can be used for the
+        modeling of other tree structures as well. For more information about
+        nodes from the point of view of the template language <a href="dgui_datamodel_types.html#dgui_datamodel_node">read this earlier section</a>.</p><p>A node variable has the following properties, provided by the
+        methods of <code class="inline-code">TemplateNodeModel</code> interface:</p><ul>
+          <li>
+            <p>Basic properties:</p>
+
+            <ul>
+              <li>
+                <p><code class="inline-code">TemplateSequenceModel
+                getChildNodes()</code>: A node has sequence of children
+                (except if the node is a leaf node, in which case the method
+                return an empty sequence or null). The child nodes should be
+                node variables as well.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">TemplateNodeModel getParentNode()</code>: A
+                node has exactly 1 parent node, except if the node is root
+                node of the tree, in which case the method returns
+                <code class="inline-code">null</code>.</p>
+              </li>
+            </ul>
+          </li>
+
+          <li>
+            <p>Optional properties. If a property does not make sense in
+            the concrete use case, the corresponding method should return
+            <code class="inline-code">null</code>:</p>
+
+            <ul>
+              <li>
+                <p><code class="inline-code">String getNodeName()</code>: The node name
+                is the name of the macro, that handles the node when you use
+                <a href="ref_directive_visit.html#ref.directive.recurse"><code>recurse</code></a>
+                and <a href="ref_directive_visit.html#ref.directive.visit"><code>visit</code></a>
+                directives. Thus, if you want to use these directives with the
+                node, the node name is <em>required</em>.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">String getNodeType()</code>: In the case of
+                XML: <code class="inline-code">&quot;element&quot;</code>, <code class="inline-code">&quot;text&quot;</code>,
+                <code class="inline-code">&quot;comment&quot;</code>, ...etc. This information, if
+                available, is used by the <code class="inline-code">recurse</code> and
+                <code class="inline-code">visit</code> directives to find the default
+                handler macro for a node. Also it can be useful for other
+                application specific purposes.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">String getNamespaceURI()</code>: The node
+                namespace (has nothing to do with FTL namespaces used for
+                libraries) this node belongs to. For example, in the case of
+                XML, this is the URI of the XML namespace the element or
+                attribute belongs to. This information, if available, is used
+                by the <code class="inline-code">recurse</code> and <code class="inline-code">visit</code>
+                directives to find the FTL namespaces that store the handler
+                macros.</p>
+              </li>
+            </ul>
+          </li>
+        </ul><p>On the FTL side, the direct utilization of node properties is
+        done with <a href="ref_builtins_node.html">node built-ins</a>, and
+        with the <code class="inline-code">visit</code> and <code class="inline-code">recurse</code>
+        macros.</p><p>In most use cases, variables that implement
+        <code class="inline-code">TemplateNodeModel</code>, implement other interfaces as
+        well, since node variable properties just provide the basic
+        infrastructure for navigating between nodes. For a concrete example,
+        see <a href="xgui.html">how FreeMarker deals with XML</a>.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel_directive.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_objectWrapper.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel_objectWrapper.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel_objectWrapper.html b/builds/2.3.26-nightly/pgui_datamodel_objectWrapper.html
new file mode 100644
index 0000000..ead2dd9
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel_objectWrapper.html
@@ -0,0 +1,412 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Object wrappers - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Object wrappers">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel_objectWrapper.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel_objectWrapper.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel_objectWrapper.html"><span itemprop="name">Object wrappers</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model","Object wrappers"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel_node.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_datamodel_objectWrapper" itemprop="headline">Object wrappers</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#pgui_datamodel_defaultObjectWrapper" data-menu-target="pgui_datamodel_defaultObjectWrapper">The default object wrapper</a></li><li><a class="page-menu-link" href="#pgui_datamodel_customObjectWrappingExample" data-menu-target="pgui_datamodel_customObjectWrappingExample">Custom object wrapping example</a></li></ul> </div><p>The object wrapper is an object that implements the
+        <code class="inline-code">freemarker.template.ObjectWrapper</code> interface. It&#39;s
+        purpose is to implement a mapping between Java objects (like
+        <code class="inline-code">String</code>-s, <code class="inline-code">Map</code>-s,
+        <code class="inline-code">List</code>-s, instances of your application specific
+        classes, etc.) and FTL&#39;s type system. With other words, it specifies
+        how the templates will see the Java objects of the data-model
+        (including the return value of Java methods called from the template).
+        The object wrapper is plugged into the
+        <code class="inline-code">Configuration</code> as its
+        <code class="inline-code">object_wrapper</code> setting (or with
+        <code class="inline-code">Configuration.setObjectWrapper</code>).</p><p>FTL&#39;s type system is technically represented by the
+        <code class="inline-code">TemplateModel</code> sub-interfaces that were introduced
+        earlier (<code class="inline-code">TemplateScalarModel</code>,
+        <code class="inline-code">TemplateHashMode</code>,
+        <code class="inline-code">TemplateSequenceModel</code>, etc). To map a Java object
+        to FTL&#39;s type system, object wrapper&#39;s <code class="inline-code">TemplateModel
+        wrap(java.lang.Object obj)</code> method will be called.</p><p>Sometimes FreeMarker needs to reverse this mapping, in which
+        case the <code class="inline-code">ObjectWrapper</code>&#39;s <code class="inline-code">Object
+        unwrap(TemplateModel)</code> method is called (or some other
+        variation of that, but see the API documentation for such details).
+        This last operation is in
+        <code class="inline-code">ObjectWrapperAndUnwrapper</code>, the subinterface of
+        <code class="inline-code">ObjectWrapper</code>. Most real world object wrappers will
+        implement <code class="inline-code">ObjectWrapperAndUnwrapper</code>.</p><p>Here&#39;s how wrapping Java objects that contain other objects
+        (like a <code class="inline-code">Map</code>, a <code class="inline-code">List</code>, an array,
+        or an object with some JavaBean properties) usually work. Let&#39;s say,
+        an object wrapper wraps an <code class="inline-code">Object[]</code> array into some
+        implementation of the <code class="inline-code">TemplateSquenceModel</code>
+        interface. When FreeMarker needs an item from that FTL sequence, it
+        will call <code class="inline-code">TemplateSquenceModel.get(int index)</code>. The
+        return type of this method is <code class="inline-code">TemplateModel</code>, that
+        is, the <code class="inline-code">TemplateSquenceModel</code> implementation not
+        only have to get the <code class="inline-code">Object</code> from the given index of
+        the array, it&#39;s also responsible for wrapping that value before
+        returning it. To solve that, a typical
+        <code class="inline-code">TemplateSquenceModel</code> implementation will store the
+        <code class="inline-code">ObjectWrapper</code> that has cerated it, and then invoke
+        that <code class="inline-code">ObjectWrapper</code> to wrap the contained value. The
+        same logic stands for <code class="inline-code">TemplateHashModel</code> or for any
+        other <code class="inline-code">TemplateModel</code> that&#39;s a container for further
+        <code class="inline-code">TemplateModel</code>-s. Hence, usually, no mater how deep
+        the value hierarchy is, all values will be wrapped by the same single
+        <code class="inline-code">ObjectWrapper</code>. (To create
+        <code class="inline-code">TemplateModel</code> implementations that follow this
+        idiom, you can use the
+        <code class="inline-code">freemarker.template.WrappingTemplateModel</code> as base
+        class.)</p><p>The data-model itself (the root variable) is a
+        <code class="inline-code">TemplateHashModel</code>. The root object that you specify
+        to <code class="inline-code">Template.process</code> will be wrapped with the object
+        wrapper specified in the <code class="inline-code">object_wrapper</code>
+        configuration setting, which must yield a
+        <code class="inline-code">TemplateHashModel</code>. From then on, the wrapping of
+        the contained values follow the logic described earlier (i.e., the
+        container is responsible for wrapping its children).</p><p>Well behaving object wrappers bypass objects that already
+        implement <code class="inline-code">TemplateModel</code> as is. So if you put an
+        object into the data-model that already implements
+        <code class="inline-code">TemplateModel</code> (or you return as such object from a
+        Java method that&#39;s called from the template, etc.), then you can avoid
+        actual object wrapping. You do this usually when you are creating a
+        value specifically to be accessed from a template. Thus, you avoid
+        much of the object wrapping performance overhead, also you can control
+        exactly what will the template see (not depending on the mapping
+        strategy of the current object wrapper). A frequent application of
+        this trick is using a
+        <code class="inline-code">freemarker.template.SimpleHash</code> as the data-model
+        root (rather than a <code class="inline-code">Map</code>), by filling it with
+        <code class="inline-code">SimpleHash</code>&#39;s <code class="inline-code">put</code> method (that&#39;s
+        important, so it won&#39;t have to copy an existing <code class="inline-code">Map</code>
+        that you have already filled). This speeds up top-level data-model
+        variable access.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_datamodel_defaultObjectWrapper">The default object wrapper</h2>
+
+
+          
+
+          
+
+          <p>The default of the <code class="inline-code">object_wrapper</code>
+          <code class="inline-code">Configuration</code> setting is a
+          <code class="inline-code">freemarker.template.DefaultObjectWrapper</code>
+          singleton. Unless you have very special requirements, it&#39;s
+          recommended to use this object wrapper, or an instance of a
+          <code class="inline-code">DefaultObjectWrapper</code> subclass of yours.</p>
+
+          <p>It recognizes most basic Java types, like
+          <code class="inline-code">String</code>, <code class="inline-code">Number</code>,
+          <code class="inline-code">Boolean</code>, <code class="inline-code">Date</code>,
+          <code class="inline-code">List</code> (and in general all kind of
+          <code class="inline-code">java.util.Collection</code>-s), arrays,
+          <code class="inline-code">Map</code>, etc., and wraps them into the naturally
+          matching <code class="inline-code">TemplateModel</code> interfaces. It will also
+          wrap W3C DOM nodes with
+          <code class="inline-code">freemarker.ext.dom.NodeModel</code>, so you can
+          conveniently traverse XML as <a href="xgui.html">described in its
+          own chapter</a>). For Jython objects, it will delegate to
+          <code class="inline-code">freemarker.ext.jython.JythonWrapper</code>. For all
+          other objects, it will invoke <code class="inline-code">BeansWrapper.wrap</code>
+          (the super class&#39;s method), which will expose the JavaBean
+          properties of the objects as hash items (like
+          <code class="inline-code">myObj.foo</code> in FTL will call
+          <code class="inline-code">getFoo()</code> behind the scenes), and will also expose
+          the public methods (JavaBean actions) of the object (like
+          <code class="inline-code">myObj.bar(1, 2)</code> in FTL will call a method). (For
+          more information about BeansWrapper, <a href="pgui_misc_beanwrapper.html">see its own section</a>.)</p>
+
+          <p>Some further details that&#39;s worth mentioning about
+          <code class="inline-code">DefaultObjectWrapper</code>:</p>
+
+          <ul>
+            <li>
+              <p>You shouldn&#39;t use its constructor usually, instead create
+              it using a <code class="inline-code">DefaultObjectWrapperBuilder</code>. This
+              allows FreeMarker to use singletons.</p>
+            </li>
+
+            <li>
+              <p><a name="topic.defaultObjectWrapperIcI"></a><code class="inline-code">DefaultObjectWrapper</code> has an
+              <code class="inline-code">incompatibleImprovements</code> property, that&#39;s
+              highly recommended to set to 2.3.22 or higher (see the <a href="http://freemarker.org/docs/api/freemarker/template/DefaultObjectWrapper.html#DefaultObjectWrapper-freemarker.template.Version-">API
+              documentation</a> for the effects). How to set it:</p>
+
+              <ul>
+                <li>
+                  <p>If you have set the
+                  <code class="inline-code">incompatible_improvements</code> setting
+                  <em>of the <code class="inline-code">Configuration</code></em>
+                  to 2.3.22 or higher, and you didn&#39;t set the
+                  <code class="inline-code">object_wrapper</code> setting (so it had
+                  remained on its default value), then you have to do nothing,
+                  as it already uses a <code class="inline-code">DefaultObjectWrapper</code>
+                  singleton with the equivalent
+                  <code class="inline-code">incompatibleImprovements</code> property
+                  value.</p>
+                </li>
+
+                <li>
+                  <p><a name="topic.setDefaultObjectWrapperIcIIndividually"></a>Otherwise you have to set the
+                  <code class="inline-code">incompatibleImprovements</code> independently of
+                  the <code class="inline-code">Configuration</code>. Depending on how you
+                  create/set the <code class="inline-code">ObjectWrapper</code>, it can be
+                  done like this:</p>
+
+                  <ul>
+                    <li>
+                      <p>If you are using the builder API:</p>
+
+                      
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">... = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_25).build()</pre></div>
+                    </li>
+
+                    <li>
+                      <p>Or, if you are using the constructor:</p>
+
+                      
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">... = new DefaultObjectWrapper(Configuration.VERSION_2_3_25)</pre></div>
+                    </li>
+
+                    <li>
+                      <p>Or, if you are using the
+                      <code class="inline-code">object_wrapper</code> property
+                      (<code class="inline-code">*.properties</code> file or
+                      <code class="inline-code">java.util.Properties</code> object):</p>
+
+                      
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">object_wrapper=DefaultObjectWrapper(2.3.25)</pre></div>
+                    </li>
+
+                    <li>
+                      <p>Or, if you are configuring the
+                      <code class="inline-code">object_wrapper</code> through a
+                      <code class="inline-code">FreemarkerServlet</code> with an
+                      <code class="inline-code">init-param</code> in
+                      <code class="inline-code">web.xml</code>:</p>
+
+                      
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;init-param&gt;
+    &lt;param-name&gt;object_wrapper&lt;/param-name&gt;
+    &lt;param-value&gt;DefaultObjectWrapper(2.3.25)&lt;/param-value&gt;
+&lt;/init-param&gt;</pre></div>
+                    </li>
+                  </ul>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>In new or properly test-covered projects it&#39;s also
+              recommended to set the
+              <code class="inline-code">forceLegacyNonListCollections</code> property to
+              <code class="inline-code">false</code>. If you are using
+              <code class="inline-code">.properties</code> or
+              <code class="inline-code">FreemarkerServlet</code> init-params or such, that
+              will look like <code class="inline-code">DefaultObjectWrapper(2.3.22,
+              forceLegacyNonListCollections=false)</code>, while with the
+              Java API you call
+              <code class="inline-code">setForceLegacyNonListCollections(false)</code> on
+              the <code class="inline-code">DefaultObjectWrapperBuilder</code> object before
+              calling <code class="inline-code">build()</code>.</p>
+            </li>
+
+            <li>
+              <p>The most common way of customizing
+              <code class="inline-code">DefaultObjectWrapper</code> is overriding its
+              <code class="inline-code">handleUnknownType</code> method.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_datamodel_customObjectWrappingExample">Custom object wrapping example</h2>
+
+
+          
+
+          
+
+          
+
+          <p>Let&#39;s say you have an application-specific class like
+          this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example.myapp;
+
+public class Tupple&lt;E1, E2&gt; {
+    public Tupple(E1 e1, E2 e2) { ... }
+    public E1 getE1() { ... }
+    public E2 getE2() { ... }
+}</pre></div>
+
+          <p>You want templates to see this as a sequence of length 2, so
+          that you can do things like <code class="inline-code">someTupple[1]</code>,
+          <code class="inline-code">&lt;#list someTupple
+          <em class="code-color">...</em>&gt;</code>, or
+          <code class="inline-code">someTupple?size</code>. For that you need to create a
+          <code class="inline-code">TemplateSequenceModel</code> implementation that adapts
+          a <code class="inline-code">Tupple</code> to the
+          <code class="inline-code">TempateSequenceMoldel</code> interface:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example.myapp.freemarker;
+
+...
+
+public class TuppleAdapter extends WrappingTemplateModel implements TemplateSequenceModel,
+        AdapterTemplateModel {
+
+    private final Tupple&lt;?, ?&gt; tupple;
+
+    public TuppleAdapter(Tupple&lt;?, ?&gt; tupple, ObjectWrapper ow) {
+        super(ow);  // coming from WrappingTemplateModel
+        this.tupple = tupple;
+    }
+
+    @Override  // coming from TemplateSequenceModel
+    public int size() throws TemplateModelException {
+        return 2;
+    }
+
+    @Override  // coming from TemplateSequenceModel
+    public TemplateModel get(int index) throws TemplateModelException {
+        switch (index) {
+        case 0: return wrap(tupple.getE1());
+        case 1: return wrap(tupple.getE2());
+        default: return null;
+        }
+    }
+
+    @Override  // coming from AdapterTemplateModel
+    public Object getAdaptedObject(Class hint) {
+        return tupple;
+    }
+
+}</pre></div>
+
+          <p>Regarding the classes and interfaces:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">TemplateSequenceModel</code>: This is why the
+              template will see this as a sequence</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">WrappingTemplateModel</code>: Just a
+              convenience class, used for <code class="inline-code">TemplateModel</code>-s
+              that do object wrapping themselves. That&#39;s normally only needed
+              for objects that contain other objects. See the
+              <code class="inline-code">wrap(<em class="code-color">...</em>)</code> calls
+              above.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">AdapterTemplateModel</code>: Indicates that
+              this template model adapts an already existing object to a
+              <code class="inline-code">TemplateModel</code> interface, thus unwrapping
+              should give back that original object.</p>
+            </li>
+          </ul>
+
+          <p>Lastly, we tell FreeMarker to wrap <code class="inline-code">Tupple</code>-s
+          with the <code class="inline-code">TuppleAdapter</code> (alternatively, you could
+          wrap them manually before passing them to FreeMarker). For that,
+          first we create a custom object wrapper:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">package com.example.myapp.freemarker;
+
+...
+
+public class MyAppObjectWrapper extends DefaultObjectWrapper {
+
+    public MyAppObjectWrapper(Version incompatibleImprovements) {
+        super(incompatibleImprovements);
+    }
+
+    @Override
+    protected TemplateModel handleUnknownType(final Object obj) throws TemplateModelException {
+        if (obj instanceof Tupple) {
+            return new TuppleAdapter((Tupple&lt;?, ?&gt;) obj, this);
+        }
+
+        return super.handleUnknownType(obj);
+    }
+
+}</pre></div>
+
+          <p>and then where you configure FreeMarker (<a href="pgui_config.html">about configuring, see here...</a>) we plug
+          our object wrapper in:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initialize the cfg *singleton* (happens just once in the application life-cycle):
+cfg = new Configuration(Configuration.VERSION_2_3_25);
+...
+cfg.setObjectWrapper(new MyAppObjectWrapper(cfg.getIncompatibleImprovements()));</pre></div>
+
+          <p>or if you are configuring FreeMarker with
+          <code class="inline-code">java.util.Properties</code> instead (and let&#39;s say it&#39;s
+          also a <code class="inline-code">.properties</code> file):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">object_wrapper=com.example.myapp.freemarker.MyAppObjectWrapper(2.3.25)</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel_node.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel_parent.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel_parent.html b/builds/2.3.26-nightly/pgui_datamodel_parent.html
new file mode 100644
index 0000000..6c91a9b
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel_parent.html
@@ -0,0 +1,129 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Containers - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Containers">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel_parent.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel_parent.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel_parent.html"><span itemprop="name">Containers</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model","Containers"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel_scalar.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_method.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_datamodel_parent" itemprop="headline">Containers</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_32" data-menu-target="autoid_32">Hashes</a></li><li><a class="page-menu-link" href="#autoid_33" data-menu-target="autoid_33">Sequences</a></li><li><a class="page-menu-link" href="#autoid_34" data-menu-target="autoid_34">Collections</a></li></ul> </div><p>These are hashes, sequences, and collections.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_32">Hashes</h2>
+
+
+          
+
+          <p>Hashes are java objects that implement
+          <code class="inline-code">TemplateHashModel</code> interface.
+          <code class="inline-code">TemplateHashModel</code> contains two methods:
+          <code class="inline-code">TemplateModel get(String key)</code>, which returns the
+          subvariable of the given name, and <code class="inline-code">boolean
+          isEmpty()</code>, which indicates if the hash has zero
+          subvariable or not. The <code class="inline-code">get</code> method returns null
+          if no subvariable with the given name exists.</p>
+
+          <p>The <code class="inline-code">TemplateHashModelEx</code> interface extends
+          <code class="inline-code">TemplateHashModel</code>. It adds methods by which <a href="ref_builtins_hash.html#ref_builtin_values">values</a> and <a href="ref_builtins_hash.html#ref_builtin_keys">keys</a> built-ins can enumerate the
+          sub variables of the hash.</p>
+
+          <p>The commonly used implementation is
+          <code class="inline-code">SimpleHash</code>, which implements
+          <code class="inline-code">TemplateHashModelEx</code>. Internally it uses a
+          <code class="inline-code">java.util.Hash</code> to store the sub variables.
+          <code class="inline-code">SimpleHash</code> has methods by which you can add and
+          remove subvariable. These methods should be used to initialize the
+          variable directly after its creation.</p>
+
+          <p>Containers are immutable within FTL. That is, you can&#39;t add,
+          replace or remove the sub variables they contain.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_33">Sequences</h2>
+
+
+          
+
+          <p>Sequences are java objects that implement
+          <code class="inline-code">TemplateSequenceModel</code>. It contains two methods:
+          <code class="inline-code">TemplateModel get(int index)</code> and <code class="inline-code">int
+          size()</code>.</p>
+
+          <p>The commonly used implementation is
+          <code class="inline-code">SimpleSequence</code>. It uses internally a
+          <code class="inline-code">java.util.List</code> to store its sub variables.
+          <code class="inline-code">SimpleSequence</code> has methods by which you can add
+          sub variables. These methods should be used to populate the sequence
+          directly after its creation.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_34">Collections</h2>
+
+
+          
+
+          <p>Collections are java objects that implement the
+          <code class="inline-code">TemplateCollectionModel</code> interface. That interface
+          has one method: <code class="inline-code">TemplateModelIterator iterator()</code>.
+          The <code class="inline-code">TemplateModelIterator</code> interface is similar to
+          <code class="inline-code">java.util.Iterator</code>, but it returns
+          <code class="inline-code">TemplateModels</code> instead of
+          <code class="inline-code">Object</code>-s, and it can throw
+          <code class="inline-code">TemplateModelException</code>s.</p>
+
+          <p>The commonly used implementation is
+          <code class="inline-code">SimpleCollection</code>.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel_scalar.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_method.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[48/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/app.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/app.html b/builds/2.3.26-nightly/app.html
new file mode 100644
index 0000000..7529506
--- /dev/null
+++ b/builds/2.3.26-nightly/app.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-part">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Appendixes - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Appendixes">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/app.html">
+<link rel="canonical" href="http://freemarker.org/docs/app.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_ch
 eatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="xgui_declarative_details.html"><span>Previous</span></a><a class="paging-arrow next" href="app_faq.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-part" id="app" itemprop="headline">Appendixes</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="app_faq.html" data-menu-target="app_faq">FAQ</a></li><li><a class="page-menu-link" href="app_versions.html" data-menu-target="app_versions">Version history</a><ul><li><a class="page-menu-link" href="versions_2_3_26.html" data-menu-target="versions_2_3_26">2.3.26 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_25.html" data-menu-target="versions_2_3_25">2.3.25 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_24.html" data-menu-target="versions_2_3_24">2.3.24 (incubating at Apache)</a></li><li><a class="page-menu-link" href="versions_2_3_23.html" data-menu-target="versions_2_3_23">2.3.23</a></li><li><a class="page-menu-link" href="versions_2_3_22.html" data-menu-target="versions_2_3_22">2.3.22</a></li><li><a class="page-menu-link" href="versions_2_3_21.html" data-menu-target="versions_2_3_21">2.3.21</a></li><li><a class="page-menu-link" href="versions_2_3_20.html" data-menu-target="v
 ersions_2_3_20">2.3.20</a></li><li><a class="page-menu-link" href="versions_2_3_19.html" data-menu-target="versions_2_3_19">2.3.19</a></li><li><a class="page-menu-link" href="versions_2_3_18.html" data-menu-target="versions_2_3_18">2.3.18</a></li><li><a class="page-menu-link" href="versions_2_3_17.html" data-menu-target="versions_2_3_17">2.3.17</a></li><li><a class="page-menu-link" href="versions_2_3_16.html" data-menu-target="versions_2_3_16">2.3.16</a></li><li><a class="page-menu-link" href="versions_2_3_15.html" data-menu-target="versions_2_3_15">2.3.15</a></li><li><a class="page-menu-link" href="versions_2_3_14.html" data-menu-target="versions_2_3_14">2.3.14</a></li><li><a class="page-menu-link" href="versions_2_3_13.html" data-menu-target="versions_2_3_13">2.3.13</a></li><li><a class="page-menu-link" href="versions_2_3_12.html" data-menu-target="versions_2_3_12">2.3.12</a></li><li><a class="page-menu-link" href="versions_2_3_11.html" data-menu-target="versions_2_3_11">2.3.11</a
 ></li><li><a class="page-menu-link" href="versions_2_3_10.html" data-menu-target="versions_2_3_10">2.3.10</a></li><li><a class="page-menu-link" href="versions_2_3_9.html" data-menu-target="versions_2_3_9">2.3.9</a></li><li><a class="page-menu-link" href="versions_2_3_8.html" data-menu-target="versions_2_3_8">2.3.8</a></li><li><a class="page-menu-link" href="versions_2_3_7.html" data-menu-target="versions_2_3_7">2.3.7</a></li><li><a class="page-menu-link" href="versions_2_3_7rc1.html" data-menu-target="versions_2_3_7rc1">2.3.7 RC1</a></li><li><a class="page-menu-link" href="versions_2_3_6.html" data-menu-target="versions_2_3_6">2.3.6</a></li><li><a class="page-menu-link" href="versions_2_3_5.html" data-menu-target="versions_2_3_5">2.3.5</a></li><li><a class="page-menu-link" href="versions_2_3_4.html" data-menu-target="versions_2_3_4">2.3.4</a></li><li><a class="page-menu-link" href="versions_2_3_3.html" data-menu-target="versions_2_3_3">2.3.3</a></li><li><a class="page-menu-link" hre
 f="versions_2_3_2.html" data-menu-target="versions_2_3_2">2.3.2</a></li><li><a class="page-menu-link" href="versions_2_3_1.html" data-menu-target="versions_2_3_1">2.3.1</a></li><li><a class="page-menu-link" href="versions_2_3.html" data-menu-target="versions_2_3">2.3</a></li><li><a class="page-menu-link" href="versions_2_2_8.html" data-menu-target="versions_2_2_8">2.2.8</a></li><li><a class="page-menu-link" href="versions_2_2_7.html" data-menu-target="versions_2_2_7">2.2.7</a></li><li><a class="page-menu-link" href="versions_2_2_6.html" data-menu-target="versions_2_2_6">2.2.6</a></li><li><a class="page-menu-link" href="versions_2_2_5.html" data-menu-target="versions_2_2_5">2.2.5</a></li><li><a class="page-menu-link" href="versions_2_2_4.html" data-menu-target="versions_2_2_4">2.2.4</a></li><li><a class="page-menu-link" href="versions_2_2_3.html" data-menu-target="versions_2_2_3">2.2.3</a></li><li><a class="page-menu-link" href="versions_2_2_2.html" data-menu-target="versions_2_2_2">
 2.2.2</a></li><li><a class="page-menu-link" href="versions_2_2_1.html" data-menu-target="versions_2_2_1">2.2.1</a></li><li><a class="page-menu-link" href="versions_2_2.html" data-menu-target="versions_2_2">2.2</a></li><li><a class="page-menu-link" href="versions_2_1_5.html" data-menu-target="versions_2_1_5">2.1.5</a></li><li><a class="page-menu-link" href="versions_2_1_4.html" data-menu-target="versions_2_1_4">2.1.4</a></li><li><a class="page-menu-link" href="versions_2_1_3.html" data-menu-target="versions_2_1_3">2.1.3</a></li><li><a class="page-menu-link" href="versions_2_1_2.html" data-menu-target="versions_2_1_2">2.1.2</a></li><li><a class="page-menu-link" href="versions_2_1_1.html" data-menu-target="versions_2_1_1">2.1.1</a></li><li><a class="page-menu-link" href="versions_2_1.html" data-menu-target="versions_2_1">2.1</a></li><li><a class="page-menu-link" href="versions_2_01.html" data-menu-target="versions_2_01">2.01</a></li><li><a class="page-menu-link" href="versions_2_0.html
 " data-menu-target="versions_2_0">2.0</a></li><li><a class="page-menu-link" href="versions_2_0RC3.html" data-menu-target="versions_2_0RC3">2.0 RC3</a></li><li><a class="page-menu-link" href="versions_2_0RC2.html" data-menu-target="versions_2_0RC2">2.0 RC2</a></li><li><a class="page-menu-link" href="versions_2_0RC1.html" data-menu-target="versions_2_0RC1">2.0 RC1</a></li></ul></li><li><a class="page-menu-link" href="app_install.html" data-menu-target="app_install">Installing FreeMarker</a></li><li><a class="page-menu-link" href="app_legal.html" data-menu-target="app_legal">Legal</a><ul><li><a class="page-menu-link" href="app_license.html" data-menu-target="app_license">License</a></li><li><a class="page-menu-link" href="app_eccn.html" data-menu-target="app_eccn">Export Control</a></li></ul></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="xgui_declarative_details.html"><span>Previous</span></a><a class="paging-arrow 
 next" href="app_faq.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/app_eccn.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/app_eccn.html b/builds/2.3.26-nightly/app_eccn.html
new file mode 100644
index 0000000..da45673
--- /dev/null
+++ b/builds/2.3.26-nightly/app_eccn.html
@@ -0,0 +1,56 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Export Control - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Export Control">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/app_eccn.html">
+<link rel="canonical" href="http://freemarker.org/docs/app_eccn.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_legal.html"><span itemprop="name">Legal</span></a></li><li class="step-3" itemprop="itemListElement" itemsc
 ope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_eccn.html"><span itemprop="name">Export Control</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Legal","Export Control"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="app_license.html"><span>Previous</span></a><a class="paging-arrow next" href="gloss.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="app_eccn" itemprop="headline">Export Control</h1>
+</div></div><p>The FreeMarker source code doesn&#39;t include cryptography.
+        Furthermore its binary (downloadable) forms don&#39;t include any
+        cryptography software. Hence, FreeMarker has no Export Control
+        Classification Number (ECCN). Where an ECCN should be filled, the
+        label &quot;not subject to EAR&quot; could be used.</p><p>FreeMarker itself doesn&#39;t add any exporting limitations.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="app_license.html"><span>Previous</span></a><a class="paging-arrow next" href="gloss.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[32/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_datamodel_scalar.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_datamodel_scalar.html b/builds/2.3.26-nightly/pgui_datamodel_scalar.html
new file mode 100644
index 0000000..88fcc5d
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_datamodel_scalar.html
@@ -0,0 +1,154 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Scalars - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Scalars">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_datamodel_scalar.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_datamodel_scalar.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel.html"><span itemprop="name">The Data Model</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_datamodel_scalar.html"><span itemprop="name">Scalars</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Data Model","Scalars"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_datamodel_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_parent.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_datamodel_scalar" itemprop="headline">Scalars</h1>
+</div></div><p>There are 4 scalar types:</p><ul>
+          <li>
+            Boolean
+          </li>
+
+          <li>
+            Number
+          </li>
+
+          <li>
+            String
+          </li>
+
+          <li>
+            Date-like (subtypes: date (no time part), time or
+            date-time)
+          </li>
+        </ul><p>For each scalar type is a
+        <code class="inline-code">Template<em class="code-color">Type</em>Model</code>
+        interface, where <code class="inline-code"><em class="code-color">Type</em></code> is
+        the name of the type. These interfaces define only one method:
+        <code class="inline-code"><em class="code-color">type</em>
+        getAs<em class="code-color">Type</em>();</code>. This returns the
+        value of the variable with the Java type (<code class="inline-code">boolean</code>,
+        <code class="inline-code">Number</code>, <code class="inline-code">String</code> and
+        <code class="inline-code">Date</code> respectively).</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>For historical reasons the interface for string scalars is
+          called <code class="inline-code">TemplateScalarModel</code>, not
+          <code class="inline-code">TemplateStringModel</code>. (It&#39;s because in early
+          FreeMarker strings were the only kind of scalars.)</p>
+          </div>
+<p>A trivial implementation of these interfaces are available in
+        <code class="inline-code">freemarker.template</code> package with
+        <code class="inline-code">Simple<em class="code-color">Type</em></code> class name.
+        However, there is no <code class="inline-code">SimpleBooleanModel</code>; to
+        represent the boolean values you can use the
+        <code class="inline-code">TemplateBooleanModel.TRUE</code> and
+        <code class="inline-code">TemplateBooleanModel.FALSE</code> singletons.</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>For historical reasons the class for string scalars is called
+          <code class="inline-code">SimpleScalar</code>, not
+          <code class="inline-code">SimpleString</code>.</p>
+          </div>
+<p>Scalars are immutable within FTL. When you set the value of a
+        variable in a template, then you replace the
+        <code class="inline-code">Template<em class="code-color">Type</em>Model</code>
+        instance with another instance, and don&#39;t change the value stored in
+        the original instance.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_31">Difficulties with the "date-like" types</h2>
+
+
+          
+
+          
+
+          <p>There is a complication around date-like types, because Java
+          API usually does not differentiate
+          <code class="inline-code">java.util.Date</code>-s that store only the date part
+          (April 4, 2003), only the time part (10:19:18 PM), or both (April 4,
+          2003 10:19:18 PM). To display the value as text correctly (or to do
+          certain other operations), FreeMarker must know what parts of the
+          <code class="inline-code">java.util.Date</code> stores meaningful information, and
+          what parts are unused (usually 0-ed out). Unfortunately, this
+          information is usually only available when the value comes from a
+          database, because most databases have separate date, time and
+          date-time (aka. timestap) types, and <code class="inline-code">java.sql</code> has
+          3 corresponding <code class="inline-code">java.util.Date</code> subclasses for
+          them.</p>
+
+          <p><code class="inline-code">TemplateDateModel</code> interface has two
+          methods: <code class="inline-code">java.util.Date getAsDate()</code> and
+          <code class="inline-code">int getDateType()</code>. A typical implementation of
+          this interface, stores a <code class="inline-code">java.util.Date</code> object,
+          plus an integer that tells the subtype. The value of this integer
+          must be a constant from the <code class="inline-code">TemplateDateModel</code>
+          interface: <code class="inline-code">DATE</code>, <code class="inline-code">TIME</code>,
+          <code class="inline-code">DATETIME</code> and <code class="inline-code">UNKNOWN</code>.</p>
+
+          <p>About <code class="inline-code">UNKNOWN</code>: <code class="inline-code">java.lang</code>
+          and <code class="inline-code">java.util</code> classes are usually converted
+          automatically into <code class="inline-code">TemplateModel</code> implementations
+          be the <code class="inline-code">ObjectWrapper</code> (see object wrapping
+          earlier). If the object wrapper has to wrap a
+          <code class="inline-code">java.util.Date</code>, that is not an instance of a
+          <code class="inline-code">java.sql</code> date class, it can&#39;t decide what the
+          subtype is, so it uses <code class="inline-code">UNKNOWN</code>. Later, if the
+          template has to use this variable, and the subtype is needed for the
+          operation, it will stop with error. To prevent this, for the
+          problematic variables the template author must specify the subtype
+          explicitly using the <a href="ref_builtins_date.html#ref_builtin_date_datetype"><code>date</code>,
+          <code>time</code> or <code>datetime</code>
+          built-ins</a> (like <code class="inline-code">lastUpdated?datetime</code>).
+          Note that if you use <code class="inline-code">string</code> built-in with format
+          parameter, as <code class="inline-code">foo?string[&quot;MM/dd/yyyy&quot;]</code>, then
+          FreeMarker doesn&#39;t need to know the subtype.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_datamodel_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_datamodel_parent.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc.html b/builds/2.3.26-nightly/pgui_misc.html
new file mode 100644
index 0000000..ba79263
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc.html
@@ -0,0 +1,55 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Miscellaneous - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Miscellaneous">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li></ul><div class="bookmarks" tit
 le="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_incompatible_improvements.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_var.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="pgui_misc" itemprop="headline">Miscellaneous</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="pgui_misc_var.html" data-menu-target="pgui_misc_var">Variables, scopes</a></li><li><a class="page-menu-link" href="pgui_misc_charset.html" data-menu-target="pgui_misc_charset">Charset issues</a></li><li><a class="page-menu-link" href="pgui_misc_multithreading.html" data-menu-target="pgui_misc_multithreading">Multithreading</a></li><li><a class="page-menu-link" href="pgui_misc_beanwrapper.html" data-menu-target="pgui_misc_beanwrapper">Bean wrapper</a></li><li><a class="page-menu-link" href="pgui_misc_logging.html" data-menu-target="pgui_misc_logging">Logging</a></li><li><a class="page-menu-link" href="pgui_misc_servlet.html" data-menu-target="pgui_misc_servlet">Using FreeMarker with servlets</a></li><li><a class="page-menu-link" href="pgui_misc_secureenv.html" data-menu-target="pgui_misc_secureenv">Configuring security policy for FreeMarker</a></li><li><a class="page-menu-link" href="pgui_misc_xml_legacy.html" data-menu-target="pgui_misc_xml_le
 gacy">Legacy XML wrapper implementation</a></li><li><a class="page-menu-link" href="pgui_misc_ant.html" data-menu-target="pgui_misc_ant">Using FreeMarker with Ant</a></li><li><a class="page-menu-link" href="pgui_misc_jythonwrapper.html" data-menu-target="pgui_misc_jythonwrapper">Jython wrapper</a></li></ul> </div><p>This is just an introductory guide. See the <a href="api/index.html">FreeMarker Java API documentation</a> for the
+      details.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_incompatible_improvements.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_var.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_ant.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_ant.html b/builds/2.3.26-nightly/pgui_misc_ant.html
new file mode 100644
index 0000000..3aac258
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_ant.html
@@ -0,0 +1,111 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Using FreeMarker with Ant - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Using FreeMarker with Ant">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_ant.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_ant.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_ant.html"><span itemprop="name">Using FreeMarker with Ant</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Using FreeMarker with Ant"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_xml_legacy.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_jythonwrapper.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_ant" itemprop="headline">Using FreeMarker with Ant</h1>
+</div></div><p>There are two "FreeMarker Ant tasks" that we know
+        about:</p><ul>
+          <li>
+            <p><code class="inline-code">FreemarkerXmlTask</code>: It comes with the
+            FreeMarker distribution, packed into the
+            <code class="inline-code">freemarker.jar</code>. This is a lightweight,
+            easy-to-use Ant task for transforming XML documents with
+            FreeMarker templates. Its approach is that the source files (input
+            files) are XML files, which are rendered to corresponding output
+            files, by a single template. That is, for each XML file, the
+            template will be executed (with the XML document in the
+            data-model), and the template output will be written into a file
+            of similar name than the name of the XML file. Thus, the template
+            file plays a similar role as an XSLT style sheet, but it is FTL,
+            not XSLT.</p>
+          </li>
+
+          <li>
+            <p> FMPP: It&#39;s a more heavyweight, less XML centric,
+            third party Ant task (and standalone command-line tool). Its
+            primary approach is that the source files (input files) are
+            template files that generate the corresponding output files
+            themselves, but it also supports the approach of
+            <code class="inline-code">FreemarkerXmlTask</code> for the source files that are
+            XML-s. Also, it has extra features over the
+            <code class="inline-code">FreemarkerXmlTask</code>. What&#39;s its drawback then? As
+            it is more complex and more generalized, it&#39;s harder to learn and
+            use it.</p>
+          </li>
+        </ul><p>This section introduces the
+        <code class="inline-code">FreemarkerXmlTask</code>. For more information about FMPP
+        visit its homepage: <a href="http://fmpp.sourceforge.net/">http://fmpp.sourceforge.net/</a>.</p><p>In order to use the <code class="inline-code">FreemarkerXmlTask</code>, you
+        must first define the
+        <code class="inline-code">freemarker.ext.ant.FreemarkerXmlTask</code> inside your
+        Ant buildfile, then call the task. Suppose you want to transform
+        several XML documents to HTML using the hypothetical &quot;xml2html.ftl&quot;
+        template, with XML documents located in the directory &quot;xml&quot; and HTML
+        documents generated into directory &quot;html&quot;. You would write something
+        like:</p>
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;taskdef name=&quot;freemarker&quot; classname=&quot;freemarker.ext.ant.FreemarkerXmlTask&quot;&gt;
+  &lt;classpath&gt;
+    &lt;pathelement location=&quot;freemarker.jar&quot; /&gt;
+  &lt;/classpath&gt;
+&lt;/taskdef&gt;
+&lt;mkdir dir=&quot;html&quot; /&gt;
+&lt;freemarker basedir=&quot;xml&quot; destdir=&quot;html&quot; includes=&quot;**/*.xml&quot; template=&quot;xml2html.ftl&quot; /&gt;</pre></div><p>The task would invoke the template for every XML document. Every
+        document would be parsed into a DOM tree, then wrapped as a FreeMarker
+        node variable. When template processing begins, the special variable,
+        <code class="inline-code">.node</code>, is set to the root node of the XML
+        document.</p><p>Note that if you are using the legacy (FreeMarker 2.2.x and
+        earlier) XML adapter implementation, that still works, and the root of
+        the XML tree is placed in the data-model as the variable
+        <code class="inline-code">document</code>. That contains an instance of the legacy
+        <code class="inline-code">freemarker.ext.xml.NodeListModel</code> class.</p><p>Note that all properties defined by the build file would be made
+        available as a hash model named &quot;properties&quot;. Several other models are
+        made available; for detailed description of what variables are made
+        available to templates as well as what other attributes can the task
+        accept, see the JavaDoc for
+        <code class="inline-code">freemarker.ext.ant.FreemarkerXmlTask</code>.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_xml_legacy.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_jythonwrapper.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_beanwrapper.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_beanwrapper.html b/builds/2.3.26-nightly/pgui_misc_beanwrapper.html
new file mode 100644
index 0000000..5b2032c
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_beanwrapper.html
@@ -0,0 +1,666 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Bean wrapper - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Bean wrapper">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_beanwrapper.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_beanwrapper.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_beanwrapper.html"><span itemprop="name">Bean wrapper</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Bean wrapper"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_multithreading.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_logging.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_beanwrapper" itemprop="headline">Bean wrapper</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#beanswrapper_hash" data-menu-target="beanswrapper_hash">TemplateHashModel functionality</a></li><li><a class="page-menu-link" href="#autoid_54" data-menu-target="autoid_54">A word on security</a></li><li><a class="page-menu-link" href="#autoid_55" data-menu-target="autoid_55">TemplateScalarModel functionality</a></li><li><a class="page-menu-link" href="#autoid_56" data-menu-target="autoid_56">TemplateNumberModel functionality</a></li><li><a class="page-menu-link" href="#autoid_57" data-menu-target="autoid_57">TemplateCollectionModel functionality</a></li><li><a class="page-menu-link" href="#autoid_58" data-menu-target="autoid_58">TemplateSequenceModel functionality</a></li><li><a class="page-menu-link" href="#beanswrapper_method" data-menu-target="beanswrapper_method">TemplateMethodModel functionality</a></li><li><a class="page-menu-link" href="#autoid_59" data-menu-target="autoid_59">Unwrapping rules</a></li><li><a class="page-menu-link" hre
 f="#autoid_60" data-menu-target="autoid_60">Accessing static methods</a></li><li><a class="page-menu-link" href="#jdk_15_enums" data-menu-target="jdk_15_enums">Accessing enums</a></li></ul> </div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>Using <code class="inline-code">BeansWrapper</code> directly is not
+          recommended anymore. Use its subclass,
+          <code class="inline-code">DefaultObjectWrapper</code> instead, though by ensuring
+          that its <code class="inline-code">incompatibleImprovements</code> property is at
+          least 2.3.22. <code class="inline-code">DefaultObjectWrapper</code> gives cleaner
+          data-model (less confusing multi-type FTL values) and is usually
+          faster. <a href="pgui_datamodel_objectWrapper.html#pgui_datamodel_defaultObjectWrapper">See more
+          about DefaultObjectWrapper here...</a></p>
+          </div>
+<p>The <code class="inline-code">freemarker.ext.beans.BeansWrapper</code> is an
+        <a href="pgui_datamodel_objectWrapper.html">object wrapper</a>
+        that was originally added to FreeMarker so arbitrary POJO-s (Plain Old
+        Java Objects) can be wrapped into <code class="inline-code">TemplateModel</code>
+        interfaces. Since then it has became the normal way of doing things,
+        and in fact the <code class="inline-code">DefaultObjectWrapper</code> itself is a
+        <code class="inline-code">BeansWrapper</code> extension. So everything described
+        here goes for the <code class="inline-code">DefaultObjectWrapper</code> too, except
+        that the <code class="inline-code">DefaultObjectWrapper</code> will wrap
+        <code class="inline-code">String</code>, <code class="inline-code">Number</code>,
+        <code class="inline-code">Date</code>, <code class="inline-code">array</code>,
+        <code class="inline-code">Collection</code> (like <code class="inline-code">List</code>),
+        <code class="inline-code">Map</code>, <code class="inline-code">Boolean</code> and
+        <code class="inline-code">Iterator</code> objects with the
+        <code class="inline-code">freemarker.template.Simple<em class="code-color">Xxx</em></code>
+        classes, and W3C DOM nodes with
+        <code class="inline-code">freemarker.ext.dom.NodeModel</code> (<a href="xgui.html">more about wrapped W3C DOM...</a>), so for those the
+        above described rules doesn&#39;t apply.</p><p>You will want to use <code class="inline-code">BeansWrapper</code> instead of
+        <code class="inline-code">DefaultObjectWrapper</code> when any of these
+        stands:</p><ul>
+          <li>
+            <p>The <code class="inline-code">Collection</code>-s and
+            <code class="inline-code">Map</code>-s of the model should be allowed to be
+            modified during template execution.
+            (<code class="inline-code">DefaultObjectWrapper</code> prevents that, since it
+            creates a copy of the collections when they are wrapped, and the
+            copies will be read-only.)</p>
+          </li>
+
+          <li>
+            <p>If the identity of the <code class="inline-code">array</code>,
+            <code class="inline-code">Collection</code> and <code class="inline-code">Map</code> objects
+            must be kept when they are passed to a wrapped object&#39;s method in
+            the template. That is, if those methods must get exactly the same
+            object that was earlier wrapped.</p>
+          </li>
+
+          <li>
+            <p>If the Java API of the earlier listed classes
+            (<code class="inline-code">String</code>, <code class="inline-code">Map</code>,
+            <code class="inline-code">List</code> ...etc) should be visible for the
+            templates. Even with <code class="inline-code">BeansWrapper</code>, they are not
+            visible by default, but it can be achieved by setting the exposure
+            level (see later). Note that this is usually a bad practice; try
+            to use <a href="ref_builtins.html">the built-ins</a> (like
+            <code class="inline-code">foo?size</code>, <code class="inline-code">foo?upper_case</code>,
+            <code class="inline-code">foo?replace(&#39;_&#39;, &#39;-&#39;)</code> ...etc) instead of the
+            Java API.</p>
+          </li>
+        </ul><p>Below is a summary of the <code class="inline-code">TemplateModel</code>-s
+        that the <code class="inline-code">BeansWrapper</code> creates. Let&#39;s assume that
+        the object is called <code class="inline-code">obj</code> before wrapping, and
+        <code class="inline-code">model</code> after wrapping for the sake of the following
+        discussion.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="beanswrapper_hash">TemplateHashModel functionality</h2>
+
+
+          <p>Every object will be wrapped into a
+          <code class="inline-code">TemplateHashModel</code> that will expose JavaBeans
+          properties and methods of the object. This way, you can use
+          <code class="inline-code">model.foo</code> in the template to invoke
+          <code class="inline-code">obj.getFoo()</code> or <code class="inline-code">obj.isFoo()</code>
+          methods. (Note that public fields are not visible directly; you must
+          write a getter method for them.) Public methods are also retrievable
+          through the hash model as template method models, therefore you can
+          use the <code class="inline-code">model.doBar()</code> to invoke
+          <code class="inline-code">object.doBar()</code>. More on this on discussion of
+          method model functionality.</p>
+
+          <p>If the requested key can not be mapped to a bean property or
+          method, the framework will attempt to locate the so-called &quot;generic
+          get method&quot;, that is a method with signature public
+          <code class="inline-code"><em class="code-color">any-return-type</em>
+          get(String)</code> or public
+          <code class="inline-code"><em class="code-color">any-return-type</em>
+          get(Object)</code> and invoke that method with the requested key.
+          Note that this allows convenient access to mappings in a
+          <code class="inline-code">java.util.Map</code> and similar classes - as long as
+          the keys of the map are <code class="inline-code">String</code>s and some property
+          or method name does not shadow the mapping. (There is a solution to
+          avoid shadowing, read on.) Also note that the models for
+          <code class="inline-code">java.util.ResourceBundle</code> objects use the
+          <code class="inline-code">getObject(String)</code> as the generic get
+          method.</p>
+
+          <p>If you call <code class="inline-code">setExposeFields(true)</code> on a
+          <code class="inline-code">BeansWrapper</code> instance, it will also expose
+          public, non-static fields of classes as hash keys and values. I.e.
+          if <code class="inline-code">foo</code> is a public, non-static field of the class
+          <code class="inline-code">Bar</code>, and <code class="inline-code">bar</code> is a template
+          variable wrapping an instance of <code class="inline-code">Bar</code>, then
+          <code class="inline-code">bar.foo</code> expression will evaluate as the value of
+          the field <code class="inline-code">foo</code> of the <code class="inline-code">bar</code>
+          object. The public fields in all superclasses of the class are also
+          exposed.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_54">A word on security</h2>
+
+
+          <p>By default, you will not be able to access several methods
+          that are considered not safe for templating. For instance, you can&#39;t
+          use synchronization methods (<code class="inline-code">wait</code>,
+          <code class="inline-code">notify</code>, <code class="inline-code">notifyAll</code>), thread and
+          thread group management methods (<code class="inline-code">stop</code>,
+          <code class="inline-code">suspend</code>, <code class="inline-code">resume</code>,
+          <code class="inline-code">setDaemon</code>, <code class="inline-code">setPriority</code>),
+          reflection (<code class="inline-code">Field</code>
+          <code class="inline-code">set<em class="code-color">Xxx</em></code> methods,
+          <code class="inline-code">Method.invoke</code>,
+          <code class="inline-code">Constructor.newInstance</code>,
+          <code class="inline-code">Class.newInstance</code>,
+          <code class="inline-code">Class.getClassLoader</code> etc.) and various dangerous
+          methods in <code class="inline-code">System</code> and <code class="inline-code">Runtime</code>
+          classes (<code class="inline-code">exec</code>, <code class="inline-code">exit</code>,
+          <code class="inline-code">halt</code>, <code class="inline-code">load</code>, etc.). The
+          <code class="inline-code">BeansWrapper</code> has several security levels (called
+          &quot;levels of method exposure&quot;), and the default called
+          <code class="inline-code">EXPOSE_SAFE</code> is probably suited for most
+          applications. There is a no-safeguard level called
+          <code class="inline-code">EXPOSE_ALL</code> that allows you to call even the above
+          unsafe methods, and a strict level
+          <code class="inline-code">EXPOSE_PROPERTIES_ONLY</code> that will expose only bean
+          property getters. Finally, there is a level named
+          <code class="inline-code">EXPOSE_NOTHING</code> that will expose no properties and
+          no methods. The only data you will be able to access through hash
+          model interface in this case are items in maps and resource bundles,
+          as well as objects returned from a call to generic
+          <code class="inline-code">get(Object)</code> or <code class="inline-code">get(String)</code>
+          methods - provided the affected objects have such method.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_55">TemplateScalarModel functionality</h2>
+
+
+          <p>Models for <code class="inline-code">java.lang.String</code> objects will
+          implement <code class="inline-code">TemplateScalarModel</code> whose
+          <code class="inline-code">getAsString()</code> method simply delegates to
+          <code class="inline-code">toString()</code>. Note that wrapping
+          <code class="inline-code">String</code> objects into Bean wrappers provides much
+          more functionality than just them being scalars: because of the hash
+          interface described above, the models that wrap
+          <code class="inline-code">String</code>s also provide access to all
+          <code class="inline-code">String</code> methods (<code class="inline-code">indexOf</code>,
+          <code class="inline-code">substring</code>, etc.), though most of them has native
+          FreeMarker equivalent which are better to use
+          (<code class="inline-code">s?index_of(n)</code>,
+          <code class="inline-code">s[start..&lt;end]</code>, etc).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_56">TemplateNumberModel functionality</h2>
+
+
+          <p>Model wrappers for objects that are instances of
+          <code class="inline-code">java.lang.Number</code> implement
+          <code class="inline-code">TemplateNumberModel</code> whose
+          <code class="inline-code">getAsNumber()</code> method returns the wrapped number
+          object. Note that wrapping <code class="inline-code">Number</code> objects into
+          Bean wrappers provides much more functionality than just them being
+          number models: because of the hash interface described above, the
+          models that wrap <code class="inline-code">Number</code>s also provide access to
+          all their methods.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_57">TemplateCollectionModel functionality</h2>
+
+
+          <p>Model wrappers for native Java arrays and all classes that
+          implement <code class="inline-code">java.util.Collection</code> will implement
+          <code class="inline-code">TemplateCollectionModel</code> and thus gain the
+          additional capability of being usable through
+          <code class="inline-code">list</code> directive.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_58">TemplateSequenceModel functionality</h2>
+
+
+          <p>Model wrappers for native Java arrays and all classes that
+          implement <code class="inline-code">java.util.List</code> will implement
+          <code class="inline-code">TemplateSequenceModel</code> and thus their elements
+          will be accessible by index using the <code class="inline-code">model[i]</code>
+          syntax. You can also query the length of the array or the size of
+          the list using the <code class="inline-code">model?size</code> built-in.</p>
+
+          <p>Also, every method that takes a single parameter that is
+          assignable through reflective method invocation from a
+          <code class="inline-code">java.lang.Integer</code> (these are
+          <code class="inline-code">int</code>, <code class="inline-code">long</code>,
+          <code class="inline-code">float</code>, <code class="inline-code">double</code>,
+          <code class="inline-code">java.lang.Object</code>,
+          <code class="inline-code">java.lang.Number</code>, and
+          <code class="inline-code">java.lang.Integer</code>) also implements this
+          interface. What this means is that you have a convenient way for
+          accessing the so-called indexed bean properties:
+          <code class="inline-code">model.foo[i]</code> will translate into
+          <code class="inline-code">obj.getFoo(i)</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="beanswrapper_method">TemplateMethodModel functionality</h2>
+
+
+          <p>All methods of an object are represented as
+          <code class="inline-code">TemplateMethodModelEx</code> objects accessible using a
+          hash key with method name on their object&#39;s model. When you call a
+          method using
+          <code class="inline-code">model.<em class="code-color">method</em>(<em class="code-color">arg1</em>,
+          <em class="code-color">arg2</em>,
+          <em class="code-color">...</em>)</code> the arguments are passed
+          to the method as template models. The method will first try to
+          unwrap them - see below for details about unwrapping. These
+          unwrapped arguments are then used for the actual method call. In
+          case the method is overloaded, the most specific method will be
+          selected using the same rules that are used by the Java compiler to
+          select a method from several overloaded methods. In case that no
+          method signature matches the passed parameters, or that no method
+          can be chosen without ambiguity, a
+          <code class="inline-code">TemplateModelException</code> is thrown.</p>
+
+          <p>Methods of return type <code class="inline-code">void</code> return
+          <code class="inline-code">TemplateModel.NOTHING</code>, so they can be safely
+          called with the <code class="inline-code">${obj.method(args)}</code>
+          syntax.</p>
+
+          <p>Models for instances of <code class="inline-code">java.util.Map</code> also
+          implement <code class="inline-code">TemplateMethodModelEx</code> as a means for
+          invoking their <code class="inline-code">get()</code> method. As it was discussed
+          previously, you can use the hash functionality to access the &quot;get&quot;
+          method as well, but it has several drawbacks: it&#39;s slower because
+          first property and method names are checked for the key; keys that
+          conflict with property and method names will be shadowed by them;
+          finally you can use <code class="inline-code">String</code> keys only with that
+          approach. In contrast, invoking <code class="inline-code">model(key)</code>
+          translates to <code class="inline-code">model.get(key)</code> directly: it&#39;s
+          faster because there&#39;s no property and method name lookup; it is
+          subject to no shadowing; and finally it works for non-String keys
+          since the argument is unwrapped just as with ordinary method calls.
+          In effect, <code class="inline-code">model(key)</code> on a <code class="inline-code">Map</code>
+          is equal to <code class="inline-code">model.get(key)</code>, only shorter to
+          write.</p>
+
+          <p>Models for <code class="inline-code">java.util.ResourceBundle</code> also
+          implement <code class="inline-code">TemplateMethodModelEx</code> as a convenient
+          way of resource access and message formatting. A single-argument
+          call to a bundle will retrieve the resource with the name that
+          corresponds to the <code class="inline-code">toString()</code> value of the
+          unwrapped argument. A multiple-argument call to a bundle will also
+          retrieve the resource with the name that corresponds to the
+          <code class="inline-code">toString()</code> value of the unwrapped argument, but
+          it will use it as a format pattern and pass it to
+          <code class="inline-code">java.text.MessageFormat</code> using the unwrapped
+          values of second and later arguments as formatting parameters.
+          <code class="inline-code">MessageFormat</code> objects will be initialized with
+          the locale of the bundle that originated them.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_59">Unwrapping rules</h2>
+
+
+          <p>When invoking a Java method from a template, its arguments
+          need to be converted from template models back to Java objects.
+          Assuming that the target type (the declared type of the method&#39;s
+          formal parameter) is denoted as <code class="inline-code">T</code>, the following
+          rules are tried in the following order:</p>
+
+          <ul>
+            <li>
+              <p>If the model is the null model for this wrapper, Java
+              <code class="inline-code">null</code> is returned.</p>
+            </li>
+
+            <li>
+              <p>If the model implements
+              <code class="inline-code">AdapterTemplateModel</code>, the result of
+              <code class="inline-code">model.getAdaptedObject(T)</code> is returned if it
+              is instance of <code class="inline-code">T</code> or it is a number and can be
+              converted to <code class="inline-code">T</code> using numeric coercion as
+              described three bullets lower. <span class="marked-for-programmers">All
+              models created by the BeansWrapper are themselves
+              AdapterTemplateModel implementations, so unwrapping a model that
+              was created by BeansWrapper for an underlying Java object always
+              yields the original Java object.</span></p>
+            </li>
+
+            <li>
+              <p>If the model implements the deprecated
+              <code class="inline-code">WrapperTemplateModel</code>, the result of
+              <code class="inline-code">model.getWrappedObject()</code> is returned if it is
+              instance of <code class="inline-code">T</code> or it is a number and can be
+              converted to <code class="inline-code">T</code> using numeric coercion as
+              described two bullets lower.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is
+              <code class="inline-code">java.lang.String</code>, then if model implements
+              <code class="inline-code">TemplateScalarModel</code> its string value is
+              returned. <span class="marked-for-programmers">Note that if the model
+              doesn&#39;t implement TemplateScalarModel we don&#39;t attempt to
+              automatically convert the model to string using
+              String.valueOf(model). You&#39;ll have to use the ?string built-in
+              explicitly to pass non-scalars as strings.</span></p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is a primitive numeric type or
+              <code class="inline-code">java.lang.Number</code> is assignable from
+              <code class="inline-code">T</code>, and model implements
+              <code class="inline-code">TemplateNumberModel</code>, then its numeric value
+              is returned if it is instance of <code class="inline-code">T</code> or its
+              boxing type (if <code class="inline-code">T</code> is primitive type).
+              Otherwise, if <code class="inline-code">T</code> is a built-in Java numeric
+              type (primitive type or a standard subclass of
+              <code class="inline-code">java.lang.Number</code>, including
+              <code class="inline-code">BigInteger</code> and <code class="inline-code">BigDecimal</code>)
+              a new object of class <code class="inline-code">T</code> or its boxing type is
+              created with the number model&#39;s appropriately coerced
+              value.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is <code class="inline-code">boolean</code> or
+              <code class="inline-code">java.lang.Boolean</code>, and model implements
+              <code class="inline-code">TemplateBooleanModel</code>, then its boolean value
+              is returned.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is
+              <code class="inline-code">java.util.Map</code> and the model implements
+              <code class="inline-code">TemplateHashModel</code>, then a special Map
+              representation of the hash model is returned.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is
+              <code class="inline-code">java.util.List</code> and the model implements
+              <code class="inline-code">TemplateSequenceModel</code>, then a special List
+              representation of the sequence model is returned.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is
+              <code class="inline-code">java.util.Set</code> and the model implements
+              <code class="inline-code">TemplateCollectionModel</code>, then a special Set
+              representation of the collection model is returned.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is
+              <code class="inline-code">java.util.Collection</code> or
+              <code class="inline-code">java.lang.Iterable</code> and the model implements
+              either <code class="inline-code">TemplateCollectionModel</code> or
+              <code class="inline-code">TemplateSequenceModel</code>, then a special Set or
+              List representation of the collection or sequence model
+              (respectively) is returned.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is a Java array type and the model
+              implements <code class="inline-code">TemplateSequenceModel</code>, then a new
+              array of the specified type is created and its elements
+              unwrapped into the array recursively using the array&#39;s component
+              type as <code class="inline-code">T</code>.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">T</code> is <code class="inline-code">char</code> or
+              <code class="inline-code">java.lang.Character</code>, and model implements
+              <code class="inline-code">TemplateScalarModel</code>, and its string
+              representation contains exactly one character, then a
+              <code class="inline-code">java.lang.Character</code> with that value is
+              retured.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">java.util.Date</code> is assignable from
+              <code class="inline-code">T</code>, and model implements
+              <code class="inline-code">TemplateDateModel</code>, and its date value is
+              instance of <code class="inline-code">T</code>, then its date value is
+              returned.</p>
+            </li>
+
+            <li>
+              <p>If model is a number model, and its numeric value is
+              instance of <code class="inline-code">T</code>, the numeric value is returned.
+              <span class="marked-for-programmers">You can have a custom subclass of
+              java.lang.Number that implements a custom interface, and T might
+              be that interface. (*)</span></p>
+            </li>
+
+            <li>
+              <p>If model is a date model, and its date value is instance
+              of <code class="inline-code">T</code>, the date value is returned. <span class="marked-for-programmers">Similar consideration as for
+              (*)</span></p>
+            </li>
+
+            <li>
+              <p>If model is a scalar model, and <code class="inline-code">T</code> is
+              assignable from <code class="inline-code">java.lang.String</code>, the string
+              value is returned. <span class="marked-for-programmers">This covers
+              cases when T is java.lang.Object, java.lang.Comparable, and
+              java.io.Serializable (**)</span></p>
+            </li>
+
+            <li>
+              <p>If model is a boolean model, and <code class="inline-code">T</code> is
+              assignable from <code class="inline-code">java.lang.Boolean</code>, the
+              boolean value is returned. <span class="marked-for-programmers">Same as
+              (**)</span></p>
+            </li>
+
+            <li>
+              <p>If model is a hash model, and <code class="inline-code">T</code> is
+              assignable from
+              <code class="inline-code">freemarker.ext.beans.HashAdapter</code>, a hash
+              adapter is returned. <span class="marked-for-programmers">Same as
+              (**)</span></p>
+            </li>
+
+            <li>
+              <p>If model is a sequence model, and <code class="inline-code">T</code> is
+              assignable from
+              <code class="inline-code">freemarker.ext.beans.SequenceAdapter</code>, a
+              sequence adapter is returned. <span class="marked-for-programmers">Same
+              as (**)</span></p>
+            </li>
+
+            <li>
+              <p>If model is a collection model, and <code class="inline-code">T</code>
+              is assignable from
+              <code class="inline-code">freemarker.ext.beans.SetAdapter</code>, a set
+              adapter for the collection is returned. <span class="marked-for-programmers">Same as (**)</span></p>
+            </li>
+
+            <li>
+              <p>If the model is instance of <code class="inline-code">T</code>, the
+              model itself is returned. <span class="marked-for-programmers">This
+              covers the case where the method explicitly declared a
+              FreeMarker-specific model interface, as well as allows returning
+              directive, method and transform models when java.lang.Object is
+              requested.</span></p>
+            </li>
+
+            <li>
+              <p>An exception signifying no conversion is possible is
+              thrown.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_60">Accessing static methods</h2>
+
+
+          
+
+          <p>The <code class="inline-code">TemplateHashModel</code> returned from
+          <code class="inline-code">BeansWrapper.getStaticModels()</code> can be used to
+          create hash models for accessing static methods and fields of an
+          arbitrary class.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
+TemplateHashModel staticModels = wrapper.getStaticModels();
+TemplateHashModel fileStatics =
+    (TemplateHashModel) staticModels.get(&quot;java.io.File&quot;);</pre></div>
+
+          <p>And you will get a template hash model that exposes all static
+          methods and static fields (both final and non-final) of the
+          <code class="inline-code">java.lang.System</code> class as hash keys. Suppose that
+          you put the previous model in your root model:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">root.put(&quot;File&quot;, fileStatics);</pre></div>
+
+          <p>From now on, you can use <code class="inline-code">${File.SEPARATOR}</code>
+          to insert the file separator character into your template, or you
+          can even list all roots of your file system by:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list File.listRoots() as fileSystemRoot&gt;...&lt;/#list&gt;</pre></div>
+
+          <p>Of course, you must be aware of the potential security issues
+          this model brings.</p>
+
+          <p>You can even give the template authors complete freedom over
+          which classes&#39; static methods they use by placing the static models
+          hash into your template root model with</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">root.put(&quot;statics&quot;, BeansWrapper.getDefaultInstance().getStaticModels());</pre></div>
+
+          <p>This object exposes just about any class&#39; static methods if
+          it&#39;s used as a hash with class name as the key. You can then use
+          expression like
+          <code class="inline-code">${statics[&quot;java.lang.System&quot;].currentTimeMillis()}</code>
+          in your template. Note, however that this has even more security
+          implications, as someone could even invoke
+          <code class="inline-code">System.exit()</code> using this model if the method
+          exposure level is weakened to <code class="inline-code">EXPOSE_ALL</code>.</p>
+
+          <p>Note that in above examples, we always use the default
+          <code class="inline-code">BeansWrapper</code> instance. This is a convenient
+          static wrapper instance that you can use in most cases. You are also
+          free to create your own <code class="inline-code">BeansWrapper</code> instances
+          and use them instead especially when you want to modify some of its
+          characteristics (like model caching, security level, or the null
+          model representation).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="jdk_15_enums">Accessing enums</h2>
+
+
+          
+
+          <p>The <code class="inline-code">TemplateHashModel</code> returned from
+          <code class="inline-code">BeansWrapper.getEnumModels()</code> can be used to
+          create hash models for accessing values of enums on JRE 1.5 or
+          later. (An attempt to invoke this method on an earlier JRE will
+          result in an
+          <code class="inline-code">UnsupportedOperationException</code>.)</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">BeansWrapper wrapper = BeansWrapper.getDefaultInstance();
+TemplateHashModel enumModels = wrapper.getEnumModels();
+TemplateHashModel roundingModeEnums =
+    (TemplateHashModel) enumModels.get(&quot;java.math.RoundingMode&quot;);</pre></div>
+
+          <p>And you will get a template hash model that exposes all enum
+          values of the <code class="inline-code">java.math.RoundingMode</code> class as
+          hash keys. Suppose that you put the previous model in your root
+          model:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">root.put(&quot;RoundingMode&quot;, roundingModeEnums);</pre></div>
+
+          <p>From now on, you can use <code class="inline-code">RoundingMode.UP</code> as
+          an expression to reference the <code class="inline-code">UP</code> enum value in
+          your template.</p>
+
+          <p>You can even give the template authors complete freedom over
+          which enum classes they use by placing the enum models hash into
+          your template root model with</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">root.put(&quot;enums&quot;, BeansWrapper.getDefaultInstance().getEnumModels());</pre></div>
+
+          <p>This object exposes any enum class if it&#39;s used as a hash with
+          class name as the key. You can then use expression like
+          <code class="inline-code">${enums[&quot;java.math.RoundingMode&quot;].UP}</code> in your
+          template.</p>
+
+          <p>The exposed enum values can be used as scalars (they&#39;ll
+          delegate to their <code class="inline-code">toString()</code> method), and can be
+          used in equality and inequality comparisons as well.</p>
+
+          <p>Note that in above examples, we always use the default
+          <code class="inline-code">BeansWrapper</code> instance. This is a convenient
+          static wrapper instance that you can use in most cases. You are also
+          free to create your own <code class="inline-code">BeansWrapper</code> instances
+          and use them instead especially when you want to modify some of its
+          characteristics (like model caching, security level, or the null
+          model representation).</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_multithreading.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_logging.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[44/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui.html b/builds/2.3.26-nightly/dgui.html
new file mode 100644
index 0000000..2a8f38d
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-part">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Template Author&#39;s Guide - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Template Author&#39;s Guide">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_templa
 te_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="index.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-part" id="dgui" itemprop="headline">Template Author&#39;s Guide</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="dgui_quickstart.html" data-menu-target="dgui_quickstart">Getting Started</a><ul><li><a class="page-menu-link" href="dgui_quickstart_basics.html" data-menu-target="dgui_quickstart_basics">Template + data-model = output</a></li><li><a class="page-menu-link" href="dgui_quickstart_datamodel.html" data-menu-target="dgui_quickstart_datamodel">The data-model at a glance</a></li><li><a class="page-menu-link" href="dgui_quickstart_template.html" data-menu-target="dgui_quickstart_template">The template at a glance</a></li></ul></li><li><a class="page-menu-link" href="dgui_datamodel.html" data-menu-target="dgui_datamodel">Values, Types</a><ul><li><a class="page-menu-link" href="dgui_datamodel_basics.html" data-menu-target="dgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html" data-menu-target="dgui_datamodel_types">The types</a></li></ul></li><li><a class="page-menu-link" href="dgui_template.html" data-menu-
 target="dgui_template">The Template</a><ul><li><a class="page-menu-link" href="dgui_template_overallstructure.html" data-menu-target="dgui_template_overallstructure">Overall structure</a></li><li><a class="page-menu-link" href="dgui_template_directives.html" data-menu-target="dgui_template_directives">Directives</a></li><li><a class="page-menu-link" href="dgui_template_exp.html" data-menu-target="dgui_template_exp">Expressions</a></li><li><a class="page-menu-link" href="dgui_template_valueinsertion.html" data-menu-target="dgui_template_valueinsertion">Interpolations</a></li></ul></li><li><a class="page-menu-link" href="dgui_misc.html" data-menu-target="dgui_misc">Miscellaneous</a><ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html" data-menu-target="dgui_misc_userdefdir">Defining your own directives</a></li><li><a class="page-menu-link" href="dgui_misc_var.html" data-menu-target="dgui_misc_var">Defining variables in the template</a></li><li><a class="page-menu-link" hr
 ef="dgui_misc_namespace.html" data-menu-target="dgui_misc_namespace">Namespaces</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html" data-menu-target="dgui_misc_autoescaping">Auto-escaping and output formats</a></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html" data-menu-target="dgui_misc_whitespace">White-space handling</a></li><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html" data-menu-target="dgui_misc_alternativesyntax">Alternative (square bracket) syntax</a></li></ul></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="index.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_quickstart.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_datamodel.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_datamodel.html b/builds/2.3.26-nightly/dgui_datamodel.html
new file mode 100644
index 0000000..ba980e9
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_datamodel.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Values, Types - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Values, Types">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_datamodel.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_datamodel.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_datamodel.html"><span itemprop="name">Values, Types</span></a></li></ul><div class="book
 marks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Values, Types"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_quickstart_template.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_datamodel_basics.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="dgui_datamodel" itemprop="headline">Values, Types</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="dgui_datamodel_basics.html" data-menu-target="dgui_datamodel_basics">Basics</a></li><li><a class="page-menu-link" href="dgui_datamodel_types.html" data-menu-target="dgui_datamodel_types">The types</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_quickstart_template.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_datamodel_basics.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_datamodel_basics.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_datamodel_basics.html b/builds/2.3.26-nightly/dgui_datamodel_basics.html
new file mode 100644
index 0000000..70a9a49
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_datamodel_basics.html
@@ -0,0 +1,230 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Basics - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Basics">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_datamodel_basics.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_datamodel_basics.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_datamodel.html"><span itemprop="name">Values, Types</span></a></li><li class="step-3" it
 emprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_datamodel_basics.html"><span itemprop="name">Basics</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Values, Types","Basics"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_datamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_datamodel_types.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_datamodel_basics" itemprop="headline">Basics</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#topic.value" data-menu-target="topic.value">What is a value?</a></li><li><a class="page-menu-link" href="#autoid_9" data-menu-target="autoid_9">What is type?</a></li><li><a class="page-menu-link" href="#autoid_10" data-menu-target="autoid_10">The data-model is a hash</a></li></ul> </div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>It is assumed that you have already read the <a href="dgui_quickstart.html">Getting Started</a> chapter.</p>
+          </div>
+<p>Understanding the concept of values and types is crucial for the
+        understanding of data-models. However, the concept of values and types
+        is not confined to data-models, as you will see.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="topic.value">What is a value?</h2>
+
+
+          
+
+          <p><span class="marked-for-programmers">Real programmers can safely skip
+          this section.</span></p>
+
+          <p>Examples of <em>values</em> as you know the term
+          from the everyday math are 16, 0.5, and so on, i.e. numbers. In the
+          case of computer languages the value term has a wider meaning, as a
+          value needn&#39;t be a number. For example, take this data-model:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-data-model"><a name="example.stdDataModel"></a>(root)
+ |
+ +- user = &quot;Big Joe&quot;
+ |
+ +- today = Jul 6, 2007
+ |
+ +- todayHoliday = false
+ |
+ +- lotteryNumbers
+ |   |
+ |   +- (1st) = 20
+ |   |
+ |   +- (2st) = 14
+ |   |
+ |   +- (3rd) = 42
+ |   |
+ |   +- (4th) = 8
+ |   |
+ |   +- (5th) = 15
+ |
+ +- cargo
+     |
+     +- name = &quot;coal&quot;
+     |
+     +- weight = 40</pre></div>
+
+          <p>We say that the <em>value</em> of the the
+          <code class="inline-code">user</code> variable is &quot;Big Joe&quot; (a string), the
+          <em>value</em> of <code class="inline-code">today</code> is Jul 6,
+          2007 (a date), the <em>value</em> of
+          <code class="inline-code">todayHoliday</code> is false (a boolean, ie. a yes/no
+          thing). The <em>value</em> of
+          <code class="inline-code">lotteryNumbers</code> is the sequence that contains 20,
+          14, 42, 8, 15. Surely <code class="inline-code">lotteryNumbers</code> is multiple
+          values in the sense that it <em>contains</em> multiple
+          values (for example, the 2nd item in it is a the
+          <em>value</em> 14), but still,
+          <code class="inline-code">lotteryNumbers</code> itself is a single value. It&#39;s
+          like a box that contains many other items; the whole box can be seen
+          as a single item. Last not least we also have the
+          <em>value</em> of <code class="inline-code">cargo</code>, which is a
+          hash (a box-like thing again).So, a value is something that can be
+          stored in a variable (e.g., in <code class="inline-code">user</code> or
+          <code class="inline-code">cargo</code> or <code class="inline-code">cargo.name</code>). But a
+          value need not be stored in a variable to be called a value, for
+          example we have the value 100 here:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if cargo.weight &lt; <strong>100</strong>&gt;Light cargo&lt;/#if&gt;</pre></div>
+
+          <p>The temporaly result of a calculations are also called values,
+          like 20 and 120 when this template is executed (it will print
+          120):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${cargo.weight / 2 + 100}</pre></div>
+
+          <p>Explanation for this last: As the result of dividing the two
+          values, 40 (the weight of the cargo) and 2, a new value 20 is
+          created. Then 100 is added to it, so the value 120 is created. Then
+          120 is printed
+          (<code class="inline-code">${<em class="code-color">...</em>}</code>), and the
+          template execution goes on and all these values gone.</p>
+
+          <p>Certainly now you feel what the value term means.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_9">What is type?</h2>
+
+
+          <p>Values have an important aspect, their type. For example the
+          type of the value of the <code class="inline-code">user</code> variable is string,
+          and the type of the value of the <code class="inline-code">lotteryNumbers</code>
+          variable is sequence. The type of a value is important because it
+          determines to a large extent how and where you can use the value.
+          Like <code class="inline-code">${user / 2}</code> is an error, but
+          <code class="inline-code">${cargo.weight / 2}</code> works and prints 20, since
+          division only does make sense for a number, but not for a string.
+          Or, using dot like in <code class="inline-code">cargo.name</code> does make sense
+          only if <code class="inline-code">cargo</code> is a hash. Or, you can list with
+          <code class="inline-code">&lt;#list <em class="code-color">...</em>&gt;</code>
+          sequences only. Or, the condition of <code class="inline-code">&lt;#if
+          ...&gt;</code> must be a boolean. And so on.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>A little terminology... Saying &quot;a boolean&quot; or &quot;a boolean
+            value&quot; or &quot;a value of type boolean&quot; are all the same.</p>
+            </div>
+
+
+          <p><a name="topic.multitype"></a>A value can have multiple types at the same time,
+          although it&#39;s rarely utilized. For example in the data-model below
+          <code class="inline-code">mouse</code> is both a string and a hash:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-data-model">(root)
+ |
+ +- mouse = &quot;Yerri&quot;
+     |
+     +- age = 12
+     |
+     +- color = &quot;brown&quot;</pre></div>
+
+          <p>If you merge this template with the above data-model:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${mouse}       &lt;#-- uses mouse as a string --&gt;
+${mouse.age}   &lt;#-- uses mouse as a hash --&gt;
+${mouse.color} &lt;#-- uses mouse as a hash --&gt;</pre></div>
+
+          <p>the output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Yerri
+12
+brown</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_10">The data-model is a hash</h2>
+
+
+          <p>Looking at the various data-model examples you may already
+          realized: the thing marked as &quot;(root)&quot; is just a value of type hash.
+          When you write something like <code class="inline-code">user</code>, that means
+          that you want the &quot;user&quot; variable stored in the root hash. Like if
+          you were writing <code class="inline-code">root.user</code>, except that there is
+          no variable called &quot;root&quot; so that wouldn&#39;t work.</p>
+
+          <p>Some may get confused by the fact that our example data-model,
+          that is, the root hash, contains further hashes and sequences
+          (<code class="inline-code">lotteryNumbers</code> and <code class="inline-code">cargo</code>).
+          There is nothing special in that. A hash contains other variables,
+          and those variables have a value, which can be a string, a number,
+          etc., and of course it can be a hash or sequence as well. Because,
+          as it was explained earlier, a sequence or a hash is just a value,
+          like a string or a number is.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_datamodel.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_datamodel_types.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_datamodel_types.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_datamodel_types.html b/builds/2.3.26-nightly/dgui_datamodel_types.html
new file mode 100644
index 0000000..348a837
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_datamodel_types.html
@@ -0,0 +1,512 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The types - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The types">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_datamodel_types.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_datamodel_types.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_datamodel.html"><span itemprop="name">Values, Types</span></a></li><li class="step-3" it
 emprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_datamodel_types.html"><span itemprop="name">The types</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Values, Types","The types"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_datamodel_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_datamodel_types" itemprop="headline">The types</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#dgui_datamodel_scalar" data-menu-target="dgui_datamodel_scalar">Scalars</a></li><li><a class="page-menu-link" href="#dgui_datamodel_container" data-menu-target="dgui_datamodel_container">Containers</a></li><li><a class="page-menu-link" href="#autoid_11" data-menu-target="autoid_11">Subroutines</a><ul><li><a class="page-menu-link" href="#dgui_datamodel_method" data-menu-target="dgui_datamodel_method">Methods and functions</a></li><li><a class="page-menu-link" href="#dgui_datamodel_userdefdir" data-menu-target="dgui_datamodel_userdefdir">User-defined directives</a></li><li><a class="page-menu-link" href="#autoid_12" data-menu-target="autoid_12">Function/method versus user-defined directive</a></li></ul></li><li><a class="page-menu-link" href="#autoid_13" data-menu-target="autoid_13">Miscellaneous</a><ul><li><a class="page-menu-link" href="#dgui_datamodel_node" data-menu-target="dgui_datamodel_node">Nodes</a></li><li><a class="page-menu-link" hr
 ef="#dgui_datamodel_markupoutput" data-menu-target="dgui_datamodel_markupoutput">Markup output</a></li></ul></li></ul> </div><p>The suppored types are:</p><ul>
+          <li>
+            <a href="#dgui_datamodel_scalar">Scalars:</a>
+
+            <ul>
+              <li>
+                String
+              </li>
+
+              <li>
+                Number
+              </li>
+
+              <li>
+                Boolean
+              </li>
+
+              <li>
+                Date-like (date, time, or date-time)
+              </li>
+            </ul>
+          </li>
+
+          <li>
+            <a href="#dgui_datamodel_container">Containers:</a>
+
+            <ul>
+              <li>
+                Hash
+              </li>
+
+              <li>
+                Sequence
+              </li>
+
+              <li>
+                Collection
+              </li>
+            </ul>
+          </li>
+
+          <li>
+            Subroutines:
+
+            <ul>
+              <li>
+                <a href="#dgui_datamodel_method">Methods and
+                functions</a>
+              </li>
+
+              <li>
+                <a href="#dgui_datamodel_userdefdir">User-defined
+                directives</a>
+              </li>
+            </ul>
+          </li>
+
+          <li>
+            Miscellaneous/seldom used:
+
+            <ul>
+              <li>
+                <a href="#dgui_datamodel_node">Node</a>
+              </li>
+
+              <li>
+                <a href="#dgui_datamodel_markupoutput">Markup
+                output</a>
+              </li>
+            </ul>
+          </li>
+        </ul>
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_datamodel_scalar">Scalars</h2>
+
+
+          <a name="topic.designer.scalarVariable"></a>
+
+          <p>These are the basic, simple kind of values. They can
+          be:</p>
+
+          <ul>
+            <li>
+              <p>String: It is simple text, e.g., the name of a
+              product.</p>
+
+              <p>If you want to give a string value directly in the
+              template, rather than use a variable that comes from the data
+              model, you write the text between quotation marks, e.g.,
+              <code class="inline-code">&quot;green mouse&quot;</code> or <code class="inline-code">&#39;green
+              mouse&#39;</code>. (More details regarding the syntax can be
+              found <a href="dgui_template_exp.html#dgui_template_exp_direct_string">later</a>.)</p>
+            </li>
+
+            <li>
+              <p>Number: For example the price of a product.
+              <span class="marked-for-programmers">Whole numbers and non-whole
+              numbers are not distinguished; there is only a single number
+              type. So for example 3/2 will be always 1.5, and never 1. Just
+              like if you are using a calculator.</span></p>
+
+              <p>If you want to give a numerical value directly in the
+              template, then you write for example: <code class="inline-code">150</code> or
+              <code class="inline-code">-90.05</code> or <code class="inline-code">0.001</code>. (More
+              details regarding the syntax can be found <a href="dgui_template_exp.html#dgui_template_exp_direct_number">later</a>.)</p>
+            </li>
+
+            <li>
+              <p>Boolean: A boolean value represents a logical true
+              or false (yes or no). For example, if a the visitor has been
+              logged in or not. Typically you use booleans as the condition of
+              the <code class="inline-code">if</code> directive, like <code class="inline-code">&lt;#if
+              loggedIn
+              &gt;<em class="code-color">...</em>&lt;/#if&gt;</code> or
+              <code class="inline-code">&lt;#if price ==
+              0&gt;<em class="code-color">...</em>&lt;/#if&gt;</code>; in
+              the last case the result of the <code class="inline-code">price == 0</code>
+              part is a boolean value.</p>
+
+              <p>In the templates you can directly specify a boolean with
+              the reserved words <code class="inline-code">true</code> and
+              <code class="inline-code">false</code>.</p>
+            </li>
+
+            <li>
+              <p>Date: A date-like value stores date/time related
+              data. It has three variations:</p>
+
+              <ul>
+                <li>
+                  <p>Date: Like April 4, 2003. Day precision, no time of
+                  day part.</p>
+                </li>
+
+                <li>
+                  <p>Time: Like 10:19:18 PM. Millisecond precision, no date
+                  part.</p>
+                </li>
+
+                <li>
+                  <p>Date-time (sometimes called &quot;time stamp&quot;) as April 4,
+                  2003 10:19:18 PM. Both date and time, with millisecond
+                  precision.</p>
+                </li>
+              </ul>
+
+              <p>Unfortunately, because of the limitations of the Java
+              platform, FreeMarker sometimes can&#39;t decide which parts of the
+              date are in use (i.e., if it is date-time, a date or a time).
+              The solution for this problem is an advanced topic that will be
+              discussed <a href="ref_builtins_date.html#ref_builtin_date_datetype">later</a>.</p>
+
+              <p>It is possible to define date-like values directly in
+              templates, but this is an advanced topic that will be explained
+              <a href="ref_builtins_string.html#ref_builtin_string_date">later</a>.</p>
+            </li>
+          </ul>
+
+          <p>Bear in mind that FreeMarker distinguishes strings from
+          numbers, booleans and date-like values. For example, while the
+          string <code class="inline-code">&quot;150&quot;</code> looks like the number
+          <code class="inline-code">150</code>, a string is still just arbitrary sequence of
+          characters, and you can&#39;t do arithmetic with it, can&#39;t compare it
+          with another number, etc.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_datamodel_container">Containers</h2>
+
+
+          
+
+          <p>These are the values whose purpose is to contain other
+          variables; they are just containers. The contained variables are
+          often referred as <em>sub variables</em>. The container
+          types are:</p>
+
+          <ul>
+            <li>
+              <p>Hash: Associates a unique lookup name with each of
+              its sub variables. The name is an unrestricted string. A hash
+              <em>doesn&#39;t define an ordering</em> for the sub
+              variables in it. That is, there is no such thing as the first
+              subvariable, and the second subvariable, etc.; the variables are
+              just accessed by name.</p>
+            </li>
+
+            <li>
+              <p>Sequence: Associates an integer number with each
+              of its sub variables. The first subvariable is associated with
+              0, the second with 1, the third to 2, and so on; the sub
+              variables are ordered. These numbers are often called the
+              <em>indexes</em> of the sub variables. Sequences are
+              usually dense, i.e., all indexes up to the index of the last
+              subvariable have an associated subvariable, but it&#39;s not
+              strictly necessary. The type of the subvariable values need not
+              be the same.</p>
+            </li>
+
+            <li>
+              <p>Collection: A collection, from the viewpoint of
+              the template author, is a restricted sequence. You cannot access
+              its size or retrieve its sub variables by index, but they can be
+              still listed with the <a href="ref_directive_list.html#ref.directive.list"><code>list</code>
+              directive</a>.</p>
+            </li>
+          </ul>
+
+          <p>Note that since <a href="dgui_datamodel_basics.html#topic.multitype">a value can
+          have multiple types</a>, it is possible for a value to be both a
+          hash and a sequence, in which case it would support index-based
+          access as well as access by lookup name. However, typically a
+          container will be either a hash or a sequence, not both.</p>
+
+          <p>As the value of the variables stored in hashes and sequences
+          (and collections) can be anything, it can be a hash or sequence (or
+          collection) as well. This way you can build arbitrarily deep
+          structures.</p>
+
+          <p>The data-model itself (or better said the root of it) is a
+          hash.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_11">Subroutines</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_datamodel_method">Methods and functions</h3>
+
+
+            <a name="topic.designer.methodVariable"></a>
+
+            
+
+            <p>A value that is a method or a function is used to calculate
+            another value, influenced by the parameters you give to it.</p>
+
+            <p><span class="marked-for-programmers">For programmer types:
+            Methods/functions are first-class values, just like in functional
+            programming languages. This means that functions/methods can be
+            the parameters or return values of other functions/methods, you
+            can assign them to variables, and so on.</span></p>
+
+            <p>Suppose that programmers have put the method variable
+            <code class="inline-code">avg</code> in the data-model that can be used to
+            calculate the average of numbers. If you give the 3 and 5 as
+            parameters when you access <code class="inline-code">avg</code>, then you get
+            the value 4.</p>
+
+            <p>The usage of methods will be explained <a href="dgui_template_exp.html#dgui_template_exp_methodcall">later</a>, but perhaps
+            this example helps to understand what methods are:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">The average of 3 and 5 is: ${avg(3, 5)}
+The average of 6 and 10 and 20 is: ${avg(6, 10, 20)}
+The average of the price of a python and an elephant is:
+${avg(animals.python.price, animals.elephant.price)}</pre></div>
+
+            <p>this will output:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">The average of 3 and 5 is: 4
+The average of 6 and 10 and 20 is: 12
+The average of the price of a python and an elephant is:
+4999.5</pre></div>
+
+            <p>What is the difference between a method and a function? As
+            far as the template author is concerned, nothing. Well not really
+            nothing, as methods typically come from the data-model (<span class="marked-for-programmers">as they reflect the methods of Java
+            objects</span>), and functions are defined in templates (with
+            the <a href="ref_directive_function.html#ref.directive.function"><code>function</code>
+            directive</a> -- an advanced topic), but both can be used on
+            the same way.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_datamodel_userdefdir">User-defined directives</h3>
+
+
+            
+
+            
+
+            
+
+            <p>A value of this type can be used as user-defined directive
+            (with other words, as FreeMarker tag). An user-defined directive
+            is a subroutine, something like a little reusable template
+            fragment. But this is an advanced topic that will be explained
+            <a href="dgui_misc_userdefdir.html">later</a> in its own
+            chapter.</p>
+
+            <p><span class="marked-for-programmers">For programmer types:
+            user-defined directives (such as macros), are first-class values
+            too, just like functions/methods are.</span></p>
+
+            <p>Just to get an idea about user-defined directives (so just
+            ignore this if you won&#39;t understand), assume we have a variable,
+            <code class="inline-code">box</code>, whose value is a user-defined directive
+            that prints some kind of fancy HTML message box with a title bar
+            and a message in it. The <code class="inline-code">box</code> variable could be
+            used in the template like this (for example):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@<strong>box</strong> title=&quot;Attention!&quot;&gt;
+  Too much copy-pasting may leads to
+  maintenance headaches.
+&lt;/@<strong>box</strong>&gt;</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_12">Function/method versus user-defined directive</h3>
+
+
+            <p>This is for advanced users again (so ignore it if you don&#39;t
+            understand). It&#39;s a frequent dilemma if you should use a
+            function/method or an user-defined directive to implement
+            something. The rule of thumb is: Implement the facility as
+            user-defined directive instead of as function/method if:</p>
+
+            <ul>
+              <li>
+                <p>... the purpose of it is generating a piece of the
+                output that&#39;s not just a single value, and typically involves
+                markup. The template language was designed for printing to the
+                output directly, piece by piece, as it goes though
+                <code class="inline-code">list</code> loops, <code class="inline-code">if</code>-s, etc.
+                Building up a string value in a variable then returning it is
+                much less convenient.</p>
+              </li>
+
+              <li>
+                <p>... it&#39;s the side-effect that is important and not the
+                return value. For example, a directive whose purpose is to add
+                an entry to the server log is like that. (In fact you can&#39;t
+                have a return value for a user-defined directive, but some
+                kind of feedback is still possible by setting non-local
+                variables.)</p>
+              </li>
+
+              <li>
+                <p>... it will do flow control on the caller side (like for
+                example <code class="inline-code">list</code> or <code class="inline-code">if</code>
+                directives do). You just can&#39;t do that with a
+                function/method.</p>
+              </li>
+
+              <li>
+                <p>... you are using legacy escaping via the
+                <code class="inline-code">escape</code> directive (instead of <a href="dgui_misc_autoescaping.html">auto-escaping</a>), and
+                the result contains markup. When you print the result with
+                <code class="inline-code">${<em class="code-color">...</em>}</code>, the
+                markup will be escaped and thus ruined, but if it&#39;s printed by
+                a directive call
+                (<code class="inline-code">&lt;@<em class="code-color">...</em>&gt;</code>),
+                it won&#39;t be.</p>
+              </li>
+            </ul>
+
+            <p>The Java methods of FreeMarker-unaware Java objects are
+            normally visible as methods in templates, regardless of the nature
+            of the Java method; you have no choice there.</p>
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_13">Miscellaneous</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_datamodel_node">Nodes</h3>
+
+
+            
+
+            <p>Node variables represent a node in a tree structure, and are
+            used mostly with <a href="xgui.html">XML processing</a>, which
+            is an advanced, and specialized topic.</p>
+
+            <p>Still, a quick overview <em>for advanced
+            users</em>: A node is similar to a sequence that stores
+            other nodes, which are often referred as the children nodes. A
+            node stores a reference to its container node, which is often
+            referred as the parent node. The main point of being a node is the
+            topological information; other data must be stored by utilizing
+            that a value can have multiple types. Like, a value may be both a
+            node and a number, in which case it can store a number as the
+            &quot;pay-load&quot;. Apart from the topological information, a node can
+            store some metainformation as well: a node name, a node type
+            (string), and a node namespace (string). For example, if the node
+            symbolizes a <code class="inline-code">h1</code> element in an XHTML document,
+            then its name could be <code class="inline-code">&quot;h1&quot;</code>, it&#39;s node type
+            could be <code class="inline-code">&quot;element&quot;</code>, and it&#39;s namespace could be
+            <code class="inline-code">&quot;http://www.w3.org/1999/xhtml&quot;</code>. But it&#39;s up to
+            the designer of the data-model if what meaning these
+            metainformations have, and if they are used at all. The way of
+            retrieving the topological and metainformations is described <a href="ref_builtins_node.html">in a later chapter</a> (that you
+            don&#39;t have to understand at this point).</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_datamodel_markupoutput">Markup output</h3>
+
+
+            
+
+            <p>This type is related to <a href="dgui_misc_autoescaping.html">auto-escaping mechanism</a>
+            introduced FreeMarker 2.3.24; you can <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">read about this type
+            there</a>. But in short, this is a value that stores text
+            that&#39;s already in the output markup format (like HTML, XML, RTF,
+            etc.), and hence must not be auto-escaped.</p>
+
+            <p>Values of this type are usually produced inside the
+            templates (like with <a href="ref_builtins_string.html#ref_builtin_no_esc"><code>no_esc</code>
+            built-in</a> or <a href="ref_directive_assign.html">output
+            capturing assignments</a>), but can also be part of the
+            data-model. Such values in the data-model are useful for example
+            if you have message resources that sometimes contain the message
+            in HTML format, rather than in plain text. If the data-model uses
+            HTML markup output values for those messages instead of strings,
+            then the template author need not know which messages contain HTML
+            and which plain text, as double escaping will be avoided
+            automatically when the message is inserted with
+            <code class="inline-code">${<em class="code-color">...</em>}</code>.</p>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_datamodel_basics.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_misc.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_misc.html b/builds/2.3.26-nightly/dgui_misc.html
new file mode 100644
index 0000000..5964dab
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_misc.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Miscellaneous - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Miscellaneous">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_misc.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_misc.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li></ul><div class="bookmarks
 " title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Miscellaneous"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_template_valueinsertion.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_misc_userdefdir.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="dgui_misc" itemprop="headline">Miscellaneous</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="dgui_misc_userdefdir.html" data-menu-target="dgui_misc_userdefdir">Defining your own directives</a></li><li><a class="page-menu-link" href="dgui_misc_var.html" data-menu-target="dgui_misc_var">Defining variables in the template</a></li><li><a class="page-menu-link" href="dgui_misc_namespace.html" data-menu-target="dgui_misc_namespace">Namespaces</a></li><li><a class="page-menu-link" href="dgui_misc_autoescaping.html" data-menu-target="dgui_misc_autoescaping">Auto-escaping and output formats</a></li><li><a class="page-menu-link" href="dgui_misc_whitespace.html" data-menu-target="dgui_misc_whitespace">White-space handling</a></li><li><a class="page-menu-link" href="dgui_misc_alternativesyntax.html" data-menu-target="dgui_misc_alternativesyntax">Alternative (square bracket) syntax</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_template_valueinsertion.html"><span>Previo
 us</span></a><a class="paging-arrow next" href="dgui_misc_userdefdir.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_misc_alternativesyntax.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_misc_alternativesyntax.html b/builds/2.3.26-nightly/dgui_misc_alternativesyntax.html
new file mode 100644
index 0000000..1ed87aa
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_misc_alternativesyntax.html
@@ -0,0 +1,119 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Alternative (square bracket) syntax - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Alternative (square bracket) syntax">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_misc_alternativesyntax.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_misc_alternativesyntax.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itempro
 p="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_misc_alternativesyntax.html"><span itemprop="name">Alternative (square bracket) syntax</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","Miscellaneous","Alternative (square bracket) syntax"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_misc_whitespace.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_misc_alternativesyntax" itemprop="headline">Alternative (square bracket) syntax</h1>
+</div></div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>This feature exists since FreeMarker 2.3.4.</p>
+          </div>
+<p>FreeMarker supports an alternative syntax, where
+        <code class="inline-code">[</code> and <code class="inline-code">]</code> is used instead of
+        <code class="inline-code">&lt;</code> and <code class="inline-code">&gt;</code> in FreeMarker
+        directives and comments, for example:</p><ul>
+          <li>
+            Calling predefined directive: <code class="inline-code">[#list animals as
+            animal]<em class="code-color">...</em>[/#list]</code>
+          </li>
+
+          <li>
+            Calling user-defined directive: <code class="inline-code">[@myMacro
+            /]</code>
+          </li>
+
+          <li>
+            Comment: <code class="inline-code">[#-- the comment --]</code>
+          </li>
+        </ul><p>To use the alternative syntax instead of the default one, start
+        the template with the <a href="ref_directive_ftl.html"><code>ftl</code> directive</a>
+        using the alternative syntax. If you don&#39;t know what is the
+        <code class="inline-code">ftl</code> directive, just start the template with
+        <code class="inline-code">[#ftl]</code>, and remember that it should be the very
+        first thing in the file (except that <a href="gloss.html#gloss.whiteSpace">white-space</a> can precede it). For
+        example, this is how the last example of the <a href="dgui_quickstart_template.html">Getting Started</a> looks with
+        the alternative syntax (assuming it&#39;s a complete template, not just a
+        fragment):</p>
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>[#ftl]</strong>
+&lt;p&gt;We have these animals:
+&lt;table border=1&gt;
+  &lt;tr&gt;&lt;th&gt;Name&lt;th&gt;Price
+  <strong>[#list animals as animal]</strong>
+  &lt;tr&gt;
+    &lt;td&gt;
+      <strong>[#if animal.size == &quot;large&quot;]</strong>&lt;b&gt;<strong>[/#if]</strong>
+      ${animal.name}
+      <strong>[#if animal.size == &quot;large&quot;]</strong>&lt;/b&gt;<strong>[/#if]</strong>
+    &lt;td&gt;${animal.price} Euros
+  <strong>[/#list]</strong>
+&lt;/table&gt;</pre></div><p>The alternative (square bracket) and the default (angle bracket)
+        syntax are mutually exclusive within a template. That is, either the
+        whole template uses alternative syntax, or the whole template uses the
+        default syntax. If the template uses alternative syntax, things like
+        <code class="inline-code">&lt;#if <em class="code-color">...</em>&gt;</code> are
+        count as static text, not as FTL tags. Similarly, if the template uses
+        the default syntax, things like <code class="inline-code">[#if
+        <em class="code-color">...</em>]</code> count as static text, not as
+        FTL tags.</p><p>If you start the file with <code class="inline-code">[#ftl
+        <em class="code-color">...</em>]</code> (where the
+        <code class="inline-code"><em class="code-color">...</em></code> stands for the
+        optional parameters; of course <code class="inline-code">[#ftl]</code> works too)
+        the file will surely use the alternative (square bracket) syntax. If
+        you start the file with <code class="inline-code">&lt;#ftl
+        <em class="code-color">...</em>&gt;</code> the file will surely use
+        the normal (angle bracket) syntax. If there is no
+        <code class="inline-code">ftl</code> directive in the file, then the programmer
+        decides what the syntax will be by configuring FreeMarker <span class="marked-for-programmers">(programmers see
+        <code class="inline-code">Configuration.setTagSyntax(int)</code> in the API
+        javadocs)</span>. Most probably the programmers use the factory
+        default however. The factory default in 2.3.x is using the normal
+        syntax. The factory default in 2.4.x will be auto-detection, which
+        means that the first FreeMarker tag determines the syntax (it can be
+        anything, not just <code class="inline-code">ftl</code>).</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="dgui_misc_whitespace.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[24/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_type_independent.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_type_independent.html b/builds/2.3.26-nightly/ref_builtins_type_independent.html
new file mode 100644
index 0000000..43aef88
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_type_independent.html
@@ -0,0 +1,210 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Type independent built-ins - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Type independent built-ins">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_type_independent.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_type_independent.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_type_independent.html"><span itemprop="name">Type independent built-ins</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Type independent built-ins"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_loop_var.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_expert.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_type_independent" itemprop="headline">Type independent built-ins</h1>
+</div></div><p>These are the built-ins that don&#39;t care (much) about the type of
+        their left hand argument.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_switch">switch</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in exists since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>This is basically the in-line (expression) version of the
+          <a href="ref_directive_switch.html"><code>switch</code>-<code>case</code>-<code>default</code>
+          directives</a>. Its generic format is like
+          <code class="inline-code"><em class="code-color">matchedValue</em>?switch(<em class="code-color">case1</em>,
+          <em class="code-color">result1</em>,
+          <em class="code-color">case2</em>,
+          <em class="code-color">result2</em>, ...
+          <em class="code-color">caseN</em>,
+          <em class="code-color">resultN</em>,
+          <em class="code-color">defaultResult</em>)</code>, where
+          <code class="inline-code"><em class="code-color">defaultResult</em></code> can be
+          omitted. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;r&#39;, &#39;w&#39;, &#39;x&#39;, &#39;s&#39;] as flag&gt;
+  ${flag<strong>?switch(&#39;r&#39;, &#39;readable&#39;, &#39;w&#39; &#39;writable&#39;, &#39;x&#39;, &#39;executable&#39;, &#39;unknown flag: &#39; + flag)</strong>}
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  readable
+  writable
+  executable
+  unknown flag: s</pre></div>
+
+          <p>That is, <code class="inline-code">switch</code> will find the first
+          <code class="inline-code"><em class="code-color">case</em></code> parameter (left
+          to right) whose value equals to
+          <code class="inline-code"><em class="code-color">matchedValue</em></code>, then it
+          returns the value of the
+          <code class="inline-code"><em class="code-color">result</em></code> parameter
+          that&#39;s directly after that
+          <code class="inline-code"><em class="code-color">case</em></code> parameter. If it
+          doesn&#39;t find an equal
+          <code class="inline-code"><em class="code-color">case</em></code>, then it will
+          return the value of the
+          <code class="inline-code"><em class="code-color">defaultResult</em></code>, or if
+          there&#39;s no
+          <code class="inline-code"><em class="code-color">defaultResult</em></code>
+          parameter (i.e., if the number of parameters is even) then it stops
+          the template processing with error.</p>
+
+          <p>Further details:</p>
+
+          <ul>
+            <li>
+              <p>The comparison of
+              <code class="inline-code"><em class="code-color">matchedValue</em></code> to
+              the <code class="inline-code"><em class="code-color">case</em></code> parameter
+              value behaves exactly like <a href="dgui_template_exp.html#dgui_template_exp_comparison">the <code>==</code>
+              operator</a>. Hence it only compares scalars and only
+              same-type values. Thus, something like <code class="inline-code">x?switch(1,
+              &quot;r1&quot;, &quot;c2&quot;, &quot;r2&quot;)</code> doesn&#39;t make sense, as if
+              <code class="inline-code">x</code> is non-numerical then the first case will
+              cause error, and if <code class="inline-code">x</code> is numerical then the
+              second case will cause error (unless <code class="inline-code">x</code> is
+              <code class="inline-code">1</code>, as then we won&#39;t do further comparisons
+              after the first one).</p>
+            </li>
+
+            <li>
+              <p>Unlike with normal method calls, only those parameters of
+              <code class="inline-code">switch(<em class="code-color">...</em>)</code> are
+              evaluated that are indeed needed. For example, in
+              <code class="inline-code">two()?switch(c1(), r1(), c2(), r2(), c3(),
+              r3())</code>, if <code class="inline-code">two()</code> returns
+              <code class="inline-code">2</code>, <code class="inline-code">c1()</code> returns
+              <code class="inline-code">1</code>, and <code class="inline-code">c2()</code> returns
+              <code class="inline-code">2</code>, then only the following functions will be
+              called, and in this order: <code class="inline-code">m()</code>,
+              <code class="inline-code">c1()</code>, <code class="inline-code">c2()</code>,
+              <code class="inline-code">r2()</code>. (Naturally, arguments that aren&#39;t
+              evaluated can refer to missing variables without causing error.)
+              It&#39;s guaranteed that the
+              <code class="inline-code"><em class="code-color">case</em></code> parameter
+              expressions are evaluated left to right, and only until the
+              first match was found. It&#39;s also guaranteed that only the
+              <code class="inline-code"><em class="code-color">result</em></code> expression
+              that belongs to the first matching
+              <code class="inline-code"><em class="code-color">case</em></code> will be
+              evaluated. It&#39;s also guaranteed that the
+              <code class="inline-code"><em class="code-color">defaultResult</em></code>
+              expression will only be evaluated if there was no matching
+              <code class="inline-code"><em class="code-color">case</em></code>
+              parameter.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code"><em class="code-color">case</em></code>
+              parameter expressions need not be constant values, they can be
+              arbitrary complex expressions. Of course, the same goes for and
+              the <code class="inline-code"><em class="code-color">result</em></code>,
+              <code class="inline-code"><em class="code-color">defaultResult</em></code>, and
+              <code class="inline-code"><em class="code-color">matchedValue</em></code>.</p>
+            </li>
+
+            <li>
+              <p>There&#39;s no restriction regarding the type of the
+              <code class="inline-code"><em class="code-color">case</em></code> parameter
+              values, like they can be strings, or numbers, or dates, etc.
+              However, because of how the <code class="inline-code">==</code> operator
+              works, it doesn&#39;t make sense to use
+              <code class="inline-code"><em class="code-color">case</em></code> parameters of
+              different types inside the <em>same</em>
+              <code class="inline-code">switch</code> (see earlier why).</p>
+            </li>
+
+            <li>
+              <p>Unlike with the <a href="ref_directive_switch.html"><code>case</code>
+              directive</a>, there&#39;s no fall-through behavior there, that
+              is, there&#39;s no need for an equivalent of the
+              <code class="inline-code">break</code> directive.</p>
+            </li>
+          </ul>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>If you need to switch by a boolean value, you should use the
+            <a href="ref_builtins_boolean.html#ref_builtin_then"><code>then</code>
+            built-in</a> instead, like
+            <code class="inline-code"><em class="code-color">matchedBoolean</em>?then(<em class="code-color">whenTrue</em>,
+            <em class="code-color">whenFalse</em>)</code>.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>If you need to do arbitrary logical tests instead of simple
+            equality comparisons at the
+            <code class="inline-code"><em class="code-color">case</em></code> parameters, you
+            can do something like this (here we tests for ranges):
+            <code class="inline-code">true?switch(priority &lt;= 1, &quot;low&quot;, priority == 2,
+            &quot;medium&quot;, priority &gt;= 3, &quot;high&quot;)</code></p>
+            </div>
+
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_loop_var.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_expert.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_depr_builtin.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_depr_builtin.html b/builds/2.3.26-nightly/ref_depr_builtin.html
new file mode 100644
index 0000000..65311bb
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_depr_builtin.html
@@ -0,0 +1,105 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>List of deprecated built-ins - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="List of deprecated built-ins">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_depr_builtin.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_depr_builtin.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">Deprecated FTL constructs</span></a></li><li class=
 "step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_depr_builtin.html"><span itemprop="name">List of deprecated built-ins</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Deprecated FTL constructs","List of deprecated built-ins"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_depr_directive.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_oldmacro.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_depr_builtin" itemprop="headline">List of deprecated built-ins</h1>
+</div></div><p>The following built-ins are deprecated, but still
+        working:</p><ul>
+          <li>
+            <p> <code class="inline-code">default</code>: This was deprecated
+            with the introduction of the <a href="dgui_template_exp.html#dgui_template_exp_missing_default">default value
+            operator</a>.
+            <code class="inline-code"><em class="code-color">exp1</em>?default(<em class="code-color">exp2</em>)</code>
+            is near equivalent with
+            <code class="inline-code"><em class="code-color">exp1</em>!<em class="code-color">exp2</em></code>,
+            and
+            <code class="inline-code">(<em class="code-color">exp1</em>)?default(<em class="code-color">exp2</em>)</code>
+            is near equivalent with with
+            <code class="inline-code">(<em class="code-color">exp1</em>)!<em class="code-color">exp2</em></code>.
+            The only difference is that prior to FreeMarker 2.4, the
+            <code class="inline-code">default</code> built-in has always evaluated
+            <code class="inline-code"><em class="code-color">exp2</em></code>, while the
+            default value operator only evaluates it when the default value is
+            really needed. Starting from FreeMarker 2.4, however, the
+            <code class="inline-code">default</code> built-in was improved, and behaves
+            exactly like the default value operator.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">exists</code>: This was deprecated with
+            the introduction of the <a href="dgui_template_exp.html#dgui_template_exp_missing_test">missing value test
+            operator</a>.
+            <code class="inline-code"><em class="code-color">exp1</em>?exists</code> is
+            equivalent with
+            <code class="inline-code"><em class="code-color">exp1</em>??</code>, also
+            <code class="inline-code">(<em class="code-color">exp1</em>)?exists</code> is
+            equivalent with with
+            <code class="inline-code">(<em class="code-color">exp1</em>)??</code>.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">if_exists</code>: This was deprecated
+            with the introduction of the <a href="dgui_template_exp.html#dgui_template_exp_missing_default">default value
+            operator</a>.
+            <code class="inline-code"><em class="code-color">exp1</em>?if_exists</code> is
+            similar to <code class="inline-code"><em class="code-color">exp1</em>!</code>,
+            and <code class="inline-code">(<em class="code-color">exp1</em>)?if_exists</code>
+            is similar to
+            <code class="inline-code">(<em class="code-color">exp1</em>)!</code>. The
+            difference is that the default value with
+            <code class="inline-code">if_exists</code> is not only empty string, empty
+            sequence and empty hashs at the same time, but also boolean
+            <code class="inline-code">false</code> and a transform that does nothing and
+            ignores all parameters.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">web_safe</code>: the same as <a href="ref_builtins_string.html#ref_builtin_html"><code>html</code></a></p>
+          </li>
+        </ul><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_depr_directive.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_oldmacro.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_depr_directive.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_depr_directive.html b/builds/2.3.26-nightly/ref_depr_directive.html
new file mode 100644
index 0000000..ec19041
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_depr_directive.html
@@ -0,0 +1,91 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>List of deprecated directives - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="List of deprecated directives">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_depr_directive.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_depr_directive.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">Deprecated FTL constructs</span></a></li><li class=
 "step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_depr_directive.html"><span itemprop="name">List of deprecated directives</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Deprecated FTL constructs","List of deprecated directives"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_deprecated.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_builtin.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_depr_directive" itemprop="headline">List of deprecated directives</h1>
+</div></div><p>The following directives are deprecated, but still
+        working:</p><ul>
+          <li>
+            <p><a href="ref_depr_oldmacro.html#ref.directive.call"><code>call</code></a>: use
+            <a href="ref_directive_userDefined.html#ref.directive.userDefined">user-defined directive
+            call</a> instead</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">comment</code>: This is the old format of
+            <code class="inline-code">&lt;#--<em class="code-color">...</em>--&gt;</code>.
+            Anything between the <code class="inline-code">&lt;#comment&gt;</code> and
+            <code class="inline-code">&lt;/#comment&gt;</code> will be ignored.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">foreach</code>: it is a synonym of the
+            <code class="inline-code">list</code> directive with slightly different
+            parameter syntax. The syntax is <code class="inline-code">&lt;#foreach
+            <em class="code-color">item</em> in
+            <em class="code-color">sequence</em>&gt;</code> that is
+            equivalent with <code class="inline-code">&lt;#list
+            <em class="code-color">sequence</em> as
+            <em class="code-color">item</em>&gt;</code>.</p>
+          </li>
+
+          <li>
+            <p><a href="ref_depr_transform.html#ref.directive.transform"><code>transform</code></a>:
+            use <a href="ref_directive_userDefined.html#ref.directive.userDefined">user-defined
+            directive call</a> instead</p>
+          </li>
+        </ul><p>The following directives are not working anymore:</p><ul>
+          <li>
+            <p>Legacy <code class="inline-code">function</code>: Originally
+            <code class="inline-code">function</code> was used to define macros, and was
+            deprecated in favor of the <code class="inline-code">macro</code> directive. As
+            of FreeMarker 2.3, this directive is reintroduced with different
+            meaning: it is used to define methods.</p>
+          </li>
+        </ul><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_deprecated.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_builtin.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_depr_numerical_interpolation.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_depr_numerical_interpolation.html b/builds/2.3.26-nightly/ref_depr_numerical_interpolation.html
new file mode 100644
index 0000000..016213a
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_depr_numerical_interpolation.html
@@ -0,0 +1,135 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>#{...}: Numerical interpolation - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="#{...}: Numerical interpolation">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_depr_numerical_interpolation.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_depr_numerical_interpolation.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">Deprecated FTL constructs</span></a></li><li class=
 "step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_depr_numerical_interpolation.html"><span itemprop="name">#{...}: Numerical interpolation</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Deprecated FTL constructs","#{...}: Numerical interpolation"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_depr_oldsyntax.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_depr_numerical_interpolation" itemprop="headline">#{...}: Numerical interpolation</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_143" data-menu-target="autoid_143">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_144" data-menu-target="autoid_144">Description</a></li></ul> </div><p>Deprecated: Use the <a href="ref_directive_setting.html#ref.setting.number_format"><code>number_format</code>
+        setting</a> and <a href="ref_builtins_number.html#ref_builtin_string_for_number">the
+        <code>string</code> built-in</a> instead. For formatting for
+        computer audience (i.e., no localized formatting) use the <a href="ref_builtins_number.html#ref_builtin_c"><code>c</code> built-in</a> (like
+        <code class="inline-code"><em class="code-color">number</em>?c</code>).</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_143">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">#{<em class="code-color">expression</em>}</code>
+or
+<code class="inline-code">#{<em class="code-color">expression</em>; <em class="code-color">format</em>}</code></pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">expression</em></code>:
+              expression that can be evaluated as a number.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">format</em></code>:
+              optional format specifier.
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_144">Description</h2>
+
+
+          <p>The numerical interpolation is used to output a number value.
+          If the expression doesn&#39;t evaluate to a number, the evaluation ends
+          with an error.</p>
+
+          <p>The optional format specifier specifies the minimum and the
+          maximum number of displayed fractional digits using syntax
+          <code class="inline-code">m<em class="code-color">min</em>M<em class="code-color">max</em></code>.
+          For example, <code class="inline-code">m2M5</code> means &quot;at least two, at most
+          five fractional digits&quot;. The minimum or the maximum specifier part
+          can be omitted. If only the minimum is specified, the maximum is
+          equal to the minimum. If only maximum is specified, the minimum is
+          0.</p>
+
+          <p>The decimal separator character of the output is
+          internationalized (according the current locale setting), which
+          means that it is not necessarily a dot.</p>
+
+          <p>Unlike <code class="inline-code">${...}</code>, <code class="inline-code">#{...}</code>
+          ignores the <a href="ref_directive_setting.html#ref.setting.number_format"><code>number_format</code>
+          setting</a>. This is actually a backward compatibility quirk, but
+          it can be useful when you print numbers in situations like
+          <code class="inline-code">&lt;a href=&quot;quertyDatabase?id=#{id}&quot;&gt;</code>, where
+          you surely don&#39;t want grouping separators or something fancy like
+          that. However, starting from FreeMarker 2.3.3 rather use the <a href="ref_builtins_number.html#ref_builtin_c"><code>?c</code> built-in</a> for
+          this purpose, like <code class="inline-code">&lt;a
+          href=&quot;quertyDatabase?id=${id?c}&quot;&gt;</code>.</p>
+
+          <p>Examples. Assume that <code class="inline-code">x</code> is
+          <code class="inline-code">2.582</code> and <code class="inline-code">y</code> is
+          <code class="inline-code">4</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">           &lt;#-- If the language is US English the output is: --&gt;
+#{x}       &lt;#-- 2.582 --&gt;
+#{y}       &lt;#-- 4 --&gt;
+#{x; M2}   &lt;#-- 2.58 --&gt;
+#{y; M2}   &lt;#-- 4    --&gt;
+#{x; m1}   &lt;#-- 2.6 --&gt;
+#{y; m1}   &lt;#-- 4.0 --&gt;
+#{x; m1M2} &lt;#-- 2.58 --&gt;
+#{y; m1M2} &lt;#-- 4.0  --&gt;</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_depr_oldsyntax.html"><span>Previous</span></a><a class="paging-arrow next" href="xgui.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_depr_oldmacro.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_depr_oldmacro.html b/builds/2.3.26-nightly/ref_depr_oldmacro.html
new file mode 100644
index 0000000..990c1d2
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_depr_oldmacro.html
@@ -0,0 +1,198 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Old-style macro and call directives - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Old-style macro and call directives">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_depr_oldmacro.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_depr_oldmacro.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">Deprecated FTL constructs</span></a></li><li class=
 "step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_depr_oldmacro.html"><span itemprop="name">Old-style macro and call directives</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Deprecated FTL constructs","Old-style macro and call directives"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_depr_builtin.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_transform.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_depr_oldmacro" itemprop="headline">Old-style macro and call directives</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_139" data-menu-target="autoid_139">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_140" data-menu-target="autoid_140">Description</a></li></ul> </div><a name="ref.directive.oldmacro"></a><a name="ref.directive.call"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_139">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#macro <em class="code-color">name</em>(<em class="code-color">argName1</em>, <em class="code-color">argName2</em>, <em class="code-color">... argNameN</em>)&gt;
+  ...
+&lt;/#macro&gt;</code>
+
+<code class="inline-code">&lt;#call <em class="code-color">name</em>(<em class="code-color">argValue1</em>, <em class="code-color">argValue2</em>, <em class="code-color">... argValueN</em>)&gt;</code></pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">name</em></code>: name
+              of the macro (not expression)
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">argName1</em></code>,
+              <code class="inline-code"><em class="code-color">argName2</em></code>, ...etc.:
+              the name of the <a href="dgui_misc_var.html">local
+              variables</a> store the parameter values (not
+              expression)
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">argValue1</em></code>,
+              <code class="inline-code"><em class="code-color">argValue2</em></code>,
+              ...etc.: expressions, the value of the parameters
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_140">Description</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This is the documentation of FreeMarker 2.1 macro and macro
+            related directives. These are still working, but deprecated. You
+            may want to read the FreeMarker 2.2+ references: <a href="ref_directive_macro.html#ref.directive.macro">macro, return</a>, <a href="ref_directive_userDefined.html#ref.directive.userDefined">user-defined directive
+            call</a></p>
+            </div>
+
+
+          <p>A macro is a template fragment with an associated name. You
+          can use that named fragment on multiple places in your template, so
+          it helps in repetitive tasks. A macro can have parameters that
+          influence the output generated when you use the macro.</p>
+
+          <p>You define a macro with the <code class="inline-code">macro</code>
+          directive, and then you can use the defined macro in the whole
+          template. The <code class="inline-code">macro</code> directive itself does not
+          write anything to the output, it just defines the macro. For example
+          this will define a macro called <code class="inline-code">warning</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>&lt;#macro warning(message)&gt;</strong>
+  &lt;div align=center&gt;
+  &lt;table border=1 bgcolor=yellow width=&quot;80%&quot;&gt;&lt;tr&gt;&lt;td align=center&gt;
+    &lt;b&gt;Warning!&lt;/b&gt;
+    &lt;p&gt;${message}
+  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
+  &lt;/div&gt;
+<strong>&lt;/#macro&gt;</strong></pre></div>
+
+          <p>The macro definition body (the section between the macro
+          start-tag and end-tag) will be processed whenever you use the
+          <code class="inline-code">call</code> directive with the name of the macro. For
+          example this calls the macro called
+          <code class="inline-code">warning</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#call warning(&quot;Unplug the machine before opening the cover!&quot;)&gt;</pre></div>
+
+          <p>and will write this to the output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;div align=center&gt;
+  &lt;table border=1 bgcolor=yellow width=&quot;80%&quot;&gt;&lt;tr&gt;&lt;td align=center&gt;
+    &lt;b&gt;Warning!&lt;/b&gt;
+    &lt;p&gt;Unplug the machine before opening the cover!
+  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
+  &lt;/div&gt;
+  </pre></div>
+
+          <p>The parameters passed in as parameters to the
+          <code class="inline-code">call</code> directive will be accessible in the macro
+          definition body as <a href="dgui_misc_var.html">local
+          variables</a>.</p>
+
+          <p>When you call a macro, you must specify the same number of
+          parameters as were specified in the macro definition. For example if
+          this is the macro definition:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro test(a, b, c)&gt;Nothing...&lt;/#macro&gt;</pre></div>
+
+          <p>then these are valid macro calls:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#call test(1, 2, 3)&gt;
+&lt;#call test(&quot;one&quot;, 2 + x, [1234, 2341, 3412, 4123])&gt;</pre></div>
+
+          <p>If a macro has no parameters, then you can omit the
+          parentheses:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro test&gt;mooo&lt;/#macro&gt;
+&lt;#call test&gt;</pre></div>
+
+          <p>When you define a macro it will be available in the template,
+          where you have defined it only. But probably you want to use the
+          same macros in more templates. In this case you can store your macro
+          definitions in a common file, and then include that file in all
+          templates where you need those macros.</p>
+
+          <p>It&#39;s fine to call a macro that&#39;s defined further down in the
+          template <span class="marked-for-programmers">(since macros are defined at
+          parse time, not in process time)</span>. However, if the macro
+          definitions are inserted with <code class="inline-code">include</code> directive,
+          they will not be available until FreeMarker has executed the
+          <code class="inline-code">include</code> directive.</p>
+
+          <p>You can leave a macro definition body before the
+          <code class="inline-code">&lt;/#macro&gt;</code> tag with the
+          <code class="inline-code">return</code> directive.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_depr_builtin.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_transform.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_depr_oldsyntax.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_depr_oldsyntax.html b/builds/2.3.26-nightly/ref_depr_oldsyntax.html
new file mode 100644
index 0000000..680f2db
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_depr_oldsyntax.html
@@ -0,0 +1,131 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Old FTL syntax - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Old FTL syntax">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_depr_oldsyntax.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_depr_oldsyntax.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_deprecated.html"><span itemprop="name">Deprecated FTL constructs</span></a></li><li class=
 "step-3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_depr_oldsyntax.html"><span itemprop="name">Old FTL syntax</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Deprecated FTL constructs","Old FTL syntax"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_depr_transform.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_numerical_interpolation.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_depr_oldsyntax" itemprop="headline">Old FTL syntax</h1>
+</div></div><p>With the old FTL syntax the <code class="inline-code">#</code> was not
+        required (prior 2.1 not even allowed) in the FTL tags. For example,
+        you could write this:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;html&gt;
+&lt;head&gt;
+  &lt;title&gt;Welcome!&lt;/title&gt;
+&lt;/head&gt;
+&lt;body&gt;
+  &lt;h1&gt;Welcome ${user}!&lt;/h1&gt;
+  &lt;p&gt;We have there animals:
+  &lt;ul&gt;
+  <strong>&lt;list animals as animal&gt;</strong>
+    &lt;li&gt;${animal.name} for ${animal.price} Euros
+  <strong>&lt;/list&gt;</strong>
+  &lt;/ul&gt;
+  <strong>&lt;include &quot;common_footer.html&quot;&gt;</strong>
+&lt;/body&gt;
+&lt;/html&gt;</pre></div><p>While the <code class="inline-code">#</code>-less syntax was more natural for
+        HTML authors, it had too many drawbacks, so finally we have decided to
+        deprecate it. With the newer syntax (a.k.a "strict
+        syntax"), the <code class="inline-code">#</code> is strictly required. That
+        is, things like <code class="inline-code">&lt;include
+        &quot;common_footer.html&quot;&gt;</code> will go to the output as is, since
+        they are not considered as FTL tags. Note that user-defined directives
+        use <code class="inline-code">@</code> <em>instead of</em>
+        <code class="inline-code">#</code>.</p><p>However, to give users time to prepare for this change, in
+        FreeMarker 2.1 and 2.2 the usage of <code class="inline-code">#</code> is optional,
+        unless the programmer enables strict syntax mode in the FreeMarker
+        configuration by calling <code class="inline-code">setStrictSyntaxMode(true)</code>
+        on <code class="inline-code">Configuration</code>. In fact, we strongly recommend
+        this to programmers. Starting from some later release this setting
+        will be initially set to <code class="inline-code">true</code>. Also, you can
+        specify if you want to use strict syntax or old syntax in the template
+        files with the <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code>
+        directive</a>.</p><p>The advantages of "strict syntax" over the legacy
+        FTL syntax are:</p><ul>
+          <li>
+            <p>Since all
+            <code class="inline-code">&lt;#<em class="code-color">...</em>&gt;</code> and
+            <code class="inline-code">&lt;/#<em class="code-color">...</em>&gt;</code> are
+            reserved for FTL:</p>
+
+            <ul>
+              <li>
+                <p>We can introduce new directives without breaking
+                backward compatibility.</p>
+              </li>
+
+              <li>
+                <p>We can detect if you made a typo, i.e.
+                <code class="inline-code">&lt;#inculde
+                <em class="code-color">...</em>&gt;</code> is treated as
+                parse-time error, rather than silently treated as simple
+                text.</p>
+              </li>
+
+              <li>
+                <p>It is easier for third-party tools to handle templates
+                (e.g. do syntax highlighting), especially since they don&#39;t
+                have to know about the new directives introduced with new
+                releases.</p>
+              </li>
+
+              <li>
+                <p>Templates are more readable, since it is easier to spot
+                <code class="inline-code">&lt;#...&gt;</code> tags embedded into HTML or
+                other markup.</p>
+              </li>
+            </ul>
+          </li>
+
+          <li>
+            <p><code class="inline-code">&lt;#</code> and <code class="inline-code">&lt;/#</code> is
+            illegal XML (except in CDATA sections), and illegal in almost all
+            other SGML applications, so they can&#39;t interfere with the tags
+            used in the static text parts (e.g. if you have
+            <code class="inline-code">include</code> element in the generated XML).</p>
+          </li>
+        </ul><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_depr_transform.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_depr_numerical_interpolation.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[07/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_21.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_21.html b/builds/2.3.26-nightly/versions_2_3_21.html
new file mode 100644
index 0000000..6740ac9
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_21.html
@@ -0,0 +1,1419 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.21 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.21">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_21.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_21.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_21.html"><span itemprop="name">2.3.21</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.21"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_22.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_20.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_21" itemprop="headline">2.3.21</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_171" data-menu-target="autoid_171">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_172" data-menu-target="autoid_172">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_173" data-menu-target="autoid_173">Other changes</a></li></ul> </div><p>Date of release: 2014-10-12</p><p>Note that since 2.3.21 is designed to be fully backward
+        compatible with the previous 2.3.x releases, <em>some of the
+        improvements and fixes described below are only activated when you
+        specifically ask for 2.3.21 "incompatible
+        improvements"</em>, because they could, with very small
+        chance, break existing applications. If the dependent project is still
+        actively developed, allowing 2.3.21 &quot;incompatible improvements&quot; is
+        highly recommended. See <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">how to set
+        "incomplatible improvements" here</a>.</p><p>Note that we have changed our proprietary BSD-style license to
+        Apache License, Version 2.0. See the <a href="app_license.html">new
+        license here</a>.</p><p>Note that the minimum required Java version was increased from
+        1.2 to 1.4.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_171">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Improved ranges:</p>
+
+              <ul>
+                <li>
+                  <p>Added ranges with exclusive end:
+                  <code class="inline-code"><em class="code-color">start</em>..&lt;<em class="code-color">end</em></code>
+                  (also can be written as
+                  <code class="inline-code"><em class="code-color">start</em>..!<em class="code-color">end</em></code>).
+                  <a href="dgui_template_exp.html#dgui_template_exp_direct_ranges">More...</a></p>
+                </li>
+
+                <li>
+                  <p>Added length limited ranges:
+                  <code class="inline-code"><em class="code-color">start</em>..*<em class="code-color">length</em></code>:
+                  For example, <code class="inline-code">10..*4</code> gives <code class="inline-code">[10,
+                  11, 12, 13]</code>, <code class="inline-code">10..*-4</code> gives
+                  <code class="inline-code">[10, 9, 8, 7]</code>, and
+                  <code class="inline-code">10..*0</code> gives <code class="inline-code">[]</code>. When
+                  these kind of ranges are used for slicing, the slice will
+                  end without error if the end of the sliced sequence or
+                  string is reached before the specified range length was
+                  reached. Thus, for example, to take the first 10 characters
+                  from the string <code class="inline-code">s</code>, or less if
+                  <code class="inline-code">s</code> is shorter than 10 characters, you can
+                  use <code class="inline-code">s[0..*10]</code>. <a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">More...</a></p>
+                </li>
+
+                <li>
+                  <p>Square bracket now accepts range values from any
+                  source, like <code class="inline-code">&lt;#assign r = 1..3&gt;
+                  ${&#39;foobar&#39;[r]}</code> will print
+                  <code class="inline-code">&quot;oob&quot;</code>. Earlier it has only supported
+                  ranges that were specified directly inside the square
+                  brackets, like <code class="inline-code">&#39;foobar&#39;[1..3]</code>.</p>
+                </li>
+
+                <li>
+                  <p>When slicing a sequence with a right-unbounded range,
+                  it&#39;s now allowed to have a range start index that&#39;s one
+                  higher than the last index of the sliced sequence. For
+                  example, <code class="inline-code">[&#39;x&#39;, &#39;y&#39;][2..]</code> is not an error
+                  anymore, but an empty sequence. (Of course, <code class="inline-code">[&#39;x&#39;,
+                  &#39;y&#39;][3..]</code> is still an error.)</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">someString</em>?substring(<em class="code-color">from</em>,
+                  <em class="code-color">toExclusive</em>)</code> and
+                  <code class="inline-code"><em class="code-color">someString</em>?substring(<em class="code-color">from</em>)</code>
+                  are now deprecated; use this slicing expression instead:
+                  <code class="inline-code"><em class="code-color">someString</em>[<em class="code-color">from</em>..&lt;<em class="code-color">toExclusive</em>]</code>
+                  and
+                  <code class="inline-code"><em class="code-color">someString</em>[<em class="code-color">from</em>..]</code>.
+                  A warning if you are processing XML: Since slicing
+                  expressions work both for sequences and strings, and XML
+                  nodes in FTL are typically both sequences and strings at the
+                  same time, there the equivalent expression is
+                  <code class="inline-code"><em class="code-color">someXmlNode</em>?string[<em class="code-color">from</em>..&lt;<em class="code-color">toExclusive</em>]</code>
+                  and
+                  <code class="inline-code"><em class="code-color">exp</em>?string[<em class="code-color">from</em>..]</code>,
+                  because without the <code class="inline-code">?string</code> it would
+                  slice the node sequence instead of the text value of the
+                  node.</p>
+                </li>
+
+                <li>
+                  <p>If the <code class="inline-code">incompatible_improvements</code> in
+                  the FreeMarker configuration is set to at least 2.3.21,
+                  right-unbounded ranges become readable (like
+                  <code class="inline-code">#list</code>-able). Earlier they could only be
+                  used for slicing, and behaved like empty sequences
+                  otherwise.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>New built-in, <code class="inline-code">?url_path</code>: This is the
+              same as <a href="ref_builtins_string.html#ref_builtin_url">the
+              <code>url</code> built-in</a>, except that it doesn&#39;t
+              escape slash (<code class="inline-code">/</code>) characters. This meant to be
+              used for converting paths (like paths coming from the OS or some
+              content repository) that use slash (not backslash!) to a path
+              the can be inserted into the path part of an URL.</p>
+            </li>
+
+            <li>
+              <p>New built-ins for string manipulation:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code"><em class="code-color">someString</em>?keep_before(<em class="code-color">substring</em>[,
+                  <em class="code-color">flags</em>])</code>: <a href="ref_builtins_string.html#ref_builtin_keep_before">More...</a></p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">someString</em>?keep_after(<em class="code-color">substring</em>[,
+                  <em class="code-color">flags</em>])</code>: <a href="ref_builtins_string.html#ref_builtin_keep_after">More...</a></p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">someString</em>?remove_beginning(<em class="code-color">substring</em>)</code>:
+                  <a href="ref_builtins_string.html#ref_builtin_remove_beginning">More...</a></p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">someString</em>?remove_ending(<em class="code-color">substring</em>)</code>:
+                  <a href="ref_builtins_string.html#ref_builtin_remove_ending">More...</a></p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">someString</em>?ensure_starts_with(<em class="code-color">substring</em>[,
+                  <em class="code-color">substitution</em>[,
+                  <em class="code-color">flags</em>]])</code>: <a href="ref_builtins_string.html#ref_builtin_ensure_starts_with">More...</a></p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code"><em class="code-color">someString</em>?ensure_ends_with(<em class="code-color">substring</em>)</code>:
+                  <a href="ref_builtins_string.html#ref_builtin_ensure_ends_with">More...</a></p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p><code class="inline-code"><em class="code-color">someString</em>?number</code>
+              now recognizes all XML Schema number formats, like
+              <code class="inline-code">NaN</code>, <code class="inline-code">INF</code>,
+              <code class="inline-code">-INF</code>, plus the Java-native formats
+              <code class="inline-code">Infinity</code> and
+              <code class="inline-code">-Infinity</code>.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">incompatible_improvements</code> in the
+              FreeMarker configuration is set to at least 2.3.21,
+              <code class="inline-code"><em class="code-color">someNumber</em>?c</code> will
+              return <code class="inline-code">&quot;INF&quot;</code>, <code class="inline-code">&quot;-INF&quot;</code> and
+              <code class="inline-code">&quot;NaN&quot;</code> for positive/negative infinity and IEEE
+              floating point Not-a-Number, respectively. These are the XML
+              Schema compatible representations of these special values.
+              Earlier it has returned what
+              <code class="inline-code">java.text.DecimalFormat</code> did with US locale,
+              none of which was understood by any (common) computer
+              language.</p>
+            </li>
+
+            <li>
+              <p>New built-in:
+              <code class="inline-code"><em class="code-color">someString</em>?boolean</code>.
+              This is for example useful for converting &quot;true&quot; and &quot;false&quot;
+              strings coming from XML to real boolean values. <a href="ref_builtins_string.html#ref_builtin_boolean">More...</a></p>
+            </li>
+
+            <li>
+              <p>Date/time/date-time related changes:</p>
+
+              <ul>
+                <li>
+                  <p>Added new kind of
+                  <code class="inline-code">date_format</code>/<code class="inline-code">datetime_format</code>/<code class="inline-code">time_format</code>
+                  setting values: XML Schema formats, starting with
+                  <code class="inline-code">&quot;xs&quot;</code> and ISO 8601:2004 formats, starting
+                  with <code class="inline-code">&quot;iso&quot;</code>. The format string can be
+                  continued with various space (or <code class="inline-code">_</code>)
+                  separated options, like <code class="inline-code">h</code> or
+                  <code class="inline-code">m</code> or <code class="inline-code">s</code> or
+                  <code class="inline-code">ms</code> for setting shown accuracy,
+                  <code class="inline-code">nz</code> or <code class="inline-code">fz</code> for setting
+                  time zone offset visibility, and <code class="inline-code">u</code> or,
+                  <code class="inline-code">fu</code> for using UTC time zone . For example,
+                  to use ISO 8601 with minute precision and without the zone
+                  offset being shown, set the
+                  <code class="inline-code">datetime_format</code> setting to <code class="inline-code">&quot;iso
+                  m nz&quot;</code>, so then the output will be like
+                  <code class="inline-code">2014-09-03T20:56</code>. <a href="ref_directive_setting.html#topic.dateTimeFormatSettings">More...</a></p>
+                </li>
+
+                <li>
+                  <p>Because anything that&#39;s accepted as
+                  <code class="inline-code">date_format</code>/<code class="inline-code">datetime_format</code>/<code class="inline-code">time_format</code>
+                  setting value can also be used with the
+                  <code class="inline-code">?string</code> and
+                  <code class="inline-code">?date</code>/<code class="inline-code">?time</code>/<code class="inline-code">?datetime</code>
+                  build-ins, you can use the new formats like
+                  <code class="inline-code">someDate?string.xs</code> and
+                  <code class="inline-code">someString?date.xs</code>. (For the
+                  <code class="inline-code">&quot;xs&quot;</code> and <code class="inline-code">&quot;iso&quot;</code>
+                  formats, <code class="inline-code">_</code> can be used instead of space,
+                  which means that, for example, you can write
+                  <code class="inline-code">lastModified?string.iso_m_u</code> instead of
+                  the more verbose <code class="inline-code">lastModified?string[&quot;iso m
+                  u&quot;]</code>.)</p>
+                </li>
+
+                <li>
+                  <p>That <code class="inline-code">&quot;iso&quot;</code> and
+                  <code class="inline-code">&quot;xs&quot;</code> are now possible
+                  <code class="inline-code">date_format</code>/<code class="inline-code">datetime_format</code>/<code class="inline-code">time_format</code>
+                  setting values also means that such values can now be parsed
+                  too via
+                  <code class="inline-code">?date</code>/<code class="inline-code">?time</code>/<code class="inline-code">?datetime</code>.
+                  The main application is with processing XML DOM-s, as there
+                  values are coming in as strings, and now you can do
+                  something like <code class="inline-code">order.confirmDate?date.xs</code>
+                  to convert them to real dates.</p>
+                </li>
+
+                <li>
+                  <p>The <a href="ref_builtins_date.html#ref_builtin_date_iso"><code>?iso_...</code>
+                  built-ins</a> are now deprecated in favor of the new
+                  setting values described above. They can be set as the
+                  default date/time/date-time format, seamlessly fit into the
+                  formatting architecture (and thus can parse strings too),
+                  and has more/better options (<code class="inline-code">ms</code> always
+                  shows 3 millisecond digits, <code class="inline-code">fz</code> for
+                  forcing showing time zone offset).</p>
+                </li>
+
+                <li>
+                  <p>If the "incompatible improvements"
+                  configuration setting is at least 2.3.21, the
+                  <code class="inline-code">?iso_...</code> built-ins won&#39;t show time zone
+                  offset for <code class="inline-code">java.sql.Time</code> values anymore.
+                  Most databases store time values that aren&#39;t in any time
+                  zone, but just store hour, minute, second, and decimal
+                  second field values, so showing the time zone doesn&#39;t make
+                  sense. (Notable exceptions are PostgreSQL &quot;time with time
+                  zone&quot; columns, where
+                  <code class="inline-code"><em class="code-color">mzTime</em>?string.iso_fz</code>
+                  could be used.)</p>
+                </li>
+
+                <li>
+                  <p>Added <code class="inline-code">?is_time</code>,
+                  <code class="inline-code">?is_datetime</code>,
+                  <code class="inline-code">?is_date_only</code> (should be called
+                  <code class="inline-code">?is_date</code>, but that was already taken) and
+                  <code class="inline-code">?is_unknown_date_like</code> to check the exact
+                  type of a date-like value.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">?is_date</code> is now a deprecated name,
+                  use <code class="inline-code">?is_date_like</code> instead. This is
+                  because <code class="inline-code">?is_date</code> sounds like it checks if
+                  the value is a date without time part, but actually it also
+                  returns <code class="inline-code">true</code> for time, date-time, and
+                  unknown date-like values.</p>
+                </li>
+
+                <li>
+                  <p>Added <code class="inline-code">?date_if_unknown</code>,
+                  <code class="inline-code">?time_if_unknown</code> and
+                  <code class="inline-code">?datetime_if_unknown</code> built-ins, which
+                  mark a date-like value with some of the sub-types: date
+                  without time, time, or date-time, respectively. However, if
+                  the value already holds this information, the built-in has
+                  no effect. That is, it will never convert the sub-type of a
+                  value, it only adds the sub-type if it was unknown.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: ISO 8601 dates (via
+                  <code class="inline-code">?iso_...</code> and <code class="inline-code">&quot;iso&quot;</code>
+                  format settings) now use proleptic Gregorian calendar for
+                  the years before 1582, rather than Julian calendar. This is
+                  (indirectly) required by the standard, and it&#39;s also how the
+                  default Sun/Oracle Java XML Schema date/time/dateTime parser
+                  works.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Error message quality improvements (targeting frequent
+              support requests and some error message bugs):</p>
+
+              <ul>
+                <li>
+                  <p>Fixed glitch where if an <code class="inline-code">#if</code> had
+                  and <code class="inline-code">#else</code> or <code class="inline-code">#elseif</code>,
+                  the
+                  <code class="inline-code">#if</code>/<code class="inline-code">#else</code>/<code class="inline-code">#elseif</code>
+                  wasn&#39;t hidden in the FTL stack trace when the error was
+                  inside its nested block.</p>
+                </li>
+
+                <li>
+                  <p>Some new context sensitive hints in undefined variable
+                  exception error messages.</p>
+                </li>
+
+                <li>
+                  <p>Fixed unclosed directive error messages at end of file
+                  where the wrong unclosed directive name was reported</p>
+                </li>
+
+                <li>
+                  <p>Better type error messages when accessing XML data
+                  (applies when wrapped with
+                  <code class="inline-code">freemarker.ext.dom</code>):</p>
+
+                  <ul>
+                    <li>
+                      <p>Trying to use
+                      <code class="inline-code">node.<em class="code-color">noSuchChildNodes</em></code>
+                      on a place where scalar value is expected will explain
+                      that the problem is that you had no matches in the
+                      constructing XML query.</p>
+                    </li>
+
+                    <li>
+                      <p>Trying to use
+                      <code class="inline-code">node.<em class="code-color">multipleSuchChildNodes</em></code>
+                      on a place where scalar value is expected will explain
+                      that the problem is that you had multiple matches in the
+                      constructing XML query.</p>
+                    </li>
+
+                    <li>
+                      <p>Trying to use
+                      <code class="inline-code">node.<em class="code-color">exactlyOneChildNode</em></code>
+                      as number, date/time/date-time or boolean will explain
+                      that values coming from XML are always strings (text),
+                      and must be converted explicitly via
+                      <code class="inline-code">?number</code>, <code class="inline-code">?boolean</code>,
+                      <code class="inline-code">?date.xs</code>, etc.</p>
+                    </li>
+                  </ul>
+                </li>
+
+                <li>
+                  <p>Trying to use <code class="inline-code">obj.someMethod</code>
+                  without <code class="inline-code">()</code> on a place where method value
+                  is not expected will recommend calling the method.</p>
+                </li>
+
+                <li>
+                  <p>Trying to use methods like
+                  <code class="inline-code">obj.getFoo</code> or
+                  <code class="inline-code">obj.isFoo</code> without <code class="inline-code">()</code>on
+                  a place where method value is not expected will recommend
+                  using the <code class="inline-code">obj.foo</code> form.</p>
+                </li>
+
+                <li>
+                  <p>Messages are now much more readable when rendered in
+                  environments that don&#39;t obey to line-breaks. (This often
+                  happens in improperly implemented HTML error pages and logs
+                  viewers.)</p>
+                </li>
+
+                <li>
+                  <p>Better FTL instruction stack traces:</p>
+
+                  <ul>
+                    <li>
+                      <p>Error messages now contain up to 10 lines of FTL
+                      stack trace (unless it&#39;s on the top of a full FTL stack
+                      trace), because the FTL stack trace wasn&#39;t printed at
+                      all when the exception was a cause exception in a Java
+                      stack trace, or when only the value of
+                      <code class="inline-code">getMessage()</code> was printed instead of a
+                      stack trace.</p>
+                    </li>
+
+                    <li>
+                      <p>The FTL stack trace is now more self explanatory
+                      as it contains more text labels.</p>
+                    </li>
+
+                    <li>
+                      <p>Stack frames that belong to nestings are now
+                      marked differently, and are filtered out when the stack
+                      trace wouldn&#39;t fit into the error message
+                      otherwise.</p>
+                    </li>
+                  </ul>
+                </li>
+
+                <li>
+                  <p>Bug fixed: <code class="inline-code">?substring</code> has thrown
+                  low level
+                  <code class="inline-code">java.lang.IndexOutOfBoundsException</code>-s
+                  instead of more descriptive
+                  <code class="inline-code">TemplateModelException</code>-s with FTL stack
+                  trace.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed: Slicing with ranges sometimes thrown low
+                  level
+                  <code class="inline-code">java.lang.IndexOutOfBoundsException</code>-s
+                  instead of more descriptive
+                  <code class="inline-code">TemplateModelException</code>-s with FTL stack
+                  trace.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/402/">402</a>]:
+                  Fixed misleading parser error message when a directive
+                  called without its required parameters (like
+                  <code class="inline-code">&lt;#list&gt;</code>) was reported as unknown
+                  directive.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/222/">222</a>]:
+                  Poor quality error message when
+                  <code class="inline-code"><em class="code-color">someString</em>[<em class="code-color">someIndex</em>]</code>
+                  fails with string index out of bounds.</p>
+                </li>
+
+                <li>
+                  <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/27/">27</a>]:
+                  Not very good quality error messages when
+                  <code class="inline-code">#import</code>-ing a template whose parsing
+                  fails.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>New <code class="inline-code">include</code> directive option,
+              <code class="inline-code">ignore_missing=<em class="code-color">boolean</em></code>.
+              When this is set to <code class="inline-code">true</code>, and the template to
+              include is missing, the error will be silently ignored, and
+              nothing will be included.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">setting</code> directive can now set the
+              <code class="inline-code">output_encoding</code> setting.</p>
+            </li>
+
+            <li>
+              <p>New special variable: <code class="inline-code">.locale_object</code>.
+              This is like <code class="inline-code">.locale</code>, except that it&#39;s a
+              <code class="inline-code">java.util.Locale</code> object, not a string. This
+              is handy if you want to pass the current locale to Java
+              methods.</p>
+            </li>
+
+            <li>
+              <p>If <code class="inline-code">incompatible_improvements</code> in the
+              FreeMarker configuration is set to at least 2.3.21, hash
+              <em>literals</em> that repeat keys now only have the
+              key once with <code class="inline-code">?keys</code>, and only has the last
+              value associated to that key with <code class="inline-code">?values</code>.
+              This is consistent with the behavior of
+              <code class="inline-code"><em class="code-color">hash</em>[<em class="code-color">key</em>]</code>
+              and how maps work in Java.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <code class="inline-code">?is_enumerable</code> has returned
+              <code class="inline-code">true</code> for Java methods get from Java objects,
+              despite that those values aren&#39;t <code class="inline-code">&lt;#list
+              ...&gt;</code>-able. (This is actually a historical quirk of
+              <code class="inline-code">BeansWrapper</code>, not a bug in
+              <code class="inline-code">?is_enumerable</code>, but now
+              <code class="inline-code">?is_enumerable</code> is aware of this exceptional
+              case.)</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/257/">257</a>]:
+              The result value of <code class="inline-code">?matches</code> wasn&#39;t
+              "reentrant". For example, you couldn&#39;t list the
+              matches inside another listing where you are also listing
+              exactly the same result value (stored in a common variable), as
+              they would consume from the same iterator. Most importantly,
+              even accessing the <code class="inline-code">?size</code> of the same result
+              value has terminated the outer listing of the same value.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/229/">229</a>]:
+              If you set <code class="inline-code">incompatible_improvements</code> to
+              2.3.21 (or higher), unclosed comments (<code class="inline-code">&lt;#--
+              <em class="code-color">...</em></code>) and
+              <code class="inline-code">#noparse</code>-s won&#39;t be silently closed at the
+              end of template anymore, but cause a parsing error
+              instead.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_172">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Added new <code class="inline-code">Configuration</code> constructor,
+              <code class="inline-code">Configuration(Version
+              incompatibleImprovements)</code>. This deprecates the vague
+              <code class="inline-code">Configuration()</code> constructor, and makes using
+              <code class="inline-code">setIncompatibleImprovements(Version)</code> needless
+              in most cases. See an example <a href="pgui_quickstart_createconfiguration.html">here...</a></p>
+            </li>
+
+            <li>
+              <p>When setting the
+              <code class="inline-code">incompatible_improvements</code> setting (like with
+              the constructor above) to 2.3.21, two setting defaults
+              change:</p>
+
+              <ul>
+                <li>
+                  <p>The default of the <code class="inline-code">object_wrapper</code>
+                  setting
+                  (<code class="inline-code">Configuration.getObjectWrapper()</code>)
+                  changes from
+                  <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code> to another
+                  almost identical <code class="inline-code">DefaultObjectWrapper</code>
+                  singleton, returned by <code class="inline-code">new
+                  DefaultObjectWrapperBuilder(Version).build()</code>. The
+                  new default object wrapper&#39;s "incompatible
+                  improvements" version is set to the same as of the
+                  <code class="inline-code">Configuration</code>. (See later regarding the
+                  2.3.21 "incompatible improvements" of
+                  <code class="inline-code">BeansWrapper</code> and
+                  <code class="inline-code">DefaultObjectWrapper</code>). Furthermore, the
+                  new default object wrapper doesn&#39;t allow changing its
+                  settings; setter methods will throw
+                  <code class="inline-code">IllegalStateException</code>. (If anything tries
+                  to call setters on the old default in your application,
+                  that&#39;s a dangerous bug that won&#39;t remain hidden now. As the
+                  old default is a singleton too, potentially shared by
+                  independently developed components, most of them expects the
+                  out-of-the-box behavior from it (and the others are
+                  necessarily buggy). Also, then concurrency glitches can
+                  occur (and even pollute the class introspection cache)
+                  because the singleton is modified after publishing.)</p>
+                </li>
+
+                <li>
+                  <p>The default of the <code class="inline-code">template_loader</code>
+                  setting
+                  (<code class="inline-code">Configuration.getTemplateLoader()</code>})
+                  changes to <code class="inline-code">null</code>, which means that
+                  FreeMarker will not find any templates. Earlier the default
+                  was a <code class="inline-code">FileTemplateLoader</code> that used the
+                  current directory as the root. This was dangerous and
+                  fragile as you usually don&#39;t have good control over what the
+                  current directory will be. Luckily, the old default almost
+                  never looked for the templates at the right place anyway, so
+                  pretty much all applications had to set
+                  <code class="inline-code">template_loader</code>, so it&#39;s unlikely that
+                  changing the default breaks your application.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>New <code class="inline-code">BeansWrapper</code>,
+              <code class="inline-code">DefaultObjectWrapper</code> and
+              <code class="inline-code">SimpleObjectWrapper</code> constructor that takes a
+              <code class="inline-code">Version</code>
+              <code class="inline-code">incompatibleImprovements</code> argument. This has
+              the same role as the
+              <code class="inline-code">incompatible_improvements</code> setting of the
+              <code class="inline-code">Configuration</code>, but it applies to the
+              <code class="inline-code">ObjectWrapper</code> instead. (As
+              <code class="inline-code">ObjectWrapper</code>-s are often shared among
+              multiple <code class="inline-code">Configuration</code>-s, so they can&#39;t use
+              that setting of the <code class="inline-code">Configuration</code>.) In new or
+              actively developed projects it&#39;s recommended to use
+              <code class="inline-code">Configuration.VERSION_2_3_21</code> now. The
+              constructor without the <code class="inline-code">Version</code> parameter is
+              now deprecated.</p>
+            </li>
+
+            <li>
+              <p>Safer and more memory-efficient way of managing singletons
+              of <code class="inline-code">DefaultObjectWrapper</code>-s and
+              <code class="inline-code">BeansWrapper</code>-s that are possibly shared by
+              independently developed subsystems:</p>
+
+              <ul>
+                <li>
+                  <p>Instead of <code class="inline-code">new
+                  DefaultObjectWrapper(<em class="code-color">...</em>)</code>
+                  and <code class="inline-code">new
+                  BeansWrapper(<em class="code-color">...</em>)</code>, from
+                  now on you should use <code class="inline-code">new
+                  DefaultObjectWrapperBuilder(version).build()</code> and
+                  <code class="inline-code">new BeansWrapperBuilder(version).build()</code>.
+                  (The builder objects have properties (configuration
+                  settings) like <code class="inline-code">BeansWrapper</code> has, which
+                  specify the properties of the objects created.) The created
+                  objects are <em>singletons</em> (VM-wide, or at
+                  least Web-Application-wide) and read-only (means,
+                  non-configurable, hence safe to share). The main benefit of
+                  using these factories instead of creating new instances is
+                  that it allows FreeMarker to share the class introspection
+                  caches (an internal part of
+                  <code class="inline-code">BeansWrapper</code>-s/<code class="inline-code">DefaultObjectWrapper</code>-s
+                  that is expensive to populate) among the returned instances.
+                  This allow sharing the caches (and the object wrappers)
+                  between components that aren&#39;t aware of each other and use
+                  FreeMarker internally.</p>
+                </li>
+
+                <li>
+                  <p>Deprecated the static fields
+                  <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code>,
+                  <code class="inline-code">BEANS_WRAPPER</code> and
+                  <code class="inline-code">SIMPLE_WRAPPER</code>, because these
+                  <code class="inline-code">ObjectWrapper</code>-s are configurable (not
+                  read-only), and thus dangerous to use as singletons (a badly
+                  behaving 3rd party component can mess them up). Use the
+                  factories described above instead. They are also more
+                  flexible, as you can specify the desired
+                  incompatible-improvements version for them and various other
+                  <code class="inline-code">BeansWrapper</code> settings.</p>
+                </li>
+
+                <li>
+                  <p>Deprecated all <code class="inline-code">SimpleHash</code>,
+                  <code class="inline-code">SimpleCollection</code> and
+                  <code class="inline-code">SimpleSequence</code> constructors that didn&#39;t
+                  take an <code class="inline-code">ObjectWrapper</code> argument, as they
+                  have usually used
+                  <code class="inline-code">ObjectWrapper.DEFAULT_WRAPPER</code> as the
+                  default, which itself is deprecated.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">BeansWrapper</code>,
+                  <code class="inline-code">DefaultObjectWrapper</code> and
+                  <code class="inline-code">SimpleObjectWrapper</code> now implements the
+                  <code class="inline-code">freemarker.template.utility.WriteProtectable</code>
+                  interface with which the configuration properties of the
+                  object wrapper can be set permanently to read-only by
+                  calling <code class="inline-code">writeProtect()</code>. An attempt to
+                  call a setter on a such <code class="inline-code">ObjectWrapper</code>
+                  will immediately cause
+                  <code class="inline-code">IllegalStateException</code>. (This is what&#39;s
+                  used for the singletons returned by the
+                  <code class="inline-code">getInstance</code> methods too; see
+                  earlier).</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>The value of the <code class="inline-code">time_zone</code> setting,
+              when you specify it with a <code class="inline-code">String</code> (in a
+              <code class="inline-code">java.util.Properties</code> object, or via
+              <code class="inline-code">&lt;#setting
+              <em class="code-color">...</em>&gt;</code>) can now be
+              <code class="inline-code">&quot;JVM default&quot;</code> to use the JVM default time
+              zone. The JVM default is the default value of that setting
+              anyway, but now you can state this explicitly, or restore this
+              value if it was overridden earlier.</p>
+            </li>
+
+            <li>
+              <p>Added new configuration setting,
+              <code class="inline-code">sql_date_and_time_time_zone</code>
+              (<code class="inline-code">Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code>).
+              When this is set to non-<code class="inline-code">null</code>, the time zone
+              used when dealing with <code class="inline-code">java.sql.Date</code> and
+              <code class="inline-code">java.sql.Time</code> values will be this time zone
+              instead of the value of the <code class="inline-code">time_zone</code>
+              FreeMarker configuration setting. This is useful because JDBC
+              will, usually, construct the Java <code class="inline-code">Date</code>
+              objects so that they will show the year-month-day and
+              hour-minute-seconds values from the database "as
+              is" if you render them using the JVM default time zone.
+              As time zone conversions for SQL date-only and SQL time-only
+              values doesn&#39;t make much sense (unlike for SQL timestamps), you
+              should certainly set this setting to the JVM default time zone
+              (<code class="inline-code">TimeZone.getDefault()</code>, or if you configure
+              FreeMarker via <code class="inline-code">java.util.Properties</code>, as
+              property value &quot;JVM default&quot;). The default value is
+              <code class="inline-code">null</code> for backward compatibility. For more
+              details see the JavaDoc of
+              <code class="inline-code">Configurable.setSQLDateAndTimeTimeZone(TimeZone)</code>.</p>
+            </li>
+
+            <li>
+              <p>When configuring FreeMarker with
+              <code class="inline-code">java.util.Properties</code> (typically, when the
+              configuration is stored in a <code class="inline-code">.properties</code>
+              file), for the settings where you could specify a fully
+              qualified class name (most notably for the
+              <code class="inline-code">object_wrapper</code> setting) now you can also
+              specify constructor arguments and JavaBean property assignments.
+              For example, now you can write
+              <code class="inline-code">object_wrapper=com.example.MyObjectWrapper(1, 2,
+              exposeFields=true, cacheSize=5000)</code>that&#39;s nearly
+              equivalent with this Java code: <code class="inline-code">obj = new
+              com.example.MyObjectWrapper(1, 2); obj.setExposeFields(true);
+              obj.setCacheSize(5000); object_wrapper = obj;</code>. If you
+              are using this new syntax (i.e., if you have parentheses after
+              the class name, even if they are empty), and there&#39;s a builder
+              class for the requested class, that will be automatically used.
+              For example,
+              <code class="inline-code">object_wrapper=DefaultObjectWrapper(2.3.21)</code>
+              will create a <code class="inline-code">DefaultObjectWrapperBuilder</code> to
+              build the final instance, thus the object wrapper will be a
+              singleton instead of a new instance. The new syntax will also
+              look for a public static <code class="inline-code">INSTANCE</code> field if
+              there are 0 arguments and property assignments. For more details
+              see the Java API documentation of
+              <code class="inline-code">Configuration.setSetting</code>.</p>
+            </li>
+
+            <li>
+              <p>Template not found exceptions now explain that the
+              template path is interpreted by a template loader, and show the
+              <code class="inline-code">toString</code> of the
+              <code class="inline-code">TemplateLoader</code>. The out-of-the-box
+              <code class="inline-code">TemplateLoader</code> implementations now have an
+              overridden <code class="inline-code">toString</code> to show the actual base
+              directory and such details. Custom
+              <code class="inline-code">TemplateLoader</code> implementations are encouraged
+              to override <code class="inline-code">toString</code>.</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">Configuration.setSharedVariables(Map/*&lt;String,
+              Object&gt;*/)</code> for setting the shared variables from
+              Spring IoC and other IoC solutions. The already existing
+              <code class="inline-code">Configuration.setSharedVariable(String,
+              Object)</code> isn&#39;t a JavaBean property so it was hard to
+              use for that. Furthermore, the order in which
+              <code class="inline-code">Configuration.setObjectWrapper</code> and
+              <code class="inline-code">Configuration.setSharedVariables</code> are called
+              doesn&#39;t mater (unlike in the case of
+              <code class="inline-code">Configuration.setSharedVariable</code>), which is
+              essential in most IoC solutions.</p>
+            </li>
+
+            <li>
+              <p>Mostly concerning tool (like IDE plugin) authors:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">ParseException</code>-s now also store the
+                  end-location of the error, not just its start-location. This
+                  is useful if you want to underline the error in the source
+                  code, not just point at it.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">Configuration.getSupportedBuiltInDirectiveNames()</code>
+                  can be used to return the names of directives supported by
+                  FreeMarker.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">TemplateExceptions</code> now expose the
+                  position of the error (template name, line, column, end
+                  line, end column) similarly to
+                  <code class="inline-code">ParseException</code>-s. Where applicable, they
+                  also expose the blamed expression in its canonical FTL
+                  source form; this is mostly useful for
+                  <code class="inline-code">InvalidReferenceException</code>-s.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>The concurrent performance of overloaded method lookups
+              (from the cache) was improved under Java 5 and later.</p>
+            </li>
+
+            <li>
+              <p>The <code class="inline-code">Version</code> instances that are
+              "incompatible improvements" break points are now
+              available via constants like:
+              <code class="inline-code">Configuration.VERSION_2_3_21</code>.</p>
+            </li>
+
+            <li>
+              <p>From now on, if you try to set the "incompatible
+              improvements" to greater than the current FreeMarker
+              version, or less than 2.3.0, an
+              <code class="inline-code">IllegalArgumentException</code> will be thrown.
+              Thus, <code class="inline-code">new
+              Configuration(<em class="code-color">someVersion</em>)</code>
+              not only activates the fixes up to that version, but ensures
+              that the application will not run in an environment with an
+              older FreeMarker version. (On an older FreeMarker version the
+              improvements that you have requested aren&#39;t implemented yet, so
+              you should get an exception.)</p>
+            </li>
+
+            <li>
+              <p>Added new configuration setting,
+              <code class="inline-code">show_error_tips</code>, defaults to
+              <code class="inline-code">true</code>. Sets if tips should be shown in error
+              messages of errors arising during template processing.</p>
+            </li>
+
+            <li>
+              <p>Instead of overriding
+              <code class="inline-code">BeansWrapper.finetuneMethodAppearance</code> (now
+              deprecated), now you can use
+              <code class="inline-code">BeansWrapper.setMethodAppearanceFineTuner(MethodAppearanceFineTuner)</code>,
+              so you don&#39;t need to extend the object wrapper class to
+              customize this aspect.</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">Configuration.getCoreDirecticeNames()</code> which
+              returns the names of all directives that are provided by
+              FreeMarker. This can useful for IDE-s.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">template_loader</code> was added as possible
+              configuration setting <code class="inline-code">Properties</code> key.</p>
+            </li>
+
+            <li>
+              <p>The standard <code class="inline-code">CacheStorage</code>
+              implementations now have a <code class="inline-code">getSize()</code> method
+              for monitoring the cache size.
+              <code class="inline-code">MruCacheStorage</code> also has
+              <code class="inline-code">getSoftSize()</code> and
+              <code class="inline-code">getStrongSize()</code>.</p>
+            </li>
+
+            <li>
+              <p>Various smaller improvements in configuration setting
+              errors messages.</p>
+            </li>
+
+            <li>
+              <p>With incompatible improvements 2.3.21 only: Empty ranges
+              return <code class="inline-code">Constants.EMPTY_SEQUENCE</code> instead of an
+              empty <code class="inline-code">SimpleSequence</code>. This is in theory
+              backward compatible, as the API only promises to give something
+              that implements <code class="inline-code">TemplateSequenceModel</code>.</p>
+            </li>
+
+            <li>
+              <p>FreeMarker now requires Java version has changed from 1.2
+              to 1.4.</p>
+            </li>
+
+            <li>
+              <p>Bugs fixed and improvements in overloaded method
+              selection/invocation, but only if you create the
+              <code class="inline-code">BeansWrapper</code>/<code class="inline-code">DefaultObjectWrapper</code>
+              with constructor parameter
+              <code class="inline-code">Configuration.VERSION_2_3_21</code> (or if you are
+              using <code class="inline-code">Properties</code> to configure FreeMarker, you
+              can do that like
+              <code class="inline-code">object_wrapper=BeansWrapper(2.3.21)</code>), or if
+              you have a <code class="inline-code">Configuration</code> with similar
+              <code class="inline-code">incompatible_improvements</code> 2.3.21
+              <em>and</em> you leave the
+              <code class="inline-code">object_wrapper</code> setting on its default value.
+              There&#39;s a little chance that because of these changes, a
+              different overloaded method will be chosen than before, or even
+              that ambiguity errors will arise where earlier they didn&#39;t
+              (although the opposite is far more frequent), hence the fixes
+              aren&#39;t automatically activated. But the fix mostly only effect
+              calls that were failing or have chosen then wrong method
+              earlier, so it&#39;s recommended to activate it for projects that
+              are still actively developed. This fix includes numerous
+              changes:</p>
+
+              <ul>
+                <li>
+                  <p>Earlier, <code class="inline-code">null</code> argument values has
+                  only matched overloaded methods where the corresponding
+                  parameter had <code class="inline-code">Object</code> type, not a subclass
+                  of it. That&#39;s clearly a bug. Now it considers all overloads
+                  where the parameter type is non-primitive, and just like the
+                  Java language, it choses the one with the most specific type
+                  among them. This is the most important fix, and also the
+                  most risky one regarding backward-compatibility. Like if you
+                  have <code class="inline-code">m(Object o)</code> and <code class="inline-code">m(String
+                  s)</code> in a Java class, earlier for a
+                  <code class="inline-code">m(null)</code> call in the template it has
+                  chosen <code class="inline-code">m(Object o)</code>, but now it will
+                  choose <code class="inline-code">m(String s)</code> instead (because
+                  <code class="inline-code">String</code> is also
+                  <code class="inline-code">null</code>-able and is more specific than
+                  <code class="inline-code">Object</code>). Furthermore, if you also had
+                  <code class="inline-code">m(File f)</code> in the same class, now it will
+                  cause an ambiguity exception, since the specificity of
+                  <code class="inline-code">File</code> and <code class="inline-code">String</code> can&#39;t
+                  be compared (same rule as under Java language), while
+                  earlier that wasn&#39;t a problem as only <code class="inline-code">m(Object
+                  o)</code> was seen as applicable.</p>
+                </li>
+
+                <li>
+                  <p>The behavior of numbers with overloaded method
+                  selection was heavily reworked:</p>
+
+                  <ul>
+                    <li>
+                      <p>If possible, it now always choses the overload
+                      where overflow and truncation to integer (like 1.5 to 1)
+                      is avoided. Among the methods where no such critical
+                      loss occurs, it choses the overload with the least risk
+                      of precision loss (unless other conditions with higher
+                      priority suggest otherwise). Earlier, the method
+                      selection was prone to do choices that led to overflow
+                      or precision loss, especially when the parameter was a
+                      literal with decimals.</p>
+                    </li>
+
+                    <li>
+                      <p>Overloaded method call can now convert to
+                      non-primitive numerical types, like a
+                      <code class="inline-code">Byte</code> or <code class="inline-code">byte</code> value
+                      is automatically converted to <code class="inline-code">Integer</code>
+                      if the parameter type is <code class="inline-code">Integer</code>.
+                      (This has always worked for non-overloaded methods.)
+                      Earlier where such conversion was needed, the method
+                      wasn&#39;t seen seen applicable.</p>
+                    </li>
+
+                    <li>
+                      <p>Method selection is now not only based on the type
+                      of the wrapped number, but also on its value. For
+                      example, a <code class="inline-code">Long</code> with value
+                      <code class="inline-code">1</code> is now seen as compatible with a
+                      method with parameter type <code class="inline-code">int</code> or
+                      <code class="inline-code">short</code> or <code class="inline-code">byte</code>, as
+                      <code class="inline-code">1</code> can be stored in those without
+                      loss. This is important as unlike in Java language, in
+                      FTL you doesn&#39;t have strict control over the numerical
+                      types (the type of the wrapped number, actually), as FTL
+                      has no type declarations. (If multiple compatible
+                      methods are available, it will still try to chose the
+                      one with the same or bigger numerical type.)</p>
+                    </li>
+
+                    <li>
+                      <p>Conversion from/to <code class="inline-code">BigInteger</code>
+                      is now supported.</p>
+                    </li>
+                  </ul>
+                </li>
+
+                <li>
+                  <p>Method choice ambiguity errors now occur much less
+                  often. Ambiguities was and are resolved by selecting the
+                  compatible methods then choosing the one with the most
+                  specific parameter types among them. The changes are:</p>
+
+                  <ul>
+                    <li>
+                      <p>When comparing the overall specificity of two
+                      parameter lists: Earlier the parameter list seen as more
+                      specific was the one that had some parameters that won
+                      in specificity, and if both had such parameters then it
+                      was an ambiguity. Now it&#39;s enough if a method has more
+                      such parameters where it&#39;s a better match than the other
+                      has, or if the two methods are still equal, if it has
+                      the first better matching parameter. This can lead to
+                      choices that seem arbitrary (but are still
+                      deterministic), but as there&#39;s no automated way of
+                      discovering method selection ambiguities in templates
+                      (unlike in Java source code, where they will be detected
+                      during compilation), especially as overloaded selection
+                      has to rely on the <em>runtime</em> type of
+                      the values which even make proper testing hard, this was
+                      considered to be a better compromise than throwing an
+                      exception whenever the choice of the method is not
+                      obvious. Also note that in fact this mechanism is more
+                      complicated than just counting the "winner"
+                      parameter positions for each methods, as certain kind of
+                      wins are stronger than any number of the others: wins
+                      where the other possibility is risking of substantial
+                      mantissa precision loss are the strongest (like dropping
+                      decimals versus not to), wins where the primitive type
+                      wins over the boxed class is the weakest (like
+                      <code class="inline-code">int</code> versus
+                      <code class="inline-code">Integer</code>), subclassing wins (like
+                      <code class="inline-code">String</code> versus
+                      <code class="inline-code">Object</code>) are between these two.</p>
+                    </li>
+
+                    <li>
+                      <p>When comparing the specificity of two parameters
+                      types at the same parameter position: The algorithm now
+                      considers a primitive type as more specific that its
+                      corresponding boxing class (like <code class="inline-code">int</code>
+                      is considered to be more specific than
+                      <code class="inline-code">Integer</code>).</p>
+                    </li>
+
+                    <li>
+                      <p>There was a bug with overloaded varargs methods of
+                      different parameter counts, where sometimes the last
+                      parameters of the compared methods was ignored, which is
+                      taking away a potential deciding factor and thus can
+                      lead to ambiguity error. Whether this happened depends
+                      on the order in which the Java reflection API has
+                      returned the methods, which is undocumented and known to
+                      change at least after some Java updates, breaking the
+                      application.</p>
+                    </li>
+
+                    <li>
+                      <p>When comparing the specificity of two array types,
+                      until now they were seen as equal. Now the component
+                      types are compared, and then that with the less specific
+                      component type is preferred. For example, among
+                      <code class="inline-code">f(String[])</code> and
+                      <code class="inline-code">f(Object[])</code>, the last will always
+                      win. This might sounds controversial, but as we can&#39;t
+                      efficiently tell the common type of all the items in a
+                      sequence or <code class="inline-code">List</code>, an so we don&#39;t know
+                      if both arrays are indeed valid targets, we go for the
+                      safest choice.</p>
+                    </li>
+                  </ul>
+                </li>
+
+                <li>
+                  <p>FTL sequence values (like Java
+                  <code class="inline-code">List</code>-s or FTL
+                  <code class="inline-code">[<em class="code-color">x</em>,
+                  <em class="code-color">y</em>,
+                  <em class="code-color">...</em>]</code> constants) were
+                  not seen as applicable to a parameter with array type if
+                  there were multiple overloaded methods with the same number
+                  of parameters but with different types on the position of
+                  the array parameter. That is, if you had
+                  <code class="inline-code">f(String[])</code> and
+                  <code class="inline-code">f(String)</code> in Java, then
+                  <code class="inline-code">f([&#39;foo&#39;, &#39;bar&#39;])</code> in the template
+                  reported no compatible overloads. Now it will choose
+                  <code class="inline-code">f(String[])</code>. Note that if there&#39;s also an
+                  <code class="inline-code">f(List)</code> or even an
+                  <code class="inline-code">f(Collection)</code>, it will prefer those over
+                  arrays. (For consistency, this conversion will work even if
+                  the argument is a <code class="inline-code">List</code> that come directly
+                  from Java (as opposed to be created inside FTL), i.e., when
+                  it was wrapped then unwrapped to the original
+                  <code class="inline-code">List</code> object.) For a multidimensional
+                  array parameter type, this conversion works recursively, so
+                  you can pass in a sequence-of-sequences as the
+                  argument.</p>
+                </li>
+
+                <li>
+                  <p>FTL sequence values that wrapped a Java array (when
+                  FreeMarker was also aware of that via
+                  <code class="inline-code">AdapterTemplateModel</code> or
+                  <code class="inline-code">WrapperTemplateModel</code>) were not seen as
+                  applicable to a parameter with <code class="inline-code">List</code> type
+                  if there were multiple overloaded methods with the same
+                  number of parameters but with different types on the
+                  position of the array parameter. So this is pretty much like
+                  the issue described in the previous point, but for array to
+                  <code class="inline-code">List</code> conversion. The array to
+                  <code class="inline-code">List</code> conversion will be avoided if
+                  possible, but it will be attempted if there&#39;s no other
+                  alternative. Note that unlike with <code class="inline-code">List</code>
+                  to array conversions, here FreeMarker can&#39;t cope with
+                  multi-dimensional lists, that is, an array-of-arrays won&#39;t
+                  be converted to a
+                  <code class="inline-code">List</code>-of-<code class="inline-code">List</code>-s.</p>
+                </li>
+
+                <li>
+                  <p>FTL string to Java
+                  <code class="inline-code">char</code>/<code class="inline-code">Character</code>
+                  conversion now works for overloaded method parameters;
+                  earlier it has worked for non-overloaded methods only. If
+                  the string length is 1, it will be seen as compatible with
+                  parameters with <code class="inline-code">char</code> or
+                  <code class="inline-code">Character</code> type.</p>
+                </li>
+
+                <li>
+                  <p>Decreased the chance of choosing the wrong target Java
+                  type when unwrapping multi-typed FTL values: When unwrapping
+                  a parameter value that implements multiple FTL types (e.g.
+                  string and hash) but doesn&#39;t implement
+                  <code class="inline-code">AdapterTemplateModel</code> or
+                  <code class="inline-code">WrapperTemplateModel</code>, a decision has to
+                  be made if to what Java type the value should be unwrapped
+                  to (e.g. to <code class="inline-code">String</code> or to
+                  <code class="inline-code">Map</code>). In earlier versions that decision
+                  was made based on the most specific common super type of the
+                  parameters types of the given parameter position. However,
+                  it&#39;s quite common that the common super type is too generic,
+                  usually <code class="inline-code">Object</code>. Now
+                  <code class="inline-code">BeansWrapper</code> stores "type
+                  flags" for each parameter position of overloaded
+                  methods, from which it can tell whether a potential target
+                  Java type occurs in any of the overloads on the given
+                  parameter position.</p>
+                </li>
+
+                <li>
+                  <p>In many cases, less specific hint class was used for
+                  unwrapping than that was possible within the limitations of
+                  the applied hint generation algorithm. (The unwrapping hint
+                  has influence when there&#39;s an ambiguity regarding how to
+                  create a Java object form an FTL value. In the vast majority
+                  of the cases, a too generic hint has no effect.) (This is a
+                  highly technical topic. The way it works is that a single
+                  common unwrapping hint class is chosen for a given argument
+                  position shared by the overloads that has the same number of
+                  parameters, and that hint class has to be as specific as
+                  possible while it must fit all those parameter types. The
+                  issue with the too generic hints had several instances: (a)
+                  When the most specific common class/interface of two
+                  same-position parameter types was searched, if there was
+                  multiple common classes/interfaces that had no relationship
+                  (this is always at most one class and one or more unrelated
+                  interfaces), due to the ambiguity it has felt back to using
+                  <code class="inline-code">Object</code> as the unwrapping hint. Now if
+                  there&#39;s a non-<code class="inline-code">Object</code> class among them in
+                  such case, it will be chosen as the hint (i.e., we ignore
+                  the common interfaces). Otherwise if only a single interface
+                  remains by removing <code class="inline-code">Cloneable</code>,
+                  <code class="inline-code">Serializable</code>, and
+                  <code class="inline-code">Comparable</code> (in that order), that will be
+                  chosen. Only then it falls back to
+                  <code class="inline-code">Object</code>. (b) The common most specific
+                  class of a primitive type and the corresponding boxing class
+                  was sometimes <code class="inline-code">Object</code> instead of the
+                  boxing class. This has depended on Java&#39;s internal ordering
+                  of the methods, and so were quite unpredictable, like the
+                  result could change after upgrading Java under the
+                  application. (c) The common superclass of a numerical
+                  primitive value and a numerical non-primitive value was
+                  always <code class="inline-code">Object</code>, now if they are a
+                  primitive-boxing class pair, then it&#39;s the boxing class,
+                  otherwise it&#39;s <code class="inline-code">Number</code>. (d) If the varags
+                  parameter position was not the same in all the overloaded
+                  varargs methods, sometimes some varargs arguments where
+                  unwrapped with too generic hints. When this happened was
+                  unpredictable as it depended on Java&#39;s internal method
+                  ordering again.)</p>
+                </li>
+
+                <li>
+                  <p>When unwrapping method call arguments before calling a
+                  Java method, if the argument was an
+                  <code class="inline-code">AdapterTemplateModel</code> and the target
+                  parameter type was primitive,
+                  <code class="inline-code">AdapterTemplateModel.getAdaptedObject(Class
+                  hint)</code> has received the primitive type of the
+                  target parameter (like <code class="inline-code">int</code> instead of
+                  <code class="inline-code">Integer</code>) as the hint. This did not make
+                  sense since <code class="inline-code">getAdaptedObject</code> can only
+                  return <code class="inline-code">Object</code>-s, not primitive values.
+                  Yet, <code class="inline-code">BeansWrapper</code> has expected the
+                  returned value to be of the primitive type, otherwise it has
+                  discarded it. Exactly the same problem occurs with
+                  <code class="inline-code">WrapperTemplateModel</code>. Thus, ultimately,
+                  if the target parameter type was primitive and some of these
+                  interfaces were implemented, their return value was always
+                  discarded and FreeMarker has felt back to other means of
+                  unwrapping. Now <code class="inline-code">BeansWrapper</code> always
+                  passes in and expects the boxing type (like
+                  <code class="inline-code">Integer</code>) instead of the primitive
+                  type.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/373/">373</a>]:
+              These are three bugs actually, which can cause problems when
+              FreeMarker re-loads a template because of a charset override
+              with <code class="inline-code">&lt;#ftl encoding=&quot;...&quot;&gt;</code>: First, if
+              the template loader was a <code class="inline-code">URLTemplateLoader</code>,
+              when <code class="inline-code">TemplateLoader.getReader()</code> was called
+              for the second time, and the <code class="inline-code">Reader</code> returned
+              for the first time was already used, it might returned an empty
+              or corrupted template, depending on the backing URL
+              implementation. Secondly, when FreeMarer has decided if a
+              template file has to be re-loaded because its encoding specified
+              with <code class="inline-code">&lt;#ftl encoding=&quot;...&quot;&gt;</code> differs from
+              the encoding used for loading the template first, it has used
+              case-sensitive comparison, thus often re-loaded needlessly (like
+              &quot;UTF-8&quot; and &quot;utf-8&quot; mean the same). Now this comparison is
+              case-insensitive. Last not least, when retrying with the second
+              charset, the <code class="inline-code">TemplateCache</code> has forgotten to
+              close the first <code class="inline-code">Reader</code>, which can be a handle
+              leak.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/411/">411</a>]:
+              Invalid and redundant execution environment names from the OSGi
+              bundle manifest were removed. It looks like this now:
+              <code class="inline-code">Bundle-RequiredExecutionEnvironment: J2SE-1.5,
+              J2SE-1.4</code>. That is, we prefer (and compile against)
+              1.5, but only require 1.4.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/409/">409</a>]:
+              <code class="inline-code">SimpleHash</code>&#39;s internal <code class="inline-code">Map</code>
+              is concurrently modified on a non-safe way when getting length-1
+              <code class="inline-code">String</code> key that exists but maps to
+              <code class="inline-code">null</code>. This operation will accidentally add a
+              <code class="inline-code">Character</code> key to the internal map, which is
+              not a thread-safe operation.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/273/">273</a>]:
+              <code class="inline-code">TemplateLoader</code>-s that use
+              <code class="inline-code">java.net.URLConnection</code>-s should set
+              <code class="inline-code">URLConnection.useCaches</code> to
+              <code class="inline-code">false</code>, or else it won&#39;t detect template
+              caches on certain configurations.</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">URLTemplateLoader</code> and its
+                  subclasses and
+                  <code class="inline-code">WebApplicationTemplateLoader</code> now has a
+                  <code class="inline-code">setURLConnectionUsesCaches(Boolean)</code>
+                  method. It&#39;s recommended to set this property to
+                  <code class="inline-code">false</code> from its default backward
+                  compatible value, <code class="inline-code">null</code>. As FreeMarker has
+                  its own template cache with its own update delay setting
+                  (<code class="inline-code">template_update_delay</code>,
+                  <code class="inline-code">Configuration.setTemplateUpdateDelay(int)</code>),
+                  it shouldn&#39;t cause performance problems. The
+                  <code class="inline-code">null</code> value will leave the caching of the
+                  <code class="inline-code">java.net.URLConnection</code> on its default,
+                  which is usually <code class="inline-code">true</code>.</p>
+                </li>
+
+                <li>
+                  <p>If <code class="inline-code">incompatible_improvements</code> is set
+                  to 2.3.21 (or higher) and templates are loaded through
+                  <code class="inline-code">Configuration.getTemplate</code>, and the
+                  <code class="inline-code">TemplateLoader</code> in use has
+                  <code class="inline-code">URLConnectionUsesCaches</code> left on
+                  <code class="inline-code">null</code>, it will behave as if it was set to
+                  <code class="inline-code">false</code>. Note that this
+                  <code class="inline-code">incompatible_improvements</code> trick only
+                  works if the template is loaded through
+                  <code class="inline-code">Configuration.getTemplate</code> (or
+                  <code class="inline-code">TemplateCache</code>).</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Bug fixed: When changing the properties of
+              <code class="inline-code">DefaultObjectWrapper</code> or
+              <code class="inline-code">BeansWrapper</code> that influenced class
+              introspection results (like <code class="inline-code">exposureLevel</code> or
+              <code class="inline-code">exposeFields</code>), the introspection cache wasn&#39;t
+              cleared, and thus returned stale information for the classes
+              that were introspected before those properties were changed. Now
+              changing such properties always clears the introspection
+              caches.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: Constants used for empty sequence, empty hash,
+              empty collection and empty iterator weren&#39;t
+              <code class="inline-code">Serializable</code>.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/311/">300</a>]:
+              Logger class availability check was incorrect in that it has
+              checked the availability of logger libraries with the thread
+              context class loader, then later it tried to link to them with
+              the defining class loader of the FreeMarker classes. With some
+              class loader setups (notably under Netbeans sometimes) this led
+              to <code class="inline-code">ClassDefNotFoundError</code>-s that made
+              FreeMarker unusable. (The check itself was also not very
+              durable, as it didn&#39;t expected <code class="inline-code">LinakeError</code>-s,
+              only <code class="inline-code">ClassNotFoundException</code>.)</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <code class="inline-code">ClassUtil.forName</code>, used
+              inside FreeMarker everywhere to resolve class names to classes,
+              if the thread context class loader is <code class="inline-code">null</code>,
+              no longer tries to load with the bootstrap class loader before
+              loading with the defining class loader of FreeMarker.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="http://sourceforge.net/p/freemarker/bugs/311/">311</a>]:
+              <code class="inline-code">TemplateBooleanModel.TRUE</code> and
+              <code class="inline-code">FALSE</code> are now serializable</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: Various issues in <code class="inline-code">Version</code>
+              class, such as wrong <code class="inline-code">hashCode</code>, possible
+              concurrency glitches, and acceptance of some malformed version
+              strings.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed [<a href="https://sourceforge.net/p/freemarker/bugs/414/">414</a>]:
+              Eclipse debug mode running was suspended during FreeMarker
+              static initialization on the JRebel availability checked if
+              JRebel wasn&#39;t available.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_173">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>The license has changed from our proprietary BSD-Style
+              license to the well know &quot;Apache License, Version 2.0&quot;.
+              Furthermore, the copyright owner has changed from &quot;Visigoth
+              Software Society&quot; (which was founded by Jonathan Revusky) to the
+              three main FreeMarker 2 developers/contributors, &quot;Attila
+              Szegedi, Daniel Dekany, and Jonathan Revusky&quot;. See the <a href="app_license.html">new license here</a>.</p>
+            </li>
+
+            <li>
+              <p>The required minimum Java version was raised from 1.2 to
+              1.4. FreeMarker will not work on Java 1.2 or 1.3.</p>
+            </li>
+
+            <li>
+              <p>Many smaller improvements and fixes in the Manual and API
+              JavaDocs.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_22.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_20.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 <

<TRUNCATED>


[39/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/dgui_template_exp.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/dgui_template_exp.html b/builds/2.3.26-nightly/dgui_template_exp.html
new file mode 100644
index 0000000..8a33c71
--- /dev/null
+++ b/builds/2.3.26-nightly/dgui_template_exp.html
@@ -0,0 +1,2331 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Expressions - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Expressions">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/dgui_template_exp.html">
+<link rel="canonical" href="http://freemarker.org/docs/dgui_template_exp.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui.html"><span itemprop="name">Template Author&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template.html"><span itemprop="name">The Template</span></a></li><li class="step-3" item
 prop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="dgui_template_exp.html"><span itemprop="name">Expressions</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Author\'s Guide","The Template","Expressions"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="dgui_template_directives.html"><span>Previous</span></a><a class="paging-arrow next" href="dgui_template_valueinsertion.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="dgui_template_exp" itemprop="headline">Expressions</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#exp_cheatsheet" data-menu-target="exp_cheatsheet">Quick overview (cheat sheet)</a></li><li><a class="page-menu-link" href="#dgui_template_exp_direct" data-menu-target="dgui_template_exp_direct">Specify values directly</a><ul><li><a class="page-menu-link" href="#dgui_template_exp_direct_string" data-menu-target="dgui_template_exp_direct_string">Strings</a></li><li><a class="page-menu-link" href="#dgui_template_exp_direct_number" data-menu-target="dgui_template_exp_direct_number">Numbers</a></li><li><a class="page-menu-link" href="#dgui_template_exp_direct_boolean" data-menu-target="dgui_template_exp_direct_boolean">Booleans</a></li><li><a class="page-menu-link" href="#dgui_template_exp_direct_seuqence" data-menu-target="dgui_template_exp_direct_seuqence">Sequences</a></li><li><a class="page-menu-link" href="#dgui_template_exp_direct_ranges" data-menu-target="dgui_template_exp_direct_ranges">Ranges</a></li><li><a class="page-menu-link" href="#d
 gui_template_exp_direct_hash" data-menu-target="dgui_template_exp_direct_hash">Hashes</a></li></ul></li><li><a class="page-menu-link" href="#dgui_template_exp_var" data-menu-target="dgui_template_exp_var">Retrieving variables</a><ul><li><a class="page-menu-link" href="#dgui_template_exp_var_toplevel" data-menu-target="dgui_template_exp_var_toplevel">Top-level variables</a></li><li><a class="page-menu-link" href="#dgui_template_exp_var_hash" data-menu-target="dgui_template_exp_var_hash">Retrieving data from a hash</a></li><li><a class="page-menu-link" href="#dgui_template_exp_var_sequence" data-menu-target="dgui_template_exp_var_sequence">Retrieving data from a sequence</a></li><li><a class="page-menu-link" href="#dgui_template_exp_var_special" data-menu-target="dgui_template_exp_var_special">Special variables</a></li></ul></li><li><a class="page-menu-link" href="#dgui_template_exp_stringop" data-menu-target="dgui_template_exp_stringop">String operations</a><ul><li><a class="page-men
 u-link" href="#dgui_template_exp_stringop_interpolation" data-menu-target="dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a></li><li><a class="page-menu-link" href="#dgui_template_exp_get_character" data-menu-target="dgui_template_exp_get_character">Getting a character</a></li><li><a class="page-menu-link" href="#dgui_template_exp_stringop_slice" data-menu-target="dgui_template_exp_stringop_slice">String slicing (substrings)</a></li></ul></li><li><a class="page-menu-link" href="#dgui_template_exp_sequenceop" data-menu-target="dgui_template_exp_sequenceop">Sequence operations</a><ul><li><a class="page-menu-link" href="#dgui_template_exp_sequenceop_cat" data-menu-target="dgui_template_exp_sequenceop_cat">Concatenation</a></li><li><a class="page-menu-link" href="#dgui_template_exp_seqenceop_slice" data-menu-target="dgui_template_exp_seqenceop_slice">Sequence slicing</a></li></ul></li><li><a class="page-menu-link" href="#dgui_template_exp_hashop" data-menu-ta
 rget="dgui_template_exp_hashop">Hash operations</a><ul><li><a class="page-menu-link" href="#dgui_template_exp_hashop_cat" data-menu-target="dgui_template_exp_hashop_cat">Concatenation</a></li></ul></li><li><a class="page-menu-link" href="#dgui_template_exp_arit" data-menu-target="dgui_template_exp_arit">Arithmetical calculations</a></li><li><a class="page-menu-link" href="#dgui_template_exp_comparison" data-menu-target="dgui_template_exp_comparison">Comparison</a></li><li><a class="page-menu-link" href="#dgui_template_exp_logicalop" data-menu-target="dgui_template_exp_logicalop">Logical operations</a></li><li><a class="page-menu-link" href="#dgui_template_exp_builtin" data-menu-target="dgui_template_exp_builtin">Built-ins</a></li><li><a class="page-menu-link" href="#dgui_template_exp_methodcall" data-menu-target="dgui_template_exp_methodcall">Method call</a></li><li><a class="page-menu-link" href="#dgui_template_exp_missing" data-menu-target="dgui_template_exp_missing">Handling miss
 ing values</a><ul><li><a class="page-menu-link" href="#dgui_template_exp_missing_default" data-menu-target="dgui_template_exp_missing_default">Default value operator</a></li><li><a class="page-menu-link" href="#dgui_template_exp_missing_test" data-menu-target="dgui_template_exp_missing_test">Missing value test operator</a></li></ul></li><li><a class="page-menu-link" href="#dgui_template_exp_assignment" data-menu-target="dgui_template_exp_assignment">Assignment Operators</a></li><li><a class="page-menu-link" href="#dgui_template_exp_parentheses" data-menu-target="dgui_template_exp_parentheses">Parentheses</a></li><li><a class="page-menu-link" href="#dgui_template_exp_whitespace" data-menu-target="dgui_template_exp_whitespace">White-space in expressions</a></li><li><a class="page-menu-link" href="#dgui_template_exp_precedence" data-menu-target="dgui_template_exp_precedence">Operator precedence</a></li></ul> </div><p>When you supply values for interpolations or directive
+        parameters you can use variables or more complex expressions. For
+        example, if x is the number 8 and y is 5, the value of <code class="inline-code">(x +
+        y)/2</code> resolves to the numerical value 6.5.</p><p>Before we go into details, let&#39;s see some concrete
+        examples:</p><ul>
+          <li>
+            <p>When you supply value for interpolations: The usage of
+            interpolations is
+            <code class="inline-code">${<em class="code-color">expression</em>}</code> where
+            expression gives the value you want to insert into the output as
+            text. So <code class="inline-code">${(5 + 8)/2}</code> prints "6.5"
+            to the output (or possibly "6,5" if the language of
+            your output is not US English).</p>
+          </li>
+
+          <li>
+            <p>When you supply a value for the directive parameter: You
+            have already seen the <code class="inline-code">if</code> directive in the
+            Getting Started section. The syntax of this directive is:
+            <code class="inline-code">&lt;#if
+            <em class="code-color">expression</em>&gt;<em class="code-color">...</em>&lt;/#if&gt;</code>.
+            The expression here must evaluate to a boolean value. For example
+            in <code class="inline-code">&lt;#if 2 &lt; 3&gt;</code> the <code class="inline-code">2 &lt;
+            3</code> (2 is less than 3) is an expression which evaluates to
+            <code class="inline-code">true</code>.</p>
+          </li>
+        </ul>
+          
+
+
+
+<h2 class="content-header header-section2" id="exp_cheatsheet">Quick overview (cheat sheet)</h2>
+
+
+          <p>This is a reminder for those of you who already know
+          FreeMarker or are just experienced programmers:</p>
+
+          <ul>
+            <li>
+              <a href="#dgui_template_exp_direct">Specify values
+              directly</a>
+
+              <ul>
+                <li>
+                  <a href="#dgui_template_exp_direct_string">Strings</a>:
+                  <code class="inline-code">&quot;Foo&quot;</code> or <code class="inline-code">&#39;Foo&#39;</code> or
+                  <code class="inline-code">&quot;It&#39;s \&quot;quoted\&quot;&quot;</code> or <code class="inline-code">&#39;It\&#39;s
+                  &quot;quoted&quot;&#39;</code> or
+                  <code class="inline-code">r&quot;C:\raw\string&quot;</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_direct_number">Numbers</a>:
+                  <code class="inline-code">123.45</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_direct_boolean">Booleans</a>:
+                  <code class="inline-code">true</code>, <code class="inline-code">false</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_direct_seuqence">Sequences</a>:
+                  <code class="inline-code">[&quot;foo&quot;, &quot;bar&quot;, 123.45]</code>; Ranges:
+                  <code class="inline-code">0..9</code>, <code class="inline-code">0..&lt;10</code> (or
+                  <code class="inline-code">0..!10</code>), <code class="inline-code">0..</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_direct_hash">Hashes</a>:
+                  <code class="inline-code">{&quot;name&quot;:&quot;green�mouse&quot;,
+                  &quot;price&quot;:150}</code>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_var">Retrieving
+              variables</a>
+
+              <ul>
+                <li>
+                  <a href="#dgui_template_exp_var_toplevel">Top-level
+                  variables</a>: <code class="inline-code">user</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_var_hash">Retrieving
+                  data from a hash</a>: <code class="inline-code">user.name</code>,
+                  <code class="inline-code">user[&quot;name&quot;]</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_var_sequence">Retrieving data
+                  from a sequence</a>:
+                  <code class="inline-code">products[5]</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_var_special">Special
+                  variable</a>: <code class="inline-code">.main</code>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_stringop">String
+              operations</a>
+
+              <ul>
+                <li>
+                  <a href="#dgui_template_exp_stringop_interpolation">Interpolation
+                  and concatenation</a>:
+                  <code class="inline-code">&quot;Hello�${user}!&quot;</code> (or <code class="inline-code">&quot;Hello
+                  &quot;�+�user + &quot;!&quot;</code>)
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_get_character">Getting a
+                  character</a>: <code class="inline-code">name[0]</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_stringop_slice">String
+                  slice:</a> Inclusive end: <code class="inline-code">name[0..4]</code>,
+                  Exclusive end: <code class="inline-code">name[0..&lt;5]</code>,
+                  Length-based (lenient): <code class="inline-code">name[0..*5]</code>,
+                  Remove starting: <code class="inline-code">name[5..]</code>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_sequenceop">Sequence
+              operations</a>
+
+              <ul>
+                <li>
+                  <a href="#dgui_template_exp_sequenceop_cat">Concatenation</a>:
+                  <code class="inline-code">users + [&quot;guest&quot;]</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_seqenceop_slice">Sequence
+                  slice</a>: Inclusive end:
+                  <code class="inline-code">products[20..29]</code>, Exclusive end:
+                  <code class="inline-code">products[20..&lt;30]</code>, Length-based
+                  (lenient): <code class="inline-code">products[20..*10]</code>, Remove
+                  starting: <code class="inline-code">products[20..]</code>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_hashop">Hash
+              operations</a>
+
+              <ul>
+                <li>
+                  <a href="#dgui_template_exp_hashop_cat">Concatenation</a>:
+                  <code class="inline-code">passwords + { &quot;joe&quot;: &quot;secret42&quot; }</code>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_arit">Arithmetical
+              calculations</a>: <code class="inline-code">(x * 1.5 + 10) / 2 - y %
+              100</code>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_comparison">Comparison</a>:
+              <code class="inline-code">x�==�y</code>, <code class="inline-code">x�!=�y</code>,
+              <code class="inline-code">x�&lt;�y</code>, <code class="inline-code">x�&gt;�y</code>,
+              <code class="inline-code">x�&gt;=�y</code>, <code class="inline-code">x�&lt;=�y</code>,
+              <code class="inline-code">x�lt�y</code>, <code class="inline-code">x�lte�y</code>,
+              <code class="inline-code">x gt y</code>, <code class="inline-code">x gte y</code>,
+              ...etc.
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_logicalop">Logical
+              operations</a>: <code class="inline-code">!registered &amp;&amp; (firstVisit
+              || fromEurope)</code>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_builtin">Built-ins</a>:
+              <code class="inline-code">name?upper_case</code>,
+              <code class="inline-code">path?ensure_starts_with(&#39;/&#39;)</code>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_methodcall">Method
+              call</a>: <code class="inline-code">repeat(&quot;What&quot;, 3)</code>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_missing">Missing value
+              handler operators</a>:
+
+              <ul>
+                <li>
+                  <a href="#dgui_template_exp_missing_default">Default
+                  value</a>: <code class="inline-code">name!&quot;unknown&quot;</code> or
+                  <code class="inline-code">(user.name)!&quot;unknown&quot;</code> or
+                  <code class="inline-code">name!</code> or
+                  <code class="inline-code">(user.name)!</code>
+                </li>
+
+                <li>
+                  <a href="#dgui_template_exp_missing_test">Missing
+                  value test</a>: <code class="inline-code">name??</code> or
+                  <code class="inline-code">(user.name)??</code>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <a href="#dgui_template_exp_assignment">Assignment
+              operators</a>: <code class="inline-code">=</code>, <code class="inline-code">+=</code>,
+              <code class="inline-code">-=</code>, <code class="inline-code">*=</code>,
+              <code class="inline-code">/=</code>, <code class="inline-code">%=</code>,
+              <code class="inline-code">++</code>, <code class="inline-code">--</code>
+            </li>
+          </ul>
+
+          <p>See also: <a href="#dgui_template_exp_precedence">Operator
+          precedence</a></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_direct">Specify values directly</h2>
+
+
+          
+
+          
+
+          <p>Often you want to specify a value directly and not as a result
+          of some calculations.</p>
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_direct_string">Strings</h3>
+
+
+            
+
+            <p>To specify a string value directly you give the text in
+            quotation marks, e.g.: <code class="inline-code">&quot;some text&quot;</code> or in
+            apostrophe-quote, e.g. <code class="inline-code">&#39;some text&#39;</code>. The two
+            forms are equivalent. If the text itself contains the character
+            used for the quoting (either <code class="inline-code">&quot;</code> or
+            <code class="inline-code">&#39;</code>) or backslashes, you have to precede them
+            with a backslash; this is called escaping. You can type any other
+            character, including <a href="gloss.html#gloss.lineBreak">line
+            breaks</a>, in the text directly. Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">${&quot;It&#39;s \&quot;quoted\&quot; and
+this is a backslash: \\&quot;}
+
+${&#39;It\&#39;s &quot;quoted&quot; and
+this is a backslash: \\&#39;}</pre></div>
+
+            <p>will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">It&#39;s &quot;quoted&quot; and
+this is a backslash: \
+
+It&#39;s &quot;quoted&quot; and
+this is a backslash: \</pre></div>
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p>Of course, you could simply type the above text into the
+              template, without using
+              <code class="inline-code">${<em class="code-color">...</em>}</code>. But we do
+              it here just for the sake of example, to demonstrate
+              expressions.</p>
+              </div>
+
+
+            <a name="topic.escapeSequence"></a>
+
+            
+
+            <p>This is the list of all supported escape sequences. All
+            other usage of backlash in string literals is an error and any
+            attempt to use the template will fail.</p>
+
+              <div class="table-responsive">
+    <table class="table">
+
+              <thead>
+                <tr>
+                  <th>Escape sequence</th>
+
+
+                  <th>Meaning</th>
+
+                </tr>
+
+              </thead>
+
+
+              <tbody>
+                <tr>
+                  <td><code class="inline-code">\&quot;</code></td>
+
+
+                  <td>Quotation mark (u0022)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\&#39;</code></td>
+
+
+                  <td>Apostrophe (a.k.a. apostrophe-quote) (u0027)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\{</code></td>
+
+
+                  <td>Opening curly brace: <code class="inline-code">{</code></td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\\</code></td>
+
+
+                  <td>Back slash (u005C)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\n</code></td>
+
+
+                  <td>Line feed (u000A)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\r</code></td>
+
+
+                  <td>Carriage return (u000D)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\t</code></td>
+
+
+                  <td>Horizontal tabulation (a.k.a. tab) (u0009)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\b</code></td>
+
+
+                  <td>Backspace (u0008)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\f</code></td>
+
+
+                  <td>Form feed (u000C)</td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\l</code></td>
+
+
+                  <td>Less-than sign: <code class="inline-code">&lt;</code></td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\g</code></td>
+
+
+                  <td>Greater-than sign: <code class="inline-code">&gt;</code></td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\a</code></td>
+
+
+                  <td>Ampersand: <code class="inline-code">&amp;</code></td>
+
+                </tr>
+
+
+                <tr>
+                  <td><code class="inline-code">\x<em class="code-color">Code</em></code></td>
+
+
+                  <td>Character given with its hexadecimal <a href="gloss.html#gloss.unicode">Unicode</a> code (<a href="gloss.html#gloss.UCS">UCS</a> code)</td>
+
+                </tr>
+
+              </tbody>
+
+                </table>
+  </div>
+
+
+            <p>The <code class="inline-code"><em class="code-color">Code</em></code> after
+            the <code class="inline-code">\x</code> is 1 to 4 hexadecimal digits. For
+            example this all put a copyright sign into the string:
+            <code class="inline-code">&quot;\xA9�1999-2001&quot;</code>,
+            <code class="inline-code">&quot;\x0A9�1999-2001&quot;</code>,
+            <code class="inline-code">&quot;\x00A9�1999-2001&quot;</code>. When the character directly
+            after the last hexadecimal digit can be interpreted as hexadecimal
+            digit, you must use all 4 digits or else FreeMarker will
+            misunderstand you.</p>
+
+            <p>Note that the character sequence <code class="inline-code">${</code> (and
+            <code class="inline-code">#{</code>) has special meaning. It&#39;s used to insert
+            the value of expressions (typically: the value of variables, as in
+            <code class="inline-code">&quot;Hello�${user}!&quot;</code>). This will be explained <a href="#dgui_template_exp_stringop_interpolation">later</a>.
+            If you want to print <code class="inline-code">${</code> or
+            <code class="inline-code">#{</code>, you should either use raw string literals
+            as explained below, or escape the <code class="inline-code">{</code> like in
+            <code class="inline-code">&quot;foo $\{bar}&quot;</code>.</p>
+
+            
+
+            <p>A special kind of string literals is the raw string
+            literals. In raw string literals, backslash and
+            <code class="inline-code">${</code> have no special meaning, they are considered
+            as plain characters. To indicate that a string literal is a raw
+            string literal, you have to put an <code class="inline-code">r</code> directly
+            before the opening quotation mark or apostrophe-quote.
+            Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">${r&quot;${foo}&quot;}
+${r&quot;C:\foo\bar&quot;}</pre></div>
+
+            <p>will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">${foo}
+C:\foo\bar</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_direct_number">Numbers</h3>
+
+
+            
+
+            <p>To specify a numerical value directly you type the number
+            without quotation marks. You have to use the dot as your decimal
+            separator and must not use any grouping separator symbols. You can
+            use <code class="inline-code">-</code> or <code class="inline-code">+</code> to indicate the
+            sign (<code class="inline-code">+</code> is redundant). Scientific notation is
+            not yet supported (so <code class="inline-code">1E3</code> is wrong). Also, you
+            cannot omit the 0 before the decimal separator (so
+            <code class="inline-code">.5</code> is wrong).</p>
+
+            <p>Examples of valid number literals: <code class="inline-code">0.08</code>,
+            <code class="inline-code">-5.013</code>, <code class="inline-code">8</code>,
+            <code class="inline-code">008</code>, <code class="inline-code">11</code>,
+            <code class="inline-code">+11</code></p>
+
+            <p>Note that numerical literals like <code class="inline-code">08</code>,
+            <code class="inline-code">+8</code>, <code class="inline-code">8.00</code> and
+            <code class="inline-code">8</code> are totally equivalent as they all symbolize
+            the number eight. Thus, <code class="inline-code">${08}</code>,
+            <code class="inline-code">${+8}</code>, <code class="inline-code">${8.00}</code> and
+            <code class="inline-code">${8}</code> will all print exactly same.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_direct_boolean">Booleans</h3>
+
+
+            
+
+            
+
+            <p>To specify a boolean value you write <code class="inline-code">true</code>
+            or <code class="inline-code">false</code>. Don&#39;t use quotation marks.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_direct_seuqence">Sequences</h3>
+
+
+            
+
+            
+
+            
+
+            
+
+            <p>To specify a literal sequence, you list the <a href="dgui_quickstart_datamodel.html#topic.dataModel.subVar">sub variables</a> separated by
+            commas, and put the whole list into square brackets. For
+            example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list <strong>[&quot;foo&quot;, &quot;bar&quot;, &quot;baz&quot;]</strong> as x&gt;
+${x}
+&lt;/#list&gt;</pre></div>
+
+            <p>will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">foo
+bar
+baz
+ </pre></div>
+
+            <p>The items in the list are expressions, so you can do this
+            for example: <code class="inline-code">[2 + 2, [1, 2, 3, 4], &quot;foo&quot;]</code>. Here
+            the first subvariable will be the number 4, the second will be
+            another sequence, and the third subvariable will be the string
+            "foo".</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_direct_ranges">Ranges</h3>
+
+
+            <p>Ranges are just sequences, but they are created by
+            specifying what range of whole numbers they contain, instead of
+            specifying their items one by one. For example,
+            <code class="inline-code">0..&lt;m</code>, assuming the <code class="inline-code">m</code>
+            variable stores 5, will give a sequence that contains <code class="inline-code">[0,
+            1, 2, 3, 4]</code>. Ranges are primarily used for iterating
+            over a range of numbers with <code class="inline-code">&lt;#list
+            <em class="code-color">...</em>&gt;</code> and for <a href="#dgui_template_exp_seqenceop_slice">slicing
+            sequences</a> and <a href="#dgui_template_exp_stringop_slice">slicing
+            strings</a>.</p>
+
+            <p>The generic forms of range expressions are (where
+            <code class="inline-code"><em class="code-color">start</em></code> and
+            <code class="inline-code"><em class="code-color">end</em></code> can be any
+            expression that evaluates to a number):</p>
+
+            <ul>
+              <li>
+                <p><code class="inline-code"><em class="code-color">start</em>..<em class="code-color">end</em></code>:
+                Range with inclusive end. For example, <code class="inline-code">1..4</code>
+                gives <code class="inline-code">[1, 2, 3, 4]</code>, and
+                <code class="inline-code">4..1</code> gives <code class="inline-code">[4, 3, 2, 1]</code>.
+                Beware, ranges with inclusive end never give an empty
+                sequence, so <code class="inline-code">0..length-1</code> is
+                <em>WRONG</em>, because when length is
+                <code class="inline-code">0</code> it gives <code class="inline-code">[0,
+                -1]</code>.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code"><em class="code-color">start</em>..&lt;<em class="code-color">end</em></code>
+                or
+                <code class="inline-code"><em class="code-color">start</em>..!<em class="code-color">end</em></code>:
+                Range with exclusive end. For example,
+                <code class="inline-code">1..&lt;4</code> gives <code class="inline-code">[1, 2,
+                3]</code>, <code class="inline-code">4..&lt;1</code> gives <code class="inline-code">[4,
+                3, 2]</code>, and <code class="inline-code">1..&lt;1</code> gives
+                <code class="inline-code">[]</code>. Note the last example; the result can
+                be an empty sequence. There&#39;s no difference between
+                <code class="inline-code">..&lt;</code> and <code class="inline-code">..!</code>; the last
+                form is used in applications where using the
+                <code class="inline-code">&lt;</code> character causes problems (for HTML
+                editors and such).</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code"><em class="code-color">start</em>..*<em class="code-color">length</em></code>:
+                Length limited range. For example, <code class="inline-code">10..*4</code>
+                gives <code class="inline-code">[10, 11, 12, 13]</code>,
+                <code class="inline-code">10..*-4</code> gives <code class="inline-code">[10, 9, 8,
+                7]</code>, and <code class="inline-code">10..*0</code> gives
+                <code class="inline-code">[]</code>. When these kind of ranges are used for
+                slicing, the slice will end without error if the end of the
+                sliced sequence or string is reached before the specified
+                range length was reached; see <a href="#dgui_template_exp_seqenceop_slice">slicing
+                sequences</a> for more.</p>
+
+                  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+                  <p>Length limited ranges were introduced in FreeMarker
+                  2.3.21.</p>
+                  </div>
+
+              </li>
+
+              <li>
+                <p><code class="inline-code"><em class="code-color">start</em>..</code>:
+                Right-unbounded range. This are like length limited ranges
+                with infinite length. For example <code class="inline-code">1..</code> gives
+                <code class="inline-code">[1, 2, 3, 4, 5, 6, ... ]</code>, up to infinity.
+                Be careful when processing (like listing) such ranges, as
+                processing all items of it it would take forever or until the
+                application runs out of memory and crashes. Just like with
+                length limited ranges, when these kind of ranges are used for
+                slicing, the slice will end when the end of the sliced
+                sequence or string is reached.</p>
+
+                  <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+                  <p>Right-unbounded ranges before FreeMarker 2.3.21 were
+                  only used for slicing, and behaved like an empty sequence
+                  for other purposes. To activate the new behavior, it&#39;s not
+                  enough to use FreeMarker 2.3.21, the programmer also have to
+                  set the <code class="inline-code">incompatible_improvements</code>
+                  configuration setting to at least 2.3.21.</p>
+                  </div>
+
+              </li>
+            </ul>
+
+            <p>Further notes on ranges:</p>
+
+            <ul>
+              <li>
+                <p>Range expressions themselves don&#39;t have square brackets,
+                for example, you write <code class="inline-code">&lt;#assign myRange =
+                0..&lt;x</code>, NOT <code class="inline-code">&lt;#assign myRange =
+                [0..&lt;x]&gt;</code>. The last would create a sequence
+                that contains an item that&#39;s a range. The square brackets are
+                part of the slicing syntax, like
+                <code class="inline-code"><em class="code-color">seq</em>[<em class="code-color">myRange</em>]</code>.</p>
+              </li>
+
+              <li>
+                <p>You can write arithmetical expression on the sides of
+                the <code class="inline-code">..</code> without parenthesis, like <code class="inline-code">n
+                + 1 ..&lt; m / 2 - 1</code>.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">..</code>, <code class="inline-code">..&lt;</code>,
+                <code class="inline-code">..!</code> and <code class="inline-code">..*</code> are
+                operators, so you can&#39;t have space inside them. Like
+                <code class="inline-code">n .. &lt;m</code> is WRONG, but <code class="inline-code">n ..&lt;
+                m</code> is good.</p>
+              </li>
+
+              <li>
+                <p>The reported size of right-unbounded ranges is
+                2147483647 (or 0 if
+                <code class="inline-code">incompatible_improvements</code> is less than
+                2.3.21) due to a technical limitation (32 bits). However, when
+                listing them, their actual size is infinite.</p>
+              </li>
+
+              <li>
+                <p>Ranges don&#39;t really store the numbers they consist of,
+                thus for example <code class="inline-code">0..1</code> and
+                <code class="inline-code">0..100000000</code> is equally fast to create and
+                takes the same amount of memory.</p>
+              </li>
+            </ul>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_direct_hash">Hashes</h3>
+
+
+            
+
+            
+
+            <p>To specify a hash in a template, you list the key/value
+            pairs separated by commas, and put the list into curly brackets.
+            The key and value within a key/value pair are separated with a
+            colon. Here is an example: <code class="inline-code">{ &quot;name&quot;: &quot;green�mouse&quot;,
+            &quot;price&quot;: 150 }</code>. Note that both the names and the values
+            are expressions. The keys must be strings. The values can be if
+            any type.</p>
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_var">Retrieving variables</h2>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_var_toplevel">Top-level variables</h3>
+
+
+            
+
+            <p>To access a top-level variable, you simply use the variable
+            name. For example, the expression <code class="inline-code">user</code> will
+            evaluate to the value of variable stored with name
+            "user" in the root. So this will print what you store
+            there:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">${user}</pre></div>
+
+            <p>If there is no such top-level variable, then an error will
+            result when FreeMarker tries to evaluate the expression, and it
+            aborts template processing (unless programmers has configured
+            FreeMarker differently).</p>
+
+            <p>In this kind of expression, the variable name can only
+            contain letters (including non-Latin letters), digits (including
+            non-Latin digits), underline (<code class="inline-code">_</code>), dollar
+            (<code class="inline-code">$</code>), at sign (<code class="inline-code">@</code>).
+            Furthermore, the first character can&#39;t be a ASCII digit
+            (<code class="inline-code">0</code>-<code class="inline-code">9</code>). Starting from
+            FreeMarker 2.3.22, the variable name can also contain minus
+            (<code class="inline-code">-</code>), dot (<code class="inline-code">.</code>), and colon
+            (<code class="inline-code">:</code>) at any position, but these must be escaped
+            with a preceding backslash (<code class="inline-code">\</code>), or else they
+            would be interpreted as operators. For example, to read the
+            variable whose name is "data-id", the expression is
+            <code class="inline-code">data\-id</code>, as <code class="inline-code">data-id</code> would
+            be interpreted as "data minus id". (Note that these
+            escapes only work in identifiers, not in string literals.)</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_var_hash">Retrieving data from a hash</h3>
+
+
+            
+
+            
+
+            <p>If we already have a hash as a result of an expression, then
+            we can get its subvariable with a dot and the name of the
+            subvariable. Assume that we have this data-model:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-data-model">(root)
+ |
+ +- book
+ |   |
+ |   +- title = &quot;Breeding green mouses&quot;
+ |   |
+ |   +- author
+ |       |
+ |       +- name = &quot;Julia Smith&quot;
+ |       |
+ |       +- info = &quot;Biologist, 1923-1985, Canada&quot;
+ |
+ +- test = &quot;title&quot;</pre></div>
+
+            <p>Now we can read the <code class="inline-code">title</code> with
+            <code class="inline-code">book.title</code>, since the book expression will
+            return a hash (as explained in the last chapter). Applying this
+            logic further, we can read the name of the author with this
+            expression: <code class="inline-code">book.author.name</code>.</p>
+
+            <p>There is an alternative syntax if we want to specify the
+            subvariable name with an expression:
+            <code class="inline-code">book[&quot;title&quot;]</code>. In the square brackets you can
+            give any expression as long as it evaluates to a string. So with
+            this data-model you can also read the title with
+            <code class="inline-code">book[test]</code>. More examples; these are all
+            equivalent: <code class="inline-code">book.author.name</code>,
+            <code class="inline-code">book[&quot;author&quot;].name</code>,
+            <code class="inline-code">book.author.[&quot;name&quot;]</code>,
+            <code class="inline-code">book[&quot;author&quot;][&quot;name&quot;]</code>.</p>
+
+            <p>When you use the dot syntax, the same restrictions apply
+            regarding the variable name as with top-level variables (name can
+            contain only letters, digits, <code class="inline-code">_</code>,
+            <code class="inline-code">$</code>, <code class="inline-code">@</code> but can&#39;t start with
+            <code class="inline-code">0</code>-<code class="inline-code">9</code>, also starting from
+            2.3.22 you can also use <code class="inline-code">\-</code>,
+            <code class="inline-code">\.</code> and <code class="inline-code">\:</code>). There are no
+            such restrictions when you use the square bracket syntax, since
+            the name is the result of an arbitrary expression. (Note, that to
+            help the FreeMarker XML support, if the subvariable name is
+            <code class="inline-code">*</code> (asterisk) or <code class="inline-code">**</code>, then you
+            do not have to use square bracket syntax.)</p>
+
+            <p>As with the top-level variables, trying to access a
+            non-existent subvariable causes an error and aborts the processing
+            of the template (unless programmers has configured FreeMarker
+            differently).</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_var_sequence">Retrieving data from a sequence</h3>
+
+
+            
+
+            
+
+            <p>This is the same as for hashes, but you can use the square
+            bracket syntax only, and the expression in the brackets must
+            evaluate to a number, not a string. For example to get the name of
+            the first animal of the <a href="dgui_datamodel_basics.html#example.stdDataModel">example data-model</a> (remember
+            that the number of the first item is 0, not 1):
+            <code class="inline-code">animals[0].name</code></p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_var_special">Special variables</h3>
+
+
+            
+
+            <p>Special variables are variables defined by the FreeMarker
+            engine itself. To access them, you use the
+            <code class="inline-code">.<em class="code-color">variable_name</em></code>
+            syntax.</p>
+
+            <p>Normally you don&#39;t need to use special variables. They are
+            for expert users. The complete list of special variables can be
+            found in the <a href="ref_specvar.html">reference</a>.</p>
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_stringop">String operations</h2>
+
+
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_stringop_interpolation">Interpolation and concatenation</h3>
+
+
+            
+
+            
+
+            
+
+            
+
+            
+
+            
+
+            <p>If you want to insert the value of an expression into a
+            string, you can use
+            <code class="inline-code">${<em class="code-color">...</em>}</code> (and the
+            deprecated <code class="inline-code">#{<em class="code-color">...</em>}</code>)
+            in string literals.
+            <code class="inline-code">${<em class="code-color">...</em>}</code> in string
+            literals <a href="dgui_template_valueinsertion.html">behaves
+            similarly as in <span class="marked-text">text</span>
+            sections</a> (so it goes through the same <em>locale
+            sensitive</em> number and date/time formatting).</p>
+
+            <p>Example (assume that user is "Big Joe"):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign s = &quot;Hello ${user}!&quot;&gt;
+${s} &lt;#-- Just to see what the value of s is --&gt;</pre></div>
+
+            <p>This will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">Hello Big Joe!</pre></div>
+
+              <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+              <p>A frequent mistake of users is the usage of interpolations
+              in places where they needn&#39;t/shouldn&#39;t/can&#39;t be used.
+              Interpolations work <em>only</em> in <a href="dgui_template_overallstructure.html"><span class="marked-text">text</span> sections</a> (e.g.
+              <code class="inline-code">&lt;h1&gt;Hello ${name}!&lt;/h1&gt;</code>) and in
+              string literals (e.g. <code class="inline-code">&lt;#include
+              &quot;/footer/${company}.html&quot;&gt;</code>). A typical
+              <em>WRONG</em> usage is <code class="inline-code">&lt;#if
+              ${big}&gt;...&lt;/#if&gt;</code>, which will cause a
+              syntactical error. You should simply write <code class="inline-code">&lt;#if
+              big&gt;...&lt;/#if&gt;</code>. Also, <code class="inline-code">&lt;#if
+              &quot;${big}&quot;&gt;...&lt;/#if&gt;</code> is
+              <em>WRONG</em>, since it converts the parameter
+              value to string and the <code class="inline-code">if</code> directive wants a
+              boolean value, so it will cause a runtime error.</p>
+              </div>
+
+
+            <p><a name="dgui_template_exp_stringop_concatenation"></a>Alternatively,
+            you can use the <code class="inline-code">+</code> operator to achieve similar
+            result:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign s = &quot;Hello &quot; + user + &quot;!&quot;&gt;</pre></div>
+
+            <p>This gives the same result as the earlier example with the
+            <code class="inline-code">${<em class="code-color">...</em>}</code>.</p>
+
+              <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+              <p>Because <code class="inline-code">+</code> follows similar rules as
+              <code class="inline-code">${<em class="code-color">...</em>}</code>, the
+              appended string is influenced by the <code class="inline-code">locale</code>,
+              <code class="inline-code">number_format</code>,
+              <code class="inline-code">date_format</code>, <code class="inline-code">time_format</code>,
+              <code class="inline-code">datetime_format</code> and
+              <code class="inline-code">boolean_format</code>, etc. settings, and thus the
+              result targets humans and isn&#39;t in generally machine parseable.
+              This mostly leads to problems with numbers, as many locales use
+              grouping (thousands separators) by default, and so
+              <code class="inline-code">&quot;someUrl?id=&quot; + id</code> becomes to something like
+              <code class="inline-code">&quot;someUrl?id=1�234&quot;</code>. To prevent this, use the
+              <code class="inline-code">?c</code> (for Computer audience) built-in, like in
+              <code class="inline-code">&quot;someUrl?id=&quot; + id?c</code> or
+              <code class="inline-code">&quot;someUrl?id=${id?c}&quot;</code>, which will evaluate to
+              something like <code class="inline-code">&quot;someUrl?id=1234&quot;</code>, regardless
+              of locale and format settings.</p>
+              </div>
+
+
+            <p>As when <code class="inline-code">${<em class="code-color">...</em>}</code>
+            is used inside string <em>expressions</em> it&#39;s just a
+            shorthand of using the <code class="inline-code">+</code> operator, <a href="dgui_misc_autoescaping.html">auto-escaping</a> is not
+            applied on it.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_get_character">Getting a character</h3>
+
+
+            
+
+            
+
+            <p>You can get a single character of a string at a given index
+            similarly as you can <a href="#dgui_template_exp_var_sequence">read the subvariable of a
+            sequence</a>, e.g. <code class="inline-code">user[0]</code>. The result will
+            be a string whose length is 1; FTL doesn&#39;t have a separate
+            character type. As with sequence sub variables, the index must be
+            a number that is at least 0 and less than the length of the
+            string, or else an error will abort the template
+            processing.</p>
+
+            <p>Since the sequence subvariable syntax and the character
+            getter syntax clashes, you can use the character getter syntax
+            only if the variable is not a sequence as well (which is possible
+            because FTL supports multi-typed values), since in that case the
+            sequence behavior prevails. (To work this around, you can use
+            <a href="ref_builtins_string.html#ref_builtin_string_for_string">the
+            <code>string</code> built-in</a>, e.g.
+            <code class="inline-code">user?string[0]</code>. Don&#39;t worry if you don&#39;t
+            understand this yet; built-ins will be discussed later.)</p>
+
+            <p>Example (assume that user is "Big Joe"):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">${user[0]}
+${user[4]}</pre></div>
+
+            <p>will print (note that the index of the first character is
+            0):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">B
+J</pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_stringop_slice">String slicing (substrings)</h3>
+
+
+            
+
+            
+
+            
+
+            
+
+            <p>You can a slice a string in the same way as you <a href="#dgui_template_exp_seqenceop_slice">slice a
+            sequence</a> (see there), only here instead of sequence items
+            you work with characters. Some differences are:</p>
+
+            <ul>
+              <li>
+                <p>Decreasing ranges aren&#39;t allowed for string slicing.
+                (That&#39;s because unlike sequences, you seldom if ever want to
+                show a string reversed, so if that happens, that&#39;s almost
+                always the result of an oversight.)</p>
+              </li>
+
+              <li>
+                <p>If a value is both a string and a sequence (a
+                multi-typed value), then slicing will slice the sequence
+                instead of the string. When you are processing XML, such
+                values are common. In such cases you can use
+                <code class="inline-code"><em class="code-color">someXMLnode</em>?string[<em class="code-color">range</em>]</code>.</p>
+              </li>
+
+              <li>
+                <p>There&#39;s a legacy bug where a range with
+                <em>inclusive</em> end that&#39;s one less than the
+                starting index and is non-negative (like in
+                <code class="inline-code">&quot;abc&quot;[1..0]</code>) will give an empty string
+                instead of an error. (It should be an error as it&#39;s a
+                decreasing range.) Currently this bug is emulated for backward
+                compatibility, but you shouldn&#39;t utilize it, as in the future
+                it will be certainly an error.</p>
+              </li>
+            </ul>
+
+            <p>Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign s = &quot;ABCDEF&quot;&gt;
+${s[2..3]}
+${s[2..&lt;4]}
+${s[2..*3]}
+${s[2..*100]}
+${s[2..]}</pre></div>
+
+            <p>will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">CD
+CD
+CDE
+CDEF
+CDEF</pre></div>
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p>Some of the typical use-cases of string slicing is covered
+              by convenient built-ins: <a href="ref_builtins_string.html#ref_builtin_remove_beginning"><code>remove_beginning</code></a>,
+              <a href="ref_builtins_string.html#ref_builtin_remove_ending"><code>remove_ending</code></a>,
+              <a href="ref_builtins_string.html#ref_builtin_keep_before"><code>keep_before</code></a>,
+              <a href="ref_builtins_string.html#ref_builtin_keep_after"><code>keep_after</code></a>,
+              <a href="ref_builtins_string.html#ref_builtin_keep_before_last"><code>keep_before_last</code></a>,
+              <a href="ref_builtins_string.html#ref_builtin_keep_after_last"><code>keep_after_last</code></a></p>
+              </div>
+
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_sequenceop">Sequence operations</h2>
+
+
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_sequenceop_cat">Concatenation</h3>
+
+
+            
+
+            
+
+            
+
+            
+
+            <p>You can concatenate sequences in the same way as strings,
+            with <code class="inline-code">+</code>. Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&quot;Joe&quot;, &quot;Fred&quot;] + [&quot;Julia&quot;, &quot;Kate&quot;] as user&gt;
+- ${user}
+&lt;/#list&gt;</pre></div>
+
+            <p>will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">- Joe
+- Fred
+- Julia
+- Kate
+ </pre></div>
+
+            <p>Note that sequence concatenation is not to be used for many
+            repeated concatenations, like for appending items to a sequence
+            inside a loop. It&#39;s just for things like <code class="inline-code">&lt;#list users
+            + admins as person&gt;</code>. Although concatenating sequences
+            is fast and its speed is independently of the size of the
+            concatenated sequences, the resulting sequence will be always a
+            little bit slower to read than the original two sequences were.
+            This way the result of many repeated concatenations is a sequence
+            that is slow to read.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_seqenceop_slice">Sequence slicing</h3>
+
+
+            
+
+            
+
+            
+
+            <p>With
+            <code class="inline-code"><em class="code-color">seq</em>[<em class="code-color">range</em>]</code>,
+            were <code class="inline-code"><em class="code-color">range</em></code> is a
+            range value <a href="#dgui_template_exp_direct_ranges">as
+            described here</a>, you can take a slice of the sequence. The
+            resulting sequence will contain the items from the original
+            sequence (<code class="inline-code"><em class="code-color">seq</em></code>) whose
+            indexes are in the range. For example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assert seq = [&quot;A&quot;, &quot;B&quot;, &quot;C&quot;, &quot;D&quot;, &quot;E&quot;]&gt;
+&lt;#list seq[1..3] as i&gt;${i}&lt;/#list&gt;</pre></div>
+
+            <p>will print</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">BCD </pre></div>
+
+            <p>Furthermore, the items in the slice will be in the same
+            order as in the range. Thus for example the above example with the
+            <code class="inline-code">3..1</code> range would print
+            <code class="inline-code">DCB</code>.</p>
+
+            <p>The numbers in the range must be valid indexes in the
+            sequence, or else the processing of the template will be aborted
+            with error. Like in the last example,
+            <code class="inline-code">seq[-1..0]</code> would be an error as
+            <code class="inline-code">seq[-1]</code> is invalid, also
+            <code class="inline-code">seq[1..5]</code> would be because
+            <code class="inline-code">seq[5]</code> is invalid. (Note that
+            <code class="inline-code">seq[100..&lt;100]</code> or
+            <code class="inline-code">seq[100..*0]</code> would be valid despite that 100 is
+            out of bounds, because those ranges are empty.)</p>
+
+            <p>Length limited ranges
+            (<code class="inline-code"><em class="code-color">start</em>..*<em class="code-color">length</em></code>)
+            and right-unbounded ranges
+            (<code class="inline-code"><em class="code-color">start</em>..</code>) adapt to
+            the length of the sliced sequence. They will slice out at most as
+            many items as there is available:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign seq = [&quot;A&quot;, &quot;B&quot;, &quot;C&quot;]&gt;
+
+Slicing with length limited ranges:
+- &lt;#list seq[0..*2] as i&gt;${i}&lt;/#list&gt;
+- &lt;#list seq[1..*2] as i&gt;${i}&lt;/#list&gt;
+- &lt;#list seq[2..*2] as i&gt;${i}&lt;/#list&gt; &lt;#-- Not an error --&gt;
+- &lt;#list seq[3..*2] as i&gt;${i}&lt;/#list&gt; &lt;#-- Not an error --&gt;
+
+Slicing with right-unlimited ranges:
+- &lt;#list seq[0..] as i&gt;${i}&lt;/#list&gt;
+- &lt;#list seq[1..] as i&gt;${i}&lt;/#list&gt;
+- &lt;#list seq[2..] as i&gt;${i}&lt;/#list&gt;
+- &lt;#list seq[3..] as i&gt;${i}&lt;/#list&gt;</pre></div>
+
+            <p>This will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">Slicing with length limited ranges:
+- AB
+- BC
+- C
+-
+
+Slicing with right-unlimited ranges:
+- ABC
+- BC
+- C
+-</pre></div>
+
+            <p>Note above that slicing with length limited and right
+            unbounded ranges allow the starting index to be past the last item
+            <em>by one</em> (but no more).</p>
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p>To split a sequence to slices of a given size, you should
+              use the <a href="ref_builtins_sequence.html#ref_builtin_chunk"><code>chunk</code></a>
+              built-in.</p>
+              </div>
+
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_hashop">Hash operations</h2>
+
+
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_hashop_cat">Concatenation</h3>
+
+
+            
+
+            
+
+            
+
+            
+
+            <p>You can concatenate hashes in the same way as strings, with
+            <code class="inline-code">+</code>. If both hashes contain the same key, the
+            hash on the right-hand side of the <code class="inline-code">+</code> takes
+            precedence. Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign ages = {&quot;Joe&quot;:23, &quot;Fred&quot;:25} + {&quot;Joe&quot;:30, &quot;Julia&quot;:18}&gt;
+- Joe is ${ages.Joe}
+- Fred is ${ages.Fred}
+- Julia is ${ages.Julia}</pre></div>
+
+            <p>will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">- Joe is 30
+- Fred is 25
+- Julia is 18</pre></div>
+
+            <p>Note that hash concatenation is not to be used for many
+            repeated concatenations, like for adding items to a hash inside a
+            loop. It&#39;s the same as with the <a href="#dgui_template_exp_sequenceop_cat">sequence
+            concatenation</a>.</p>
+          
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_arit">Arithmetical calculations</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>This is the basic 4-function calculator arithmetic plus the
+          modulus operator. So the operators are:</p>
+
+          <ul>
+            <li>
+              Addition: <code class="inline-code">+</code>
+            </li>
+
+            <li>
+              Subtraction: <code class="inline-code">-</code>
+            </li>
+
+            <li>
+              Multiplication: <code class="inline-code">*</code>
+            </li>
+
+            <li>
+              Division: <code class="inline-code">/</code>
+            </li>
+
+            <li>
+              Modulus (remainder) of integer operands:
+              <code class="inline-code">%</code>
+            </li>
+          </ul>
+
+          
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${100 - x * x}
+${x / 2}
+${12 % 10}</pre></div>
+
+          <p>Assuming that <code class="inline-code">x</code> is 5, it will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">75
+2.5
+2</pre></div>
+
+          <p>Both operands must be expressions which evaluate to a
+          numerical value. So the example below will cause an error when
+          FreeMarker tries to evaluate it, since <code class="inline-code">&quot;5&quot;</code> is a
+          string and not the number 5:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${3 * &quot;5&quot;} &lt;#-- WRONG! --&gt;</pre></div>
+
+          <p>There is an exception to the above rule. The
+          <code class="inline-code">+</code> operator, is used to <a href="#dgui_template_exp_stringop_interpolation">concatenate
+          strings</a> as well. If on one side of <code class="inline-code">+</code> is a
+          string and on the other side of <code class="inline-code">+</code> is a numerical
+          value, then it will convert the numerical value to string (using the
+          format appropriate for language of the page) and then use the
+          <code class="inline-code">+</code> as string concatenation operator.
+          Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${3 + &quot;5&quot;}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">35</pre></div>
+
+          <p>Generally, FreeMarker never converts a string to a number
+          automatically, but it may convert a number to a string
+          automatically.</p>
+
+          <p> People often want only the integer part of the result
+          of a division (or of other calculations). This is possible with the
+          <code class="inline-code">int</code> built-in. (Built-ins are explained <a href="#dgui_template_exp_builtin">later</a>):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${(x/2)?int}
+${1.1?int}
+${1.999?int}
+${-1.1?int}
+${-1.999?int}</pre></div>
+
+          <p>Assuming that <code class="inline-code">x</code> is 5, it will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">2
+1
+1
+-1
+-1</pre></div>
+
+          <p>Due to historical reasons, the <code class="inline-code">%</code> operator
+          works by first truncating the operands to an integer number, and
+          then returning the remainder of the division:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${12 % 5}   &lt;#-- Prints 2 --&gt;
+${12.9 % 5} &lt;#-- Prints 2 --&gt;
+${12.1 % 5} &lt;#-- Prints 2 --&gt;
+
+${12 % 6}   &lt;#-- Prints 0 --&gt;
+${12 % 6.9} &lt;#-- Prints 0 --&gt;</pre></div>
+
+          <p>The sign of the result of <code class="inline-code">%</code> is the same as
+          the sign of the left hand operand, and its absolute value is the
+          same as if both operands where positive:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${-12 % -5} &lt;#-- Prints -2 --&gt;
+${-12 % 5} &lt;#-- Prints -2 --&gt;
+${12 % -5} &lt;#-- Prints 2 --&gt;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_comparison">Comparison</h2>
+
+
+          
+
+          <p>Sometimes you want to know if two values are equal or not, or
+          which value is the greater.</p>
+
+          <p>To show concrete examples I will use the <code class="inline-code">if</code>
+          directive here. The usage of <code class="inline-code">if</code> directive is:
+          <code class="inline-code">&lt;#if
+          <em class="code-color">expression</em>&gt;...&lt;/#if&gt;</code>,
+          where expression must evaluate to a boolean value or else an error
+          will abort the processing of the template. If the value of
+          expression is <code class="inline-code">true</code> then the things between the
+          begin and end-tag will be processed, otherwise they will be
+          skipped.</p>
+
+          <p>To test two values for equality you use <code class="inline-code">==</code>
+          (or <code class="inline-code">=</code> as a <em>deprecated</em>
+          alternative) To test two values for inequality you use
+          <code class="inline-code">!=</code>. For example, assume that
+          <code class="inline-code">user</code> is "Big Joe":</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if <strong>user == &quot;Big Joe&quot;</strong>&gt;
+  It is Big Joe
+&lt;/#if&gt;
+&lt;#if <strong>user != &quot;Big Joe&quot;</strong>&gt;
+  It is not Big Joe
+&lt;/#if&gt;</pre></div>
+
+          <p>The <code class="inline-code">user == &quot;Big Joe&quot;</code> expression in the
+          <code class="inline-code">&lt;#if ...&gt;</code> will evaluate to the boolean
+          <code class="inline-code">true</code>, so the above will say "It is Big
+          Joe".</p>
+
+          <p>The expressions on both sides of the <code class="inline-code">==</code> or
+          <code class="inline-code">!=</code> must evaluate to a scalar (not a sequence or
+          hash). Furthermore, the two scalars must have the same type (i.e.
+          strings can only be compared to strings and numbers can only be
+          compared to numbers, etc.) or else an error will abort template
+          processing. For example <code class="inline-code">&lt;#if 1 == &quot;1&quot;&gt;</code> will
+          cause an error. Note that FreeMarker does exact comparison, so
+          string comparisons are case and white-space sensitive:
+          <code class="inline-code">&quot;x&quot;</code> and <code class="inline-code">&quot;x�&quot;</code> and
+          <code class="inline-code">&quot;X&quot;</code> are not equal values.</p>
+
+          <p>For numerical and date, time and date-time values you can also
+          use <code class="inline-code">&lt;</code>, <code class="inline-code">&lt;=</code>,
+          <code class="inline-code">&gt;=</code> and <code class="inline-code">&gt;</code>. You can&#39;t use
+          them for strings! Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if x <strong>&lt;=</strong> 12&gt;
+  x is less or equivalent with 12
+&lt;/#if&gt;</pre></div>
+
+          <p>There&#39;s a problem with <code class="inline-code">&gt;=</code> and
+          <code class="inline-code">&gt;</code>. FreeMarker interprets the
+          <code class="inline-code">&gt;</code> character as the closing character of the
+          FTL tag. To prevent this, you can use <code class="inline-code">lt</code> instead
+          of <code class="inline-code">&lt;</code>, <code class="inline-code">lte</code> instead of
+          <code class="inline-code">&lt;=</code>, <code class="inline-code">gt</code> instead of
+          <code class="inline-code">&gt;</code> and <code class="inline-code">gte</code> instead of
+          <code class="inline-code">&gt;=</code>, like in <code class="inline-code">&lt;#if x gt
+          y&gt;</code>. Another trick it to put the expression into <a href="#dgui_template_exp_parentheses">parentheses</a> like in
+          <code class="inline-code">&lt;#if (x &gt; y)&gt;</code>, although it&#39;s considered
+          to be less elegant.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>FreeMarker supports some other alternatives too, but these
+            are deprecated:</p>
+
+            <ul>
+              <li>
+                <p>Writing <code class="inline-code">&amp;gt;</code> and
+                <code class="inline-code">&amp;lt;</code> on the place of the problematic
+                relation marks, like in: <code class="inline-code">&lt;#if x &amp;gt;
+                y&gt;</code> or <code class="inline-code">&lt;#if x &amp;gt;=
+                y&gt;</code> . Note that in general FTL does not support
+                entity references (the
+                <code class="inline-code">&amp;<em class="code-color">...</em>;</code>
+                things) in FTL tags; it&#39;s just an exception with the
+                arithmetical comparisons.</p>
+              </li>
+
+              <li>
+                <p><code class="inline-code">\lt</code>, <code class="inline-code">\lte</code>,
+                <code class="inline-code">\gt</code> and <code class="inline-code">\gte</code> which are
+                the same as the ones without the backslash</p>
+              </li>
+            </ul>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_logicalop">Logical operations</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>Just the usual logical operators:</p>
+
+          <ul>
+            <li>
+              Logical or: <code class="inline-code">||</code>
+            </li>
+
+            <li>
+              Logical and: <code class="inline-code">&amp;&amp;</code>
+            </li>
+
+            <li>
+              Logical not: <code class="inline-code">!</code>
+            </li>
+          </ul>
+
+          <p>The operators will work with boolean values only. Otherwise an
+          error will abort the template processing.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#if x &lt; 12 <strong>&amp;&amp;</strong> color == &quot;green&quot;&gt;
+  We have less than 12 things, and they are green.
+&lt;/#if&gt;
+&lt;#if <strong>!</strong>hot&gt; &lt;#-- here hot must be a boolean --&gt;
+  It&#39;s not hot.
+&lt;/#if&gt;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_builtin">Built-ins</h2>
+
+
+          
+
+          <p>Built-ins are like methods that are added to the objects by
+          FreeMarker. To prevent name clashes with actual methods and other
+          sub-variables, instead of dot (<code class="inline-code">.</code>), you separate
+          them from the parent object with question mark
+          (<code class="inline-code">?</code>). For example, if you want to ensure that
+          <code class="inline-code">path</code> has an initial <code class="inline-code">/</code> then you
+          could write <code class="inline-code">path?ensure_starts_with(&#39;/&#39;)</code>. The
+          Java object behind <code class="inline-code">path</code> (a
+          <code class="inline-code">String</code> most certainly) doesn&#39;t have such method,
+          FreeMarker adds it. For brevity, if the method has no parameters,
+          you <em>must</em> omit the <code class="inline-code">()</code>, like,
+          to get the length of <code class="inline-code">path</code>, you have to write
+          <code class="inline-code">path?length</code>, <em>not</em>
+          <code class="inline-code">path?length()</code>.</p>
+
+          <p>The other reason why built-ins are crucial is that normally
+          (though it depends on configuration settings), FreeMarker doesn&#39;t
+          expose the Java API of the objects. So despite that Java&#39;s
+          <code class="inline-code">String</code> has a <code class="inline-code">length()</code> method,
+          it&#39;s hidden from the template, you <em>have to</em> use
+          <code class="inline-code">path?length</code> instead. The advantage of that is
+          that thus the template doesn&#39;t depend on the exactly type of the
+          underlying Java objects. (Like <code class="inline-code">path</code> is maybe a
+          <code class="inline-code">java.nio.Path</code> behind the scenes, but if the
+          programmers has configure FreeMarker to expose
+          <code class="inline-code">Path</code> objects as FTL strings, the template won&#39;t
+          be aware of that, and <code class="inline-code">?length</code> will work, despite
+          that <code class="inline-code">java.nio.Path</code> has no similar method.)</p>
+
+          <p>You can find some of the <a href="dgui_quickstart_template.html#topic.commonlyUsedBuiltIns">most commonly used built-ins
+          mentioned here</a>, and the <a href="ref_builtins.html">complete
+          list of built-ins in the Reference</a>. For now, just a few of
+          the more important ones:</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${testString?upper_case}
+${testString?html}
+${testString?upper_case?html}
+
+${testSequence?size}
+${testSequence?join(&quot;, &quot;)}</pre></div>
+
+          <p>Assuming that <code class="inline-code">testString</code> stores the string
+          "Tom &amp; Jerry", and testSequnce stores the strings
+          "foo", "bar" and "baz", the
+          output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">TOM &amp; JERRY
+Tom &amp;amp; Jerry
+TOM &amp;amp; JERRY
+
+3
+foo, bar, baz</pre></div>
+
+          <p>Note the <code class="inline-code">test?upper_case?html</code> above. Since
+          the result of <code class="inline-code">test?upper_case</code> is a string, you
+          can apply the <code class="inline-code">html</code> built-in on it.</p>
+
+          <p>Naturally, the left side of the built-in can be arbitrary
+          expression, not just a variable name:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${testSeqence[1]?cap_first}
+${&quot;horse&quot;?cap_first}
+${(testString + &quot; &amp; Duck&quot;)?html}</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">Bar
+Horse
+Tom &amp;amp; Jerry &amp;amp; Duck</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_methodcall">Method call</h2>
+
+
+          
+
+          
+
+          <p>If you have a method then you can use the method call
+          operation on it. The method call operation is a comma-separated list
+          of expressions in parentheses. These values are called parameters.
+          The method call operation passes these values to the method which
+          will in turn return a result. This result will be the value of the
+          whole method call expression.</p>
+
+          <p>For example, assume the programmers have made available a
+          method variable called <code class="inline-code">repeat</code>. You give a string
+          as the first parameter, and a number as the second parameter, and it
+          returns a string which repeats the first parameter the number of
+          times specified by the second parameter.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${repeat(&quot;Foo&quot;, 3)}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">FooFooFoo</pre></div>
+
+          <p>Here <code class="inline-code">repeat</code> was evaluated to the method
+          variable (according to how you <a href="#dgui_template_exp_var_toplevel">access top-level
+          variables</a>) and then <code class="inline-code">(&quot;What&quot;, 3)</code> invoked
+          that method.</p>
+
+          <p>I would like to emphasize that method calls are just plain
+          expressions, like everything else. So this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${repeat(repeat(&quot;x&quot;, 2), 3) + repeat(&quot;Foo&quot;, 4)?upper_case}</pre></div>
+
+          <p>will print this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">xxxxxxFOOFOOFOOFOO</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="dgui_template_exp_missing">Handling missing values</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>These operators exist since FreeMarker 2.3.7 (replacing the
+            <code class="inline-code">default</code>, <code class="inline-code">exists</code> and
+            <code class="inline-code">if_exists</code> built-ins).</p>
+            </div>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>As we explained earlier, an error will occur and abort the
+          template processing if you try to access a missing variable. However
+          two special operators can suppress this error, and handle the
+          problematic situation. The handled variable can be top-level
+          variable, hash subvariable, or sequence subvariable as well.
+          Furthermore these operators handle the situation when a method call
+          doesn&#39;t return a value <span class="marked-for-programmers">(from the
+          viewpoint of Java programmers: it returns <code class="inline-code">null</code> or
+          it&#39;s return type is <code class="inline-code">void</code>)</span>, so it&#39;s more
+          correct to say that these operators handle missing values in
+          general, rather than just missing variables.</p>
+
+          <p><span class="marked-for-programmers">For those who know what&#39;s Java
+          <code class="inline-code">null</code>, FreeMarker 2.3.<em>x</em>
+          treats them as missing values. Simply, the template language doesn&#39;t
+          know the concept of <code class="inline-code">null</code>. For example, if you
+          have a bean that has a <code class="inline-code">maidenName</code> property, and
+          the value of that property is <code class="inline-code">null</code>, then that&#39;s
+          the same as if there were no such property at all, as far as the
+          template is concerned (assuming you didn&#39;t configured FreeMarker to
+          use some extreme object wrapper, that is). The result of a method
+          call that returns <code class="inline-code">null</code> is also treated as a
+          missing variable (again, assuming that you use some usual object
+          wrapper). See more <a href="app_faq.html#faq_null">in the
+          FAQ</a>.</span></p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>If you wonder why is FreeMarker so picky about missing
+            variables, <a href="app_faq.html#faq_picky_about_missing_vars">read this
+            FAQ entry</a>.</p>
+            </div>
+
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="dgui_template_exp_missing_default">Default value operator</h3>
+
+
+            
+
+            <p>Synopsis:
+            <code class="inline-code"><em class="code-color">unsafe_expr</em>!<em class="code-color">default_expr</em></code>
+            or <code class="inline-code"><em class="code-color">unsafe_expr</em>!</code> or
+            <code class="inline-code">(<em class="code-color">unsafe_expr</em>)!<em class="code-color">default_expr</em></code>
+            or
+            <code class="inline-code">(<em class="code-color">unsafe_expr</em>)!</code></p>
+
+            <p>This operator allows you to specify a default value for the
+            case when the value is missing.</p>
+
+            <p>Example. Assume no variable called <code class="inline-code">mouse</code>
+            is present:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">${mouse!&quot;No mouse.&quot;}
+&lt;#assign mouse=&quot;Jerry&quot;&gt;
+${mouse!&quot;No mouse.&quot;}</pre></div>
+
+            <p>The output will be:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">No mouse.
+Jerry</pre></div>
+
+            <p>The default value can be any kind of expression, so it
+            doesn&#39;t have to be a string. For example you can write
+            <code class="inline-code">hits!0</code> or <code class="inline-code">colors![&quot;red&quot;, &quot;green&quot;,
+            &quot;blue&quot;]</code>. There is no restriction regarding the
+            complexity of the expression that specifies the default value, for
+            example you can write: <code class="inline-code">cargo.weight!(item.weight *
+            itemCount + 10)</code>.</p>
+
+              <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+              <p>If you have a composite expression after the
+              <code class="inline-code">!</code>, like <code class="inline-code">1 + x</code>,
+              <em>always</em> use parenthesses, like
+              <code class="inline-code">${x!(1 + y)}</code> or <code class="inline-code">${(x!1) +
+              y)}</code>, depending on which interpretation you meant.
+              That&#39;s needed because due to a programming mistake in FreeMarker
+              2.3.x, the precedence of <code class="inline-code">!</code> (when it&#39;s used as
+              default value operator) is very low at its right side. This
+              means that, for example, <code class="inline-code">${x!1 + y}</code> is
+              misinterpreted by FreeMarker as <code class="inline-code">${x!(1 + y)}</code>
+              while it should mean <code class="inline-code">${(x!1) + y}</code>. This
+              programming error will be fixed in FreeMarker 2.4, so you should
+              not utilize this wrong behavior, or else your templates will
+              break with FreeMarker 2.4!</p>
+              </div>
+
+
+            <p>If the default value is omitted, then it will be empty
+            string and empty sequence and empty hash at the same time. (This
+            is possible because FreeMarker allows multi-type values.) Note the
+            consequence that you can&#39;t omit the default value if you want it
+            to be <code class="inline-code">0</code> or <code class="inline-code">false</code>.
+            Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">(${mouse!})
+&lt;#assign mouse = &quot;Jerry&quot;&gt;
+(${mouse!})</pre></div>
+
+            <p>The output will be:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">()
+(Jerry)</pre></div>
+
+              <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+              <p>Due to syntactical ambiguities <code class="inline-code">&lt;@something
+              a=x! b=y /&gt;</code> will be interpreted as
+              <code class="inline-code">&lt;@something a=x!(b=y) /&gt;</code>, that is, the
+              <code class="inline-code">b=y</code> will be interpreted as a comparison that
+              gives the default value for <code class="inline-code">x</code>, rather than
+              the specification of the <code class="inline-code">b</code> parameter. To
+              prevent this, write: <code class="inline-code">&lt;@something a=(x!) b=y
+              /&gt;</code></p>
+              </div>
+
+
+            <p>You can use this operator in two ways with non-top-level
+            variables:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">product.color!&quot;red&quot;</pre></div>
+
+            <p>This will handle if <code class="inline-code">color</code> is missing
+            inside <code class="inline-code">product</code> (and returns
+            <code class="inline-code">&quot;red&quot;</code> if so), but will not handle if
+            <code class="inline-code">product</code> is missing. That is, the
+            <code class="inline-code">product</code> variable itself must exist, otherwise
+            the template processing will die with error.</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">(product.color)!&quot

<TRUNCATED>


[18/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_visit.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_visit.html b/builds/2.3.26-nightly/ref_directive_visit.html
new file mode 100644
index 0000000..c95e861
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_visit.html
@@ -0,0 +1,384 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>visit, recurse, fallback - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="visit, recurse, fallback">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_visit.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_visit.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_visit.html"><span itemprop="name">visit, recurse, fallback</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","visit, recurse, fallback"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_userDefined.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_specvar.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_visit" itemprop="headline">visit, recurse, fallback</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_134" data-menu-target="autoid_134">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_135" data-menu-target="autoid_135">Description</a><ul><li><a class="page-menu-link" href="#autoid_136" data-menu-target="autoid_136">Visit</a></li><li><a class="page-menu-link" href="#autoid_137" data-menu-target="autoid_137">Recurse</a></li><li><a class="page-menu-link" href="#autoid_138" data-menu-target="autoid_138">Fallback</a></li></ul></li></ul> </div><a name="ref.directive.visit"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_134">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#visit <em class="code-color">node</em> using <em class="code-color">namespace</em>&gt;</code>
+or
+<code class="inline-code">&lt;#visit <em class="code-color">node</em>&gt;</code></pre>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#recurse <em class="code-color">node</em> using <em class="code-color">namespace</em>&gt;</code>
+or
+<code class="inline-code">&lt;#recurse <em class="code-color">node</em>&gt;</code>
+or
+<code class="inline-code">&lt;#recurse using <em class="code-color">namespace</em>&gt;</code>
+or
+<code class="inline-code">&lt;#recurse&gt;</code></pre>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#fallback&gt;</code></pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">node</em></code>:
+              Expression evaluates to a <a href="xgui_expose_dom.html">node
+              variable</a>.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">namespace</em></code>: A
+              <a href="dgui_misc_namespace.html">namespace</a>, or a
+              sequence of namespaces. A namespace can be given with the
+              namespace hash (a.k.a. gate hash), or with a string literal that
+              store the path of template that could be imported. Instead of
+              namespace hashes, you can use plain hashes as well.
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_135">Description</h2>
+
+
+          <p>The <code class="inline-code">visit</code> and <code class="inline-code">recurse</code>
+          directives are used for the recursive processing of trees. In
+          practice, this will mostly be used for <a href="xgui.html">processing XML.</a></p>
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_136">Visit</h3>
+
+
+            <p>When you call <code class="inline-code">&lt;#visit
+            <em class="code-color">node</em>&gt;</code>, it looks for a
+            user-defined directive (like a macro) to invoke that has the name
+            deducted from the node&#39;s name
+            (<code class="inline-code"><em class="code-color">node</em>?node_name</code>) and
+            namespace
+            (<code class="inline-code"><em class="code-color">node</em>?node_namesoace</code>).
+            The rules of name deduction:</p>
+
+            <ul>
+              <li>
+                <p>If the node doesn&#39;t support node namespaces (as text
+                nodes in XML), then the directive name is simply the name of
+                the node
+                (<code class="inline-code"><em class="code-color">node</em>?node_name</code>).
+                <span class="marked-for-programmers">A node does not support node
+                namespaces if the <code class="inline-code">getNodeNamespace</code> method
+                returns <code class="inline-code">null</code>.</span></p>
+              </li>
+
+              <li>
+                <p>If the node does support node namespaces (as element
+                nodes in XML), then a prefix deduced from the node namespace
+                maybe appended before the node name with a colon used as
+                separator (e.g. <code class="inline-code">e:book</code>). The prefix, and if
+                there is a prefix used at all, depends on what prefixes has
+                been registered with the <code class="inline-code">ns_prefixes</code>
+                parameter of the <code class="inline-code">ftl</code> directive in the <a href="dgui_misc_namespace.html">FTL namespace</a> where
+                <code class="inline-code">visit</code> looks for the handler directive
+                (which is not necessary the same as the FTL namespace where
+                <code class="inline-code">visit</code> was called from, as you will see
+                later). Concretely, if there was no default namespace
+                registered with <code class="inline-code">ns_prefixes</code> then for nodes
+                that does not belong to any namespace (<span class="marked-for-programmers">when <code class="inline-code">getNodeNamespace</code>
+                returns <code class="inline-code">&quot;&quot;</code></span>) no prefix is used. If
+                there was a default namespace registered with
+                <code class="inline-code">ns_prefixes</code> then for nodes that does not
+                belong to any namespace prefix <code class="inline-code">N</code> is used,
+                and for nodes that belong to the default node namespace no
+                prefix is used. Otherwise, in both case, the prefix associated
+                to the node namespace with the <code class="inline-code">ns_prefixes</code>
+                is used. If there is not prefix associated to the node
+                namespace of the node, then <code class="inline-code">visit</code> simply
+                behave as if there was no directive found with the proper
+                name.</p>
+              </li>
+            </ul>
+
+            <p>The node for which the user-defined directive was invoked is
+            available for it as special variable <code class="inline-code">.node</code>.
+            Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Assume that nodeWithNameX?node_name is &quot;x&quot; --&gt;
+&lt;#visit nodeWithNameX&gt;
+Done.
+&lt;#macro x&gt;
+   Now I&#39;m handling a node that has the name &quot;x&quot;.
+   Just to show how to access this node: this node has ${.node?children?size} children.
+&lt;/#macro&gt;</pre></div>
+
+            <p>The output will be something like:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">   Now I&#39;m handling a node that has the name &quot;x&quot;.
+   Just to show how to access this node: this node has 3 children.
+Done.</pre></div>
+
+            <p>If one or more namespaces is specified using the optional
+            <code class="inline-code">using</code> clause, then <code class="inline-code">visit</code>
+            will look for the directives in those namespaces only, with the
+            earlier specified namespaces in the list getting priority. If no
+            <code class="inline-code">using</code> clause is specified, the namespace or
+            sequence of namespaces specified with the <code class="inline-code">using</code>
+            clause of the last uncompleted <code class="inline-code">visit</code> call is
+            reused. If there is no such pending <code class="inline-code">visit</code> call,
+            then the current namespace is used. For example, if you execute
+            this template:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;n1.ftl&quot; as n1&gt;
+&lt;#import &quot;n2.ftl&quot; as n2&gt;
+
+&lt;#-- This will call n2.x (because there is no n1.x): --&gt;
+&lt;#visit nodeWithNameX using [n1, n2]&gt;
+
+&lt;#-- This will call the x of the current namespace: --&gt;
+&lt;#visit nodeWithNameX&gt;
+
+&lt;#macro x&gt;
+  Simply x
+&lt;/#macro&gt;</pre></div>
+
+            <p>and this is <code class="inline-code">n1.ftl</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro y&gt;
+  n1.y
+&lt;/#macro&gt;</pre></div>
+
+            <p>and this is <code class="inline-code">n2.ftl</code>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#macro x&gt;
+  n2.x
+  &lt;#-- This callc n1.y as it inherits the &quot;using [n1, n2]&quot; from the pending visit call: --&gt;
+  &lt;#visit nodeWithNameY&gt;
+  &lt;#-- This will call n2.y: --&gt;
+  &lt;#visit nodeWithNameY using .namespace&gt;
+&lt;/#macro&gt;
+
+&lt;#macro y&gt;
+  n2.y
+&lt;/#macro&gt;</pre></div>
+
+            <p>then this will print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">
+  n2.x
+  n1.y
+  n2.y
+
+  Simply x
+ </pre></div>
+
+            <p>If <code class="inline-code">visit</code> doesn&#39;t find a user-defined
+            directive in either FTL namespaces with the name identical to the
+            name deduced with the rules described earlier, then it tries to
+            find an user-defined directive with name
+            <code class="inline-code">@<em class="code-color">node_type</em></code>, or if
+            the node does not support node type property (i.e.
+            <code class="inline-code"><em class="code-color">node</em>?node_type</code>
+            returns undefined variable), then with name
+            <code class="inline-code">@default</code>. For the lookup, it uses the same
+            mechanism as was explained earlier. If it still doesn&#39;t find an
+            user-defined directive to handle the node, then
+            <code class="inline-code">visit</code> stops template processing with error.
+            Some XML specific node types have special handling in this regard;
+            see: <a href="xgui_declarative_details.html">XML Processing Guide/Declarative XML processing/Details</a>. Example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Assume that nodeWithNameX?node_name is &quot;x&quot; --&gt;
+&lt;#visit nodeWithNameX&gt;
+
+&lt;#-- Assume that nodeWithNameY?node_type is &quot;foo&quot; --&gt;
+&lt;#visit nodeWithNameY&gt;
+
+&lt;#macro x&gt;
+Handling node x
+&lt;/#macro&gt;
+
+&lt;#macro @foo&gt;
+There was no specific handler for node ${node?node_name}
+&lt;/#macro&gt;</pre></div>
+
+            <p>This would print:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-output">Handling node x
+
+There was no specific handler for node y
+
+ </pre></div>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_137">Recurse</h3>
+
+
+            <a name="ref.directive.recurse"></a>
+
+            <p>The <code class="inline-code">&lt;#recurse&gt;</code> directive is really
+            syntactic sugar. It visits all children nodes of the node (and not
+            the node itself). So, to write:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#recurse <em>someNode</em> using <em>someLib</em>&gt;</pre></div>
+
+            <p>is equivalent to writing:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list <em>someNode</em>?children as <em>child</em>&gt;&lt;#visit <em>child</em> using <em>someLib</em>&gt;&lt;/#list&gt;</pre></div>
+
+            <p>However, target node is optional in the
+            <code class="inline-code">recurse</code> directive. If the target node is
+            unspecified, it simply uses the <code class="inline-code">.node</code>. Thus,
+            the terse instruction <code class="inline-code">&lt;#recurse&gt;</code> is
+            equivalent to:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list .node?children as child&gt;&lt;#visit child&gt;&lt;/#list&gt;</pre></div>
+
+            <p>As a side comment for those who are familiar with XSLT,
+            <code class="inline-code">&lt;#recurse&gt;</code> is pretty much exactly
+            analogous to the <code class="inline-code">&lt;xsl:apply-templates/&gt;</code>
+            instruction in XSLT.</p>
+          
+
+          
+            
+
+
+
+<h3 class="content-header header-section3" id="autoid_138">Fallback</h3>
+
+
+            <a name="ref.directive.fallback"></a>
+
+            <p>As you could learn earlier, in the documentation of the
+            <code class="inline-code">visit</code> directive, the user-defined directive
+            that handles the node is maybe searched in multiple FTL
+            name-spaces. The <code class="inline-code">fallback</code> directive can be used
+            in a user-defined directive that was invoked to handle a node. It
+            directs FreeMarker to continue the searching for the user-defined
+            directive in the further name-spaces (that is, in the name-spaces
+            that are after the name-space of the currently invoked
+            user-defined directive in the list of name-spaces). If a handler
+            for the node is found then it is invoked, otherwise
+            <code class="inline-code">fallback</code> does nothing.</p>
+
+            <p>A typical usage of this to write customization layer over a
+            handler library, that sometimes passes the handling to the
+            customized library:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#import &quot;/lib/docbook.ftl&quot; as docbook&gt;
+
+&lt;#--
+  We use the docbook library, but we override some handlers
+  in this namespace.
+--&gt;
+&lt;#visit document using [.namespace, docbook]&gt;
+
+&lt;#--
+  Override the &quot;programlisting&quot; handler, but only in the case if
+  its &quot;role&quot; attribute is &quot;java&quot;
+--&gt;
+&lt;#macro programlisting&gt;
+  &lt;#if .node.@role[0]!&quot;&quot; == &quot;java&quot;&gt;
+    &lt;#-- Do something special here... --&gt;
+    ...
+  &lt;#else&gt;
+    &lt;#-- Just use the original (overidden) handler --&gt;
+    &lt;#fallback&gt;
+  &lt;/#if&gt;
+&lt;/#macro&gt;</pre></div>
+          
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_userDefined.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_specvar.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directives.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directives.html b/builds/2.3.26-nightly/ref_directives.html
new file mode 100644
index 0000000..8551220
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directives.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Directive Reference - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Directive Reference">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directives.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directives.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li></ul><div class=
 "bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_expert.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_alphaidx.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="ref_directives" itemprop="headline">Directive Reference</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="ref_directive_alphaidx.html" data-menu-target="ref_directive_alphaidx">Alphabetical index</a></li><li><a class="page-menu-link" href="ref_directive_assign.html" data-menu-target="ref_directive_assign">assign</a></li><li><a class="page-menu-link" href="ref_directive_attempt.html" data-menu-target="ref_directive_attempt">attempt, recover</a></li><li><a class="page-menu-link" href="ref_directive_autoesc.html" data-menu-target="ref_directive_autoesc">autoesc</a></li><li><a class="page-menu-link" href="ref_directive_compress.html" data-menu-target="ref_directive_compress">compress</a></li><li><a class="page-menu-link" href="ref_directive_escape.html" data-menu-target="ref_directive_escape">escape, noescape (deprecated)</a></li><li><a class="page-menu-link" href="ref_directive_flush.html" data-menu-target="ref_directive_flush">flush</a></li><li><a class="page-menu-link" href="ref_directive_ftl.html" data-menu-target="ref_directive_ftl">ftl</a></li><
 li><a class="page-menu-link" href="ref_directive_function.html" data-menu-target="ref_directive_function">function, return</a></li><li><a class="page-menu-link" href="ref_directive_global.html" data-menu-target="ref_directive_global">global</a></li><li><a class="page-menu-link" href="ref_directive_if.html" data-menu-target="ref_directive_if">if, else, elseif</a></li><li><a class="page-menu-link" href="ref_directive_import.html" data-menu-target="ref_directive_import">import</a></li><li><a class="page-menu-link" href="ref_directive_include.html" data-menu-target="ref_directive_include">include</a></li><li><a class="page-menu-link" href="ref_directive_list.html" data-menu-target="ref_directive_list">list, else, items, sep, break</a></li><li><a class="page-menu-link" href="ref_directive_local.html" data-menu-target="ref_directive_local">local</a></li><li><a class="page-menu-link" href="ref_directive_macro.html" data-menu-target="ref_directive_macro">macro, nested, return</a></li><li><a
  class="page-menu-link" href="ref_directive_noautoesc.html" data-menu-target="ref_directive_noautoesc">noautoesc</a></li><li><a class="page-menu-link" href="ref_directive_noparse.html" data-menu-target="ref_directive_noparse">noparse</a></li><li><a class="page-menu-link" href="ref_directive_nt.html" data-menu-target="ref_directive_nt">nt</a></li><li><a class="page-menu-link" href="ref_directive_outputformat.html" data-menu-target="ref_directive_outputformat">outputformat</a></li><li><a class="page-menu-link" href="ref_directive_setting.html" data-menu-target="ref_directive_setting">setting</a></li><li><a class="page-menu-link" href="ref_directive_stop.html" data-menu-target="ref_directive_stop">stop</a></li><li><a class="page-menu-link" href="ref_directive_switch.html" data-menu-target="ref_directive_switch">switch, case, default, break</a></li><li><a class="page-menu-link" href="ref_directive_t.html" data-menu-target="ref_directive_t">t, lt, rt</a></li><li><a class="page-menu-link"
  href="ref_directive_userDefined.html" data-menu-target="ref_directive_userDefined">User-defined directive (&lt;@...&gt;)</a></li><li><a class="page-menu-link" href="ref_directive_visit.html" data-menu-target="ref_directive_visit">visit, recurse, fallback</a></li></ul> </div><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_expert.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_alphaidx.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_reservednames.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_reservednames.html b/builds/2.3.26-nightly/ref_reservednames.html
new file mode 100644
index 0000000..3e80bbc
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_reservednames.html
@@ -0,0 +1,96 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Reserved names in FTL - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Reserved names in FTL">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_reservednames.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_reservednames.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_reservednames.html"><span itemprop="name">Reserved names in FTL</span></a></li></ul><div c
 lass="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Reserved names in FTL"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_specvar.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_deprecated.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="ref_reservednames" itemprop="headline">Reserved names in FTL</h1>
+</div></div><p>The following names cannot be used for top-level variables without
+      square-bracket syntax (as <code class="inline-code">.vars[&quot;in&quot;]</code>), since they
+      are keywords in FTL:</p><ul>
+        <li>
+          <code class="inline-code">true</code>: boolean value
+          "true"
+        </li>
+
+        <li>
+          <code class="inline-code">false</code>: boolean value
+          "false"
+        </li>
+
+        <li>
+          <code class="inline-code">gt</code>: comparison operator "greater
+          than"
+        </li>
+
+        <li>
+          <code class="inline-code">gte</code>: comparison operator "greater
+          than or equivalent"
+        </li>
+
+        <li>
+          <code class="inline-code">lt</code>: comparison operator "less
+          than"
+        </li>
+
+        <li>
+          <code class="inline-code">lte</code>: comparison operator "less than
+          or equivalent"
+        </li>
+
+        <li>
+          <code class="inline-code">as</code>: used by a few directives
+        </li>
+
+        <li>
+          <code class="inline-code">in</code>: used by a few directives
+        </li>
+
+        <li>
+          <code class="inline-code">using</code>: used by a few directives
+        </li>
+      </ul><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_specvar.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_deprecated.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_specvar.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_specvar.html b/builds/2.3.26-nightly/ref_specvar.html
new file mode 100644
index 0000000..f10bf42
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_specvar.html
@@ -0,0 +1,290 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Special Variable Reference - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Special Variable Reference">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_specvar.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_specvar.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_specvar.html"><span itemprop="name">Special Variable Reference</span></a></li></ul><div cl
 ass="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li>.spec_vars</li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Special Variable Reference"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_visit.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_reservednames.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="ref_specvar" itemprop="headline">Special Variable Reference</h1>
+</div></div><p>Special variables are variables defined by the FreeMarker engine
+      itself. To access them, you use the
+      <code class="inline-code">.<em class="code-color">variable_name</em></code> syntax. For
+      example, you can&#39;t write simply <code class="inline-code">version</code>; you have to
+      write <code class="inline-code">.version</code>.</p>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+        <p>As of FreeMarker 2.3.23, you can use camel case instead of snake
+        case for special variable names, like <code class="inline-code">dataModel</code>
+        instead of <code class="inline-code">data_model</code>. But know that then within
+        the same template, FreeMarker will enforce the usage of camel case for
+        all identifiers that are part of the template language (user defined
+        names are not affected).</p>
+        </div>
+<p>The supported special variables are:</p><ul>
+        <li>
+          <code class="inline-code">auto_esc</code> (since 2.3.24): Boolean
+          value that tells if auto-escaping (based on output format) is on or
+          off at the place where this variable is referred (resolved
+          statically). This is <em>not</em> affected by the
+          deprecated <code class="inline-code">escape</code> directive. This only deals with
+          automatic escaping based on the output format mechanism.
+        </li>
+
+        <li>
+          <code class="inline-code">current_template_name</code>: The name of
+          the template where we are now (available since FreeMarker 2.3.23).
+          This can be missing (<code class="inline-code">null</code>) if the template was
+          created on-the-fly in Java <span class="marked-for-programmers">(via
+          <code class="inline-code">new Template(null,
+          <em class="code-color">...</em>)</code>)</span>, rather than
+          loaded from a backing store by name <span class="marked-for-programmers">(via
+          <code class="inline-code"><em class="code-color">cfg</em>.getTemplate(name,
+          <em class="code-color">...</em>)</code>)</span>. Migration
+          notice: If you replace the deprecated
+          <code class="inline-code">template_name</code> with this, note that the later is a
+          0-length string instead of missing (<code class="inline-code">null</code>) if the
+          template has no name, so you might want to write
+          <code class="inline-code">current_template_name!&#39;&#39;</code> in legacy
+          templates.
+        </li>
+
+        <li>
+          <code class="inline-code">data_model</code>: A hash that you can use to
+          access the data-model directly. That is, variables you did with
+          <code class="inline-code">global</code> directive are not visible here.
+        </li>
+
+        <li>
+          <code class="inline-code">error</code> (available since FreeMarker
+          2.3.1): This variable accessible in the body of the <a href="ref_directive_attempt.html#ref.directive.attempt"><code>recover</code>
+          directive</a>, where it stores the error message of the error we
+          recover from.
+        </li>
+
+        <li>
+          <code class="inline-code">globals</code>: A hash that you can use to access
+          the globally accessible variables: the data-model and the variables
+          created with <code class="inline-code">global</code> directive. Note that
+          variables created with <code class="inline-code">assign</code> or
+          <code class="inline-code">macro</code> are not globals, thus they never hide the
+          variables when you use <code class="inline-code">globals</code>.
+        </li>
+
+        <li>
+          <code class="inline-code">incompatible_improvements</code> (since
+          FreeMarker 2.3.24): The <a href="pgui_config_incompatible_improvements.html"><code>incompatbile_improvements</code>
+          setting</a> of the current FreeMarker configuration, as a
+          string.
+        </li>
+
+        <li>
+          <code class="inline-code">lang</code>: Returns the language part of
+          the current value of the locale setting. For example if
+          <code class="inline-code">.locale</code> is <code class="inline-code">en_US</code>, then
+          <code class="inline-code">.lang</code> is <code class="inline-code">en</code>.
+        </li>
+
+        <li>
+          <code class="inline-code">locale</code>: Returns the current value
+          of the locale setting. This is a string, for example
+          <code class="inline-code">en_US</code>. For more information about locale strings
+          <a href="ref_directive_setting.html#ref.directive.setting">see the
+          <code>setting</code> directive</a>.
+        </li>
+
+        <li>
+          <code class="inline-code">locale_object</code> (available since
+          FreeMarker 2.3.21): Returns the current value of the locale setting
+          as a <code class="inline-code">java.util.Locale</code> object, rather than as a
+          string. This meant to be used instead of <code class="inline-code">.locale</code>
+          when you want to pass it as a <code class="inline-code">java.util.Locale</code>
+          object to a Java method. (The <code class="inline-code">Locale</code> object will
+          be wrapped according the <code class="inline-code">object_wrapper</code> setting
+          value. Whether you can actually pass this value to a Java method as
+          a <code class="inline-code">Locale</code> object depends on the object wrapper,
+          but an object wrapper that let you call Java methods directly is
+          very unlikely to not support that.)
+        </li>
+
+        <li>
+          <code class="inline-code">locals</code>: A hash that you can use to access
+          the local variables (the variables created with the
+          <code class="inline-code">local</code> directive, and the parameters of
+          macro).
+        </li>
+
+        <li>
+          <code class="inline-code">main</code>: A hash that you can use to access the
+          main <a href="dgui_misc_namespace.html">namespace</a>. Note that
+          global variables like the variables of data-model are
+          <em>not</em> visible through this hash.
+        </li>
+
+        <li>
+          <code class="inline-code">main_template_name</code>: The name of the
+          top level template (available since FreeMarker 2.3.23). <span class="marked-for-programmers">(In Java, this is the template for which
+          <code class="inline-code">Template.process</code> was called.) </span>This can
+          be missing (<code class="inline-code">null</code>) if the template was created
+          on-the-fly in Java <span class="marked-for-programmers">(via <code class="inline-code">new
+          Template(null, <em class="code-color">...</em>)</code>)</span>,
+          rather than loaded from a backing store by name <span class="marked-for-programmers">(via
+          <code class="inline-code"><em class="code-color">cfg</em>.getTemplate(name,
+          <em class="code-color">...</em>)</code>)</span>. Migration
+          notice: If you replace the deprecated
+          <code class="inline-code">template_name</code> with this, note that the later is a
+          0-length string instead of missing (<code class="inline-code">null</code>) if the
+          template has no name, so you might want to write
+          <code class="inline-code">main_template_name!&#39;&#39;</code> in legacy templates.
+        </li>
+
+        <li>
+          <code class="inline-code">namespace</code>: A hash that you can use to
+          access the current <a href="dgui_misc_namespace.html">namespace</a>. Note that global
+          variables like the variables of data-model are
+          <em>not</em> visible through this hash.
+        </li>
+
+        <li>
+          <code class="inline-code">node</code> (alias <code class="inline-code">current_node</code>
+          for historical reasons): The node you are currently processing with
+          the visitor pattern (i.e. with the <a href="ref_directive_visit.html"><code>visit</code>,
+          <code>recurse</code>, ...etc. directives</a>). Also, it
+          initially stores the root node when you use the <a href="pgui_misc_ant.html">FreeMarker XML Ant task</a>.
+        </li>
+
+        <li>
+          <code class="inline-code">now</code>: Returns the current date-time.
+          Usage examples: &quot;<code class="inline-code">Page generated: ${.now}</code>&quot;,
+          &quot;<code class="inline-code">Today is ${.now?date}</code>&quot;, &quot;<code class="inline-code">The current
+          time is ${.now?time}</code>&quot;.
+        </li>
+
+        <li>
+           Returns the name of the current <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output format</a>.
+          This value is never missing/null. It&#39;s maybe the string
+          <code class="inline-code">&quot;undefined&quot;</code>, which is just the name of the
+          default output format.
+        </li>
+
+        <li>
+          <code class="inline-code">output_encoding</code> (available since
+          FreeMarker 2.3.1): Returns the name of the current output charset.
+          This special variable is not existent if the framework that
+          encapsulates FreeMarker doesn&#39;t specify the output charset for
+          FreeMarker. <span class="marked-for-programmers">(Programmers can read more
+          about charset issues <a href="pgui_misc_charset.html">here...</a>)</span>
+        </li>
+
+        <li>
+          <code class="inline-code">pass</code>: This is a macro that does nothing. It
+          has no parameters. Mostly used as no-op node handler in XML
+          processing.
+        </li>
+
+        <li>
+          <code class="inline-code">template_name</code>: <em>Don&#39;t use
+          it, because its behavior is strange when macros are used; use
+          <code class="inline-code">current_template_name</code> or
+          <code class="inline-code">main_template_name</code> instead (see migration notices
+          there).</em> Gives the name of the main template, or if we are
+          running an included or imported template, the name of that template.
+          When calling macros, it becomes rather confusing: the macro call
+          won&#39;t change the value of this special variable, but when
+          <code class="inline-code">nested</code> is called, it changes it to the name of
+          the template that belongs to the current namespace. (Available since
+          FreeMarker 2.3.14.)
+        </li>
+
+        <li>
+          <code class="inline-code">url_escaping_charset</code> (available
+          since FreeMarker 2.3.1): If exists, it stores the name of the
+          charset that should be used for URL escaping. If this variable
+          doesn&#39;t exist that means that nobody has specified what charset
+          should be used for URL encoding yet. In this case the <a href="ref_builtins_string.html#ref_builtin_url"><code>url</code> built-in</a>
+          uses the charset specified by the <code class="inline-code">output_encoding</code>
+          special variable for URL encoding; custom mechanism may follow the
+          same logic. <span class="marked-for-programmers">(Programmers can read more
+          about charset issues <a href="pgui_misc_charset.html">here...</a>)</span>
+        </li>
+
+        <li>
+          <code class="inline-code">output_format</code> (since 2.3.24): The
+          name of output format at the place where this variable is referred
+          (resolved statically), such as <code class="inline-code">&quot;HTML&quot;</code>,
+          <code class="inline-code">&quot;XML&quot;</code>, <code class="inline-code">&quot;RTF&quot;</code>,
+          <code class="inline-code">&quot;plainText&quot;</code>, <code class="inline-code">&quot;undefined&quot;</code>, etc.
+          <span class="marked-for-programmers">(The available names can be extended
+          by the programmers, by the
+          <code class="inline-code">registered_custom_output_formats</code>
+          setting.)</span>
+        </li>
+
+        <li>
+          <code class="inline-code">vars</code>: Expression
+          <code class="inline-code">.vars.foo</code> returns the same variable as expression
+          <code class="inline-code">foo</code>. It&#39;s useful if for some reasons you have to
+          use square bracket syntax, since that works only for hash sub
+          variables, so you need an artificial parent hash. For example, to
+          read a top-level variable that has a strange name that would confuse
+          FreeMarker, you can write
+          <code class="inline-code">.vars[&quot;A�strange�name!&quot;]</code>. Or, to access a
+          top-level variable with dynamic name given with variable
+          <code class="inline-code">varName</code> you can write
+          <code class="inline-code">.vars[varName]</code>. Note that the hash returned by
+          <code class="inline-code">.vars</code> does not support <code class="inline-code">?keys</code>
+          and <code class="inline-code">?values</code>.
+        </li>
+
+        <li>
+          <code class="inline-code">version</code>: Returns the FreeMarker
+          version number as string, for example <code class="inline-code">2.2.8</code>. This
+          can be used to check which FreeMarker version does your application
+          use, but note that this special variable does not exist prior to the
+          2.3.0 or 2.2.8 versions. The version number of non-final releases
+          contains dash and further info after the numbers, like in
+          2.3.21-nightly_20140726T151800Z.
+        </li>
+      </ul><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_visit.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_reservednames.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/search-results.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/search-results.html b/builds/2.3.26-nightly/search-results.html
new file mode 100644
index 0000000..bef3650
--- /dev/null
+++ b/builds/2.3.26-nightly/search-results.html
@@ -0,0 +1,65 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-docgen-search-results">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Search results - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Search results">
+<meta property="og:locale" content="en_US">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html#searchresults"><span itemprop="name">Search results</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_temp
 late_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Search results"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="title-wrapper">
+<h2 class="content-header header-section" id="searchresults">Search results</h2>
+</div></div>    <div class="search-results">
+      <script>
+        (function() {
+          var cx = '003127866208504630097:arjqbv_znfw';
+          var gcse = document.createElement('script');
+          gcse.type = 'text/javascript';
+          gcse.async = true;
+          gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
+              '//cse.google.com/cse.js?cx=' + cx;
+          var s = document.getElementsByTagName('script')[0];
+          s.parentNode.insertBefore(gcse, s);
+        })();
+      </script>
+      <gcse:searchresults-only>Loading\u2026</gcse:searchresults-only>
+    </div>
+<div class="bottom-pagers-wrapper"></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[22/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_compress.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_compress.html b/builds/2.3.26-nightly/ref_directive_compress.html
new file mode 100644
index 0000000..3c59d01
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_compress.html
@@ -0,0 +1,107 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>compress - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="compress">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_compress.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_compress.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_compress.html"><span itemprop="name">compress</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","compress"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_autoesc.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_escape.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_compress" itemprop="headline">compress</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_82" data-menu-target="autoid_82">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_83" data-menu-target="autoid_83">Description</a></li></ul> </div><a name="ref.directive.compress"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_82">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#compress&gt;
+  <em class="code-color">...</em>
+&lt;/#compress&gt;</code>
+</pre>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_83">Description</h2>
+
+
+          <p>The compress directive is useful for removing superfluous
+          <a href="gloss.html#gloss.whiteSpace">white-space</a> when you use a
+          white-space insensitive format (e.g. HTML or XML). It captures the
+          output generated inside its body (i.e. between its start-tag and
+          end-tag), and reduces all unbroken white-space sequences to a single
+          white-space character. The inserted character will be a <a href="gloss.html#gloss.lineBreak">line break</a> if the replaced sequence
+          contains line breaks, or a space otherwise. The very first and very
+          last unbroken white-space sequences will be completely
+          removed.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = &quot;    moo  \n\n   &quot;&gt;
+(&lt;#compress&gt;
+  1 2  3   4    5
+  ${moo}
+  test only
+
+  I said, test only
+
+&lt;/#compress&gt;)</pre></div>
+
+          <p>will output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">(1 2 3 4 5
+moo
+test only
+I said, test only)</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_autoesc.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_escape.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_escape.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_escape.html b/builds/2.3.26-nightly/ref_directive_escape.html
new file mode 100644
index 0000000..ebd956b
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_escape.html
@@ -0,0 +1,232 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>escape, noescape (deprecated) - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="escape, noescape (deprecated)">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_escape.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_escape.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_escape.html"><span itemprop="name">escape, noescape (deprecated)</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","escape, noescape (deprecated)"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_compress.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_flush.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_escape" itemprop="headline">escape, noescape (deprecated)</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_84" data-menu-target="autoid_84">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_85" data-menu-target="autoid_85">Description</a></li></ul> </div><a name="ref.directive.escape"></a><a name="ref.directive.noescape"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_84">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#escape <em class="code-color">identifier</em> as <em class="code-color">expression</em>&gt;
+  <em class="code-color">...</em>
+  &lt;#noescape&gt;<em class="code-color">...</em>&lt;/#noescape&gt;
+  <em class="code-color">...</em>
+&lt;/#escape&gt;</code>
+</pre>
+
+
+          <p>Camel case name variant: <code class="inline-code">noEscape</code></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_85">Description</h2>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>These directives are <em>deprecated</em> by
+            <a href="dgui_misc_autoescaping.html">output-format-based
+            auto-escaping</a> since 2.3.24. Furthermore, on places that use
+            auto-escaping (with an output format that actually does escaping)
+            you aren&#39;t allowed to use the <code class="inline-code">escape</code> directive
+            (as you will find out from the parsing error message
+            anyway).</p>
+            </div>
+
+
+          <p>When you surround a part of the template with an escape
+          directive, interpolations
+          (<code class="inline-code">${<em class="code-color">...</em>}</code>) that occur
+          inside the block are combined with the escaping expression
+          automatically. This is a convenience method for avoiding writing
+          similar expressions all over. It does not affect interpolations in
+          string literals (as in <code class="inline-code">&lt;#assign x =
+          &quot;Hello�${user}!&quot;&gt;</code>). Also, it does not affect numerical
+          interpolations
+          (<code class="inline-code">#{<em class="code-color">...</em>}</code>).</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>&lt;#escape x as x?html&gt;</strong>
+  First name: ${firstName}
+  Last name: ${lastName}
+  Maiden name: ${maidenName}
+<strong>&lt;/#escape&gt;</strong></pre></div>
+
+          <p>is actually equivalent to:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">  First name: ${firstName<strong>?html</strong>}
+  Last name: ${lastName<strong>?html</strong>}
+  Maiden name: ${maidenName<strong>?html</strong>}</pre></div>
+
+          <p>Note that it is irrelevant what identifier you use in the
+          directive - it just serves as a formal parameter to the escaping
+          expression.</p>
+
+          <p>When you are calling macros or the <code class="inline-code">include</code>
+          directive, it is important to understand that escape has effect only
+          on interpolations that occur between the <code class="inline-code">&lt;#escape
+          <em class="code-color">...</em>&gt;</code> and
+          <code class="inline-code">&lt;/#escape&gt;</code> <em>in the template
+          text</em>. That is, it will not escape anything that is before
+          <code class="inline-code">&lt;#escape <em class="code-color">...</em>&gt;</code> in
+          the text, or after the <code class="inline-code">&lt;/#escape&gt;</code> in the
+          text, not even if that part is called from inside the
+          <code class="inline-code">escape</code>-d section.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x = &quot;&lt;test&gt;&quot;&gt;
+&lt;#macro m1&gt;
+  m1: ${x}
+&lt;/#macro&gt;
+&lt;#escape x as x?html&gt;
+  &lt;#macro m2&gt;m2: ${x}&lt;/#macro&gt;
+  ${x}
+  &lt;@m1/&gt;
+&lt;/#escape&gt;
+${x}
+&lt;@m2/&gt;</pre></div>
+
+          <p>the output will be:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &amp;lt;test&amp;gt;
+  m1: &lt;test&gt;
+&lt;test&gt;
+m2: &amp;lt;test&amp;gt;</pre></div>
+
+          <p><span class="marked-for-programmers">More technically, the effects of
+          <code class="inline-code">escape</code> directive are applied at template parsing
+          time rather than at template processing time. This means that if you
+          call a macro or include another template from within an escape
+          block, it won&#39;t affect the interpolations in the macro/included
+          template, since macro calls and template includes are evaluated at
+          template processing time. On the other hand, if you surround one or
+          more macro declarations (which are evaluated at template parsing
+          time, as opposed to macro calls) with an escape block, the
+          interpolations in those macros will be combined with the escaping
+          expression.</span></p>
+
+          <p>Sometimes there is a need to temporarily turn off escaping for
+          one or two interpolations in an escape block. You can achieve this
+          by closing and later reopening the escape block, but then you have
+          to write the escaping expression twice. You can instead use the
+          noescape directive:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#escape x as x?html&gt;
+  From: ${mailMessage.From}
+  Subject: ${mailMessage.Subject}
+  <strong>&lt;#noescape&gt;</strong>Message: ${mailMessage.htmlFormattedBody}<strong>&lt;/#noescape&gt;</strong>
+  <em>...</em>
+&lt;/#escape&gt;</pre></div>
+
+          <p>is equivalent to:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">  From: ${mailMessage.From?html}
+  Subject: ${mailMessage.Subject?html}
+  Message: ${mailMessage.htmlFormattedBody}
+  ...</pre></div>
+
+          <p>Escapes can be nested (although you will do it only in rare
+          circumstances). Therefore, you can write something like the below
+          code (the example is admittedly a bit stretched, as you&#39;d probably
+          place item codes in a sequence and use <code class="inline-code">list</code> to
+          iterate over them, but we&#39;re now doing it this way just to
+          illustrate the point):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template"><strong>&lt;#escape x as x?html&gt;</strong>
+  Customer Name: ${customerName}
+  Items to ship:
+  <strong>&lt;#escape x as itemCodeToNameMap[x]&gt;</strong>
+    ${itemCode1}
+    ${itemCode2}
+    ${itemCode3}
+    ${itemCode4}
+  <strong>&lt;/#escape&gt;</strong>
+<strong>&lt;/#escape&gt;</strong></pre></div>
+
+          <p>is actually equivalent to:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">  Customer Name: ${customerName?html}
+  Items to ship:
+    ${itemCodeToNameMap[itemCode1]?html}
+    ${itemCodeToNameMap[itemCode2]?html}
+    ${itemCodeToNameMap[itemCode3]?html}
+    ${itemCodeToNameMap[itemCode4]?html}</pre></div>
+
+          <p>When you use the noescape directive in a nested escape block,
+          it undoes only a single level of escaping. Therefore, to completely
+          turn off escaping in a two-level deep escaped block, you need to use
+          two nested noescape directives as well.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_compress.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_flush.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_flush.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_flush.html b/builds/2.3.26-nightly/ref_directive_flush.html
new file mode 100644
index 0000000..6dc6106
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_flush.html
@@ -0,0 +1,96 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>flush - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="flush">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_flush.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_flush.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_flush.html"><span itemprop="name">flush</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","flush"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_escape.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_ftl.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_flush" itemprop="headline">flush</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_86" data-menu-target="autoid_86">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_87" data-menu-target="autoid_87">Description</a></li></ul> </div><a name="ref.directive.flush"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_86">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate"><code class="inline-code">&lt;#flush&gt;</code></pre>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_87">Description</h2>
+
+
+          <p>When FreeMarker generates the output, it&#39;s usually not sent
+          immediately to the final receiving party (like a web browser or a
+          destination file), but is accumulated in a buffer, then it&#39;s sent
+          out in bigger chunks. The exact rules of the buffering is not
+          decided by FreeMarker, but by the embedding software. Sending out
+          the content accumulated in the buffer is called flushing. Although
+          flushing happens automatically, sometimes you want to force it on
+          certain points of the template processing, and this is what the
+          <code class="inline-code">flush</code> directive does. Whether it&#39;s needed at
+          certain points should be decided by a programmer, not a
+          designer.</p>
+
+          <p>Note that while <code class="inline-code">flush</code> tells the embedding
+          software that we want to flush, that might as well decides to ignore
+          this request. It&#39;s not in the hands of FreeMarker.</p>
+
+          <p><span class="marked-for-programmers">Flush simply calls the
+          <code class="inline-code">flush()</code> method of the currently used
+          <code class="inline-code">java.io.Writer</code> instance. The whole buffering and
+          flushing mechanism is implemented in the <code class="inline-code">Writer</code>
+          (that you have passed as the parameter of the
+          <code class="inline-code">Template.process</code> method); FreeMarker does not
+          deal with it.</span></p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_escape.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_ftl.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_ftl.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_ftl.html b/builds/2.3.26-nightly/ref_directive_ftl.html
new file mode 100644
index 0000000..0683402
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_ftl.html
@@ -0,0 +1,285 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>ftl - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="ftl">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_ftl.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_ftl.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_ftl.html"><span itemprop="name">ftl</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","ftl"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_flush.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_function.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_ftl" itemprop="headline">ftl</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_88" data-menu-target="autoid_88">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_89" data-menu-target="autoid_89">Description</a></li></ul> </div><a name="ref.directive.ftl"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_88">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#ftl <em class="code-color">param1</em>=<em class="code-color">value1</em> <em class="code-color">param2</em>=<em class="code-color">value2</em> <em class="code-color">...</em> <em class="code-color">paramN</em>=<em class="code-color">valueN</em>&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">param1</em></code>,
+              <code class="inline-code"><em class="code-color">param2</em></code>, ...etc.:
+              Name of the parameter. Not an expression. Allowed parameters
+              are: <code class="inline-code">encoding</code>,
+              <code class="inline-code">strip_whitespace</code>,
+              <code class="inline-code">strip_text</code>, ...etc. See below.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">value1</em></code>,
+              <code class="inline-code"><em class="code-color">value2</em></code>, ...etc.:
+              The value of parameter. This must be a constant expression (as
+              <code class="inline-code">true</code>, or <code class="inline-code">&quot;ISO-8859-5&quot;</code>, or
+              <code class="inline-code">{x:1, y:2}</code>). It can&#39;t use variables.
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_89">Description</h2>
+
+
+          <p>Tells information about the template for FreeMarker and for
+          other tools, also helps programs to automatically detect if a text
+          file is an FTL file. This directive, if present, must be the very
+          first thing in the template. Any <a href="gloss.html#gloss.whiteSpace">white-space</a> before this directive
+          will be ignored. The old-syntax (<code class="inline-code">#</code>-less) format
+          of this directive is not supported.</p>
+
+          <p>The settings (encoding, white-space stripping, etc.) given
+          here has the highest precedence, that is, they will be used for the
+          template regardless of any FreeMarker configuration settings.</p>
+
+          <p>Possible parameters:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">attributes</code>: This is a hash that
+              associates arbitrary attributes (name-value pairs) to the
+              template. The values of the attributes can be of any type
+              (string, number, sequence... etc.). FreeMarker doesn&#39;t try to
+              understand the meaning of the attributes. It&#39;s up to the
+              application that encapsulates FreeMarker (as a Web application
+              framework). Thus, the set of allowed attributes and their
+              semantic is application (Web application framework) dependent.
+              <span class="marked-for-programmers">Programmers: you can get the
+              attributes associated with a <code class="inline-code">Template</code> object
+              with its <code class="inline-code">getCustomAttributeNames</code> and
+              <code class="inline-code">getCustomAttribute</code> methods (inherited from
+              <code class="inline-code">freemarker.core.Configurable</code>). As the
+              template attributes are associated with the
+              <code class="inline-code">Template</code> object when the template is parsed,
+              the attributes can be read anytime, the template need not be
+              executed. The methods mentioned return the attribute values
+              unwrapped, that is, with FreeMarker independent type as
+              <code class="inline-code">java.util.List</code>.</span></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">auto_esc</code>: A boolean constant to turn
+              <a href="dgui_misc_autoescaping.html">auto-escaping</a> on
+              or off. It depends on the
+              <code class="inline-code">auto_escaping_policy</code> of the FreeMarker
+              configuration, but usually auto-escaping will be by default on,
+              if the current <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output
+              format</a> uses auto-escaping by default. So you mostly use
+              this to disable auto-escaping (<code class="inline-code">false</code> value).
+              An attempt to use <code class="inline-code">true</code> value when the current
+              output format is a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_nonmarkupof">non-markup output
+              format</a> (which hence can&#39;t escape) will cause <a href="gloss.html#gloss.parseTimeError">parse-time error</a>. Note
+              that you can turn auto-escaping on/off for only a part of the
+              template with the <a href="ref_directive_autoesc.html"><code>autoesc</code></a>
+              and <a href="ref_directive_noautoesc.html"><code>noautoesc</code>
+              directives</a>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">encoding</code>: With this you can specify the
+              encoding (charset) of the template in the template file itself.
+              <span class="marked-for-programmers">(That is, this will be the
+              <code class="inline-code">encoding</code> setting of the newly created
+              <code class="inline-code">Template</code>, and not even the
+              <code class="inline-code">encoding</code> parameter to
+              <code class="inline-code">Configuration.getTemplate</code> can override
+              it)</span>. Note however, that FreeMarker will try to find and
+              interpret the <code class="inline-code">ftl</code> directive first with the
+              automatically guessed encoding (which depends on the FreeMarker
+              configuration set by the programmers), and only then realizes if
+              the <code class="inline-code">ftl</code> directive dictates something
+              different, and re-read the template with the new encoding. Thus,
+              the template must be valid FTL until the end of
+              <code class="inline-code">ftl</code> tag with the encoding tried first. The
+              valid values of this parameter are MIME-preferred charset names
+              from the IANA Charset Registry, like ISO-8859-5, UTF-8 or
+              Shift_JIS.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">ns_prefixes</code>: This is a hash that
+              associates prefixes with node namespaces. For example:
+              <code class="inline-code">{&quot;e&quot;:&quot;http://example.com/ebook&quot;,
+              &quot;vg&quot;:&quot;http://example.com/vektorGraphics&quot;}</code>. This is
+              mostly used with XML processing where the prefixes can be used
+              in XML queries, but it also influences the working of <a href="ref_directive_visit.html">directives
+              <code>visit</code> and <code>recurse</code></a>.
+              Only one prefix can be registered for the same node namespace
+              (otherwise an error will occur), so there is one-to-one relation
+              between prefixes and node namespaces. Prefixes
+              <code class="inline-code">D</code> and <code class="inline-code">N</code> are reserved. If
+              you register prefix <code class="inline-code">D</code>, then other than you
+              associate the node namespace with prefix <code class="inline-code">D</code>,
+              you also set the default node namespace. Prefix
+              <code class="inline-code">N</code> can&#39;t be registered; it is used to denote
+              nodes with no node namespace in certain places, when (and only
+              when) prefix <code class="inline-code">D</code> is registered. (To see the
+              usage of default node namespace, <code class="inline-code">N</code>, and
+              prefixes in general, see the part about <a href="xgui.html">XML
+              processing</a> and <a href="ref_directive_visit.html"><code>visit</code> and
+              <code>recurse</code></a> in the reference.) The effect
+              of <code class="inline-code">ns_prefixes</code> is limited to a single <a href="dgui_misc_namespace.html">FTL namespace</a>, namely, to
+              the FTL namespace that was created for the template. This also
+              means that <code class="inline-code">ns_prefixes</code> has effect only when
+              an FTL namespace is created for the template that contains it,
+              otherwise the <code class="inline-code">ns_prefixes</code> parameter has no
+              effect. An FTL namespace is made for a template when: (a) the
+              template is the "main" template, that is, it is not
+              invoked as a result of an <code class="inline-code">&lt;#include
+              ...&gt;</code>, but it is directly invoked (<span class="marked-for-programmers">with the <code class="inline-code">process</code> Java
+              method of class <code class="inline-code">Template</code> or
+              <code class="inline-code">Environment</code></span>); (b) the template is
+              invoked directly with <code class="inline-code">&lt;#import
+              ...&gt;</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">output_format</code>: Specifies the <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output
+              format</a> of this template. This must be a string literal,
+              which refers to the name of the output format. See the <a href="dgui_misc_autoescaping.html#topic.predefinedOutputFormats">table of predefined
+              output formats here</a>. Other names can exist if the
+              programmers has added them via the
+              <code class="inline-code">registered_custom_output_formats</code>
+              configuration setting
+              (<code class="inline-code">Configuration.setRegisteredCustomOutputFormats(<em class="code-color">...</em>)</code>).
+              The referred output format must be known by the
+              <code class="inline-code">Configuration</code>, or else a <a href="gloss.html#gloss.parseTimeError">parse-time error </a>will
+              occur. The name can also refer to a so called combined output
+              format as
+              <code class="inline-code">&quot;<em class="code-color">outerFormatName</em>{<em class="code-color">innerFormatName</em>}&quot;</code>;
+              <a href="ref_directive_outputformat.html#topic.combinedOutputFormats">see more about
+              combined output formats here</a>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">strict_syntax</code>: This turns on/off
+              "strict syntax", which is the standard syntax after
+              FreeMarker 2.1. Valid values are the boolean constants
+              <code class="inline-code">true</code> and <code class="inline-code">false</code>. (And for
+              backward compatibility, strings <code class="inline-code">&quot;yes&quot;</code>,
+              <code class="inline-code">&quot;no&quot;</code>, <code class="inline-code">&quot;true&quot;</code>,
+              <code class="inline-code">&quot;false&quot;</code>). The default value (i.e., when you
+              don&#39;t use this parameter) depends on the FreeMarker
+              configuration set by the programmers, but it&#39;s most certainly
+              set to <code class="inline-code">true</code>. For more information read: <a href="ref_depr_oldsyntax.html">Deprecated FTL constructs/Old FTL syntax</a></p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">strip_text</code>: When enabled, all top-level
+              text in a template is removed when the template is parsed. This
+              does not affect text within macros, directives, or
+              interpolations. Valid values are the boolean constants
+              <code class="inline-code">true</code> and <code class="inline-code">false</code>. (And for
+              backward compatibility, strings <code class="inline-code">&quot;yes&quot;</code>,
+              <code class="inline-code">&quot;no&quot;</code>, <code class="inline-code">&quot;true&quot;</code>,
+              <code class="inline-code">&quot;false&quot;</code>). The default value (i.e. when you
+              don&#39;t use this parameter) is <code class="inline-code">false</code>.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">strip_whitespace</code>: This enables/disables
+              <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">white-space
+              stripping</a>. Valid values are the boolean constants
+              <code class="inline-code">true</code> and <code class="inline-code">false</code>. (And for
+              backward compatibility, strings <code class="inline-code">&quot;yes&quot;</code>,
+              <code class="inline-code">&quot;no&quot;</code>, <code class="inline-code">&quot;true&quot;</code>,
+              <code class="inline-code">&quot;false&quot;</code>). The default value (i.e. when you
+              don&#39;t use this parameter) depends on the FreeMarker
+              configuration set by the programmers, but it should be
+              <code class="inline-code">true</code> for new projects.</p>
+            </li>
+          </ul>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>As of FreeMarker 2.3.23, you can use camel case instead of
+            snake case for parameter names, like
+            <code class="inline-code">outputFormat</code> instead of
+            <code class="inline-code">output_format</code>. But know that then within the
+            same template, FreeMarker will enforce the usage of camel case for
+            all identifiers that are part of the template language (user
+            defined names are not affected).</p>
+            </div>
+
+
+          <p>This directive also determines if the template uses angle
+          bracket syntax (e.g. <code class="inline-code">&lt;#include &#39;foo.ftl&#39;&gt;</code>)
+          or <a href="dgui_misc_alternativesyntax.html">square bracket
+          syntax</a> (e.g. <code class="inline-code">[#include &#39;foo.ftl&#39;]</code>).
+          Simply, the syntax used for this directive will be the syntax used
+          for the whole template, regardless of the FreeMarker configuration
+          settings.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_flush.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_function.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_function.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_function.html b/builds/2.3.26-nightly/ref_directive_function.html
new file mode 100644
index 0000000..22e00bc
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_function.html
@@ -0,0 +1,173 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>function, return - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="function, return">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_function.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_function.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_function.html"><span itemprop="name">function, return</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","function, return"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_ftl.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_global.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_function" itemprop="headline">function, return</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_90" data-menu-target="autoid_90">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_91" data-menu-target="autoid_91">Description</a></li></ul> </div><a name="ref.directive.function"></a><a name="ref.directive.function.return"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_90">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#function <em class="code-color">name</em> <em class="code-color">param1</em> <em class="code-color">param2</em> <em class="code-color">... paramN</em>&gt;
+  <em class="code-color">...</em>
+  &lt;#return <em class="code-color">returnValue</em>&gt;
+  <em class="code-color">...</em>
+&lt;/#function&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">name</em></code>: name
+              of method variable (not expression)
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">param1</em></code>,
+              <code class="inline-code"><em class="code-color">param2</em></code>, ...etc.:
+              the name of the <a href="dgui_misc_var.html">local
+              variables</a> store the parameter values (not expression),
+              optionally followed by <code class="inline-code">=</code> and the default
+              value (that&#39;s an expression).
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">paramN</em></code>, the
+              last parameter, may optionally include a trailing ellipsis
+              (<code class="inline-code">...</code>), which indicates the macro takes a
+              variable number of parameters. Local variable
+              <code class="inline-code"><em class="code-color">paramN</em></code> will be a
+              sequence of the extra parameters.
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">returnValue</em></code>:
+              the expression that calculates the value of the method
+              call.
+            </li>
+          </ul>
+
+          <p>The <code class="inline-code">return</code> directive can be used anywhere
+          and for any times between the <code class="inline-code">&lt;#function
+          <em class="code-color">...</em>&gt;</code> and
+          <code class="inline-code">&lt;/#function&gt;</code>.</p>
+
+          <p>Parameters without default value must precede parameters with
+          default value
+          (<code class="inline-code"><em class="code-color">paramName</em>=<em class="code-color">defaultValue</em></code>).</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_91">Description</h2>
+
+
+          <p>Creates a method variable (in the current namespace, if you
+          know namespace feature). This directive works in the same way as the
+          <a href="ref_directive_macro.html#ref.directive.macro"><code>macro</code>
+          directive</a>, except that <code class="inline-code">return</code> directive
+          <em>must</em> have a parameter that specifies the return
+          value of the method, and that attempts to write to the output will
+          be ignored. If the <code class="inline-code">&lt;/#function&gt;</code> is reached
+          (i.e. there was no <code class="inline-code">return
+          <em class="code-color">returnValue</em></code>), then the return
+          value of the method is an undefined variable.</p>
+
+          <p>Example 1: Creating a method that calculates the average of
+          two numbers:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#function avg x y&gt;
+  &lt;#return (x + y) / 2&gt;
+&lt;/#function&gt;
+${avg(10, 20)}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">15</pre></div>
+
+          <p>Example 2: Creating a method that calculates the average of
+          multiple numbers:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#function avg nums...&gt;
+  &lt;#local sum = 0&gt;
+  &lt;#list nums as num&gt;
+    &lt;#local sum += num&gt;
+  &lt;/#list&gt;
+  &lt;#if nums?size != 0&gt;
+    &lt;#return sum / nums?size&gt;
+  &lt;/#if&gt;
+&lt;/#function&gt;
+${avg(10, 20)}
+${avg(10, 20, 30, 40)}
+${avg()!&quot;N/A&quot;}</pre></div>
+
+          <p>will print:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">15
+25
+N/A</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_ftl.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_global.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_directive_global.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_directive_global.html b/builds/2.3.26-nightly/ref_directive_global.html
new file mode 100644
index 0000000..e0a4a1d
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_directive_global.html
@@ -0,0 +1,136 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>global - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="global">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_directive_global.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_directive_global.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directives.html"><span itemprop="name">Directive Reference</span></a></li><li class="step-
 3" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_directive_global.html"><span itemprop="name">global</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Directive Reference","global"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_directive_function.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_if.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_directive_global" itemprop="headline">global</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_92" data-menu-target="autoid_92">Synopsis</a></li><li><a class="page-menu-link" href="#autoid_93" data-menu-target="autoid_93">Description</a></li></ul> </div><a name="ref.directive.global"></a>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_92">Synopsis</h2>
+
+
+          
+<pre class="metaTemplate">
+<code class="inline-code">&lt;#global <em class="code-color">name</em>=<em class="code-color">value</em>&gt;</code>
+or
+<code class="inline-code">&lt;#global <em class="code-color">name1</em>=<em class="code-color">value1</em> <em class="code-color">name2</em>=<em class="code-color">value2</em> <em class="code-color">... nameN</em>=<em class="code-color">valueN</em>&gt;</code>
+or
+<code class="inline-code">&lt;#global <em class="code-color">name</em>&gt;
+  <em class="code-color">capture this</em>
+&lt;/#global&gt;</code>
+</pre>
+
+
+          <p>Where:</p>
+
+          <ul>
+            <li>
+              <code class="inline-code"><em class="code-color">name</em></code>: name
+              of the variable. It is not expression. However, it can be
+              written as a string literal, which is useful if the variable
+              name contains reserved characters, for example
+              <code class="inline-code">&lt;#global &quot;foo-bar&quot; = 1&gt;</code>. Note that this
+              string literal does not expand interpolations (as
+              <code class="inline-code">&quot;${foo}&quot;</code>).
+            </li>
+
+            <li>
+              <code class="inline-code">=</code>: Assignment operator, which can also
+              be one of the shorthand assignment operators
+              (<code class="inline-code">++</code>, <code class="inline-code">+=</code>, etc.), just like
+              with <a href="ref_directive_assign.html">the
+              <code>assign</code> directive</a>,
+            </li>
+
+            <li>
+              <code class="inline-code"><em class="code-color">value</em></code>: the
+              value to store. Expression.
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_93">Description</h2>
+
+
+          <p>This directive is similar to <a href="ref_directive_assign.html#ref.directive.assign"><code>assign</code></a>, but
+          the variable created will be visible in all <a href="dgui_misc_namespace.html">namespaces</a>, and will not be
+          inside any namespace. Exactly as if you would create (or replace) a
+          variable of the data-model. Hence, the variable is global. If a
+          variable with the same name already exists in the data-model, it
+          will be hidden by the variable created with this directive. If a
+          variable with the same name already exists in the current namespace,
+          that will hide the variable created with <code class="inline-code">global</code>
+          directive.</p>
+
+          <p>For example, with <code class="inline-code">&lt;#global x = 1&gt;</code> you
+          create a variable that is visible as <code class="inline-code">x</code> in all
+          namespaces, unless another variable called <code class="inline-code">x</code>
+          hides it (for example a variable what you have created as
+          <code class="inline-code">&lt;#assign x = 2&gt;</code>). In this case, you can use
+          <a href="dgui_template_exp.html#dgui_template_exp_var_special">special
+          variable</a> <code class="inline-code">globals</code>, like
+          <code class="inline-code">${.globals.x}</code>. Note that with
+          <code class="inline-code">globals</code> you see all globally accessible
+          variables; not only the variables that were created with
+          <code class="inline-code">global</code> directive, but also the variables of the
+          data-model.</p>
+
+          <p>Note for custom JSP tag users: The set of variables created
+          with this directive corresponds to the JSP page-scope. This means,
+          that if a custom JSP tag wants to get a page-scope attribute
+          (page-scope bean), a variable with the same name in the current
+          namespace will not hide it from the viewpoint of the JSP tag.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_directive_function.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directive_if.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>



[09/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_15.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_15.html b/builds/2.3.26-nightly/versions_2_3_15.html
new file mode 100644
index 0000000..be94b71
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_15.html
@@ -0,0 +1,115 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.15 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.15">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_15.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_15.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_15.html"><span itemprop="name">2.3.15</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.15"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_16.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_14.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_15" itemprop="headline">2.3.15</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_186" data-menu-target="autoid_186">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_187" data-menu-target="autoid_187">Changes on the Java side</a></li></ul> </div><p>Date of release: 2008-12-16</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_186">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bug fixed: Hash concatenation (like <code class="inline-code">hash1 +
+              hash2</code>) shuffled the order of keys/values even if both
+              hashes were ordered.</p>
+            </li>
+
+            <li>
+              <p>In web pages that are based on the
+              <code class="inline-code">FreemarkerServlet</code>, you can now use
+              <code class="inline-code">&lt;@include_page path=&quot;...&quot;/&gt;</code> to use
+              servlet includes. See more <a href="pgui_misc_servlet.html#pgui_misc_servlet_include">here...</a></p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_187">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>The <code class="inline-code">BeansWrapper</code> can automatically
+              detect that classes were reloaded by JavaRebel.</p>
+            </li>
+
+            <li>
+              <p>Fixed a bug that caused <code class="inline-code">null</code> to be
+              returned from
+              <code class="inline-code">Environment.getCurrentEnvironment()</code> while
+              processing autoincludes and autoimports. (<a href="https://sourceforge.net/forum/message.php?msg_id=5531621">See
+              bug report</a>)</p>
+            </li>
+
+            <li>
+              <p>Fixed a bug that caused
+              <code class="inline-code">getObject(Object)</code> method on POJOs to not be
+              recognized as a general get method.</p>
+            </li>
+
+            <li>
+              <p>Substantially improved performance of the
+              <code class="inline-code">&lt;#break&gt;</code> directive.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">DeepUnwrap</code> now unwraps custom null
+              model of the current object wrapper into a Java
+              <code class="inline-code">null</code>.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_16.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_14.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_16.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_16.html b/builds/2.3.26-nightly/versions_2_3_16.html
new file mode 100644
index 0000000..acc58a5
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_16.html
@@ -0,0 +1,135 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.16 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.16">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_16.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_16.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_16.html"><span itemprop="name">2.3.16</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.16"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_17.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_15.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_16" itemprop="headline">2.3.16</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_184" data-menu-target="autoid_184">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_185" data-menu-target="autoid_185">Changes on the FTL side</a></li></ul> </div><p>Date of release: 2009-12-07</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_184">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Fixed a bug that caused incorrect unwrapping of sequences
+              to Java arrays (<a href="https://sourceforge.net/tracker/?func=detail&amp;aid=2105310&amp;group_id=794&amp;atid=100794">See
+              bug report</a>)</p>
+            </li>
+
+            <li>
+              <p>Fixed a bug that caused rounding of float and double
+              values (<a href="https://sourceforge.net/tracker/?func=detail&amp;aid=2503124&amp;group_id=794&amp;atid=100794">See
+              bug report</a>)</p>
+            </li>
+
+            <li>
+              <p>Created a new
+              <code class="inline-code">freemarker.runtime.attempt</code> category and
+              exceptions caught in <code class="inline-code">&lt;#attempt&gt;</code> blocks
+              are logged into it at a DEBUG severity.</p>
+            </li>
+
+            <li>
+              <p>Fixing the (ages old) problem of
+              <code class="inline-code">RhinoWrapper</code> not working with all versions of
+              Rhino because of binary incompatible change of Rhino&#39;s
+              <code class="inline-code">Undefined.instance</code>.</p>
+            </li>
+
+            <li>
+              <p>Fixed bug where <code class="inline-code">TextUtil.XMLEncNQG</code>
+              didn&#39;t escape <code class="inline-code">]]&gt;</code> as
+              <code class="inline-code">]]&amp;gt;</code>.</p>
+            </li>
+
+            <li>
+              <p>Fixed bug where the root directory couldn&#39;t be used as the
+              template base directory, as
+              <code class="inline-code">FileTemplateLoader</code> believed that the template
+              is outside the base directory.</p>
+            </li>
+
+            <li>
+              <p>Macro names can no longer be changed through the
+              API.</p>
+            </li>
+
+            <li>
+              <p>FreemarkerServlet now cooperates with Session Fixation
+              Attack Protection in Spring Security, see <a href="https://sourceforge.net/projects/freemarker/forums/forum/2345/topic/3475868">
+              forum discussion</a> for details.</p>
+            </li>
+
+            <li>
+              <p>Substantially improved performance of the
+              <code class="inline-code">&lt;#return&gt;</code> directive.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_185">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Fixed bug where
+              <code class="inline-code"><em class="code-color">anXMLNode</em>.@@markup</code>
+              and <code class="inline-code">@@nested_markup</code> didn&#39;t escape
+              <code class="inline-code">]]&gt;</code> as
+              <code class="inline-code">]]&amp;gt;</code>.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_17.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_15.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_17.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_17.html b/builds/2.3.26-nightly/versions_2_3_17.html
new file mode 100644
index 0000000..a9c317c
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_17.html
@@ -0,0 +1,331 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.17 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.17">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_17.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_17.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_17.html"><span itemprop="name">2.3.17</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.17"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_18.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_16.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_17" itemprop="headline">2.3.17</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_181" data-menu-target="autoid_181">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_182" data-menu-target="autoid_182">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_183" data-menu-target="autoid_183">Other changes</a></li></ul> </div><p>Date of release: 2011-05-17</p><p>It&#39;s possibly urgent to update to this version because of a
+        <a href="#v2317secfix">security fix</a>!</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_181">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p><code class="inline-code">?seq_index_of</code> and
+              <code class="inline-code">?seq_last_index_of</code> now works on collections
+              (<code class="inline-code">freemarker.template.TemplateCollectionModel</code>-s)
+              too, not only on sequences
+              (<code class="inline-code">freemarker.template.TemplateSequenceModel</code>-s).</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">?long</code> now works for date, date-time or
+              time values, and returns the milliseconds since the epoch (as
+              <code class="inline-code">java.util.Date.getTime()</code>).</p>
+            </li>
+
+            <li>
+              <p>To convert numbers (usually Java
+              <code class="inline-code">long</code>-s) to date or date-time and time values,
+              <code class="inline-code">?number_to_date</code>,
+              <code class="inline-code">?number_to_time</code>,
+              <code class="inline-code">?number_to_datetime</code> was added. <a href="ref_builtins_expert.html#ref_builtin_numToDate">See more here...</a>
+              (Unfortunately, <code class="inline-code">?date</code> and like can&#39;t be
+              extended to support this due to backward compatibility
+              issues.)</p>
+            </li>
+
+            <li>
+              <p>New built-ins to format numbers with ISO 8601 &quot;extended&quot;
+              format regardless of the current date/time formatting settings,
+              and even regardless of the current time zone setting. For
+              example <code class="inline-code">${myTimeStamp?iso_utc}</code> will print
+              something like <code class="inline-code">2010-05-16T23:05:45Z</code>. <a href="ref_builtins_date.html#ref_builtin_date_iso">See more here...</a></p>
+            </li>
+
+            <li>
+              <p>New <a href="ref_specvar.html">special variable</a>,
+              <code class="inline-code">now</code>. This returns the current date-time.
+              Usage examples: &quot;<code class="inline-code">Page generated: ${.now}</code>&quot;,
+              &quot;<code class="inline-code">Today is ${.now?date}</code>&quot;, &quot;<code class="inline-code">The
+              current time is ${.now?time}</code>&quot;.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">?sort</code> and <code class="inline-code">?sort_by</code>
+              now supports sorting boolean values.</p>
+            </li>
+
+            <li>
+              <p>When using unsupported or unknown <a href="ref_builtins_string.html#ref_builtin_string_flags">string built-in flags</a>,
+              FreeMarker will now <a href="pgui_misc_logging.html">log</a>
+              warnings (maximum 25 times per class-loader, to prevent flooding
+              the log). It&#39;s certain that starting from FreeMarker 2.4 these
+              will count as errors.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=3047201&amp;group_id=794">[3047201]</a>:
+              Using regular expressions (like with <code class="inline-code">?match</code>)
+              could cause lockup in multi-threaded environment, also memory
+              leakage when using dynamically generated regular
+              expressions.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <code class="inline-code">?seq_contains</code>,
+              <code class="inline-code">?seq_index_of</code> and
+              <code class="inline-code">?seq_last_index_of</code> has failed with
+              non-<code class="inline-code">java.util.List</code>
+              <code class="inline-code">java.util.Collection</code>-s that are wrapped with
+              pure <code class="inline-code">BeansWrapper</code> (not the
+              <code class="inline-code">DefaultObjectWrapper</code>) as
+              <code class="inline-code">TemplateSequenceModel</code>. (See also:
+              <code class="inline-code">getSupportsIndexedAccess()</code> below)</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_182">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><a name="v2317secfix"></a><em>Security fix</em>:
+              Using carefully crafted template names (template paths) that
+              contain code point 0 (<code class="inline-code">&#39;\u0000&#39;</code>), it was
+              possible to load files from outside the template root directory
+              like if they were FreeMarker templates. The root of the problem
+              is that the underlying native C/C++ part (which belongs to the
+              Java platform or to the OS) interprets the 0 as the end of the
+              string, while Java (and hence FreeMarker and the Servlet
+              container) doesn&#39;t. Thus a path that looked safe for FreeMarker
+              become unsafe on the lower level. The problem is present with
+              all ways of loading templates by name
+              (<code class="inline-code">Configuration.getTemplate(<em class="code-color">...</em>)</code>,
+              <code class="inline-code">&lt;#include
+              <em class="code-color">...</em>&gt;</code>,
+              <code class="inline-code">&lt;#import
+              <em class="code-color">...</em>&gt;</code>).</p>
+
+              <p>You are not affected if you don&#39;t allow users to upload
+              templates and also at least one of these stands:</p>
+
+              <ul>
+                <li>
+                  <p>In your system users can&#39;t provide arbitrary strings
+                  as template names (template paths). For example, if users
+                  are only allowed to visit the URL-s that belong to the MVC
+                  Controller (like they can&#39;t visit <code class="inline-code">*.ftl</code>)
+                  then they can&#39;t suggest arbitrary template names.</p>
+                </li>
+
+                <li>
+                  <p>The template names are part of the path in the Web
+                  page URL, and your webserver or Servlet container disallows
+                  URL-s that contain <code class="inline-code">%00</code>, or terminate the
+                  URL at it before passing it to the servlets.</p>
+                </li>
+
+                <li>
+                  <p>You are using <code class="inline-code">FileTemplateLoader</code>
+                  and linking is not allowed in it (by default it isn&#39;t
+                  allowed).</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>FreeMarker now can log its messages directly using SLF4J
+              or Apache Commons Logging. However, it will not use these logger
+              libraries automatically, until 2.4; <a href="pgui_misc_logging.html">see more here...</a> But it&#39;s
+              recommended to switch to SLF4J now.</p>
+            </li>
+
+            <li>
+              <p>New setting: <code class="inline-code">&quot;auto_flush&quot;</code>,
+              <code class="inline-code">Configurable.setAutoFlush(boolean)</code>. Sets
+              whether the output <code class="inline-code">Writer</code> is automatically
+              flushed at the end of <code class="inline-code">Template.process(Object,
+              Writer)</code> (and its overloads). The default is
+              <code class="inline-code">true</code>, which corresponds to the earlier
+              behavior. Using <code class="inline-code">false</code> is needed for example
+              when a Web page is composed from several boxes (like portlets,
+              GUI panels, etc.) that aren&#39;t inserted with
+              <code class="inline-code">#include</code> (or with similar directives) into a
+              master FreeMarker template, rather they are all processed with a
+              separate
+              <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>
+              call. In a such scenario the automatic flushes would commit the
+              HTTP response after each box, hence interfering with full-page
+              buffering, and also possibly decreasing performance with too
+              frequent and too early response buffer flushes.</p>
+            </li>
+
+            <li>
+              <p>Added new setting:
+              <code class="inline-code">Configuration.setNewBuiltinClassResolver(TemplateClassResolver)</code>,
+              or <code class="inline-code">new_builtin_class_resolver</code> property. This
+              allows you to specify how the <a href="ref_builtins_expert.html#ref_builtin_new"><code>new</code> built-in</a>
+              (like in <code class="inline-code">&quot;com.example.SomeClass&quot;?new()</code>)
+              resolves classes and which classes are accessible at all. If you
+              are allowing not-so-much-trusted users to upload templates, you
+              should be definitely interested; see the Java API docs of
+              <code class="inline-code">freemarker.core.Configurable.setSetting</code> and
+              <code class="inline-code">freemareker.template.Configuration.setNewBuiltinClassResolver</code>.
+              Otherwise it&#39;s still recommended to set this to
+              <code class="inline-code">TemplateClassResolver.SAFER_RESOLVER</code> (or
+              <code class="inline-code">safer</code> if you are using properties), although
+              that&#39;s not 100% backward compatible (see Java API docs) .</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">freemarker.cache.NullCacheStorage</code>: Setting
+              this as the cache storage in <code class="inline-code">Configuration</code>
+              disables caching.</p>
+            </li>
+
+            <li>
+              <p>Added <code class="inline-code">getSupportsIndexedAccess()</code> to
+              <code class="inline-code">freemarker.ext.beans.CollectionModel</code>, so one
+              can check if <code class="inline-code">TemplateSequenceModel.get(int)</code>
+              will work with a particular <code class="inline-code">CollectionModel</code>
+              instance or not.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed <a href="http://sourceforge.net/tracker/?func=detail&amp;aid=2992265&amp;group_id=794&amp;atid=100794">[2992265]</a>:
+              JSP <code class="inline-code">FreeMarkerPageContext.include</code> behaved
+              incorrectly.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: When using FreeMarker&#39;s JSP support with JSP
+              tags that use
+              <code class="inline-code">javax.servlet.jsp.PageContext.pushBody</code> (like
+              some Stripes tags), <code class="inline-code">&quot;ArrayIndexOutOfBoundsException:
+              -1&quot;</code> occurred inside
+              <code class="inline-code">freemarker.ext.jsp.FreeMarkerPageContext.popWriter</code>.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=3033015&amp;group_id=794">[3033015]</a>:
+              <code class="inline-code">AllHttpScopesHashModel</code> used
+              <code class="inline-code">WrappingTemplateModel.getDefaultObjectWrapper()</code>
+              for wrapping variables in the page scope, while used the
+              user-specified <code class="inline-code">ObjectWrapper</code> for all other
+              scopes (request, session, etc.). Now it uses the user-specified
+              wrapper in the page scope as well.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed <a href="https://sourceforge.net/tracker/?func=detail&amp;aid=3128073&amp;group_id=794&amp;atid=100794">[3128073]</a>:
+              <code class="inline-code">HashAdapther.containsKey(...)</code> returned
+              <code class="inline-code">true</code> for a key that doesn&#39;t exist when
+              unwrapping the key has failed. As a side effect of the fix,
+              <code class="inline-code">BeansWrapper.CAN_NOT_UNWRAP</code> is now private;
+              earlier it was public by mistake.</p>
+            </li>
+
+            <li>
+              <p>Big fixed <a href="http://sourceforge.net/tracker/?func=detail&amp;aid=3151085&amp;group_id=794&amp;atid=100794">[3151085]</a>:
+              <code class="inline-code">freemarker.jsp.TaglibFactory</code> didn&#39;t locate
+              tld files properly. This fix gives better compliance with JSP
+              specification for resolving and loading tld files.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: Unwrapping <code class="inline-code">null</code> with a
+              <code class="inline-code">BeansWrapper</code> that had a custom null-model
+              didn&#39;t result in <code class="inline-code">null</code>. Now both unwrapping
+              <code class="inline-code">null</code> and the custom null-model gives
+              <code class="inline-code">null</code>.</p>
+            </li>
+
+            <li>
+              <p>Log messages doesn&#39;t contain line-breaks (CR or LF)
+              anymore and quote paths and other arbitrary text with Java
+              string literal syntax that also escapes <code class="inline-code">&lt;</code>
+              characters as <code class="inline-code">\u003C</code>. These address security
+              concerns related to poor quality log appenders and buggy log
+              readers. This change is mostly noticeable on template processing
+              error entries, which will now quote the exception message. Note
+              that how stack traces (the <code class="inline-code">Throwable</code> objects)
+              are logged is still up to the logging framework you are
+              using.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_183">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>The DTD-s and XSD-s that are included in
+              <code class="inline-code">freemarker.jar</code> under
+              <code class="inline-code">freemarker/ext/jsp</code> are now under Apache
+              Software License, Version 2. This is also clarified in the
+              <code class="inline-code">LICENSE.txt</code>. Earlier these files had no clear
+              license terms.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_18.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_16.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_18.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_18.html b/builds/2.3.26-nightly/versions_2_3_18.html
new file mode 100644
index 0000000..e0c149e
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_18.html
@@ -0,0 +1,87 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.18 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.18">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_18.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_18.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_18.html"><span itemprop="name">2.3.18</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.18"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_19.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_17.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_18" itemprop="headline">2.3.18</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_179" data-menu-target="autoid_179">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_180" data-menu-target="autoid_180">Other changes</a></li></ul> </div><p>Date of release: 2011-05-21</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_179">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix <a href="https://sourceforge.net/tracker/?func=detail&amp;aid=3304568&amp;group_id=794&amp;atid=100794">[3304568]</a>:
+              2.3.17 didn&#39;t find TLD-s in <code class="inline-code">WEB-INF\lib\*.jar</code>
+              unless they were explicitly pointed in the
+              <code class="inline-code">web.xml</code> with a <code class="inline-code">taglib</code>
+              element. This bug was introduced in 2.3.17.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_180">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Added <code class="inline-code">LICENSE.txt</code> and
+              <code class="inline-code">NOTICE.txt</code> to
+              <code class="inline-code">freemarker.jar</code> under
+              <code class="inline-code">META-INF</code>.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_19.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_17.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_19.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_19.html b/builds/2.3.26-nightly/versions_2_3_19.html
new file mode 100644
index 0000000..ef82d33
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_19.html
@@ -0,0 +1,236 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.19 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.19">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_19.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_19.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_19.html"><span itemprop="name">2.3.19</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.19"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_20.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_18.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_19" itemprop="headline">2.3.19</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_177" data-menu-target="autoid_177">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_178" data-menu-target="autoid_178">Changes on the Java side</a></li></ul> </div><p>Date of release: 2012-02-29</p><p>Don&#39;t miss the <a href="#v2319secfix">security related
+        changes</a>, they may affect your application!</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_177">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p><em>Attention</em>: The output of <a href="ref_builtins_date.html#ref_builtin_date_iso">ISO 8601 date/time formatting
+              built-ins</a>, introduced in 2.3.17, was slightly changed.
+              From now on, the time zone offset, when it&#39;s displayed and it
+              isn&#39;t <code class="inline-code">Z</code>, always includes the minutes. For
+              example, <code class="inline-code">15:30:15+02</code> becomes to
+              <code class="inline-code">15:30:15+02:00</code> in the template output. Both
+              formats are valid according to ISO 8601 (so anything that
+              expects ISO 8601 date/times should continue working), but only
+              the last format complies with the XML Schema date/time formats,
+              hence this change.</p>
+            </li>
+
+            <li>
+              <p>New built-in for escaping inside JSON string literals:
+              <a href="ref_builtins_string.html#ref_builtin_json_string"><code>json_string</code></a>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Wrong <code class="inline-code">#</code> tags were printed as
+              static text instead of causing parsing error if there was no
+              correct <code class="inline-code">#</code> tag earlier in the same template.
+              Since fixing this would not be 100% backward compatible, the old
+              behavior has remained, unless you set the
+              <code class="inline-code">incompatible_enhancements</code> setting
+              (<code class="inline-code">Configuration.setIncompatibleEnhancements(String)</code>)
+              to <code class="inline-code">&quot;2.3.19&quot;</code> or higher.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_178">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><a name="v2319secfix"></a><em>Attention</em>: This
+              release contains two important security workarounds that
+              unavoidably make it obvious how some applications can be
+              exploited. <em>FreeMarker can&#39;t solve these issues on all
+              configurations, so please read the details instead of just
+              updating FreeMarker!</em> Also, these changes are not 100%
+              backward compatible in theory, however it&#39;s not probable that
+              they will break anything. The two changes are:</p>
+
+              <ul>
+                <li>
+                  <p>The character with character code 0
+                  (<code class="inline-code">\u0000</code>) is not allowed in template paths
+                  anymore. When a path contains it, FreeMarker behaves as if
+                  the template was not found.</p>
+
+                  <p>This is to fix the security problem where a template
+                  path like <code class="inline-code">&quot;secret.txt\u0000.ftl&quot;</code> is used
+                  to bypass extension filtering in an application. FreeMarker
+                  itself doesn&#39;t care about the extension, but some
+                  applications decide based on the extension if they will
+                  delegate a path to FreeMarker. When they do with such a
+                  path, the C/C++ implementation behind the storage mechanism
+                  may sees the path as <code class="inline-code">&quot;secret.txt&quot;</code> as the
+                  0 terminates the string in C/C++, and thus load a non-FTL
+                  file as a template, returning the file contents to the
+                  attacker.</p>
+
+                  <p>Note that some HTTP servers, notably Tomcat and the
+                  Apache HTTP Server blocks URL-s where the URL contains 0
+                  (<code class="inline-code">%00</code>) outside the query string, thus this
+                  wasn&#39;t exploitable there through such Web URL-s. Some other
+                  HTTP servers however, like Jetty, doesn&#39;t block such
+                  URL-s.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">ClassTemplateLoader</code>, when it&#39;s
+                  created with base path <code class="inline-code">&quot;/&quot;</code> (like with
+                  <code class="inline-code">new ClassTemplateLoader(someClass, &quot;/&quot;)</code>),
+                  will not allow template paths that contain colon earlier
+                  than any <code class="inline-code">/</code>, and will act like if the
+                  template was not found in such case.</p>
+
+                  <p>This is to fix the security problem where a template
+                  path like <code class="inline-code">&quot;file:/etc/secret&quot;</code> or
+                  <code class="inline-code">&quot;http://example.com/malware.ftl&quot;</code> is
+                  interpreted as a full URL by a
+                  <code class="inline-code">java.net.URLClassLoader</code> in the
+                  class-loader hierarchy, and thus allow loading files from
+                  these URL-s as templates. This is a quirk (or bug) of
+                  <code class="inline-code">java.net.URLClassLoader</code>, thus this
+                  problem only exists on systems that use such
+                  class-loaders.</p>
+
+                  <p>Beware, some frameworks use their own
+                  <code class="inline-code">TemplateLoader</code> implementations, and if
+                  those are vulnerable, they will remain so after updating
+                  FreeMarker too! Note that this exploit only works if the
+                  class-loader hierarchy contains an
+                  <code class="inline-code">URLClassLoader</code> and the class-loader is
+                  used to load templates without adding any prefix before the
+                  template path (other than <code class="inline-code">&quot;/&quot;</code>).</p>
+                </li>
+              </ul>
+
+              <p>These security issues mostly only affect applications
+              <em>where the user (the visitor) can supply arbitrary
+              template paths to the application</em>. This is not the
+              case with properly built MVC applications, as there only the MVC
+              Controller can be addressed directly, and it&#39;s the Controller
+              that specifies the template paths. But legacy MVC applications
+              based on <a href="pgui_misc_servlet.html#pgui_misc_servlet_model2">JSP
+              Model-2</a> often expose the MVC Views as public URL-s ending
+              with <code class="inline-code">.ftl</code>, thus allowing the user to give
+              arbitrary paths to FreeMarker. Such applications should be
+              secured with a <code class="inline-code">security-constratint</code> in
+              <code class="inline-code">web.xml</code> as shown in the <a href="pgui_misc_servlet.html#pgui_misc_servlet_model2">related Manual
+              section</a>. This should be done regardless of the current
+              security fixes.</p>
+
+              <p>In general, you should not allow users to specify
+              arbitrary template paths, or if you do allow that, you should be
+              extra careful with the <code class="inline-code">TemplateLoader</code>
+              used.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Configuration</code> has new methods:
+              <code class="inline-code">removeTemplateFromCache(...)</code>. This will
+              remove the given template for the given locale from the cache,
+              so it will be re-loaded regardless of the template update delay
+              when it&#39;s next time requested.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">BeansWrapper</code> ignores setter methods
+              from now when introspecting classes. They weren&#39;t used anyway,
+              so they unnecessarily caused
+              &quot;<code class="inline-code">java.beans.IntrospectionException</code>: type
+              mismatch between read and write methods&quot; errors.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateClassResolver.SAFER_RESOLVER</code>
+              now disallows creating
+              <code class="inline-code">freemarker.template.utility.JythonRuntime</code> and
+              <code class="inline-code">freemarker.template.utility.Execute</code>. This
+              change affects the behavior of the <a href="ref_builtins_expert.html#ref_builtin_new"><code>new</code> built-in</a>
+              if FreeMarker was configured to use
+              <code class="inline-code">SAFER_RESOLVER</code>, which is not the default
+              until 2.4 and is hence improbable.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: Calling varargs methods now indeed works.
+              (Earlier it only worked for overloaded methods.)</p>
+            </li>
+
+            <li>
+              <p>Bug fixed <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=1837697&amp;group_id=794&amp;atid=100794">[1837697]</a>
+              <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=2831150&amp;group_id=794&amp;atid=100794">[2831150]</a>
+              <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=3039096&amp;group_id=794&amp;atid=100794">[3039096]</a>
+              <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=3165425&amp;group_id=794&amp;atid=100794">[3165425]</a>:
+              Jython support now works with Jython 2.2 and 2.5.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed <a href="https://sourceforge.net/tracker/index.php?func=detail&amp;aid=3325103&amp;group_id=794&amp;atid=100794">[3325103]</a>:
+              <code class="inline-code">TemplateException</code>-s and
+              <code class="inline-code">ParseException</code>-s are now serializable.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_20.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_18.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_2.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_2.html b/builds/2.3.26-nightly/versions_2_3_2.html
new file mode 100644
index 0000000..899e309
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_2.html
@@ -0,0 +1,77 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.2 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.2">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_2.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_2.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_2.html"><span itemprop="name">2.3.2</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.2"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_1.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_2" itemprop="headline">2.3.2</h1>
+</div></div><p>Date of release: 2005-01-22</p><p>Bugfix release.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_213">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: If you use JSP taglibs in FreeMarker templates,
+              FreeMarker possibly tried to get DTD-s from the Sun Web site
+              because of a bug introduced with FreeMarker 2.3.1. This was a
+              serious problem since if your server is offline or the Sun Web
+              site becomes temporarily inaccessible the templates that are
+              using JSP taglibs will possibly die with error.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The <code class="inline-code">DefaultObjectWrapper</code> has
+              ignored the value of the <code class="inline-code">nullModel</code> property.
+              (Note that it&#39;s discouraged to use a "null
+              model".)</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_3.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_1.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[35/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_errorhandling.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_errorhandling.html b/builds/2.3.26-nightly/pgui_config_errorhandling.html
new file mode 100644
index 0000000..1d88582
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_errorhandling.html
@@ -0,0 +1,391 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Error handling - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Error handling">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_errorhandling.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_errorhandling.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_errorhandling.html"><span itemprop="name">Error handling</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Error handling"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_templateloading.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_templateconfigurations.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_errorhandling" itemprop="headline">Error handling</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_43" data-menu-target="autoid_43">The possible exceptions</a></li><li><a class="page-menu-link" href="#autoid_44" data-menu-target="autoid_44">Customizing the behavior regarding TemplatException-s</a></li><li><a class="page-menu-link" href="#autoid_45" data-menu-target="autoid_45">TemplateException logging</a></li><li><a class="page-menu-link" href="#autoid_46" data-menu-target="autoid_46">Explicit error handling in templates</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_43">The possible exceptions</h2>
+
+
+          <p>The exceptions that can occur regarding FreeMarker could be
+          classified like this:</p>
+
+          <ul>
+            <li>
+              <p>Exceptions occurring when you configure FreeMarker:
+              Typically you configure FreeMarker only once in your
+              application, when your application initializes itself. Of
+              course, during this, exceptions can occur.</p>
+            </li>
+
+            <li>
+              <p>Exceptions occurring when loading and parsing templates:
+              When you call
+              <code class="inline-code">Configuration.getTemplate(<em class="code-color">...</em>)</code>,
+              FreeMarker has to load the template into the memory and parse it
+              (unless the template is already <a href="pgui_config_templateloading.html#pgui_config_templateloading_caching">cached</a> in
+              that <code class="inline-code">Configuration</code> object). During this,
+              these kind of exceptions can occur:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">TemplateNotFoundException</code> because
+                  the requested template doesn&#39;t exist. Note this extends
+                  <code class="inline-code">IOException</code>.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">freemarker.core.ParseException</code>
+                  because the template is syntactically incorrect according
+                  the rules of the FTL language. Note that this error occurs
+                  when you obtain the <code class="inline-code">Template</code> object
+                  (<code class="inline-code">Configuration.getTemplate(<em class="code-color">...</em>)</code>),
+                  not later when you execute
+                  (<code class="inline-code">Template.process(<em class="code-color">...</em>)</code>)
+                  the template. . Note this extends
+                  <code class="inline-code">IOException</code> (legacy).</p>
+                </li>
+
+                <li>
+                  <p>Any other kind of <code class="inline-code">IOException</code>
+                  because an error has occurred while reading an existing
+                  template. For example you have no right to read the file, or
+                  the connection through which you read the template is
+                  broken. The emitter of these is the <a href="pgui_config_templateloading.html"><code>TemplateLoader</code>
+                  object</a>, which is plugged into the
+                  <code class="inline-code">Configuration</code> object.</p>
+                </li>
+              </ul>
+            </li>
+
+            <li>
+              <p>Exceptions occurring when executing (processing)
+              templates, that is, when you call
+              <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>.
+              Two kind of exceptions can occur:</p>
+
+              <ul>
+                <li>
+                  <p><code class="inline-code">IOException</code> because there was an
+                  error when trying to write into the output writer.</p>
+                </li>
+
+                <li>
+                  <p><code class="inline-code">freemarker.template.TemplatException</code>
+                  because other problem occurred while executing the template.
+                  For example, a frequent error is referring to a variable
+                  that doesn&#39;t exist in the data-model. By default, when a
+                  <code class="inline-code">TemplatException</code> occurs, FreeMarker
+                  prints the FTL error message and the stack trace to the
+                  output writer with plain text format, and then aborts the
+                  template execution by re-throwing the
+                  <code class="inline-code">TemplatException</code>, which then you can
+                  catch as
+                  <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>
+                  throws it. This behavior can be customized, and in fact, it
+                  should be; see the recommended configuration <a href="pgui_quickstart_createconfiguration.html">here</a>.
+                  By default FreeMarker also <a href="pgui_misc_logging.html">logs</a>
+                  <code class="inline-code">TemplatException</code>-s.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_44">Customizing the behavior regarding TemplatException-s</h2>
+
+
+          <p><code class="inline-code">TemplateException</code>-s thrown during the
+          template processing are handled by the
+          <code class="inline-code">freemarker.template.TemplateExceptionHandler</code>
+          object, which is plugged into the <code class="inline-code">Configuration</code>
+          object with its
+          <code class="inline-code">setTemplateExceptionHandler(<em class="code-color">...</em>)</code>
+          method. These are the <code class="inline-code">TemplateExceptionHandler</code>
+          implementations with FreeMarker comes with:</p>
+
+          <ul>
+            <li>
+              <p><code class="inline-code">TemplateExceptionHandler.DEBUG_HANDLER</code>:
+              Prints stack trace (includes FTL error message and FTL stack
+              trace) and re-throws the exception. This is the default handler,
+              however, you should be careful not using it in production
+              environment, as it shows technical information about your
+              system.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateExceptionHandler.HTML_DEBUG_HANDLER</code>:
+              Same as <code class="inline-code">DEBUG_HANDLER</code>, but it formats the
+              stack trace so that it will be readable with Web browsers.
+              Recommended over <code class="inline-code">DEBUG_HANDLER</code> when you
+              generate HTML pages, but it should only be used for development
+              as it shows technical information about your system.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateExceptionHandler.IGNORE_HANDLER</code>:
+              Simply suppresses all exceptions (though FreeMarker will still
+              log them if
+              <code class="inline-code">Configuration.getLogTemplateExceptions</code> is
+              <code class="inline-code">true</code>). It does nothing to handle the event.
+              It does not re-throw the exception.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">TemplateExceptionHandler.RETHROW_HANDLER</code>:
+              Simply re-throws all exceptions; it doesn&#39;t do anything else.
+              This should be used in most applications today. It doesn&#39;t print
+              anything to the output about the error, which makes it safe, and
+              the developers can still get the error details from the logs.
+              It&#39;s not as convenient during template development as
+              <code class="inline-code">HTML_DEBUG_HANDLER</code> or
+              <code class="inline-code">DEBUG_HANDLER</code> though. For more information
+              about handling errors in Web applications <a href="app_faq.html#misc.faq.niceErrorPage">see the FAQ</a>.</p>
+            </li>
+          </ul>
+
+          <p>You can also write a custom
+          <code class="inline-code">TemplateExceptionHandler</code> by implementing that
+          interface, which contains this method:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">void handleTemplateException(TemplateException te, Environment env, Writer out)
+        throws TemplateException;</pre></div>
+
+          <p>Whenever a <code class="inline-code">TemplateException</code> occurs, this
+          method will be called. The exception to handle is in the
+          <code class="inline-code">te</code> argument, the runtime environment of the
+          template processing is in the <code class="inline-code">env</code> argument, and
+          the handler can print to the output using the <code class="inline-code">out</code>
+          argument. If this method throws exception (usually it re-throws
+          <code class="inline-code">te</code>), then the template processing will be
+          aborted, and
+          <code class="inline-code">Template.process(<em class="code-color">...</em>)</code>
+          will throw the same exception. If
+          <code class="inline-code">handleTemplateException</code> doesn&#39;t throw exception,
+          then template processing continues as if nothing had happen, but the
+          statement that caused the exception will be skipped (see more
+          later). Of course, the handler can still print an error indicator to
+          the output.</p>
+
+          <p>Let&#39;s see how FreeMarker skips statements when the error
+          handler doesn&#39;t throw exception, through examples. Assume we are
+          using this template exception handler:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">class MyTemplateExceptionHandler implements TemplateExceptionHandler {
+    public void handleTemplateException(TemplateException te, Environment env, java.io.Writer out)
+            throws TemplateException {
+        try {
+            out.write(&quot;[ERROR: &quot; + te.getMessage() + &quot;]&quot;);
+        } catch (IOException e) {
+            throw new TemplateException(&quot;Failed to print error message. Cause: &quot; + e, env);
+        }
+    }
+}
+
+<em>...</em>
+
+cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());</pre></div>
+
+          <p>If an error occurs in an interpolation which is not inside an
+          FTL tag (that is, not enclosed into
+          <code class="inline-code">&lt;#<em class="code-color">...</em>&gt;</code> or
+          <code class="inline-code">&lt;@<em class="code-color">...</em>&gt;</code>), then
+          the whole interpolation will be skipped. So this template (assuming
+          that <code class="inline-code">badVar</code> is missing from the
+          data-model):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">a${badVar}b</pre></div>
+
+          <p>will print this if we use the
+          <code class="inline-code">MyTemplateExceptionHandler</code>:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">a[ERROR: Expression badVar is undefined on line 1, column 4 in test.ftl.]b</pre></div>
+
+          <p>This template will print the same (except that the column
+          number will differ...):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">a${&quot;moo&quot; + badVar}b</pre></div>
+
+          <p>because the whole interpolation is skipped if any error occurs
+          inside it.</p>
+
+          <p>If an error occurs when evaluating the value of a parameter
+          for a directive call, or if there are other problems with the
+          parameter list, or if an error occurs when evaluating
+          <code class="inline-code"><em class="code-color">exp</em></code> in
+          <code class="inline-code">&lt;@<em class="code-color">exp</em>
+          <em class="code-color">...</em>&gt;</code>, or if the value of
+          <code class="inline-code"><em class="code-color">exp</em></code> is not an
+          user-defined directive, then the whole directive call is skipped.
+          For example this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">a&lt;#if badVar&gt;Foo&lt;/#if&gt;b</pre></div>
+
+          <p>will print this:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">a[ERROR: Expression badVar is undefined on line 1, column 7 in test.ftlh.]b</pre></div>
+
+          <p>Note that the error occurred in the <code class="inline-code">if</code>
+          start-tag (<code class="inline-code">&lt;#if badVar&gt;</code>), but the whole
+          directive call was skipped. Logically, the nested content
+          (<code class="inline-code">Foo</code>) was skipped with this, since the nested
+          content is handled (printed) by the enclosing directive
+          (<code class="inline-code">if</code>).</p>
+
+          <p>The output will be the same with this (except that the column
+          number will differ...):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">a&lt;#if &quot;foo${badVar}&quot; == &quot;foobar&quot;&gt;Foo&lt;/#if&gt;b</pre></div>
+
+          <p>because whole directive calling will be skipped if any error
+          occurs during the parameter evaluation.</p>
+
+          <p>The directive call will not be skipped if the error occurs
+          after the execution of the directive was already started. That is,
+          if an error occurs in the nested content:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">a
+&lt;#if true&gt;
+  Foo
+  ${badVar}
+  Bar
+&lt;/#if&gt;
+c</pre></div>
+
+          <p>or in the macro definition body:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">a
+&lt;@test /&gt;
+b
+&lt;#macro test&gt;
+  Foo
+  ${badVar}
+  Bar
+&lt;/#macro&gt;</pre></div>
+
+          <p>the output will be something like:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">a
+  Foo
+  [ERROR: Expression badVar is undefined on line 4, column 5 in test.ftlh.]
+  Bar
+c</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_45">TemplateException logging</h2>
+
+
+          <p>By default FreeMarker <a href="pgui_misc_logging.html">logs</a> all
+          <code class="inline-code">TemplateException</code>-s under the
+          <code class="inline-code">freemarker.runtime</code> log category, even when it
+          will throw it at you from its public API. As logging has become
+          common practice in Java applications, this usually leads to double
+          logging of exceptions now, so it&#39;s recommended to disable this
+          legacy behavior by
+          <code class="inline-code">cfg.setLogTemplateExceptions(false)</code> (or
+          <code class="inline-code">log_template_exceptions=false</code>) where you
+          configure FreeMarker.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_46">Explicit error handling in templates</h2>
+
+
+          <p>Although it has nothing to do with the FreeMarker
+          configuration (the topic of this chapter), for the sake of
+          completeness it&#39;s mentioned here that you can handle errors directly
+          inside the templates as well:</p>
+
+          <ul>
+            <li>
+              <p>Handling missing/null variables: <a href="dgui_template_exp.html#dgui_template_exp_missing">Template Author&#39;s Guide/The Template/Expressions/Handling missing values</a></p>
+            </li>
+
+            <li>
+              <p>Substituting failing but expendable page sections: <a href="ref_directive_attempt.html">Template Language Reference/Directive Reference/attempt, recover</a></p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_templateloading.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_templateconfigurations.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_incompatible_improvements.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_incompatible_improvements.html b/builds/2.3.26-nightly/pgui_config_incompatible_improvements.html
new file mode 100644
index 0000000..01c060d
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_incompatible_improvements.html
@@ -0,0 +1,173 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>The &quot;incompatible improvements&quot; setting - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="The &quot;incompatible improvements&quot; setting">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_incompatible_improvements.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_incompatible_improvements.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_incompatible_improvements.html"><span itemprop="name">The &quot;incompatible improvements&quot; setting</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","The \"incompatible improvements\" setting"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_custom_formats.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_incompatible_improvements" itemprop="headline">The &quot;incompatible improvements&quot; setting</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_51" data-menu-target="autoid_51">What does it do</a></li><li><a class="page-menu-link" href="#pgui_config_incompatible_improvements_how_to_set" data-menu-target="pgui_config_incompatible_improvements_how_to_set">How to set it</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_51">What does it do</h2>
+
+
+          <p>This setting specifies the FreeMarker version number where the
+          not 100% backward compatible bug fixes and improvements
+          <em>that you want to enable</em> were already
+          implemented. Usually, it&#39;s a bad idea to left it on its default,
+          which is 2.3.0 (maximum backward compatibility).</p>
+
+          <p>In new projects you should set this to the FreeMarker version
+          that you are actually using. In older projects it&#39;s also usually
+          better to keep this high, however you better check the changes
+          activated (find them in <a href="http://freemarker.org/docs/api/freemarker/template/Configuration.html#Configuration-freemarker.template.Version-">the
+          API JavaDoc of the <code>Configuration(Version)</code>
+          constructor</a>), at least if not only the 3rd version number
+          (the micro version) of "incompatible improvements"
+          setting is increased. Generally, as far as you only increase the
+          last version number of this setting, the changes are low
+          risk.</p>
+
+          <p>Bug fixes and improvements that are fully backward compatible,
+          also those that are important security fixes, are enabled regardless
+          of the "incompatible improvements" setting.</p>
+
+          <p>An important consequence of setting this setting is that now
+          your application will check if the stated minimum FreeMarker version
+          requirement is met. Like if you set this setting to 2.3.22, but
+          accidentally the application is deployed with FreeMarker 2.3.21,
+          then FreeMarker will fail, telling that a higher version is
+          required. After all, the fixes/improvements you have requested
+          aren&#39;t available on a lower version.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_config_incompatible_improvements_how_to_set">How to set it</h2>
+
+
+          <p>The incompatible improvements setting exists on the
+          <code class="inline-code">Configuration</code> level. It can be set on multiple
+          ways:</p>
+
+          <ul>
+            <li>
+              <p>Create the
+              <code class="inline-code">freemarker.template.Configuration</code> object
+              like:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">... = new Configuration(Configuration.VERSION_2_3_25)</pre></div>
+            </li>
+
+            <li>
+              <p>Or, alter the <code class="inline-code">Configuration</code> singleton
+              where you initialize its other settings like:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">cfg.setIncompatibleImprovements(Configuration.VERSION_2_3_25)</pre></div>
+            </li>
+
+            <li>
+              <p>Or, if you are configuring FreeMarker with properties
+              (<code class="inline-code">*.properties</code> file or
+              <code class="inline-code">java.util.Properties</code> object), add:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">incompatible_improvements=2.3.25</pre></div>
+            </li>
+
+            <li>
+              <p>Or, if you are configuring FreeMarker through
+              <code class="inline-code">FreemarkerServlet</code>, add this
+              <code class="inline-code">init-param</code> to it in the
+              <code class="inline-code">web.xml</code>:</p>
+
+              
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;init-param&gt;
+    &lt;param-name&gt;incompatible_improvements&lt;/param-name&gt;
+    &lt;param-value&gt;2.3.25&lt;/param-value&gt;
+&lt;/init-param&gt;</pre></div>
+            </li>
+          </ul>
+
+          <p>But, <em>if you set the
+          <code class="inline-code">object_wrapper</code> setting</em> (same as
+          <code class="inline-code">Configuration.setObjectWrapper(ObjectWrapper)</code>) of
+          your configuration, then it&#39;s important to know that
+          <code class="inline-code">BeansWrapper</code> and its subclasses (most
+          importantly, <code class="inline-code">DefaultObjectWrapper</code>) has its own
+          independent <code class="inline-code">incompatibleImprovements</code> property,
+          and some fixes/improvements are activated by that, not by
+          <code class="inline-code">Configuration</code>&#39;s similar setting. You don&#39;t have
+          to be aware of this complication if you aren&#39;t setting the
+          <code class="inline-code">object_wrapper</code> configuration setting anywhere,
+          because the default <code class="inline-code">object_wrapper</code> has the same
+          "incompatible improvements" as of the
+          <code class="inline-code">Configuration</code>. But if you are setting the
+          <code class="inline-code">object_wrapper</code>, then you must not forget to set
+          the <code class="inline-code">incompatibleImprovements</code> property of the
+          <code class="inline-code">ObjectWrapper</code> itself, in additionally to that of
+          the <code class="inline-code">Configuration</code>. (Note that it&#39;s fine to have
+          different "incompatible improvements" for the
+          <code class="inline-code">Configuration</code> and for the
+          <code class="inline-code">ObjectWrapper</code>, only it should be a conscious
+          decision.) <a href="pgui_datamodel_objectWrapper.html#topic.setDefaultObjectWrapperIcIIndividually">See here how
+          to set it</a> in the case of
+          <code class="inline-code">DefaultObjectWrapper</code> (for
+          <code class="inline-code">BeansWrapper</code> it&#39;s the same, only with different
+          class name of course).</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_custom_formats.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_outputformatsautoesc.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_outputformatsautoesc.html b/builds/2.3.26-nightly/pgui_config_outputformatsautoesc.html
new file mode 100644
index 0000000..2aff9d5
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_outputformatsautoesc.html
@@ -0,0 +1,210 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Associating output formats with templates - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Associating output formats with templates">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_outputformatsautoesc.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_outputformatsautoesc.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_outputformatsautoesc.html"><span itemprop="name">Associating output formats with templates</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Associating output formats with templates"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_templateconfigurations.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_custom_formats.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_outputformatsautoesc" itemprop="headline">Associating output formats with templates</h1>
+</div></div><p>The output format associated to a template decides if and what
+        kind of auto-escaping is used in that template (unless the template
+        <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_overrideoformat">overrides that
+        with directives</a>). By default, templates have
+        "undefined" output format associated, which does no
+        escaping, and in general gives the behavior that you would expect from
+        a template engine that doesn&#39;t care about output formats and escaping.
+        However, if the <code class="inline-code">recognize_standard_file_extensions</code>
+        <a href="pgui_config_settings.html">setting</a> is
+        <code class="inline-code">true</code> (which is the default with <a href="pgui_config_incompatible_improvements.html">the
+        <code>incompatible_improvements</code> setting</a> set to
+        2.3.24 or higher), templates whose source name ends with
+        <code class="inline-code">&quot;.ftlh&quot;</code> gets "HTML" output format, and
+        those with <code class="inline-code">&quot;.ftlx&quot;</code> get "XML" output
+        format. Using the <code class="inline-code">ftlh</code> and <code class="inline-code">ftlx</code>
+        file extensions is the recommended way of activating HTML and XML
+        auto-escaping. You can also associate output formats to templates
+        based on arbitrary name patterns with the <a href="pgui_config_templateconfigurations.html"><code>template_configurations</code>
+        setting</a>; see some examples of that below.</p><p>There&#39;s another a related setting, called
+        <code class="inline-code">auto_escaping_policy</code>, which can be used to disable
+        auto-escaping even if the current output format supports it, or enable
+        auto-escaping even if the format by default doesn&#39;t escape (but it
+        supports it). Using this setting rarely advisable, as it&#39;s potentially
+        confusing for the template authors. (Instead, escaping can be turned
+        on/off explicitly inside the templates with the
+        <code class="inline-code">auto_esc</code> parameter of the <a href="ref_directive_ftl.html"><code>ftl</code> directive</a>,
+        or with the <a href="ref_directive_autoesc.html"><code>noautoesc</code></a>
+        and <a href="ref_directive_autoesc.html"><code>autoesc</code>
+        directive</a>s.)</p><p>To check if you have configured FreeMarker properly, you can use
+        this template:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;p&gt;Output format: ${.output_format}
+&lt;p&gt;Auto-escaping: ${.auto_esc?c}</pre></div><p>See the <a href="dgui_misc_autoescaping.html#topic.predefinedOutputFormats">table of
+        predefined output formats here...</a></p><p>Configuration examples:</p><ul>
+          <li>
+            <p>To enable automatic output format associations to
+            <code class="inline-code">*.ftlh</code> and <code class="inline-code">*.ftlx</code>,
+            either:</p>
+
+            <ul>
+              <li>
+                <p>Use <code class="inline-code">incompatible_improvements</code> 2.3.24
+                or higher; see <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">how
+                to set
+                <code>incompatible_improvements</code></a></p>
+              </li>
+
+              <li>
+                <p>Or, enable standard file extension recognizing
+                explicitly:</p>
+
+                
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initalize the Configuration singletion, add:
+cfg.setRecognizeStandardFileExtensions(true);</pre></div>
+
+                <p>or if you configure FreeMarker with Java
+                <code class="inline-code">*.properties</code> file:</p>
+
+                
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">recognizeStandardFileExtensions = true</pre></div>
+              </li>
+            </ul>
+          </li>
+
+          <li>
+            <p>Let&#39;s say that you want to associate all templates in the
+            <code class="inline-code">mail</code> directory to the HTML output format. You
+            could achieve that like this (assuming that you are getting the
+            templates with
+            <code class="inline-code">cfg.getTemplate(<em class="code-color">...</em>)</code>,
+            and not instantiating them yourself):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">// Where you initalize the Configuration singletion, add:
+
+TemplateConfiguration tcHTML = new TemplateConfiguration();
+tcHTML.setOutputFormat(HTMLOutputFormat.INSTANCE);
+
+cfg.setTemplateConfigurations(
+        new ConditionalTemplateConfigurationFactory(
+                new PathGlobMatcher(&quot;mail/**&quot;),
+                tcHTML));</pre></div>
+
+            <p>or if you are configuring FreeMarker from Java
+            <code class="inline-code">*.properties</code> file (the <code class="inline-code">\</code>-s
+            are required for the Java Properties file format only):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">templateConfigurations = \
+    ConditionalTemplateConfigurationFactory( \
+        PathGlobMatcher(&quot;mail/**&quot;), \
+        TemplateConfiguration(outputFormat = HTMLOutputFormat()))</pre></div>
+          </li>
+
+          <li>
+            <p>Let&#39;s say you want to associate templates with
+            <code class="inline-code">xml</code> file extension to the XML output format,
+            templates with <code class="inline-code">html</code> and <code class="inline-code">htm</code>
+            extension to the HTML output format, and templates with
+            <code class="inline-code">rtf</code> extension to the <code class="inline-code">RTF</code>
+            output format. You could achieve that like this (assuming that you
+            are getting the templates with
+            <code class="inline-code">cfg.getTemplate(<em class="code-color">...</em>)</code>,
+            and not instantiating them yourself):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">TemplateConfiguration tcHTML = new TemplateConfiguration();
+tcHTML.setOutputFormat(HTMLOutputFormat.INSTANCE);
+
+TemplateConfiguration tcXML = new TemplateConfiguration();
+tcXML.setOutputFormat(XMLOutputFormat.INSTANCE);
+
+TemplateConfiguration tcRTF = new TemplateConfiguration();
+tcRTF.setOutputFormat(RTFOutputFormat.INSTANCE);
+
+cfg.setTemplateConfigurations(
+        new FirstMatchTemplateConfigurationFactory(
+                new ConditionalTemplateConfigurationFactory(
+                        new FileExtensionMatcher(&quot;xml&quot;),
+                        tcXML),
+                new ConditionalTemplateConfigurationFactory(
+                        new OrMatcher(
+                                new FileExtensionMatcher(&quot;html&quot;),
+                                new FileExtensionMatcher(&quot;htm&quot;)),
+                        tcHTML),
+                new ConditionalTemplateConfigurationFactory(
+                        new FileExtensionMatcher(&quot;rtf&quot;),
+                        tcRTF)
+        ).allowNoMatch(true)
+);</pre></div>
+
+            <p>or if you are configuring FreeMarker from Java
+            <code class="inline-code">*.properties</code> file (the <code class="inline-code">\</code>-s
+            are required for the Java Properties file format only):</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">templateConfigurations = \
+    FirstMatchTemplateConfigurationFactory( \
+        ConditionalTemplateConfigurationFactory( \
+            FileExtensionMatcher(&quot;xml&quot;), \
+            TemplateConfiguration(outputFormat = XMLOutputFormat())), \
+        ConditionalTemplateConfigurationFactory( \
+            OrMatcher( \
+                FileExtensionMatcher(&quot;html&quot;), \
+                FileExtensionMatcher(&quot;htm&quot;)), \
+            TemplateConfiguration(outputFormat = HTMLOutputFormat())), \
+        ConditionalTemplateConfigurationFactory( \
+            FileExtensionMatcher(&quot;rtf&quot;), \
+            TemplateConfiguration(outputFormat = RTFOutputFormat())), \
+        allowNoMatch = true)</pre></div>
+          </li>
+        </ul><p>(You can find some more complex
+        <code class="inline-code">template_configurations</code> setups <a href="pgui_config_templateconfigurations.html">here...</a>)</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_templateconfigurations.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_custom_formats.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_config_settings.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_config_settings.html b/builds/2.3.26-nightly/pgui_config_settings.html
new file mode 100644
index 0000000..322f062
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_config_settings.html
@@ -0,0 +1,378 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Settings - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Settings">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_config_settings.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_config_settings.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config.html"><span itemprop="name">The Configuration</span></a></li><li class="step-3" itempr
 op="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_config_settings.html"><span itemprop="name">Settings</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","The Configuration","Settings"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_config_sharedvariables.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_templateloading.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_config_settings" itemprop="headline">Settings</h1>
+</div></div><p><strong>Settings</strong> are named values that
+        influence the behavior of FreeMarker. Examples of settings are:
+        <code class="inline-code">locale</code>, <code class="inline-code">number_format</code>,
+        <code class="inline-code">default_encoding</code>,
+        <code class="inline-code">template_exception_handler</code>. The full list of
+        settings can be found in the <a href="http://freemarker.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-">Java
+        API documentation of
+        <code>Configuration.setSetting(...)</code></a>.</p><p>The settings coming from the <code class="inline-code">Configuration</code>
+        can be overridden in a <code class="inline-code">Template</code> instance. For
+        example, if you set the <code class="inline-code">locale</code> setting to
+        <code class="inline-code">&quot;en_US&quot;</code> in the configuration, then the
+        <code class="inline-code">locale</code> in all templates that use this configuration
+        will be <code class="inline-code">&quot;en_US&quot;</code>, except in templates where the
+        <code class="inline-code">locale</code> was explicitly specified differently (see
+        <a href="ref_directive_include.html#ref_directive_include_localized">localization</a>).
+        Thus, the setting values in the <code class="inline-code">Configuration</code> serve
+        as defaults that can be overridden in a per template manner. The value
+        coming from the <code class="inline-code">Configuration</code> instance or
+        <code class="inline-code">Template</code> instance can be further overridden for a
+        single <code class="inline-code">Template.process</code> call. For each such call a
+        <code class="inline-code">freemarker.core.Environment</code> object is created
+        internally that holds the runtime environment of the template
+        processing, including the setting values that were overridden on that
+        level. The values stored there can even be changed during the template
+        processing, so a template can set settings itself, like switching
+        <code class="inline-code">locale</code> at the middle of the ongoing
+        processing.</p><p>This can be imagined as 3 layers
+        (<code class="inline-code">Configuration</code>, <code class="inline-code">Template</code>,
+        <code class="inline-code">Environment</code>) of settings, where the topmost layer
+        that contains the value for a certain setting provides the effective
+        value of that setting. For example (settings A to F are just imaginary
+        settings for this example):</p>  <div class="table-responsive">
+    <table class="table">
+
+          
+
+          
+
+          <thead>
+            <tr>
+              <th align="left"></th>
+
+
+              <th align="center">Setting A</th>
+
+
+              <th align="center">Setting B</th>
+
+
+              <th align="center">Setting C</th>
+
+
+              <th align="center">Setting D</th>
+
+
+              <th align="center">Setting E</th>
+
+
+              <th align="center">Setting F</th>
+
+            </tr>
+
+          </thead>
+
+
+          <tbody>
+            <tr>
+              <td align="left">Layer 3: <code class="inline-code">Environment</code></td>
+
+
+              <td align="center">1</td>
+
+
+              <td align="center">-</td>
+
+
+              <td align="center">-</td>
+
+
+              <td align="center">1</td>
+
+
+              <td align="center">-</td>
+
+
+              <td align="center">-</td>
+
+            </tr>
+
+
+            <tr>
+              <td align="left">Layer 2: <code class="inline-code">Template</code></td>
+
+
+              <td align="center">2</td>
+
+
+              <td align="center">2</td>
+
+
+              <td align="center">-</td>
+
+
+              <td align="center">-</td>
+
+
+              <td align="center">2</td>
+
+
+              <td align="center">-</td>
+
+            </tr>
+
+
+            <tr>
+              <td align="left">Layer 1: <code class="inline-code">Configuration</code></td>
+
+
+              <td align="center">3</td>
+
+
+              <td align="center">3</td>
+
+
+              <td align="center">3</td>
+
+
+              <td align="center">3</td>
+
+
+              <td align="center">-</td>
+
+
+              <td align="center">-</td>
+
+            </tr>
+
+          </tbody>
+
+            </table>
+  </div>
+<p>The effective value of settings will be: A = 1, B = 2, C = 3, D
+        = 1, E = 2. The F setting is probably <code class="inline-code">null</code>, or it
+        throws exception when you try to get it.</p><p>Let&#39;s see exactly how to set settings:</p><ul>
+          <li>
+            <p><code class="inline-code">Configuration</code> layer: In principle you set
+            the settings with the setter methods of the
+            <code class="inline-code">Configuration</code> object, fore example:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Configuration myCfg = new Configuration(Configuration.VERSION_2_3_25);
+myCfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);
+myCfg.setDefaultEncoding(&quot;UTF-8&quot;);
+DefaultObjectWrapperBuilder owb = new DefaultObjectWrapperBuilder(Configuration.VERSION_2_3_25);
+owb.setForceLegacyNonListCollections(false);
+owb.setDefaultDateType(TemplateDateModel.DATETIME);
+myCfg.setObjectWrapper(owb.build());</pre></div>
+
+            <p>You do this before you start to actually use the
+            <code class="inline-code">Configuration</code> object (typically, when you
+            initialize the application); you should treat the object as
+            read-only after that.</p>
+
+            <p>In practice, in most frameworks you have to specify the
+            settings in some kind of framework-specific configuration file
+            that require specifying settings as <code class="inline-code">String</code>
+            name-value pairs (like in a <code class="inline-code">.properties</code> file).
+            In that case the authors of the frameworks most probably use the
+            <code class="inline-code">Confguration.setSetting(String name, String
+            value)</code> method; see available setting names and the
+            format of the values in the <a href="http://freemarker.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-">API
+            documentation of <code>setSetting</code></a>. Example for
+            Spring Framework:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;bean id=&quot;freemarkerConfig&quot;
+    class=&quot;org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer&quot;&gt;
+  &lt;property name=&quot;freemarkerSettings&quot;&gt;
+    &lt;props&gt;
+      &lt;prop key=&quot;incompatible_improvements&quot;&gt;2.3.25&lt;/prop&gt;
+      &lt;prop key=&quot;template_exception_handler&quot;&gt;rethrow&lt;/prop&gt;
+      &lt;prop key=&quot;default_encoding&quot;&gt;UTF-8&lt;/prop&gt;
+      &lt;prop key=&quot;object_wrapper&quot;&gt;
+        DefaultObjectWrapper(
+                2.3.25,
+                forceLegacyNonListCollections = false,
+                defaultDateType = freemarker.template.TemplateDateModel.DATETIME)
+      &lt;/prop&gt;
+    &lt;/props&gt;
+  &lt;/property&gt;
+&lt;/bean&gt;</pre></div>
+
+            <p>Here&#39;s the same when configuring FreeMarker for Struts,
+            which looks for a <code class="inline-code">freemarker.properties</code> in the
+            classpath:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">incompatible_improvements=2.3.25
+template_exception_handler=rethrow
+default_encoding=UTF-8
+object_wrapper=DefaultObjectWrapper( \
+        2.3.25, \
+        forceLegacyNonListCollections = false, \
+        defaultDateType = freemarker.template.TemplateDateModel.DATETIME)</pre></div>
+
+            <p>As demonstrated above with
+            <code class="inline-code">object_wrapper</code>, some settings can accept quite
+            complex values, which can be used to instantiate objects of
+            arbitrary classes and set their properties. Still, configuring
+            with <code class="inline-code">String</code> key-value pairs is limited compared
+            to directly using the Java API, so in some cases you have to find
+            a way to do this in Java.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">Template</code> layer: Settings on individual
+            templates are normally set by <a href="pgui_config_templateconfigurations.html">template
+            configurations (see them in their own chapter)</a>, which
+            basically associate setting assignments to template name (template
+            path) patterns. There&#39;s a deviation from this approach with the
+            <code class="inline-code">locale</code> setting, because that you can also
+            specify to <code class="inline-code">Configuration.getTemplate(...)</code> as
+            parameter, to get the template for the requested locale (so called
+            localized lookup).</p>
+
+              <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+              <p>You should never set settings directly on the
+              <code class="inline-code">Template</code> object that you get from
+              <code class="inline-code">Configuration.getTemplate(...)</code>! Those objects
+              should be treated as already initialized and read-only.</p>
+              </div>
+
+
+            <p>When a template includes or imports another template, most
+            of the settings (like <code class="inline-code">locale</code>,
+            <code class="inline-code">number_format</code>, etc.) will remain those
+            specified by the top-level template. The exceptions are the
+            settings that affect the parsing of the template (like
+            <code class="inline-code">tag_syntax</code>,
+            <code class="inline-code">whitespace_stripping</code>, etc.), as these are not
+            inherited from the top-level template, instead each template
+            always uses its own values, no mater how it was invoked.</p>
+
+              <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+              <p>If you are going to use template layer settings, you
+              should set <a href="pgui_config_incompatible_improvements.html">the
+              <code>incompatible_improvements</code> setting</a> to
+              2.3.22 or higher, to avoid some confusing legacy bugs.</p>
+              </div>
+
+          </li>
+
+          <li>
+            <p><code class="inline-code">Environment </code>layer: There are two ways of
+            doing it:</p>
+
+            <ul>
+              <li>
+                <p>With Java API: Use the setter methods of the
+                <code class="inline-code">Environment</code> object. You may run into the
+                API problem that <code class="inline-code">myTemplate.process(...)</code>
+                both creates the <code class="inline-code">Environment</code> object
+                internally and processes the template, so you have no
+                opportunity to adjust the <code class="inline-code">Environment</code> in
+                between. The solution is that those two steps can be separated
+                like this:</p>
+
+                
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">Environment env = myTemplate.createProcessingEnvironment(root, out);
+env.setLocale(java.util.Locale.ITALY);
+env.setNumberFormat(&quot;0.####&quot;);
+env.process();  // process the template</pre></div>
+              </li>
+
+              <li>
+                <p>Directly in the Template (considered as bad style,
+                usually): Use the <a href="ref_directive_setting.html#ref.directive.setting"><code>setting</code>
+                directive</a>, for example:</p>
+
+                
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#setting locale=&quot;it_IT&quot;&gt;
+&lt;#setting number_format=&quot;0.####&quot;&gt;</pre></div>
+              </li>
+            </ul>
+
+            <p>There are no restriction regarding when can you change the
+            settings in this layer.</p>
+          </li>
+        </ul><p>To see the list of supported settings and their meaning, please
+        read the following parts of the FreeMarker Java API
+        documentation:</p><ul>
+          <li>
+            <p>Setter methods of
+            <code class="inline-code">freemarker.core.Configurable</code> for the settings
+            that are in all three layers</p>
+          </li>
+
+          <li>
+            <p>Setter methods of
+            <code class="inline-code">freemarker.template.Configuration</code> for the
+            settings that are available only in the
+            <code class="inline-code">Configuration</code> layer</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">freemarker.core.Configurable.setSetting(String,
+            String)</code> for settings that are available in all three
+            layers and are writable with <code class="inline-code">String</code> key-value
+            pairs.</p>
+          </li>
+
+          <li>
+            <p><code class="inline-code">freemarker.template.Configuration.setSetting(String,
+            String)</code> for settings that are available only in the
+            <code class="inline-code">Configuration</code> layer and are writable with
+            <code class="inline-code">String</code> key-value pairs.</p>
+          </li>
+        </ul><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_config_sharedvariables.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_config_templateloading.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[04/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_25.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_25.html b/builds/2.3.26-nightly/versions_2_3_25.html
new file mode 100644
index 0000000..9ff74f2
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_25.html
@@ -0,0 +1,228 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.25 (incubating at Apache) - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.25 (incubating at Apache)">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_25.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_25.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_25.html"><span itemprop="name">2.3.25 (incubating at Apache)</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.25 (incubating at Apache)"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_26.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_24.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_25" itemprop="headline">2.3.25 (incubating at Apache)</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_158" data-menu-target="autoid_158">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_159" data-menu-target="autoid_159">Changes on the Java side</a></li></ul> </div><p>Release date: 2016-06-26</p><p><strong>This is a stable, final
+        release.</strong> The "incubating" suffix is required
+        by the Apache Software Foundation until the project becomes a fully
+        accepted (graduated) Apache project.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_158">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Extended the <a href="ref_directive_list.html#ref.directive.list"><code>list</code>
+              directive</a> to support listing hashes (such as
+              <code class="inline-code">Map</code>-s), like <code class="inline-code">&lt;#list map as k,
+              v&gt;${k}: ${v}&lt;/#list&gt;</code>, where
+              <code class="inline-code">k</code> and <code class="inline-code">v</code> are the key and
+              value in the key-value pairs of the hash.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_159">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Added the <code class="inline-code">TemplateModelHashEx2</code>
+              interface that extends <code class="inline-code">TemplateModelHashEx</code>
+              with a method for listing the content of the key-value pairs of
+              the hash. (This is utilized by the new hash listing capability
+              of the <a href="ref_directive_list.html#ref.directive.list"><code>list</code>
+              directive</a>, but it&#39;s not required by it if all keys are
+              strings.)</p>
+            </li>
+
+            <li>
+              <p>Lazy imports: With the new boolean settings,
+              <code class="inline-code">lazy_imports</code> and
+              <code class="inline-code">lazy_auto_imports</code>, you can make imports (as
+              in <code class="inline-code">&lt;#import &quot;lib/utils.ftl&quot; as u&gt;</code>)
+              and/or auto-imports to be lazy. When the import is lazy, the
+              namespace variable (<code class="inline-code">u</code> in this example) will
+              be created immediately, just like before, but the imported
+              template will be loaded and processed only when (and if ever)
+              the content of the imported namespace is accessed. The main
+              application of this is with auto-imports, where you don&#39;t want
+              the overhead of importing templates that aren&#39;t actually used in
+              a template. (Also, a new
+              <code class="inline-code">Environment.importLib</code> method overload was
+              added, where you can specify if you want a lazy or an eager
+              import.) These new settings can be set on
+              <code class="inline-code">Configuration</code>, <code class="inline-code">Template</code>
+              (<code class="inline-code">TemplateConfiguration</code>) and
+              <code class="inline-code">Environment</code> level.</p>
+            </li>
+
+            <li>
+              <p>It&#39;s now possible to set the
+              <code class="inline-code">auto_import</code> and
+              <code class="inline-code">auto_include</code> settings on a per template basis
+              (like templates with a certain name pattern has different
+              auto-imports). This is now possible as these settings were moved
+              from the <code class="inline-code">Configuration</code> level down to the more
+              generic <code class="inline-code">Configurable</code> level, and so are
+              inherited by <code class="inline-code">TemplateConfiguration</code> and
+              <code class="inline-code">Environment</code> too.</p>
+            </li>
+
+            <li>
+              <p>New <code class="inline-code">Configuration</code> (and
+              <code class="inline-code">TemplateConfiguration</code>) setting,
+              <code class="inline-code">tab_size</code>. This only influences how the column
+              number reported in error messages is calculated (and the column
+              number available with other API-s). It doesn&#39;t influence the
+              output of the templates. Defaults to 8.</p>
+            </li>
+
+            <li>
+              <p>Added new setting to
+              <code class="inline-code">DefaultObjectWrapper</code> (and to
+              <code class="inline-code">DefaultObjectWrapperBuilder</code>):
+              <code class="inline-code">iterableSupport</code>. This fixes the issue when
+              you couldn&#39;t use <code class="inline-code">#list</code> (or
+              <code class="inline-code">?has_next</code>, etc.) on a value that only
+              implements Java 5 <code class="inline-code">java.lang.Iterable</code> (not to
+              be confused with <code class="inline-code">Iterator</code>), but not
+              <code class="inline-code">Collection</code>. This is not enabled by default as
+              it&#39;s not compatible with some existing templates, most often
+              because they have used
+              <code class="inline-code">someIterable.iterator()</code> in the template as a
+              workaround. When this is enabled, the
+              <code class="inline-code">Iterable</code> object won&#39;t be seen as a generic
+              Java object by FreeMarker anymore, and thus just like with
+              <code class="inline-code">Collection</code>-s, its API won&#39;t be exposed to the
+              templates (except through <code class="inline-code">?api</code>, of
+              course).</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code">Configurable.getCustomNumberFormatsWithoutFallback</code>
+              and
+              <code class="inline-code">Configurable.getCustomDateFormatsWithoutFallback</code>
+              methods to make it easier for custom code to investigate the
+              custom formal setting <code class="inline-code">Map</code> hierarchy.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed (<a href="https://issues.apache.org/jira/browse/FREEMARKER-18">FREEMARKER-18</a>):
+              If you had a JSP custom tag and an EL function defined in the
+              same TLD with the same name, the EL function has overwritten the
+              custom tag. This is a bug introduced in 2.3.23, when EL function
+              support was added. JSP allows a custom tag and an EL function in
+              the same TLD to have the same name. In such case now we combine
+              the two into a single value that is both callable as an user
+              defined directive (<code class="inline-code">&lt;@my.foo...&gt;</code>) and as
+              a function (<code class="inline-code">my.f(...)</code>).</p>
+            </li>
+
+            <li>
+              <p>Bug fixed (<a href="https://issues.apache.org/jira/browse/FREEMARKER-19">FREEMARKER-19</a>):
+              The column numbers calculated by the parser has assumed tab size
+              1 since 2.3.25 (an unwanted side effect of updating JavaCC),
+              while before it has assumed tab size 8. The default was restored
+              to 8. This bug has affected the column numbers in error
+              messages. It also broke the output of some rarely used AIP-s,
+              namely <code class="inline-code">Template.getSource(beginCol, beginLine, endCol,
+              endLine)</code>,
+              <code class="inline-code">TemplateObject.getSource()</code> and through that
+              <code class="inline-code">TemplateObject.toString()</code>, if the first or
+              last line has contain tab characters.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: There was a regression with 2.3.24, where
+              <code class="inline-code">Configuration.setAutoImports()</code> haven&#39;t
+              removed auto-imports added earlier. (Though it&#39;s unlikely that
+              an application uses that method and also adds auto-imports
+              earlier.)</p>
+            </li>
+
+            <li>
+              <p>Bug fixed:
+              <code class="inline-code">TemplateConfiguration.apply(Template)</code> didn&#39;t
+              merge the <code class="inline-code">customDateFormats</code> and
+              <code class="inline-code">customNumberFormats</code> <code class="inline-code">Map</code>-s
+              when they were set both in the <code class="inline-code">Template</code> and
+              in the applied <code class="inline-code">TemplateConfiguration</code>, instead
+              it just kept the value in the <code class="inline-code">Template</code> (just
+              like with atomic setting values). Note that it was unlikely to
+              run into this bug, as usually you (or FreeMarker) create a
+              single merged <code class="inline-code">TemplateConfiguration</code> with
+              <code class="inline-code">TemplateConfiguration.merge(TemplateConfiguration)</code>
+              and then apply it on a fresh template.</p>
+            </li>
+
+            <li>
+              <p>Removed FindBugs <code class="inline-code">@SuppressFBWarnings</code>
+              annotations from the binary (<code class="inline-code">freemarker.jar</code>),
+              as they have caused warnings like this when compiling dependant
+              project with Gradle: "warning: Cannot find annotation
+              method &#39;value()&#39; in type &#39;SuppressFBWarnings&#39;"</p>
+            </li>
+
+            <li>
+              <p>The Maven source artifact now contains the JavaCC
+              generated java files and <code class="inline-code">FTL.jj</code>.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_26.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_24.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_26.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_26.html b/builds/2.3.26-nightly/versions_2_3_26.html
new file mode 100644
index 0000000..dd5ce6b
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_26.html
@@ -0,0 +1,297 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.26 (incubating at Apache) - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.26 (incubating at Apache)">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_26.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_26.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_26.html"><span itemprop="name">2.3.26 (incubating at Apache)</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.26 (incubating at Apache)"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="app_versions.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_25.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_26" itemprop="headline">2.3.26 (incubating at Apache)</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_155" data-menu-target="autoid_155">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_156" data-menu-target="autoid_156">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_157" data-menu-target="autoid_157">Other changes</a></li></ul> </div><p>Release date: 2017-FIXME</p><p><strong>This is a stable, final
+        release.</strong> The "incubating" suffix is required
+        by the Apache Software Foundation until the project becomes a fully
+        accepted (graduated) Apache project.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_155">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bug fixed (<a href="https://issues.apache.org/jira/browse/FREEMARKER-42">FREEMARKER-42</a>):
+              <code class="inline-code">?first</code> now works with FTL collections (things
+              that can be listed but doesn&#39;t support getting items by index),
+              not only with sequences. The practical importance of this is
+              that <code class="inline-code">?first</code> now always works on Java
+              <code class="inline-code">Set</code>-s (which is useful for
+              <code class="inline-code">Set</code>-s with well defined ordering), while
+              earlier it has failed depending on the
+              <code class="inline-code">object_wrapper</code> configuration setting.</p>
+            </li>
+
+            <li>
+              <p>Added
+              <code class="inline-code"><em class="code-color">node</em>?next_sibling</code>
+              and
+              <code class="inline-code"><em class="code-color">node</em>?previous_sibling</code>
+              to move sideways in a node trees (<a href="ref_builtins_node.html#ref_builtin_next_sibling">see reference...</a>).
+              This works with XML DOM nodes, or with any custom
+              <code class="inline-code">TemplateNodeModelEx</code> implementations.</p>
+            </li>
+
+            <li>
+              <p>Added new <code class="inline-code">@@</code> keys to XML DOM models:
+              <code class="inline-code">@@next_sibling_element</code>,
+              <code class="inline-code">@@previous_sibling_element</code>. These get the
+              sibling node if that&#39;s an element, with the extra that they
+              silently skip any whitespace text and comment and processing
+              instruction between them. (See more about <code class="inline-code">@@</code>
+              keys <a href="xgui_imperative_formal.html">here...</a>)</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_156">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p><a href="https://issues.apache.org/jira/browse/FREEMARKER-24">FREEMARKER-24</a>:
+              Added workaround (not enabled by default) to expose Java 8
+              default methods (and the bean properties they define) to
+              templates, despite that
+              <code class="inline-code">java.beans.Introspector</code> (the official
+              JavaBeans introspector) ignores them, at least as of JRE
+              1.8.0_66. To enable this workaround, either increase the value
+              of the <code class="inline-code">incompatibleImprovements</code> constructor
+              argument of <code class="inline-code">DefaultObjectWrapper</code> or
+              <code class="inline-code">BeansWrapper</code> the used to 2.3.26, or set its
+              <code class="inline-code">treatDefaultMethodsAsBeanMembers</code> setting to
+              <code class="inline-code">true</code>. Note that if you leave the
+              <code class="inline-code">object_wrapper</code> setting of the
+              <code class="inline-code">Configuration</code> on its default, it&#39;s enough to
+              increase the <code class="inline-code">incompatibleImprovements</code> setting
+              of the <code class="inline-code">Configuration</code> to 2.3.26, as that&#39;s
+              inherited by the default <code class="inline-code">object_wrapper</code>.
+              </p>
+            </li>
+
+            <li>
+              <p>Added the
+              <code class="inline-code">freemarker.template.TemplateNodeModelEx</code>
+              interface which extends the <code class="inline-code">TemplateNodeModel</code>
+              instance with two methods, <code class="inline-code">TemplateNodeModelEx
+              getNextSibling()</code> and <code class="inline-code">TemplateNodeModelEx
+              getPreviousSibling()</code> methods. This is required by
+              <code class="inline-code"><em class="code-color">node</em>?next_sibling</code>
+              and
+              <code class="inline-code"><em class="code-color">node</em>?previous_sibling</code>
+              in the templates. This new interface is already implemented by
+              the standard W3C DOM node wrapper of FreeMarker.</p>
+            </li>
+
+            <li>
+              <p>Made <code class="inline-code">+</code> operator when adding two hashes
+              significantly faster (be removing the overhead caused be
+              throwing and then catching an exception).</p>
+            </li>
+
+            <li>
+              <p>Better error messages when someone tries to get an invalid
+              <code class="inline-code">@@<em class="code-color">...</em></code> subvariable
+              of an XML DOM node. (Now it&#39;s not issued by the XPath
+              implementation, which just sees it as a syntactical
+              error.)</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: If <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set">the
+              <code>incompatible_improvements</code> setting</a> is
+              set to 2.3.26 (or higher),
+              <code class="inline-code"><em class="code-color">exp</em>?interpret</code>
+              always gets the parser-related settings from the template that
+              it&#39;s called from. Earlier, sometimes it got those from the
+              topmost (main) template instead. Similarly, the generated name
+              of the template that <code class="inline-code">?interpret</code> creates will
+              always refer to the template where&#39;s it&#39;s called from.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <code class="inline-code">MultiTemplateLoader</code>, when
+              it&#39;s in sticky mode (the default), and the
+              <code class="inline-code">TemplateLoader</code> that was successfully used for
+              a given name last time doesn&#39;t find the template now (let&#39;s call
+              it the sticked <code class="inline-code">TemplateLoader</code>), and thus
+              <code class="inline-code">MultiTemplateLoader</code> falls back to trying all
+              the <code class="inline-code">TemplateLoader</code>-s in order, will now skip
+              the sticked <code class="inline-code">TemplateLoader</code>, as that was
+              already attempted in the same
+              <code class="inline-code">MultiTemplateLoader.findTemplateSource</code>
+              invocation.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed:
+              <code class="inline-code">NodeModel.mergeAdjacentText(Node)</code> didn&#39;t
+              merged all adjacent text nodes, only pairs of adjacent text
+              nodes. (Luckily this method is hardly ever used, and the more
+              often used <code class="inline-code">NodeModel.simplify(Node)</code> was
+              working correctly.)</p>
+            </li>
+
+            <li>
+              <p>Performance improvements in the static utility methods of
+              <code class="inline-code">NodeModel</code>: <code class="inline-code">simplify(Node)</code>,
+              <code class="inline-code">mergeAdjacentText(Node)</code>,
+              <code class="inline-code">removeComments(Node)</code>,
+              <code class="inline-code">removePIs(Node)</code>.</p>
+            </li>
+
+            <li>
+              <p>Added warning to the JavaDoc of
+              <code class="inline-code">NodeModel.parse</code> methods to inform users about
+              the possibility of XML External Entity (XXE) attacks if the
+              source XML (not a template) comes from untrusted source. This is
+              just an XML fact (i.e., that in an XML you can have external
+              entities and they can be exploited), and has no much to do with
+              FreeMarker. Also note that FreeMarker itself never calls
+              <code class="inline-code">NodeModel.parse</code>; these are merely convenience
+              methods that some applications directly call themselves to
+              create a <code class="inline-code">NodeModel</code> from an XML file. As this
+              method encapsulates the call to the platform XML parser, we
+              thought it&#39;s better to point this risk out.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">DefaultObjectWrapper</code>, only with its
+              <code class="inline-code">incompatible_improvements</code> set to 2.3.26
+              (<a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">see how
+              here...</a>), wraps
+              <code class="inline-code">java.util.Enumeration</code>-s into
+              <code class="inline-code">freemarker.template.DefaultEnumerationAdapter</code>
+              (a new class) instead of into
+              <code class="inline-code">freemarker.ext.beans.EnumerationModel</code> (as far
+              as <code class="inline-code">useAdaptersForContainers</code> is
+              <code class="inline-code">true</code>, which is the default). This adapter is
+              cleaner than <code class="inline-code">EnumerationModel</code> as it only
+              implements the minimally required FTL type, which avoids some
+              ambiguous situations. (Note that Java API methods aren&#39;t exposed
+              anymore as subvariables; if you really need them, you can use
+              <code class="inline-code">?api</code>).</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">DefaultIteratorAdapter</code> now supports
+              <code class="inline-code">?api</code>. It was an oversight that it
+              didn&#39;t.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">Configuration.setSetting(String,
+              String)</code> and <code class="inline-code">setSettings</code> now allows
+              <code class="inline-code">null</code> value for
+              <code class="inline-code">template_loader</code> (because
+              <code class="inline-code">Configuration.setTemplateLoader(null)</code> is also
+              allowed for a while.).</p>
+            </li>
+
+            <li>
+              <p>The
+              <code class="inline-code">freemarker.template.TemplateCollectionModelEx</code>
+              interface and is not experimental anymore, so now it has
+              backward compatibility guarantees. Note that the
+              <code class="inline-code">TemplateCollectionModelEx.contains(TemplateModel)</code>
+              method was removed from it.</p>
+            </li>
+
+            <li>
+              <p><code class="inline-code">freemarker.template.DefaultNonListCollectionAdapter</code>
+              class is not experimental anymore, so now it has backward
+              compatibility guarantees.</p>
+            </li>
+
+            <li>
+              <p>Various smaller code cleanups.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_157">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p><a href="https://issues.apache.org/jira/browse/FREEMARKER-17">FREEMARKER-17</a>:
+              Removed the Servlet- and JSP-related <code class="inline-code">*.dtd</code>
+              files to simplify licensing. We can operate without them as
+              before, as validation with them was disabled earlier too. At
+              this point, everything in the source code of the FreeMarker
+              engine, and everything in the produced
+              <code class="inline-code">freemarker.jar</code> was created inside the
+              FreeMarker project.</p>
+            </li>
+
+            <li>
+              <p><a href="https://issues.apache.org/jira/browse/FREEMARKER-27">FREEMARKER-27</a>:
+              Moved some content from the <code class="inline-code">NOTICES</code> files
+              over to the <code class="inline-code">LICENSE</code> file, to follow the
+              Apache Incubator guidelines closer.</p>
+            </li>
+
+            <li>
+              <p>Various smaller JavaDoc improvements.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="app_versions.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_25.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_3.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_3.html b/builds/2.3.26-nightly/versions_2_3_3.html
new file mode 100644
index 0000000..ed9d0ed
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_3.html
@@ -0,0 +1,223 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.3 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.3">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_3.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_3.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_3.html"><span itemprop="name">2.3.3</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.3"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_4.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_2.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_3" itemprop="headline">2.3.3</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_210" data-menu-target="autoid_210">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_211" data-menu-target="autoid_211">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_212" data-menu-target="autoid_212">Other changes</a></li></ul> </div><p>Date of release: 2005-06-23</p><p>Some new features and lot of bugfixes.</p><p>Attention:</p><ul>
+          <li>
+            <p>If you are using the Log4J logging, from now at least Log4J
+            1.2 is required. This is because of incompatible changes in the
+            Log4J API.</p>
+          </li>
+
+          <li>
+            <p>If you build FreeMarker yourself: from now at least JavaCC
+            3.2 (instead of JavaCC 2.1) and at least Ant 1.6.1 (instead of Ant
+            1.5.x) is required. This doesn&#39;t affect users who use the
+            <code class="inline-code">freemarker.jar</code> comes with the
+            distribution.</p>
+          </li>
+        </ul>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_210">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>New built-in for formatting numbers for "computer
+              audience" as opposed to human audience: <a href="ref_builtins_number.html#ref_builtin_c"><code>c</code></a>. It should
+              be used for numbers that must use Java language formatting
+              regardless of the number format and locale settings, like for a
+              database record ID used as the part of an URL or as invisible
+              field value in a HTML form, or for printing CSS/JavaScript
+              numerical literals.</p>
+            </li>
+
+            <li>
+              <p>New built-in for the columnar/tabular displaying of
+              sequences: <a href="ref_builtins_sequence.html#ref_builtin_chunk"><code>chunk</code></a>.</p>
+            </li>
+
+            <li>
+              <p>The <a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">sequence
+              slice</a> and substring operators now allow the omitting of
+              the last index, in which case it defaults to the index of the
+              last sequence item or character. Example:
+              <code class="inline-code">products[2..]</code>. (Also, <a href="dgui_template_exp.html#dgui_template_exp_direct_seuqence">numerical range
+              literals</a> now allow the omitting of the final number, in
+              which case it defaults to infinity. Example:
+              <code class="inline-code">5..</code>.)</p>
+            </li>
+
+            <li>
+              <p>Bugfix: <code class="inline-code">?replace</code> has worked forever if
+              the string to replace was <code class="inline-code">&quot;&quot;</code>.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_211">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>New template loader:
+              <code class="inline-code">freemarker.cache.StringTemplateLoader</code>. It
+              uses a <code class="inline-code">Map</code> with <code class="inline-code">Strings</code> as
+              its source of templates. See more in the JavaDoc.</p>
+            </li>
+
+            <li>
+              <p>Experimental Rhino support: FreeMarker now comes with an
+              experimental object wrapper for Rhino (Java ECMAScript
+              implementation):
+              <code class="inline-code">freemarker.ext.rhino.RhinoWrapper</code></p>
+            </li>
+
+            <li>
+              <p>Some new utility methods for
+              <code class="inline-code">Simple<em class="code-color">Xxx</em></code> classes:
+              <code class="inline-code">SimpleHash.toMap()</code>,
+              <code class="inline-code">SimpleSequence.toList()</code>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: FTL literals and any other
+              <code class="inline-code">SimpleSequnce</code>-s, and
+              <code class="inline-code">SimpleHash</code>-es now can be used as parameters
+              to the FreeMarker-unaware Java methods that are exposed by
+              <code class="inline-code">DefaultWrapper</code> or
+              <code class="inline-code">BeansWrapper</code>. That is, the method parameters
+              are automatically converted from
+              <code class="inline-code">Template<em class="code-color">Type</em>Model</code>-s
+              to <code class="inline-code">java.util.Map</code> and
+              <code class="inline-code">java.util.List</code> respectively.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The JSP support now works in JSP 2 compliant
+              containers as well. No, it doesn&#39;t support the new features of
+              JSP 2 yet, it&#39;s just that the JSP 1.2 taglib support has not
+              worked in JSP 2 containers.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The
+              <code class="inline-code">Configuration.setOutputEncoding</code> and
+              <code class="inline-code">setURLEscapingCharset</code> methods died with
+              <code class="inline-code">NullPointerException</code> when you tried to set
+              the setting value to <code class="inline-code">null</code>, which is legal for
+              these settings.</p>
+            </li>
+
+            <li>
+              <p>Bugfix:
+              <code class="inline-code">freemarker.template.utility.StringUtil.replace(...)</code>
+              has worked forever if the string to replace was
+              <code class="inline-code">&quot;&quot;</code>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The Log4J logging was updated to be compatible
+              with the upcoming Log4J 1.3. Note that now FreeMarker will need
+              at least Log4J 1.2.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: FreeMarker didn&#39;t built from the source code on
+              J2SE 1.5, because of the introduction of the
+              <code class="inline-code">enum</code> keyword.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The return value of
+              <code class="inline-code">SimpleSequence.synchronizedWrapper()</code> was not
+              properly synchronized. Same with
+              <code class="inline-code">SimpleHash.synchronizedWrapper()</code>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Problem with <code class="inline-code">BeansWrapper</code> and
+              overridden bean methods/properties. (Details: bug-tracker entry
+              <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1217661&amp;group_id=794&amp;atid=100794">#1217661</a>
+              and <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1166533&amp;group_id=794&amp;atid=100794">#1166533</a>)</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Can&#39;t access JSP taglibs if
+              <code class="inline-code">Request</code> attribute is defined in the
+              data-model (Details: bug-tracker entry <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1202918&amp;group_id=794&amp;atid=100794">#1202918</a>).</p>
+            </li>
+
+            <li>
+              <p>Bugfix: Various minor parser glitches were fixed.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_212">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Manual improvements, especially in the FAQ.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_4.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_2.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_4.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_4.html b/builds/2.3.26-nightly/versions_2_3_4.html
new file mode 100644
index 0000000..4aaa6d0
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_4.html
@@ -0,0 +1,121 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.4 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.4">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_4.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_4.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_4.html"><span itemprop="name">2.3.4</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.4"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_5.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_3.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_4" itemprop="headline">2.3.4</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_207" data-menu-target="autoid_207">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_208" data-menu-target="autoid_208">Changes on the Java side</a></li><li><a class="page-menu-link" href="#autoid_209" data-menu-target="autoid_209">Other changes</a></li></ul> </div><p>Date of release: 2005-10-10</p><p>Some new features and bugfixes.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_207">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Now you can use <code class="inline-code">[</code> and
+              <code class="inline-code">]</code> instead of <code class="inline-code">&lt;</code> and
+              <code class="inline-code">&gt;</code> for the FreeMarker tags. For example you
+              can write <code class="inline-code">[#if
+              loggedIn]<em class="code-color">...</em>[/#if]</code> and
+              <code class="inline-code">[@myMacro /]</code>. <a href="dgui_misc_alternativesyntax.html">More info...</a></p>
+            </li>
+
+            <li>
+              <p>Bugfix: the <code class="inline-code">has_content</code> built-in
+              returned <code class="inline-code">false</code> for number, date and boolean
+              values (if the value was not a multi-type value that is also a
+              sequence or collection or hash or string). Now it always returns
+              <code class="inline-code">true</code> for a number, date or boolean values
+              (except if the value is also a sequence or collection or hash or
+              string, because then it will be examined only like that).</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_208">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bugfix: the parameterless constructor of the
+              <code class="inline-code">ClassTemplateLoader</code> didn&#39;t worked.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: The Jython wrapper didn&#39;t wrapped
+              <code class="inline-code">java.util.Date</code> objects well. Now it wraps
+              them with <code class="inline-code">BeanWrapper</code> to
+              <code class="inline-code">TemplateDateModel</code>.</p>
+            </li>
+
+            <li>
+              <p>Bugfix: the <code class="inline-code">include</code> directive was
+              blamed when the included file had syntax error.</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_209">Other changes</h2>
+
+
+          <ul>
+            <li>
+              <p>Minor Manual fixes.</p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_5.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_3.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/versions_2_3_5.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/versions_2_3_5.html b/builds/2.3.26-nightly/versions_2_3_5.html
new file mode 100644
index 0000000..aab02de
--- /dev/null
+++ b/builds/2.3.26-nightly/versions_2_3_5.html
@@ -0,0 +1,162 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>2.3.5 - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="2.3.5">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/versions_2_3_5.html">
+<link rel="canonical" href="http://freemarker.org/docs/versions_2_3_5.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app.html"><span itemprop="name">Appendixes</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="app_versions.html"><span itemprop="name">Version history</span></a></li><li class="step-3" itemprop="itemListEl
 ement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="versions_2_3_5.html"><span itemprop="name">2.3.5</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Appendixes","Version history","2.3.5"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="versions_2_3_6.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_4.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="versions_2_3_5" itemprop="headline">2.3.5</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_205" data-menu-target="autoid_205">Changes on the FTL side</a></li><li><a class="page-menu-link" href="#autoid_206" data-menu-target="autoid_206">Changes on the Java side</a></li></ul> </div><p>Date of release: 2006-03-11</p><p><em>This release was withdrawn because of a serious bug in
+        it. Please don&#39;t use it! Of course, all new features of it are
+        included in FreeMarker 2.3.6.</em></p><p>A few new features and several bugfixes.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_205">Changes on the FTL side</h2>
+
+
+          <ul>
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1435847&amp;group_id=794">[1435847]</a>
+              Alternative syntax doesn&#39;t work for comments</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: With the new square bracket syntax, the tag
+              could be closed with <code class="inline-code">&gt;</code>. Now it can be
+              closed with <code class="inline-code">]</code> only.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1324020&amp;group_id=794">[1324020]</a>
+              <code class="inline-code">ParseException</code> with the
+              <code class="inline-code">ftl</code> directive if it wasn&#39;t in its own
+              line</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1404033&amp;group_id=794">[1404033]</a>
+              <code class="inline-code">eval</code> built-in fails with hash
+              concatenation</p>
+            </li>
+          </ul>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_206">Changes on the Java side</h2>
+
+
+          <ul>
+            <li>
+              <p>A new <code class="inline-code">Configuration</code> level setting,
+              <code class="inline-code">tagSyntax</code> was added. This determines the
+              syntax of the templates (angle bracket syntax VS <a href="dgui_misc_alternativesyntax.html">square bracket
+              syntax</a>) that has no <code class="inline-code">ftl</code> directive in
+              it. So now you can choose to use the new square bracket syntax
+              by default. However, the recommended is to use auto-detection
+              (<code class="inline-code">yourConfig.setTagSyntax(Configuration.AUTO_DETECT_TAG_SYNTAX)</code>),
+              because that will be the default starting from 2.4.
+              Auto-detection chooses syntax based on the syntax of the first
+              FreeMarker tag of the template (could be any FreeMarker tag, not
+              just <code class="inline-code">ftl</code>). Note that as with the previous
+              version, if a the template uses <code class="inline-code">ftl</code>
+              directive, then the syntax of the <code class="inline-code">ftl</code>
+              directive determines the syntax of the template, and the
+              <code class="inline-code">tagSyntax</code> setting is ignored.</p>
+            </li>
+
+            <li>
+              <p>Now <code class="inline-code">BeansWrapper</code>,
+              <code class="inline-code">DefaultObjectWrapper</code> and
+              <code class="inline-code">SimpleObjectWrapper</code> support lookup with 1
+              character long strings in <code class="inline-code">Map</code>-s (like
+              <code class="inline-code">myHash[&quot;a&quot;]</code>) that use
+              <code class="inline-code">Character</code> keys. Simply, as a special case,
+              when a hash lookup fails on a string that is 1 character long,
+              it checks for the <code class="inline-code">Character</code> key in the
+              underlying map. (Bug tracker entry <a href="http://sourceforge.net/tracker/?func=detail&amp;atid=100794&amp;aid=1299045&amp;group_id=794">[1299045]</a>
+              FreeMarker doesn&#39;t support map lookup with Character
+              keys.)</p>
+            </li>
+
+            <li>
+              <p>A new property, <code class="inline-code">strict</code> was added to
+              <code class="inline-code">BeansWrapper</code>,
+              <code class="inline-code">DefaultObjectWrapper</code> and
+              <code class="inline-code">SimpleObjectWrapper</code>. If this property is
+              <code class="inline-code">true</code> then an attempt to read a bean propertly
+              in the template (like <code class="inline-code">myBean.aProperty</code>) that
+              doesn&#39;t exist in the bean class (as opposed to just holding
+              <code class="inline-code">null</code> value) will cause
+              <code class="inline-code">InvalidPropertyException</code>, which can&#39;t be
+              suppressed in the template (not even with
+              <code class="inline-code">myBean.noSuchProperty?default(&#39;something&#39;)</code>).
+              This way <code class="inline-code">?default(&#39;something&#39;)</code> and
+              <code class="inline-code">?exists</code> and similar built-ins can be used to
+              handle existing properties whose value is
+              <code class="inline-code">null</code>, without the risk of hiding typos in the
+              property names. Typos will always cause error. But mind you, it
+              goes against the basic approach of FreeMarker, so use this
+              feature only if you really know what are you doing.</p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1426227&amp;group_id=794&amp;atid=100794">[1426227]</a>
+              <code class="inline-code">NullPointerException</code> in
+              <code class="inline-code">printStackTrace(...)</code></p>
+            </li>
+
+            <li>
+              <p>Bug fixed: <a href="http://sourceforge.net/tracker/index.php?func=detail&amp;aid=1386193&amp;group_id=794&amp;atid=100794">[1386193]</a>
+              Division by zero in <code class="inline-code">ArithmeticEngine</code></p>
+            </li>
+          </ul>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="versions_2_3_6.html"><span>Previous</span></a><a class="paging-arrow next" href="versions_2_3_4.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[27/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_expert.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_expert.html b/builds/2.3.26-nightly/ref_builtins_expert.html
new file mode 100644
index 0000000..b722d1a
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_expert.html
@@ -0,0 +1,762 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Seldom used and expert built-ins - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Seldom used and expert built-ins">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_expert.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_expert.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_expert.html"><span itemprop="name">Seldom used and expert built-ins</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Seldom used and expert built-ins"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_type_independent.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directives.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_expert" itemprop="headline">Seldom used and expert built-ins</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_buitin_api_and_has_api" data-menu-target="ref_buitin_api_and_has_api">api, has_api</a></li><li><a class="page-menu-link" href="#ref_builtin_numType" data-menu-target="ref_builtin_numType">byte, double, float, int, long, short</a></li><li><a class="page-menu-link" href="#ref_builtin_eval" data-menu-target="ref_builtin_eval">eval</a></li><li><a class="page-menu-link" href="#ref_builtin_has_content" data-menu-target="ref_builtin_has_content">has_content</a></li><li><a class="page-menu-link" href="#ref_builtin_interpret" data-menu-target="ref_builtin_interpret">interpret</a></li><li><a class="page-menu-link" href="#ref_builtin_isType" data-menu-target="ref_builtin_isType">is_...</a></li><li><a class="page-menu-link" href="#ref_builtin_markup_string" data-menu-target="ref_builtin_markup_string">markup_string</a></li><li><a class="page-menu-link" href="#ref_builtin_namespace" data-menu-target="ref_builtin_namespace">namespace</a></li><li><a cla
 ss="page-menu-link" href="#ref_builtin_new" data-menu-target="ref_builtin_new">new</a></li><li><a class="page-menu-link" href="#ref_builtin_numToDate" data-menu-target="ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a></li></ul> </div><p>These are the built-ins that normally you should not use, but in
+        exceptional situations (debugging, advanced macros) they can be
+        useful. If you need to use these in your normal page templates, you
+        may revisit the data-model so you don&#39;t need to use these.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_buitin_api_and_has_api">api, has_api</h2>
+
+
+          
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>These built-ins exists since FreeMarker 2.3.22</p>
+            </div>
+
+
+          <p><code class="inline-code"><em class="code-color">value</em>?api</code>
+          provides access to the API (usually, the Java API) of
+          <code class="inline-code"><em class="code-color">value</em></code>, like
+          <code class="inline-code"><em class="code-color">value</em>?api.<em class="code-color">someJavaMethod()</em></code>
+          or
+          <code class="inline-code"><em class="code-color">value</em>?api.<em class="code-color">someBeanProperty</em></code>,
+          if the value itself supports exposing its API. This meant to be used
+          rarely, when you need to call a Java method of an object, but the
+          by-design simplistic view of the value that FreeMarker exposes to
+          the templates hides that, and there&#39;s no equivalent built-in either.
+          For example, when you put a <code class="inline-code">Map</code> into the
+          data-model (and you are using the default object wrapper),
+          <code class="inline-code">myMap.myMethod()</code> in a template basically
+          translates to <code class="inline-code">((Method)
+          myMap.get(&quot;myMethod&quot;)).invoke(...)</code> in Java, thus you can&#39;t
+          call <code class="inline-code">myMethod</code>. If, however, you write
+          <code class="inline-code">myMap?api.myMethod()</code> instead, that means
+          <code class="inline-code">myMap.myMethod()</code> in Java. Similarly,
+          <code class="inline-code">myMap?api.myProperty</code> translates to
+          <code class="inline-code">myMap.getMyProperty()</code> in Java, instead of to
+          <code class="inline-code">myMap.get(&quot;myProperty&quot;)</code>.</p>
+
+          <p><em>You should avoid using <code class="inline-code">api</code>, and
+          rely on the capabilities of the FTL types and the related built-ins
+          as far as possible.</em> For example, don&#39;t use
+          <code class="inline-code">users?api.size()</code>, but
+          <code class="inline-code">users?size</code>. The variation that uses
+          <code class="inline-code">?api</code> is more verbose, slower, more easily breaks
+          when FreeMarker configuration settings are changed, and most
+          importantly, more prone to break as the technical details of the
+          data-model change. For example, if <code class="inline-code">users</code> is
+          changed from a <code class="inline-code">List</code> to an array,
+          <code class="inline-code">users?size</code> will keep working, while
+          <code class="inline-code">users?api.size()</code> will break.</p>
+
+          <p>Avoid calling methods that <em>modify</em> an
+          object (especially <code class="inline-code">Map</code>-s and
+          <code class="inline-code">Collection</code>-s) or that aren&#39;t thread safe from
+          other reasons. Templates usually aren&#39;t expected to modify the
+          objects exposed to them, just to display them. Thus the application
+          may passes some objects to multiple (possibly concurrent) template
+          processings.</p>
+
+          <p>The <code class="inline-code">api</code> built-in is not everywhere
+          available, some requirements has to be met:</p>
+
+          <ul>
+            <li>
+              <p>The <code class="inline-code">api_builtin_enabled</code> configuration
+              setting must be set to <code class="inline-code">true</code>. Its default is
+              <code class="inline-code">false</code> (at least as of 2.3.22) for not
+              lowering the security of existing applications.</p>
+            </li>
+
+            <li>
+              <p>The value itself has to support it. We are talking about
+              the value as the template sees it, which is created from the
+              original object (that&#39;s coming from the data-model or from a
+              Java method return value) value via <a href="pgui_datamodel_objectWrapper.html">object wrapping</a>.
+              Hence, this depends on the <code class="inline-code">object_wrapper</code>
+              FreeMarker configuration setting, and on the class of the
+              wrapped (the original) object:</p>
+
+              <ul>
+                <li>
+                  <p>When the object wrapper is a
+                  <code class="inline-code">DefaultObjectWrapper</code> with its
+                  <code class="inline-code">incompatibleImprovements</code> set to 2.3.22 or
+                  higher (<a href="pgui_datamodel_objectWrapper.html#topic.defaultObjectWrapperIcI">see
+                  how to set it here</a>), FTL values made from
+                  <code class="inline-code">Map</code>-s and <code class="inline-code">List</code>-s
+                  support <code class="inline-code">?api</code>. (Actually, what matters is
+                  that its <code class="inline-code">useAdaptersForContainer</code> property
+                  is set to <code class="inline-code">true</code>, but that&#39;s the default
+                  with said <code class="inline-code">incompatibleImprovements</code>.)
+                  Other <code class="inline-code">java.util.Collections</code> (such as
+                  <code class="inline-code">Set</code>-s) only support
+                  <code class="inline-code">?api</code> if
+                  <code class="inline-code">DefaultObjectWrapper</code>&#39;s
+                  <code class="inline-code">forceLegacyNonListCollections</code> property is
+                  set to <code class="inline-code">false</code> (the default is
+                  <code class="inline-code">true</code> for better out-of-the-box backward
+                  compatibility).</p>
+                </li>
+
+                <li>
+                  <p>When wrapped with pure
+                  <code class="inline-code">BeansWrapper</code>, all values support
+                  <code class="inline-code">?api</code>.</p>
+                </li>
+
+                <li>
+                  <p>Custom <code class="inline-code">TemplateModel</code>-s can support
+                  <code class="inline-code">?api</code> by implementing the
+                  <code class="inline-code">freemarker.template.TemplateModelWithAPISupport</code>
+                  interface.</p>
+                </li>
+              </ul>
+            </li>
+          </ul>
+
+          <p>Using <code class="inline-code">?api</code> when it&#39;s not allowed in the
+          configuration or when the value doesn&#39;t support it will abort
+          template processing with error.</p>
+
+          <p>Whether a value supports <code class="inline-code">?api</code> can be
+          checked like
+          <code class="inline-code"><em class="code-color">value</em>?has_api</code>, which
+          returns a boolean value. Note that the result of
+          <code class="inline-code">?has_api</code> isn&#39;t influenced by the
+          <code class="inline-code">api_builtin_enabled</code> setting.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_numType">byte, double, float, int, long, short</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>Returns a <code class="inline-code">SimpleNumber</code> which contains the
+          same value as the original variable, but uses
+          <code class="inline-code">java.lang.<em class="code-color">Type</em></code> for the
+          internal representation of the value. This is useful if a method is
+          overloaded, or if a <code class="inline-code">TemplateModel</code> unwrapper has
+          problem with automatically choosing the suitable
+          <code class="inline-code">java.lang.*</code> type. Note that since version 2.3.9
+          the unwrapper has been improved substantially, so you will hardly
+          ever need to use these built-ins to convert between numerical types,
+          except for resolving ambiguity in overloaded method
+          invocation.</p>
+
+          <p>The <code class="inline-code">long</code> built-in can also be used with
+          date, time and date-time values to get the value as
+          <code class="inline-code">java.util.Date.getTime()</code> would return. This is
+          useful if you have to call a Java methods that expect a timestamp as
+          a <code class="inline-code">long</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_eval">eval</h2>
+
+
+          
+
+          
+
+          <p>This built-in evaluates a string as an FTL expression. For
+          example <code class="inline-code">&quot;1+2&quot;?eval</code> returns number 3.</p>
+
+          <p>The evaluated expression sees the same variables (such as
+          locals) that are visible at the place of the invocation of
+          <code class="inline-code">eval</code>. That is, it behaves similarly as if in
+          place of <code class="inline-code"><em class="code-color">s</em>?eval</code> you
+          had the <em>value of</em>
+          <code class="inline-code"><em class="code-color">s</em></code> there. Except, it
+          can&#39;t use <a href="ref_builtins_loop_var.html">loop variable
+          built-ins</a> that refer to a loop variable that was created
+          outside <code class="inline-code"><em class="code-color">s</em></code>.</p>
+
+          <p>Regarding the configuration settings that affect the parsing
+          (like syntax) and evaluation the rules are the same as with the
+          <a href="#ref_builtin_interpret"><code>interpret</code>
+          built-in</a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_has_content">has_content</h2>
+
+
+          
+
+          <p>It is <code class="inline-code">true</code> if the variable exists (and
+          isn&#39;t Java <code class="inline-code">null</code>) and is not "empty",
+          otherwise it is <code class="inline-code">false</code>. The meaning of
+          "empty" depends on the concrete case. This follows
+          intuitive common-sense ideas. The following are empty: a string with
+          0 length, a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup
+          output value</a> with 0 length markup, a sequence or hash with no
+          sub variables, a collection which has passed the last element. If
+          the value is not of any of these types, then it counts as non-empty
+          if it&#39;s a number or a date or a boolean (e.g. <code class="inline-code">0</code>
+          and <code class="inline-code">false</code> are not empty), otherwise it counts as
+          empty. Note that when your data-model implements multiple template
+          model interfaces you may get unexpected results. However, when in
+          doubt you can use always use <code class="inline-code">expr!?size &gt; 0</code> or
+          <code class="inline-code">expr!?length &gt; 0</code> instead of
+          <code class="inline-code">expr?has_content</code>.</p>
+
+          <p>This buit-in is exceptional in that you can use the
+          parentheses trick like with the <a href="dgui_template_exp.html#dgui_template_exp_missing_default">default value
+          operator</a>. That is, you can write both
+          <code class="inline-code">product.color?has_content</code> and
+          <code class="inline-code">(product.color)?has_content</code>. The first doesn&#39;t
+          handle the case when <code class="inline-code">product</code> is missing, the last
+          does.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_interpret">interpret</h2>
+
+
+          
+
+          <p>This built-in parses a string as an FTL template, and returns
+          an user-defined directive that executes that template, just as if a
+          template with that content were <a href="ref_directive_include.html"><code>include</code>-d</a>
+          at that point. Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign x=[&quot;a&quot;, &quot;b&quot;, &quot;c&quot;]&gt;
+&lt;#assign templateSource = r&quot;&lt;#list x as y&gt;${y}&lt;/#list&gt;&quot;&gt;
+&lt;#-- Note: That r was needed so that the ${y} is not interpreted above --&gt;
+&lt;#assign inlineTemplate = templateSource?interpret&gt;
+&lt;@inlineTemplate /&gt;</pre></div>
+
+          <p>The output:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">abc</pre></div>
+
+          <p>As you can see, <code class="inline-code">inlineTemplate</code> is a
+          user-defined directive that, when executed, runs the template whose
+          content is the value of <code class="inline-code">templateSource</code>.</p>
+
+          <p>The name of the template created by
+          <code class="inline-code">interpret</code> is the name of the template that calls
+          <code class="inline-code">interpret</code>, plus
+          <code class="inline-code">&quot;-&gt;anonymous_interpreted&quot;</code>. For example, if the
+          template that calls the built-in is
+          <code class="inline-code">&quot;foo/bar.ftl&quot;</code>, then the name of the resulting
+          template is
+          <code class="inline-code">&quot;foo/bar.ftl-&gt;anonymous_interpreted&quot;</code>. Thus,
+          relative paths inside the interpreted template are relative to this
+          path (i.e., the base directory will be <code class="inline-code">&quot;foo&quot;</code>),
+          and errors inside the interpreted template will point to this
+          generated template name.</p>
+
+          <p>For more helpful error messages, you can override the template
+          name part after the <code class="inline-code">&quot;-&gt;&quot;</code>. For example, let&#39;s
+          say <code class="inline-code">mailTemplateSource</code> comes from the
+          <code class="inline-code">mail_template</code> database table, and in the case of
+          error, you want the error log to contain the database ID of the
+          failing template:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign inlineTemplate = [mailTemplateSource, &quot;mail_templates id=${mailTemplateId}&quot;]?interpret&gt;</pre></div>
+
+          <p>As you can see, <code class="inline-code">interpret</code> can be applied on
+          a sequence of two items, in which case the first item is the FTL
+          string to interpret, and the second items is the template name used
+          after the <code class="inline-code">&quot;-&gt;&quot;</code>.</p>
+
+          <p>The configuration settings that affect the interpreted
+          template are the same as of the surrounding template, except that
+          parser settings specified in the <a href="ref_directive_ftl.html#ref.directive.ftl"><code>ftl</code> directive</a>
+          or was established via tag syntax or naming convention
+          auto-detection are instead coming from the
+          <code class="inline-code">Configuration</code> object (or naturally, from the
+          <a href="pgui_config_templateconfigurations.html"><code>TemplateConfiguration</code></a>,
+          if there&#39;s any). Thus the tag syntax, naming convention, whitespace
+          handling, etc. of the interpreted template is independent of that
+          established <em>inside</em> the surrounding template. An
+          important exception from this rule is that the <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">output format</a>
+          and auto-escaping policy is inherited from the lexical context where
+          <code class="inline-code">interpret</code> is called from. For example in a
+          template that has <code class="inline-code">&lt;#ftl
+          output_format=&quot;XML&quot;&gt;</code> header (or if you are inside a
+          <code class="inline-code">&lt;#output_format
+          &quot;XML&quot;&gt;<em class="code-color">...</em>&lt;/#output_format&gt;</code>
+          block), <code class="inline-code">interpret</code> calls in it will produce
+          directives with XML output format.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_isType">is_...</h2>
+
+
+          
+
+          
+
+          <p>These built-ins check the type of a variable, and returns
+          <code class="inline-code">true</code> or <code class="inline-code">false</code> depending on the
+          type. The list of
+          <code class="inline-code">is_<em class="code-color">...</em></code>
+          built-ins:</p>
+
+            <div class="table-responsive">
+    <table class="table">
+
+            <thead>
+              <tr>
+                <th>Built-in</th>
+
+
+                <th>Returns <code class="inline-code">true</code> if the value is a ...</th>
+
+              </tr>
+
+            </thead>
+
+
+            <tbody>
+              <tr>
+                <td><code class="inline-code">is_string</code></td>
+
+
+                <td>string</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_number</code></td>
+
+
+                <td>number</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_boolean</code></td>
+
+
+                <td>boolean</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_date</code></td>
+
+
+                <td>Don&#39;t use it! Same as <code class="inline-code">is_date_like</code>, use
+                that instead. Later may changes meaning to
+                <code class="inline-code">date_only</code>.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_date_like</code></td>
+
+
+                <td>date-like, means either date, time or date-time, or
+                date-like with unknown precise type (since FreeMarker
+                2.3.21)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_date_only</code></td>
+
+
+                <td>date (no time of the day part) (since FreeMarker
+                2.3.21)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_time</code></td>
+
+
+                <td>time (no year-month-day part) (since FreeMarker
+                2.3.21)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_datetime</code></td>
+
+
+                <td>date-time (contains both year-month-day and time of the
+                day)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_unknown_date_like</code></td>
+
+
+                <td>date-like where we don&#39;t know if it&#39;s a date or a time or
+                a date-time</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_method</code></td>
+
+
+                <td>method</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_transform</code></td>
+
+
+                <td>transform</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_macro</code></td>
+
+
+                <td>macro or function (yes, also for function; a historical
+                glitch)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_hash</code></td>
+
+
+                <td>hash (including extended hash)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_hash_ex</code></td>
+
+
+                <td>extended hash (supports <code class="inline-code">?keys</code> and
+                <code class="inline-code">?values</code>)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_sequence</code></td>
+
+
+                <td>sequence (Historical quirk: Before <a href="pgui_config_incompatible_improvements.html#pgui_config_incompatible_improvements_how_to_set"><code>incompatible_improvements</code></a>
+                2.3.24 it returns <code class="inline-code">true</code> for Java methods as
+                they implement the
+                <code class="inline-code">[<em class="code-color">index</em>]</code>
+                operator, however, they fail on
+                <code class="inline-code">?size</code>.)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_collection</code></td>
+
+
+                <td>collection (including extended collection)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_collection_ex</code></td>
+
+
+                <td>extended collection (supports
+                <code class="inline-code">?size</code>)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_enumerable</code></td>
+
+
+                <td>sequence or collection</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_indexable</code></td>
+
+
+                <td>sequence (Historical quirk: it returns
+                <code class="inline-code">true</code> for Java methods as they implement the
+                <code class="inline-code">[<em class="code-color">index</em>]</code>
+                operator.)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_directive</code></td>
+
+
+                <td>Whatever kind of directive (for example a macro, <span class="marked-for-programmers">or
+                <code class="inline-code">TemplateDirectiveModel</code>,
+                <code class="inline-code">TemplateTransformModel</code>, etc.</span>), or
+                function (a historical glitch)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_node</code></td>
+
+
+                <td>node</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">is_markup_output</code></td>
+
+
+                <td>markup output (a value that won&#39;t be <a href="dgui_misc_autoescaping.html">auto-escaped</a>)</td>
+
+              </tr>
+
+            </tbody>
+
+              </table>
+  </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_markup_string">markup_string</h2>
+
+
+          <p></p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.24.</p>
+            </div>
+
+
+          <p>Returns the markup stored inside a <a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_movalues">markup output value</a>
+          as string. This is useful if the value has to be passed to a Java
+          method for a <code class="inline-code">String</code> parameter, or if we want to
+          manipulate the markup directly in the template. Note that the
+          resulting string can be converted back to markup output value with
+          <a href="ref_builtins_string.html#ref_builtin_no_esc"><code>?no_esc</code></a>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_namespace">namespace</h2>
+
+
+          
+
+          <p>This built-in returns the namespace (i.e. the
+          "gate" hash to the namespace) associated with a macro
+          or function variable. You can use it with macros and functions
+          only.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_new">new</h2>
+
+
+          
+
+          
+
+          <p>This is to create a variable of a certain
+          <code class="inline-code">TemplateModel</code> implementation.</p>
+
+          <p>On the left side of <code class="inline-code">?</code> you specify a string,
+          the full-qualified class name of a <code class="inline-code">TemplateModel</code>
+          implementation. The result is a method variable that calls the
+          constructor, and returns the new variable.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Creates an user-defined directive be calling the parameterless constructor of the class --&gt;
+&lt;#assign word_wrapp = &quot;com.acmee.freemarker.WordWrapperDirective&quot;?new()&gt;
+&lt;#-- Creates an user-defined directive be calling the constructor with one numerical argument --&gt;
+&lt;#assign word_wrapp_narrow = &quot;com.acmee.freemarker.WordWrapperDirective&quot;?new(40)&gt;</pre></div>
+
+          <p>For more information about how the constructor parameters are
+          unwrapped and how overloaded constructor is chosen, read: <a href="pgui_misc_beanwrapper.html">Programmer&#39;s Guide/Miscellaneous/Bean wrapper</a></p>
+
+          <p>This built-in can be a security concern because the template
+          author can create arbitrary Java objects and then use them, as far
+          as they implement <code class="inline-code">TemplateModel</code>. Also the
+          template author can trigger static initialization for classes that
+          don&#39;t even implement <code class="inline-code">TemplateModel</code>. You can
+          (since 2.3.17) restrict the classes accessible with this built-in
+          using
+          <code class="inline-code">Configuration.setNewBuiltinClassResolver(TemplateClassResolver)</code>
+          or the <code class="inline-code">new_builtin_class_resolver</code> setting. See
+          the Java API docs for more information. If you are allowing
+          not-so-much-trusted users to upload templates then you should
+          definitely look into this topic.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          
+
+          <p>These are used to convert a number (usually a Java
+          <code class="inline-code">long</code>) to a date, time or date-time, respectively.
+          This does them same as <code class="inline-code">new java.util.Date(long)</code>
+          in Java, that is, the number is interpreted as the milliseconds
+          passed since the epoch. The number can be anything and of any type
+          as far as its value fits into a <code class="inline-code">long</code>. If the
+          number isn&#39;t a whole number, it will be rounded to whole with
+          half-up rule.</p>
+
+          <p>Example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${1305575275540?number_to_datetime}
+${1305575275540?number_to_date}
+${1305575275540?number_to_time}</pre></div>
+
+          <p>The output will be something like this (depending on the
+          current locale and time zone):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">May 16, 2011 3:47:55 PM
+May 16, 2011
+3:47:55 PM</pre></div>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_type_independent.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_directives.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_hash.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_hash.html b/builds/2.3.26-nightly/ref_builtins_hash.html
new file mode 100644
index 0000000..07e1ad3
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_hash.html
@@ -0,0 +1,142 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Built-ins for hashes - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Built-ins for hashes">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_hash.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_hash.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_hash.html"><span itemprop="name">Built-ins for hashes</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Built-ins for hashes"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_sequence.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_node.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_hash" itemprop="headline">Built-ins for hashes</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_keys" data-menu-target="ref_builtin_keys">keys</a></li><li><a class="page-menu-link" href="#ref_builtin_values" data-menu-target="ref_builtin_values">values</a></li></ul> </div>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_keys">keys</h2>
+
+
+          
+
+          <p>A sequence that contains all the lookup keys in the
+          hash.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign myHash = { &quot;name&quot;: &quot;mouse&quot;, &quot;price&quot;: 50 }&gt;
+&lt;#list myHash?keys as k&gt;
+  ${k}
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  name
+  price</pre></div>
+
+          <p>Note that not all hashes support this (ask the programmer if a
+          certain hash allows this or not).</p>
+
+          <p>Since hashes do not define an order for their sub variables in
+          general, the order in which key names are returned can be arbitrary.
+          However, some hashes maintain a meaningful order (ask the programmer
+          if a certain hash does that or not). For example, hashes created
+          with the above <code class="inline-code">{<em class="code-color">...</em>}</code>
+          syntax preserve the same order as you have specified the sub
+          variables.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>To list both the keys and the values, you can use
+            <code class="inline-code">&lt;#list attrs as key,
+            value&gt;...&lt;#list&gt;</code>; see the <a href="ref_directive_list.html#ref.directive.list"><code>list</code>
+            directive</a>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_values">values</h2>
+
+
+          
+
+          <p>A sequence that contains all the variables (the values in the
+          key-value pairs) in the hash.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign myHash = { &quot;name&quot;: &quot;mouse&quot;, &quot;price&quot;: 50 }&gt;
+&lt;#list myHash?values as v&gt;
+  ${v}
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  mouse
+  50</pre></div>
+
+          <p>Note that not all hashes support this (ask the programmer if a
+          certain hash allows this or not).</p>
+
+          <p>As of the order in which the values are returned, the same
+          applies as with the <code class="inline-code">keys</code> built-in; see there.
+          Furthermore, it&#39;s not guaranteed that the order of the values
+          corresponds to the order of the keys returned by the
+          <code class="inline-code">keys</code> build-in.</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>To list both the keys and the values, you can use
+            <code class="inline-code">&lt;#list attrs as key,
+            value&gt;...&lt;#list&gt;</code>; see the <a href="ref_directive_list.html#ref.directive.list"><code>list</code>
+            directive</a>.</p>
+            </div>
+
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_sequence.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_node.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/ref_builtins_loop_var.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/ref_builtins_loop_var.html b/builds/2.3.26-nightly/ref_builtins_loop_var.html
new file mode 100644
index 0000000..6511bf8
--- /dev/null
+++ b/builds/2.3.26-nightly/ref_builtins_loop_var.html
@@ -0,0 +1,526 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Loop variable built-ins - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Loop variable built-ins">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/ref_builtins_loop_var.html">
+<link rel="canonical" href="http://freemarker.org/docs/ref_builtins_loop_var.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref.html"><span itemprop="name">Template Language Reference</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins.html"><span itemprop="name">Built-in Reference</span></a></li><li class="step-3" 
 itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="ref_builtins_loop_var.html"><span itemprop="name">Loop variable built-ins</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Template Language Reference","Built-in Reference","Loop variable built-ins"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="ref_builtins_node.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_type_independent.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="ref_builtins_loop_var" itemprop="headline">Loop variable built-ins</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#ref_builtin_counter" data-menu-target="ref_builtin_counter">counter</a></li><li><a class="page-menu-link" href="#ref_builtin_has_next" data-menu-target="ref_builtin_has_next">has_next</a></li><li><a class="page-menu-link" href="#ref_builtin_index" data-menu-target="ref_builtin_index">index</a></li><li><a class="page-menu-link" href="#ref_builtin_is_even_item" data-menu-target="ref_builtin_is_even_item">is_even_item</a></li><li><a class="page-menu-link" href="#ref_builtin_is_first" data-menu-target="ref_builtin_is_first">is_first</a></li><li><a class="page-menu-link" href="#ref_builtin_is_last" data-menu-target="ref_builtin_is_last">is_last</a></li><li><a class="page-menu-link" href="#ref_builtin_is_odd_item" data-menu-target="ref_builtin_is_odd_item">is_odd_item</a></li><li><a class="page-menu-link" href="#ref_builtin_item_cycle" data-menu-target="ref_builtin_item_cycle">item_cycle</a></li><li><a class="page-menu-link" href="#ref_builtin_item
 _parity" data-menu-target="ref_builtin_item_parity">item_parity</a></li><li><a class="page-menu-link" href="#ref_builtin_item_parity_cap" data-menu-target="ref_builtin_item_parity_cap">item_parity_cap</a></li></ul> </div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p>Loop variable built-ins only exists since FreeMarker
+          2.3.23.</p>
+          </div>
+<p>These built-ins you can only use with the loop variable of the
+        <a href="ref_directive_list.html"><code>list</code> and
+        <code>items</code> directives</a> (and of the deprecated
+        <code class="inline-code">foreach</code> directive). Some explanation of that
+        follows (<code class="inline-code"><em class="code-color">loopVar</em>?index</code>
+        returns the 0-based index in the listable value we iterate
+        through):</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Note: x is a loop variable --&gt;
+&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] as x&gt;
+  ${x?index}
+&lt;/#list&gt;</pre></div>
+
+<div class="code-wrapper"><pre class="code-block code-output">0
+1
+2</pre></div><p>When the <code class="inline-code">list</code> directive doesn&#39;t specify the
+        loop variable, these built-ins are used with the loop variable of the
+        <code class="inline-code">items</code> directive:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;]&gt;
+  &lt;ul&gt;
+   &lt;#items as x&gt;
+     &lt;li&gt;${x?index}&lt;/li&gt;
+   &lt;/#items&gt;
+  &lt;/ul&gt;
+&lt;/#list&gt;</pre></div><p>Loop variable built-ins only use the <em>name</em>
+        of loop variable, so that they can identify the related ongoing
+        iteration. They don&#39;t read the <em>value</em> of the loop
+        variable. Hence, this is a parsing error:</p>
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] as x&gt;
+  &lt;#assign y = x&gt;
+  ${y?index} &lt;#-- ERROR: y isn&#39;t a loop variable --&gt;
+&lt;/#list&gt;</pre></div>
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_counter">counter</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Returns the 1-based index where the iteration (which is
+          identified by the loop variable name) currently stands.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] as i&gt;
+  ${i?counter}: ${i}
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  1: a
+  2: b
+  3: c</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>For the 0-based index, use the <a href="#ref_builtin_index"><code>index</code>
+            built-in</a>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_has_next">has_next</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Tells if the item where the iteration (which is identified by
+          the loop variable name) currently stands is not the last
+          item.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] as i&gt;${i?has_next?c} &lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">true true false </pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>For separating items with commas and such, use
+            <code class="inline-code">&lt;#sep&gt;<em class="code-color">separator</em>&lt;/#sep&gt;</code>
+            instead of <code class="inline-code">&lt;#if
+            <em class="code-color">var</em>?has_next&gt;<em class="code-color">separator</em>&lt;/#if&gt;</code>,
+            as it&#39;s more readable. (Furthermore the
+            <code class="inline-code">&lt;/#sep&gt;</code> can be often omitted, like in
+            <code class="inline-code">&lt;#list <em class="code-color">...</em> as
+            <em class="code-color">var</em>&gt;<em class="code-color">...</em>${<em class="code-color">var</em>}<em class="code-color">...</em>&lt;#sep&gt;<em class="code-color">separator</em>&lt;/#list&gt;</code>)</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>If you need the inverse of this built-in, use
+            <code class="inline-code"><em class="code-color">var</em>?is_last</code> instead
+            of <code class="inline-code">!<em class="code-color">var</em>?has_next</code>,
+            because it&#39;s more readable.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_index">index</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Returns the 0-based index where the iteration (which is
+          identified by the loop variable name) currently stands.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] as i&gt;
+  ${i?index}: ${i}
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  0: a
+  1: b
+  2: c</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>For the 1-based index, use the <a href="#ref_builtin_counter"><code>counter</code>
+            built-in</a>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_is_even_item">is_even_item</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Tells if the item where the iteration (which is identified by
+          the loop variable name) currently stands has an even 1-based
+          index.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;] as i&gt;${i?is_even_item?c} &lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">false true false true</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>To make tables with alternating row colors and such, use
+            <a href="#ref_builtin_item_parity"><code><em>var</em>?item_parity</code></a>
+            or <a href="#ref_builtin_item_cycle"><code><em>var</em>?item_cycle(...)</code></a>
+            instead.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_is_first">is_first</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Tells if the item where the iteration (which is identified by
+          the loop variable name) currently stands is the first item.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] as i&gt;${i?is_first?c} &lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">true false false </pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_is_last">is_last</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Tells if the item where the iteration (which is identified by
+          the loop variable name) currently stands is the last item.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;] as i&gt;${i?is_last?c} &lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">false false true</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>If you need the inverse of this built-in, use
+            <code class="inline-code"><em class="code-color">var</em>?has_next</code> instead
+            of <code class="inline-code">!<em class="code-color">var</em>?is_last</code>,
+            because it&#39;s more readable.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>For separating items with commas and such, use
+            <code class="inline-code">&lt;#sep&gt;<em class="code-color">separator</em>&lt;/#sep&gt;</code>
+            instead of <code class="inline-code">&lt;#if
+            <em class="code-color">var</em>?has_next&gt;<em class="code-color">separator</em>&lt;/#if&gt;</code>,
+            as it&#39;s more readable. (Furthermore the
+            <code class="inline-code">&lt;/#sep&gt;</code> can be often omitted, like in
+            <code class="inline-code">&lt;#list <em class="code-color">...</em> as
+            <em class="code-color">var</em>&gt;<em class="code-color">...</em>${<em class="code-color">var</em>}<em class="code-color">...</em>&lt;#sep&gt;<em class="code-color">separator</em>&lt;/#list&gt;</code>)</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_is_odd_item">is_odd_item</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Tells if the item where the iteration (which is identified by
+          the loop variable name) currently stands has an odd 1-based
+          index.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;] as i&gt;${i?is_odd_item?c} &lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">true false true false </pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>To make tables with alternating row colors and such, use
+            <a href="#ref_builtin_item_parity"><code><em>var</em>?item_parity</code></a>
+            or <a href="#ref_builtin_item_cycle"><code><em>var</em>?item_cycle(...)</code></a>
+            instead.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_item_cycle">item_cycle</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>This is a more generic version of the <a href="#ref_builtin_item_parity"><code>item_parity</code>
+          built-in</a>, where you can specify what value to use instead of
+          <code class="inline-code">&quot;odd&quot;</code> and <code class="inline-code">&quot;even&quot;</code>. It also
+          allows more than 2 values that it will cycle through.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;, &#39;e&#39;, &#39;f&#39;, &#39;g&#39;] as i&gt;
+  &lt;tr class=&quot;${i?item_cycle(&#39;row1&#39;, &#39;row2&#39;, &#39;row3&#39;)}&quot;&gt;${i}&lt;/tr&gt;
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;tr class=&quot;row1&quot;&gt;a&lt;/tr&gt;
+  &lt;tr class=&quot;row2&quot;&gt;b&lt;/tr&gt;
+  &lt;tr class=&quot;row3&quot;&gt;c&lt;/tr&gt;
+  &lt;tr class=&quot;row1&quot;&gt;d&lt;/tr&gt;
+  &lt;tr class=&quot;row2&quot;&gt;e&lt;/tr&gt;
+  &lt;tr class=&quot;row3&quot;&gt;f&lt;/tr&gt;
+  &lt;tr class=&quot;row1&quot;&gt;g&lt;/tr&gt;</pre></div>
+
+          <p>Some details:</p>
+
+          <ul>
+            <li>
+              <p>The number of arguments must be at least 1, and has no
+              upper limit.</p>
+            </li>
+
+            <li>
+              <p>The type of the arguments can be anything, they doesn&#39;t
+              have to be strings.</p>
+            </li>
+          </ul>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Use the <a href="#ref_builtin_item_parity"><code>item_parity</code>
+            built-in</a> instead if the values you need are
+            <code class="inline-code">&quot;odd&quot;</code> and <code class="inline-code">&quot;even&quot;</code>.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_item_parity">item_parity</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Returns <code class="inline-code">&quot;odd&quot;</code> or <code class="inline-code">&quot;even&quot;</code>
+          string value, depending on the parity of the 1-based index where the
+          iteration (which is identified by the loop variable name) currently
+          stands. This is commonly used for alternating color for table
+          rows:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;] as i&gt;
+  &lt;tr class=&quot;${i?item_parity}Row&quot;&gt;${i}&lt;/tr&gt;
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;tr class=&quot;oddRow&quot;&gt;a&lt;/tr&gt;
+  &lt;tr class=&quot;evenRow&quot;&gt;b&lt;/tr&gt;
+  &lt;tr class=&quot;oddRow&quot;&gt;c&lt;/tr&gt;
+  &lt;tr class=&quot;evenRow&quot;&gt;d&lt;/tr&gt;</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Use the <a href="#ref_builtin_item_parity"><code>item_parity_cap</code>
+            built-in</a> for capitalized <code class="inline-code">&quot;Odd&quot;</code> and
+            <code class="inline-code">&quot;Even&quot;</code>. Use the <a href="#ref_builtin_item_cycle"><code>item_cycle</code>
+            built-in</a> to specify custom values, or more then two
+            values.</p>
+            </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="ref_builtin_item_parity_cap">item_parity_cap</h2>
+
+
+          
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>This built-in is available since FreeMarker 2.3.23.</p>
+            </div>
+
+
+          <p>Returns <code class="inline-code">&quot;Odd&quot;</code> or <code class="inline-code">&quot;Even&quot;</code>
+          string value (note the capitalization), depending on the parity of
+          the 1-based index where the iteration (which is identified by the
+          loop variable name) currently stands.</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#list [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;, &#39;d&#39;] as i&gt;
+  &lt;tr class=&quot;row${i?item_parity_cap}&quot;&gt;${i}&lt;/tr&gt;
+&lt;/#list&gt;</pre></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-output">  &lt;tr class=&quot;rowOdd&quot;&gt;a&lt;/tr&gt;
+  &lt;tr class=&quot;rowEven&quot;&gt;b&lt;/tr&gt;
+  &lt;tr class=&quot;rowOdd&quot;&gt;c&lt;/tr&gt;
+  &lt;tr class=&quot;rowEven&quot;&gt;d&lt;/tr&gt;</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Use the <a href="#ref_builtin_item_parity"><code>item_parity</code>
+            built-in</a> for lower case <code class="inline-code">&quot;odd&quot;</code> and
+            <code class="inline-code">&quot;even&quot;</code>.</p>
+            </div>
+
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="ref_builtins_node.html"><span>Previous</span></a><a class="paging-arrow next" href="ref_builtins_type_independent.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[49/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/alphaidx.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/alphaidx.html b/builds/2.3.26-nightly/alphaidx.html
new file mode 100644
index 0000000..cd5df16
--- /dev/null
+++ b/builds/2.3.26-nightly/alphaidx.html
@@ -0,0 +1,1695 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-index">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Alphabetical Index - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Alphabetical Index">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/alphaidx.html">
+<link rel="canonical" href="http://freemarker.org/docs/alphaidx.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="alphaidx.html"><span itemprop="name">Alphabetical Index</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li>Alpha. index</li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expre
 ssions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Alphabetical Index"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="gloss.html"><span>Previous</span></a><span class="paging-arrow disabled next"><span>Next</span></span></div><div class="title-wrapper">
+<h1 class="content-header header-part" id="alphaidx" itemprop="headline">Alphabetical Index</h1>
+</div></div>
+  <p>
+<a href="#idx_x24">$</a>&nbsp;| <a href="#idx_x23">#</a>&nbsp;| <a href="#idx_x3C">&lt;</a>&nbsp;| <a href="#idx_A">A</a>&nbsp;| <a href="#idx_B">B</a>&nbsp;| <a href="#idx_C">C</a>&nbsp;| <a href="#idx_D">D</a>&nbsp;| <a href="#idx_E">E</a>&nbsp;| <a href="#idx_F">F</a>&nbsp;| <a href="#idx_G">G</a>&nbsp;| <a href="#idx_H">H</a>&nbsp;| <a href="#idx_I">I</a>&nbsp;| <a href="#idx_J">J</a>&nbsp;| <a href="#idx_K">K</a>&nbsp;| <a href="#idx_L">L</a>&nbsp;| <a href="#idx_M">M</a>&nbsp;| <a href="#idx_N">N</a>&nbsp;| <a href="#idx_O">O</a>&nbsp;| <a href="#idx_P">P</a>&nbsp;| <a href="#idx_R">R</a>&nbsp;| <a href="#idx_S">S</a>&nbsp;| <a href="#idx_T">T</a>&nbsp;| <a href="#idx_U">U</a>&nbsp;| <a href="#idx_V">V</a>&nbsp;| <a href="#idx_W">W</a>&nbsp;| <a href="#idx_X">X</a>  </p>
+
+<div class="indexdiv">
+<a name="idx_x24"></a>
+<h2 class="indexLabel">$</h2>
+<dl>
+    <dt>
+      ${...},&nbsp;&nbsp;<a href="dgui_template_valueinsertion.html">Interpolations</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_x23"></a>
+<h2 class="indexLabel">#</h2>
+<dl>
+    <dt>
+      #,&nbsp;&nbsp;<a href="dgui_template_overallstructure.html">Overall structure</a>,
+<a href="dgui_template_directives.html">Directives</a>
+    </dt>
+    <dt>
+      #{...},&nbsp;&nbsp;<a href="ref_depr_numerical_interpolation.html">#{...}: Numerical interpolation</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_x3C"></a>
+<h2 class="indexLabel">&lt;</h2>
+<dl>
+    <dt>
+      &lt;#...&gt;,&nbsp;&nbsp;<a href="dgui_template_directives.html">Directives</a>
+    </dt>
+    <dt>
+      &lt;#--...--&gt;,&nbsp;&nbsp;<a href="dgui_template_overallstructure.html">Overall structure</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_A"></a>
+<h2 class="indexLabel">A</h2>
+<dl>
+    <dt>
+      ABC,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_lower_abc">lower_abc</a>,
+<a href="ref_builtins_number.html#ref_builtin_upper_abc">upper_abc</a>
+    </dt>
+    <dt>
+      abs built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_abs">abs</a>
+    </dt>
+    <dt>
+      absolute value,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_abs">abs</a>
+    </dt>
+    <dt>
+      acquisition,&nbsp;&nbsp;<a href="ref_directive_include.html#ref_directive_include_acquisition">Using acquisition</a>
+    </dt>
+    <dt>
+      adding hashes,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_hashop_cat">Concatenation</a>
+    </dt>
+    <dt>
+      adding sequences,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat">Concatenation</a>
+    </dt>
+    <dt>
+      adding strings,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a>
+    </dt>
+    <dt>
+      addition,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      alphabetical ordinals,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_lower_abc">lower_abc</a>,
+<a href="ref_builtins_number.html#ref_builtin_upper_abc">upper_abc</a>
+    </dt>
+    <dt>
+      alternative syntax,&nbsp;&nbsp;<a href="dgui_misc_alternativesyntax.html">Alternative (square bracket) syntax</a>
+    </dt>
+    <dt>
+      ancestors built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_ancestors">ancestors</a>
+    </dt>
+    <dt>
+      and,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_logicalop">Logical operations</a>
+    </dt>
+    <dt>
+      ant task,&nbsp;&nbsp;<a href="pgui_misc_ant.html">Using FreeMarker with Ant</a>
+    </dt>
+    <dt>
+      api built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_buitin_api_and_has_api">api, has_api</a>
+    </dt>
+    <dt>
+      arithmetic,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      assign directive,&nbsp;&nbsp;<a href="ref_directive_assign.html">assign</a>
+    </dt>
+    <dt>
+      attempt directive,&nbsp;&nbsp;<a href="ref_directive_attempt.html">attempt, recover</a>
+    </dt>
+    <dt>
+      auto_esc,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      auto-escaping,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html">Auto-escaping and output formats</a>,
+<a href="pgui_config_outputformatsautoesc.html">Associating output formats with templates</a>,
+<a href="ref_directive_autoesc.html">autoesc</a>,
+<a href="ref_directive_noautoesc.html">noautoesc</a>,
+<a href="ref_directive_outputformat.html">outputformat</a>
+    </dt>
+    <dt>
+      autoesc directive,&nbsp;&nbsp;<a href="ref_directive_autoesc.html">autoesc</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_B"></a>
+<h2 class="indexLabel">B</h2>
+<dl>
+    <dt>
+      backward compatibility,&nbsp;&nbsp;<a href="pgui_config_incompatible_improvements.html">The &quot;incompatible improvements&quot; setting</a>
+    </dt>
+    <dt>
+      beans    </dt>
+      <dd><dl>
+        <dt>wrapping, <a href="pgui_misc_beanwrapper.html">Bean wrapper</a></dt>
+      </dl></dd>
+    <dt>
+      BeansWrapper,&nbsp;&nbsp;<a href="pgui_misc_beanwrapper.html">Bean wrapper</a>
+    </dt>
+    <dt>
+      boolean    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_boolean.html">Built-ins for booleans</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_scalar.html">Scalars</a></dt>
+        <dt>literal, <a href="dgui_template_exp.html#dgui_template_exp_direct_boolean">Booleans</a></dt>
+        <dt>operations, <a href="dgui_template_exp.html#dgui_template_exp_logicalop">Logical operations</a></dt>
+        <dt>printing, <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">string (when used with a boolean value)</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Scalars</a></dt>
+      </dl></dd>
+    <dt>
+      boolean_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_125">setting</a>
+    </dt>
+    <dt>
+      boolean built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>
+    </dt>
+    <dt>
+      break directive,&nbsp;&nbsp;<a href="ref_directive_list.html#autoid_106">list, else, items, sep, break</a>,
+<a href="ref_directive_switch.html">switch, case, default, break</a>
+    </dt>
+    <dt>
+      built-in,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_builtin">Built-ins</a>,
+<a href="ref_builtins.html">Built-in Reference</a>,
+<a href="ref_builtins_alphaidx.html">Alphabetical index</a>
+    </dt>
+    <dt>
+      byte built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_C"></a>
+<h2 class="indexLabel">C</h2>
+<dl>
+    <dt>
+      caching,&nbsp;&nbsp;<a href="pgui_config_templateloading.html#pgui_config_templateloading_caching">Template caching</a>
+    </dt>
+    <dt>
+      call a method,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_methodcall">Method call</a>
+    </dt>
+    <dt>
+      cap_first built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_cap_first">cap_first</a>
+    </dt>
+    <dt>
+      capitalize built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_capitalize">capitalize</a>
+    </dt>
+    <dt>
+      case directive,&nbsp;&nbsp;<a href="ref_directive_switch.html">switch, case, default, break</a>
+    </dt>
+    <dt>
+      catch-all parameter,&nbsp;&nbsp;<a href="ref_directive_macro.html#autoid_112">macro, nested, return</a>
+    </dt>
+    <dt>
+      c built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_c">c (when used with numerical value)</a>,
+<a href="ref_builtins_boolean.html#ref_builtin_c_boolean">c (when used with boolean)</a>
+    </dt>
+    <dt>
+      ceiling built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_rounding">round, floor, ceiling</a>
+    </dt>
+    <dt>
+      charAt,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_get_character">Getting a character</a>
+    </dt>
+    <dt>
+      charset,&nbsp;&nbsp;<a href="pgui_misc_charset.html">Charset issues</a>,
+<a href="ref_directive_ftl.html">ftl</a>
+    </dt>
+    <dt>
+      children built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_children">children</a>
+    </dt>
+    <dt>
+      chop_linebreak built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_chop_linebreak">chop_linebreak</a>
+    </dt>
+    <dt>
+      chunk built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_chunk">chunk</a>
+    </dt>
+    <dt>
+      classic_compatible,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_125">setting</a>
+    </dt>
+    <dt>
+      collection    </dt>
+      <dd><dl>
+        <dt>Java side, <a href="pgui_datamodel_parent.html#autoid_34">Containers</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_container">Containers</a></dt>
+      </dl></dd>
+    <dt>
+      columnar printing of sequences,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_chunk">chunk</a>
+    </dt>
+    <dt>
+      command-line,&nbsp;&nbsp;<a href="pgui_misc_ant.html">Using FreeMarker with Ant</a>
+    </dt>
+    <dt>
+      comment,&nbsp;&nbsp;<a href="dgui_template_overallstructure.html">Overall structure</a>
+    </dt>
+    <dt>
+      comparison operators,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_comparison">Comparison</a>
+    </dt>
+    <dt>
+      compress directive,&nbsp;&nbsp;<a href="ref_directive_compress.html">compress</a>
+    </dt>
+    <dt>
+      concatenate hashes,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_hashop_cat">Concatenation</a>
+    </dt>
+    <dt>
+      concatenate sequences,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat">Concatenation</a>
+    </dt>
+    <dt>
+      concatenate strings,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a>
+    </dt>
+    <dt>
+      configuration,&nbsp;&nbsp;<a href="pgui_quickstart_createconfiguration.html">Create a configuration instance</a>
+    </dt>
+    <dt>
+      Configuration,&nbsp;&nbsp;<a href="pgui_config.html">The Configuration</a>
+    </dt>
+    <dt>
+      constant,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_direct">Specify values directly</a>
+    </dt>
+    <dt>
+      containers    </dt>
+      <dd><dl>
+        <dt>Java side, <a href="pgui_datamodel_parent.html">Containers</a></dt>
+      </dl></dd>
+    <dt>
+      contains built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_contains">contains</a>
+    </dt>
+    <dt>
+      converting between types,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>,
+<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>,
+<a href="ref_builtins_string.html#ref_builtin_number">number</a>,
+<a href="ref_builtins_number.html#ref_builtin_c">c (when used with numerical value)</a>,
+<a href="ref_builtins_number.html#ref_builtin_string_for_number">string (when used with a numerical value)</a>,
+<a href="ref_builtins_date.html#ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+          value)</a>,
+<a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>,
+<a href="ref_builtins_boolean.html#ref_builtin_c_boolean">c (when used with boolean)</a>,
+<a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">string (when used with a boolean value)</a>,
+<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>,
+<a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a>
+    </dt>
+    <dt>
+      converting date to long,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+    <dt>
+      converting date to string,&nbsp;&nbsp;<a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>
+    </dt>
+    <dt>
+      converting long to date,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a>
+    </dt>
+    <dt>
+      converting string to boolean,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>
+    </dt>
+    <dt>
+      converting string to date,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      converting string to number,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_number">number</a>
+    </dt>
+    <dt>
+      converting string to time,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      converting time to string,&nbsp;&nbsp;<a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>
+    </dt>
+    <dt>
+      counter built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_counter">counter</a>
+    </dt>
+    <dt>
+      current_template_name,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      current date-time,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      custom directive,&nbsp;&nbsp;<a href="dgui_misc_userdefdir.html">Defining your own directives</a>
+    </dt>
+    <dt>
+      custom object wrapper,&nbsp;&nbsp;<a href="pgui_datamodel_objectWrapper.html#pgui_datamodel_customObjectWrappingExample">Custom object wrapping example</a>
+    </dt>
+    <dt>
+      custom tags,&nbsp;&nbsp;<a href="pgui_misc_servlet.html#autoid_63">Using FreeMarker with servlets</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_D"></a>
+<h2 class="indexLabel">D</h2>
+<dl>
+    <dt>
+      data-model,&nbsp;&nbsp;<a href="dgui_quickstart_basics.html">Template + data-model = output</a>
+    </dt>
+      <dd><dl>
+        <dt>assembling with Java, <a href="pgui_quickstart_createdatamodel.html">Create a data-model</a></dt>
+        <dt>assembling with Java, without object wrapper, <a href="pgui_datamodel_basics.html">Basics</a></dt>
+      </dl></dd>
+    <dt>
+      date    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_date.html">Built-ins for date/time/date-time values</a></dt>
+        <dt>Java API related difficulties, <a href="pgui_datamodel_scalar.html#autoid_31">Scalars</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_scalar.html">Scalars</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Scalars</a></dt>
+      </dl></dd>
+    <dt>
+      date_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
+    </dt>
+    <dt>
+      date built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>,
+<a href="ref_builtins_date.html#ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+          value)</a>
+    </dt>
+    <dt>
+      datetime    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_date.html">Built-ins for date/time/date-time values</a></dt>
+      </dl></dd>
+    <dt>
+      date-time    </dt>
+      <dd><dl>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Scalars</a></dt>
+      </dl></dd>
+    <dt>
+      datetime_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
+    </dt>
+    <dt>
+      datetime built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>,
+<a href="ref_builtins_date.html#ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+          value)</a>
+    </dt>
+    <dt>
+      date to long,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+    <dt>
+      date to string,&nbsp;&nbsp;<a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>
+    </dt>
+    <dt>
+      default built-in,&nbsp;&nbsp;<a href="ref_depr_builtin.html">List of deprecated built-ins</a>
+    </dt>
+    <dt>
+      default directive,&nbsp;&nbsp;<a href="ref_directive_switch.html">switch, case, default, break</a>
+    </dt>
+    <dt>
+      DefaultObjectWrapper,&nbsp;&nbsp;<a href="pgui_datamodel_objectWrapper.html#pgui_datamodel_defaultObjectWrapper">The default object wrapper</a>
+    </dt>
+      <dd><dl>
+        <dt>extending, <a href="pgui_datamodel_objectWrapper.html#pgui_datamodel_customObjectWrappingExample">Custom object wrapping example</a></dt>
+      </dl></dd>
+    <dt>
+      default value operator,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing_default">Default value operator</a>
+    </dt>
+    <dt>
+      defining macro,&nbsp;&nbsp;<a href="dgui_misc_userdefdir.html#autoid_19">Defining your own directives</a>
+    </dt>
+    <dt>
+      deprecated,&nbsp;&nbsp;<a href="ref_deprecated.html">Deprecated FTL constructs</a>
+    </dt>
+    <dt>
+      directive,&nbsp;&nbsp;<a href="dgui_template_directives.html">Directives</a>,
+<a href="ref_directives.html">Directive Reference</a>,
+<a href="ref_directive_alphaidx.html">Alphabetical index</a>
+    </dt>
+      <dd><dl>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_userdefdir">User-defined directives</a></dt>
+        <dt>user-defined, <a href="dgui_misc_userdefdir.html">Defining your own directives</a></dt>
+      </dl></dd>
+    <dt>
+      directives    </dt>
+      <dd><dl>
+        <dt>Java side, <a href="pgui_datamodel_directive.html">Directives</a></dt>
+      </dl></dd>
+    <dt>
+      division,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      double built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_E"></a>
+<h2 class="indexLabel">E</h2>
+<dl>
+    <dt>
+      else directive,&nbsp;&nbsp;<a href="ref_directive_if.html">if, else, elseif</a>
+    </dt>
+    <dt>
+      else directive inside list,&nbsp;&nbsp;<a href="ref_directive_list.html#autoid_103">list, else, items, sep, break</a>
+    </dt>
+    <dt>
+      elseif directive,&nbsp;&nbsp;<a href="ref_directive_if.html">if, else, elseif</a>
+    </dt>
+    <dt>
+      encoding,&nbsp;&nbsp;<a href="pgui_misc_charset.html">Charset issues</a>,
+<a href="ref_directive_ftl.html">ftl</a>
+    </dt>
+      <dd><dl>
+        <dt>URL, <a href="ref_builtins_string.html#ref_builtin_url">url</a></dt>
+        <dt>URL path, <a href="ref_builtins_string.html#ref_builtin_url_path">url_path</a></dt>
+      </dl></dd>
+    <dt>
+      ends_with built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_ends_with">ends_with</a>
+    </dt>
+    <dt>
+      ensure_ends_with built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_ensure_ends_with">ensure_ends_with</a>,
+<a href="ref_builtins_string.html#ref_builtin_ensure_starts_with">ensure_starts_with</a>
+    </dt>
+    <dt>
+      enum,&nbsp;&nbsp;<a href="pgui_misc_beanwrapper.html#jdk_15_enums">Accessing enums</a>
+    </dt>
+    <dt>
+      error,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      error handling,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing">Handling missing values</a>,
+<a href="pgui_config_errorhandling.html">Error handling</a>,
+<a href="ref_directive_attempt.html">attempt, recover</a>
+    </dt>
+    <dt>
+      escape directive,&nbsp;&nbsp;<a href="ref_directive_escape.html">escape, noescape (deprecated)</a>
+    </dt>
+    <dt>
+      escape sequences,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_direct_string">Strings</a>
+    </dt>
+    <dt>
+      escaping,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html">Auto-escaping and output formats</a>,
+<a href="ref_directive_autoesc.html">autoesc</a>,
+<a href="ref_directive_noautoesc.html">noautoesc</a>,
+<a href="ref_directive_outputformat.html">outputformat</a>
+    </dt>
+      <dd><dl>
+        <dt>output, <a href="ref_builtins_string.html#ref_builtin_html">html (deprecated)</a>, <a href="ref_builtins_string.html#ref_builtin_rtf">rtf (deprecated)</a>, <a href="ref_builtins_string.html#ref_builtin_xhtml">xhtml (deprecated)</a>, <a href="ref_builtins_string.html#ref_builtin_xml">xml (deprecated)</a></dt>
+        <dt>URL, <a href="ref_builtins_string.html#ref_builtin_url">url</a></dt>
+        <dt>URL path, <a href="ref_builtins_string.html#ref_builtin_url_path">url_path</a></dt>
+      </dl></dd>
+    <dt>
+      esc built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_esc">esc</a>
+    </dt>
+    <dt>
+      eval,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_eval">eval</a>
+    </dt>
+    <dt>
+      evaluate string,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_eval">eval</a>
+    </dt>
+    <dt>
+      exception handling,&nbsp;&nbsp;<a href="pgui_config_errorhandling.html">Error handling</a>
+    </dt>
+    <dt>
+      existence test operator,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing_test">Missing value test operator</a>
+    </dt>
+    <dt>
+      exists built-in,&nbsp;&nbsp;<a href="ref_depr_builtin.html">List of deprecated built-ins</a>
+    </dt>
+    <dt>
+      expression,&nbsp;&nbsp;<a href="dgui_template_exp.html">Expressions</a>
+    </dt>
+    <dt>
+      extended Java decimal format,&nbsp;&nbsp;<a href="ref_builtins_number.html#topic.extendedJavaDecimalFormat">Extended Java decimal format</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_F"></a>
+<h2 class="indexLabel">F</h2>
+<dl>
+    <dt>
+      fallback directive,&nbsp;&nbsp;<a href="ref_directive_visit.html">visit, recurse, fallback</a>
+    </dt>
+    <dt>
+      FAQ,&nbsp;&nbsp;<a href="app_faq.html">FAQ</a>
+    </dt>
+    <dt>
+      first built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_first">first</a>
+    </dt>
+    <dt>
+      float built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+    <dt>
+      floor built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_rounding">round, floor, ceiling</a>
+    </dt>
+    <dt>
+      flush directive,&nbsp;&nbsp;<a href="ref_directive_flush.html">flush</a>
+    </dt>
+    <dt>
+      format    </dt>
+      <dd><dl>
+        <dt>boolean, <a href="ref_builtins_boolean.html#ref_builtin_c_boolean">c (when used with boolean)</a>, <a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">string (when used with a boolean value)</a>, <a href="ref_directive_setting.html#autoid_125">setting</a></dt>
+        <dt>date, <a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>, <a href="ref_directive_setting.html#topic_date_format_settings">setting</a></dt>
+        <dt>date-time, <a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a></dt>
+        <dt>number, <a href="ref_builtins_number.html#ref_builtin_c">c (when used with numerical value)</a>, <a href="ref_builtins_number.html#ref_builtin_string_for_number">string (when used with a numerical value)</a>, <a href="ref_directive_setting.html#ref.setting.number_format">setting</a></dt>
+        <dt>time, <a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a></dt>
+        <dt>timestamp, <a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a></dt>
+      </dl></dd>
+    <dt>
+      format; boolean,&nbsp;&nbsp;<a href="ref_builtins_boolean.html#ref_builtin_then">then</a>
+    </dt>
+    <dt>
+      FTL,&nbsp;&nbsp;<a href="dgui_template_overallstructure.html">Overall structure</a>
+    </dt>
+    <dt>
+      ftl directive,&nbsp;&nbsp;<a href="ref_directive_ftl.html">ftl</a>
+    </dt>
+    <dt>
+      FTL tag,&nbsp;&nbsp;<a href="dgui_template_overallstructure.html">Overall structure</a>,
+<a href="dgui_template_directives.html">Directives</a>
+    </dt>
+    <dt>
+      function directive,&nbsp;&nbsp;<a href="ref_directive_function.html">function, return</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_G"></a>
+<h2 class="indexLabel">G</h2>
+<dl>
+    <dt>
+      get character,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_get_character">Getting a character</a>
+    </dt>
+    <dt>
+      global directive,&nbsp;&nbsp;<a href="ref_directive_global.html">global</a>
+    </dt>
+    <dt>
+      groups built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_groups">groups</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_H"></a>
+<h2 class="indexLabel">H</h2>
+<dl>
+    <dt>
+      handling null-s,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing">Handling missing values</a>
+    </dt>
+    <dt>
+      has_api built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_buitin_api_and_has_api">api, has_api</a>
+    </dt>
+    <dt>
+      has_content built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_has_content">has_content</a>
+    </dt>
+    <dt>
+      has_next built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_has_next">has_next</a>
+    </dt>
+    <dt>
+      hash    </dt>
+      <dd><dl>
+        <dt>accessing subvariable, <a href="dgui_template_exp.html#dgui_template_exp_var_hash">Retrieving data from a hash</a></dt>
+        <dt>built-ins, <a href="ref_builtins_hash.html">Built-ins for hashes</a></dt>
+        <dt>concatenate, <a href="dgui_template_exp.html#dgui_template_exp_hashop_cat">Concatenation</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_parent.html#autoid_32">Containers</a></dt>
+        <dt>key type, <a href="app_faq.html#faq_nonstring_keys">FAQ</a></dt>
+        <dt>literal, <a href="dgui_template_exp.html#dgui_template_exp_direct_hash">Hashes</a></dt>
+        <dt>modify, <a href="app_faq.html#faq_modify_seq_and_map">FAQ</a></dt>
+        <dt>operations, <a href="dgui_template_exp.html#dgui_template_exp_hashop">Hash operations</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_container">Containers</a></dt>
+      </dl></dd>
+    <dt>
+      header,&nbsp;&nbsp;<a href="ref_directive_ftl.html">ftl</a>
+    </dt>
+    <dt>
+      html built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_html">html (deprecated)</a>
+    </dt>
+    <dt>
+      HTML encoding,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html">Auto-escaping and output formats</a>
+    </dt>
+    <dt>
+      HTML escaping,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html">Auto-escaping and output formats</a>
+    </dt>
+    <dt>
+      HTTP,&nbsp;&nbsp;<a href="pgui_misc_servlet.html">Using FreeMarker with servlets</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_I"></a>
+<h2 class="indexLabel">I</h2>
+<dl>
+    <dt>
+      if_exists built-in,&nbsp;&nbsp;<a href="ref_depr_builtin.html">List of deprecated built-ins</a>
+    </dt>
+    <dt>
+      if directive,&nbsp;&nbsp;<a href="ref_directive_if.html">if, else, elseif</a>
+    </dt>
+    <dt>
+      import directive,&nbsp;&nbsp;<a href="ref_directive_import.html">import</a>
+    </dt>
+    <dt>
+      include    </dt>
+      <dd><dl>
+        <dt>JSP, <a href="pgui_misc_servlet.html#pgui_misc_servlet_include">Including content from other web application
+          resources</a></dt>
+        <dt>servlet, <a href="pgui_misc_servlet.html#pgui_misc_servlet_include">Including content from other web application
+          resources</a></dt>
+      </dl></dd>
+    <dt>
+      include directive,&nbsp;&nbsp;<a href="ref_directive_include.html">include</a>
+    </dt>
+    <dt>
+      incompatible_improvements,&nbsp;&nbsp;<a href="pgui_config_incompatible_improvements.html">The &quot;incompatible improvements&quot; setting</a>
+    </dt>
+    <dt>
+      incompatibleImprovements,&nbsp;&nbsp;<a href="pgui_config_incompatible_improvements.html">The &quot;incompatible improvements&quot; setting</a>
+    </dt>
+    <dt>
+      incompatible improvements,&nbsp;&nbsp;<a href="pgui_config_incompatible_improvements.html">The &quot;incompatible improvements&quot; setting</a>
+    </dt>
+    <dt>
+      incomplatible_improvements,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      index_of built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_index_of">index_of</a>
+    </dt>
+    <dt>
+      index built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_index">index</a>
+    </dt>
+    <dt>
+      infinite,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_is_infinite">is_infinite</a>
+    </dt>
+    <dt>
+      install,&nbsp;&nbsp;<a href="app_install.html">Installing FreeMarker</a>
+    </dt>
+    <dt>
+      instantiating variable,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_new">new</a>
+    </dt>
+    <dt>
+      int built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+    <dt>
+      integer division,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      integer part,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      interpolation,&nbsp;&nbsp;<a href="dgui_template_overallstructure.html">Overall structure</a>,
+<a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a>,
+<a href="dgui_template_valueinsertion.html">Interpolations</a>
+    </dt>
+    <dt>
+      interpret built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_interpret">interpret</a>
+    </dt>
+    <dt>
+      is_... built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_isType">is_...</a>
+    </dt>
+    <dt>
+      is_even_item built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_is_even_item">is_even_item</a>
+    </dt>
+    <dt>
+      is_first built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_is_first">is_first</a>
+    </dt>
+    <dt>
+      is_infinte built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_is_infinite">is_infinite</a>
+    </dt>
+    <dt>
+      is_last built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_is_last">is_last</a>
+    </dt>
+    <dt>
+      is_nan built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_is_nan">is_nan</a>
+    </dt>
+    <dt>
+      is_odd_item built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_is_odd_item">is_odd_item</a>
+    </dt>
+    <dt>
+      is null,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing_test">Missing value test operator</a>
+    </dt>
+    <dt>
+      iso_... built-ins,&nbsp;&nbsp;<a href="ref_builtins_date.html#ref_builtin_date_iso">iso_...</a>
+    </dt>
+    <dt>
+      ISO 8601,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
+    </dt>
+    <dt>
+      ISO 8601 parsing,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      iso built-in,&nbsp;&nbsp;<a href="ref_builtins_date.html#ref_builtin_date_iso">iso_...</a>
+    </dt>
+    <dt>
+      item_cycle built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_item_cycle">item_cycle</a>
+    </dt>
+    <dt>
+      item_parity_cap built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_item_parity_cap">item_parity_cap</a>
+    </dt>
+    <dt>
+      item_parity built-in,&nbsp;&nbsp;<a href="ref_builtins_loop_var.html#ref_builtin_item_parity">item_parity</a>
+    </dt>
+    <dt>
+      items directive,&nbsp;&nbsp;<a href="ref_directive_list.html#autoid_104">list, else, items, sep, break</a>
+    </dt>
+    <dt>
+      iteration state,&nbsp;&nbsp;<a href="ref_directive_list.html#autoid_107">list, else, items, sep, break</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_J"></a>
+<h2 class="indexLabel">J</h2>
+<dl>
+    <dt>
+      j_string built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_j_string">j_string</a>
+    </dt>
+    <dt>
+      JDBC time zone,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_125">setting</a>
+    </dt>
+    <dt>
+      join built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_join">join</a>
+    </dt>
+    <dt>
+      joining hashes,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_hashop_cat">Concatenation</a>
+    </dt>
+    <dt>
+      joining sequences,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat">Concatenation</a>
+    </dt>
+    <dt>
+      joining strings,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a>
+    </dt>
+    <dt>
+      js_string built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_js_string">js_string</a>
+    </dt>
+    <dt>
+      json_string built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_json_string">json_string</a>
+    </dt>
+    <dt>
+      JSP,&nbsp;&nbsp;<a href="pgui_misc_servlet.html">Using FreeMarker with servlets</a>,
+<a href="app_faq.html#faq_jsp_vs_freemarker">FAQ</a>
+    </dt>
+      <dd><dl>
+        <dt>include, <a href="pgui_misc_servlet.html#pgui_misc_servlet_include">Including content from other web application
+          resources</a></dt>
+        <dt>taglib, <a href="pgui_misc_servlet.html#autoid_63">Using FreeMarker with servlets</a>, <a href="pgui_misc_servlet.html#autoid_64">Using FreeMarker with servlets</a></dt>
+      </dl></dd>
+    <dt>
+      jython    </dt>
+      <dd><dl>
+        <dt>wrapping, <a href="pgui_misc_jythonwrapper.html">Jython wrapper</a></dt>
+      </dl></dd>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_K"></a>
+<h2 class="indexLabel">K</h2>
+<dl>
+    <dt>
+      keep_after_last built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_keep_after_last">keep_after_last</a>
+    </dt>
+    <dt>
+      keep_after built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_keep_after">keep_after</a>
+    </dt>
+    <dt>
+      keep_before_last built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_keep_before_last">keep_before_last</a>
+    </dt>
+    <dt>
+      keep_before built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_keep_before">keep_before</a>
+    </dt>
+    <dt>
+      keys built-in,&nbsp;&nbsp;<a href="ref_builtins_hash.html#ref_builtin_keys">keys</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_L"></a>
+<h2 class="indexLabel">L</h2>
+<dl>
+    <dt>
+      lang,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      language,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      last_index_of built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_last_index_of">last_index_of</a>
+    </dt>
+    <dt>
+      last built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_last">last</a>
+    </dt>
+    <dt>
+      left_pad built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_left_pad">left_pad</a>
+    </dt>
+    <dt>
+      length built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_length">length</a>
+    </dt>
+    <dt>
+      libraries,&nbsp;&nbsp;<a href="dgui_misc_namespace.html">Namespaces</a>
+    </dt>
+    <dt>
+      license,&nbsp;&nbsp;<a href="app_license.html">License</a>
+    </dt>
+    <dt>
+      list directive,&nbsp;&nbsp;<a href="ref_directive_list.html">list, else, items, sep, break</a>
+    </dt>
+    <dt>
+      listing state,&nbsp;&nbsp;<a href="ref_directive_list.html#autoid_107">list, else, items, sep, break</a>
+    </dt>
+    <dt>
+      literal,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_direct">Specify values directly</a>
+    </dt>
+      <dd><dl>
+        <dt>boolean, <a href="dgui_template_exp.html#dgui_template_exp_direct_boolean">Booleans</a></dt>
+        <dt>hash, <a href="dgui_template_exp.html#dgui_template_exp_direct_hash">Hashes</a></dt>
+      </dl></dd>
+    <dt>
+      loading templates,&nbsp;&nbsp;<a href="pgui_config_templateloading.html">Template loading</a>
+    </dt>
+    <dt>
+      local directive,&nbsp;&nbsp;<a href="ref_directive_local.html">local</a>
+    </dt>
+    <dt>
+      locale,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_125">setting</a>,
+<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      locale_object,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      localization,&nbsp;&nbsp;<a href="ref_directive_include.html#ref_directive_include_localized">Localized lookup</a>
+    </dt>
+    <dt>
+      local variable,&nbsp;&nbsp;<a href="dgui_misc_var.html">Defining variables in the template</a>
+    </dt>
+    <dt>
+      Log4j2,&nbsp;&nbsp;<a href="pgui_misc_logging.html">Logging</a>
+    </dt>
+    <dt>
+      logging,&nbsp;&nbsp;<a href="pgui_misc_logging.html">Logging</a>
+    </dt>
+    <dt>
+      logical operations,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_logicalop">Logical operations</a>
+    </dt>
+    <dt>
+      long built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+    <dt>
+      long to date,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a>
+    </dt>
+    <dt>
+      loop variable,&nbsp;&nbsp;<a href="dgui_misc_userdefdir.html#dgui_misc_userdefdir_loopvar">Macros with loop variables</a>,
+<a href="dgui_misc_var.html">Defining variables in the template</a>
+    </dt>
+    <dt>
+      lower_abc built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_lower_abc">lower_abc</a>
+    </dt>
+    <dt>
+      lower_case built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_lower_case">lower_case</a>
+    </dt>
+    <dt>
+      lt directive,&nbsp;&nbsp;<a href="ref_directive_t.html">t, lt, rt</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_M"></a>
+<h2 class="indexLabel">M</h2>
+<dl>
+    <dt>
+      macro,&nbsp;&nbsp;<a href="dgui_misc_userdefdir.html">Defining your own directives</a>
+    </dt>
+      <dd><dl>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_userdefdir">User-defined directives</a></dt>
+      </dl></dd>
+    <dt>
+      macro directive,&nbsp;&nbsp;<a href="ref_directive_macro.html">macro, nested, return</a>
+    </dt>
+    <dt>
+      main_template_name,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      markup_string built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_markup_string">markup_string</a>
+    </dt>
+    <dt>
+      markup output    </dt>
+      <dd><dl>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_markupoutput">Markup output</a></dt>
+      </dl></dd>
+    <dt>
+      matches built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_matches">matches</a>
+    </dt>
+    <dt>
+      math,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      merging,&nbsp;&nbsp;<a href="pgui_quickstart_merge.html">Merging the template with the data-model</a>
+    </dt>
+    <dt>
+      method    </dt>
+      <dd><dl>
+        <dt>call, <a href="dgui_template_exp.html#dgui_template_exp_methodcall">Method call</a></dt>
+        <dt>defining with FTL, <a href="ref_directive_function.html">function, return</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_method.html">Methods</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_method">Methods and functions</a></dt>
+      </dl></dd>
+    <dt>
+      MIME type,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html">Auto-escaping and output formats</a>
+    </dt>
+    <dt>
+      missing value test operator,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing_test">Missing value test operator</a>
+    </dt>
+    <dt>
+      missing variable,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing">Handling missing values</a>
+    </dt>
+    <dt>
+      Model 2,&nbsp;&nbsp;<a href="pgui_misc_servlet.html">Using FreeMarker with servlets</a>
+    </dt>
+    <dt>
+      modify hashes,&nbsp;&nbsp;<a href="app_faq.html#faq_modify_seq_and_map">FAQ</a>
+    </dt>
+    <dt>
+      modify sequences,&nbsp;&nbsp;<a href="app_faq.html#faq_modify_seq_and_map">FAQ</a>
+    </dt>
+    <dt>
+      modulus,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      multithreading,&nbsp;&nbsp;<a href="pgui_misc_multithreading.html">Multithreading</a>
+    </dt>
+    <dt>
+      Multi-typed value,&nbsp;&nbsp;<a href="dgui_datamodel_basics.html#topic.multitype">Basics</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_N"></a>
+<h2 class="indexLabel">N</h2>
+<dl>
+    <dt>
+      namespace built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_namespace">namespace</a>
+    </dt>
+    <dt>
+      namespaces,&nbsp;&nbsp;<a href="dgui_misc_namespace.html">Namespaces</a>
+    </dt>
+    <dt>
+      NaN,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_is_nan">is_nan</a>
+    </dt>
+    <dt>
+      nested directive,&nbsp;&nbsp;<a href="ref_directive_macro.html">macro, nested, return</a>
+    </dt>
+    <dt>
+      new built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_new">new</a>
+    </dt>
+    <dt>
+      new FTL syntax,&nbsp;&nbsp;<a href="ref_depr_oldsyntax.html">Old FTL syntax</a>
+    </dt>
+    <dt>
+      next_sibling built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_next_sibling">next_sibling</a>
+    </dt>
+    <dt>
+      no_esc built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_no_esc">no_esc</a>
+    </dt>
+    <dt>
+      noautoesc directive,&nbsp;&nbsp;<a href="ref_directive_noautoesc.html">noautoesc</a>
+    </dt>
+    <dt>
+      node    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_node.html">Built-ins for nodes (for XML)</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_node.html">Node variables</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_node">Nodes</a></dt>
+      </dl></dd>
+    <dt>
+      node_name built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_node_name">node_name</a>
+    </dt>
+    <dt>
+      node_namespace built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_node_namespace">node_namespace</a>
+    </dt>
+    <dt>
+      node_type built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_node_type">node_type</a>
+    </dt>
+    <dt>
+      noescape directive,&nbsp;&nbsp;<a href="ref_directive_escape.html">escape, noescape (deprecated)</a>
+    </dt>
+    <dt>
+      noparse directive,&nbsp;&nbsp;<a href="ref_directive_noparse.html">noparse</a>
+    </dt>
+    <dt>
+      not,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_logicalop">Logical operations</a>
+    </dt>
+    <dt>
+      now,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      nt directive,&nbsp;&nbsp;<a href="ref_directive_nt.html">nt</a>
+    </dt>
+    <dt>
+      null,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing">Handling missing values</a>,
+<a href="app_faq.html#faq_null">FAQ</a>
+    </dt>
+    <dt>
+      number    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_number.html">Built-ins for numbers</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_scalar.html">Scalars</a></dt>
+        <dt>literal, <a href="dgui_template_exp.html#dgui_template_exp_direct_number">Numbers</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Scalars</a></dt>
+      </dl></dd>
+    <dt>
+      number_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#ref.setting.number_format">setting</a>
+    </dt>
+    <dt>
+      number_to_date built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a>
+    </dt>
+    <dt>
+      number_to_datetime built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a>
+    </dt>
+    <dt>
+      number_to_time built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a>
+    </dt>
+    <dt>
+      number built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_number">number</a>
+    </dt>
+    <dt>
+      numerical range expression,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_direct_seuqence">Sequences</a>
+    </dt>
+    <dt>
+      numerical sequence,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_direct_seuqence">Sequences</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_O"></a>
+<h2 class="indexLabel">O</h2>
+<dl>
+    <dt>
+      object wrapper,&nbsp;&nbsp;<a href="pgui_datamodel_basics.html">Basics</a>,
+<a href="pgui_datamodel_objectWrapper.html">Object wrappers</a>
+    </dt>
+      <dd><dl>
+        <dt>custom, <a href="pgui_datamodel_objectWrapper.html#pgui_datamodel_customObjectWrappingExample">Custom object wrapping example</a></dt>
+        <dt>default, <a href="pgui_datamodel_objectWrapper.html#pgui_datamodel_defaultObjectWrapper">The default object wrapper</a></dt>
+      </dl></dd>
+    <dt>
+      old FTL syntax,&nbsp;&nbsp;<a href="ref_depr_oldsyntax.html">Old FTL syntax</a>
+    </dt>
+    <dt>
+      operator precedence,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_precedence">Operator precedence</a>
+    </dt>
+    <dt>
+      or,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_logicalop">Logical operations</a>
+    </dt>
+    <dt>
+      output    </dt>
+      <dd><dl>
+        <dt>generate with Java, <a href="pgui_quickstart_merge.html">Merging the template with the data-model</a></dt>
+      </dl></dd>
+    <dt>
+      output_encoding,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_125">setting</a>
+    </dt>
+    <dt>
+      output_format,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      output charset,&nbsp;&nbsp;<a href="pgui_misc_charset.html#autoid_53">Charset issues</a>,
+<a href="ref_builtins_string.html#ref_builtin_url">url</a>,
+<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      output encoding,&nbsp;&nbsp;<a href="pgui_misc_charset.html#autoid_53">Charset issues</a>,
+<a href="ref_builtins_string.html#ref_builtin_url">url</a>,
+<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      output format,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html#dgui_misc_autoescaping_outputformat">Output formats</a>,
+<a href="pgui_config_outputformatsautoesc.html">Associating output formats with templates</a>,
+<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      outputformat directive,&nbsp;&nbsp;<a href="ref_directive_outputformat.html">outputformat</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_P"></a>
+<h2 class="indexLabel">P</h2>
+<dl>
+    <dt>
+      padding,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_left_pad">left_pad</a>,
+<a href="ref_builtins_string.html#ref_builtin_right_pad">right_pad</a>
+    </dt>
+    <dt>
+      parent built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_parent">parent</a>
+    </dt>
+    <dt>
+      parentheses,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_parentheses">Parentheses</a>
+    </dt>
+    <dt>
+      parse string as boolean,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>
+    </dt>
+    <dt>
+      parse string as number,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_number">number</a>
+    </dt>
+    <dt>
+      parsing string as date,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      parsing string as time,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      path,&nbsp;&nbsp;<a href="pgui_config_templateloading.html#autoid_42">Template loading</a>
+    </dt>
+    <dt>
+      positional parameter passing,&nbsp;&nbsp;<a href="ref_directive_userDefined.html#ref_directive_userDefined_positionalParam">Positional parameter passing</a>
+    </dt>
+    <dt>
+      precedence,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_precedence">Operator precedence</a>
+    </dt>
+    <dt>
+      previous_sibling built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_previous_sibling">previous_sibling</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_R"></a>
+<h2 class="indexLabel">R</h2>
+<dl>
+    <dt>
+      range expression,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_direct_seuqence">Sequences</a>
+    </dt>
+    <dt>
+      raw string literal,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_direct_string">Strings</a>
+    </dt>
+    <dt>
+      recover directive,&nbsp;&nbsp;<a href="ref_directive_attempt.html">attempt, recover</a>
+    </dt>
+    <dt>
+      recurse directive,&nbsp;&nbsp;<a href="ref_directive_visit.html">visit, recurse, fallback</a>
+    </dt>
+    <dt>
+      recursion    </dt>
+      <dd><dl>
+        <dt>iterate, <a href="ref_directive_visit.html">visit, recurse, fallback</a></dt>
+      </dl></dd>
+    <dt>
+      regular expression    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_string.html#ref_builtin_string_flags">Common flags</a></dt>
+      </dl></dd>
+    <dt>
+      remove_beginning built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_remove_beginning">remove_beginning</a>
+    </dt>
+    <dt>
+      remove_ending built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_remove_ending">remove_ending</a>
+    </dt>
+    <dt>
+      replace built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_replace">replace</a>
+    </dt>
+    <dt>
+      reserved name,&nbsp;&nbsp;<a href="ref_reservednames.html">Reserved names in FTL</a>
+    </dt>
+    <dt>
+      return directive,&nbsp;&nbsp;<a href="ref_directive_function.html">function, return</a>,
+<a href="ref_directive_macro.html">macro, nested, return</a>
+    </dt>
+    <dt>
+      reverse built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_reverse">reverse</a>
+    </dt>
+    <dt>
+      right_pad built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_right_pad">right_pad</a>
+    </dt>
+    <dt>
+      root built-in,&nbsp;&nbsp;<a href="ref_builtins_node.html#ref_builtin_root">root</a>
+    </dt>
+    <dt>
+      round built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_rounding">round, floor, ceiling</a>
+    </dt>
+    <dt>
+      rounding,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_rounding">round, floor, ceiling</a>
+    </dt>
+    <dt>
+      rt directive,&nbsp;&nbsp;<a href="ref_directive_t.html">t, lt, rt</a>
+    </dt>
+    <dt>
+      rtf built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_rtf">rtf (deprecated)</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_S"></a>
+<h2 class="indexLabel">S</h2>
+<dl>
+    <dt>
+      scalar    </dt>
+      <dd><dl>
+        <dt>Java side, <a href="pgui_datamodel_scalar.html">Scalars</a></dt>
+      </dl></dd>
+    <dt>
+      scopes,&nbsp;&nbsp;<a href="pgui_misc_var.html">Variables, scopes</a>
+    </dt>
+    <dt>
+      security,&nbsp;&nbsp;<a href="pgui_misc_secureenv.html">Configuring security policy for FreeMarker</a>
+    </dt>
+      <dd><dl>
+        <dt>user-provided templates, <a href="app_faq.html#faq_template_uploading_security">FAQ</a></dt>
+      </dl></dd>
+    <dt>
+      sep directive,&nbsp;&nbsp;<a href="ref_directive_list.html#autoid_105">list, else, items, sep, break</a>
+    </dt>
+    <dt>
+      seq_contains built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_seq_contains">seq_contains</a>
+    </dt>
+    <dt>
+      seq_index_of built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_seq_index_of">seq_index_of</a>
+    </dt>
+    <dt>
+      seq_last_index_of built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_seq_last_index_of">seq_last_index_of</a>
+    </dt>
+    <dt>
+      sequence    </dt>
+      <dd><dl>
+        <dt>accessing subvariable, <a href="dgui_template_exp.html#dgui_template_exp_var_sequence">Retrieving data from a sequence</a></dt>
+        <dt>built-ins, <a href="ref_builtins_sequence.html">Built-ins for sequences</a></dt>
+        <dt>concatenate, <a href="dgui_template_exp.html#dgui_template_exp_sequenceop_cat">Concatenation</a></dt>
+        <dt>iterate, <a href="ref_directive_list.html">list, else, items, sep, break</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_parent.html#autoid_33">Containers</a></dt>
+        <dt>literal, <a href="dgui_template_exp.html#dgui_template_exp_direct_seuqence">Sequences</a></dt>
+        <dt>modify, <a href="app_faq.html#faq_modify_seq_and_map">FAQ</a></dt>
+        <dt>operations, <a href="dgui_template_exp.html#dgui_template_exp_sequenceop">Sequence operations</a></dt>
+        <dt>slice, <a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">Sequence slicing</a></dt>
+        <dt>sorting, <a href="ref_builtins_sequence.html#ref_builtin_sort">sort</a>, <a href="ref_builtins_sequence.html#ref_builtin_sort_by">sort_by</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_container">Containers</a></dt>
+      </dl></dd>
+    <dt>
+      sequence slice,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">Sequence slicing</a>
+    </dt>
+    <dt>
+      servlet    </dt>
+      <dd><dl>
+        <dt>include, <a href="pgui_misc_servlet.html#pgui_misc_servlet_include">Including content from other web application
+          resources</a></dt>
+      </dl></dd>
+    <dt>
+      Servlet,&nbsp;&nbsp;<a href="pgui_misc_servlet.html">Using FreeMarker with servlets</a>
+    </dt>
+    <dt>
+      setting,&nbsp;&nbsp;<a href="pgui_config_settings.html">Settings</a>
+    </dt>
+    <dt>
+      setting directive,&nbsp;&nbsp;<a href="ref_directive_setting.html">setting</a>
+    </dt>
+    <dt>
+      shared variable,&nbsp;&nbsp;<a href="pgui_config_sharedvariables.html">Shared variables</a>
+    </dt>
+    <dt>
+      short built-in,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>
+    </dt>
+    <dt>
+      size built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_size">size</a>
+    </dt>
+    <dt>
+      SLF4J,&nbsp;&nbsp;<a href="pgui_misc_logging.html">Logging</a>
+    </dt>
+    <dt>
+      sort_by built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_sort_by">sort_by</a>
+    </dt>
+    <dt>
+      sort built-in,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_sort">sort</a>
+    </dt>
+    <dt>
+      special variable,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      special variables,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_var_special">Special variables</a>
+    </dt>
+    <dt>
+      split built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_split">split</a>
+    </dt>
+    <dt>
+      square bracket syntax,&nbsp;&nbsp;<a href="dgui_misc_alternativesyntax.html">Alternative (square bracket) syntax</a>
+    </dt>
+    <dt>
+      starts_with built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_starts_with">starts_with</a>
+    </dt>
+    <dt>
+      static method    </dt>
+      <dd><dl>
+        <dt>accessing from templates, <a href="pgui_misc_beanwrapper.html#autoid_60">Bean wrapper</a></dt>
+      </dl></dd>
+    <dt>
+      stop directive,&nbsp;&nbsp;<a href="ref_directive_stop.html">stop</a>
+    </dt>
+    <dt>
+      storing templates,&nbsp;&nbsp;<a href="pgui_config_templateloading.html">Template loading</a>
+    </dt>
+    <dt>
+      strict syntax,&nbsp;&nbsp;<a href="ref_depr_oldsyntax.html">Old FTL syntax</a>
+    </dt>
+    <dt>
+      string    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_string.html">Built-ins for strings</a></dt>
+        <dt>concatenate, <a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a></dt>
+        <dt>interpolation, <a href="dgui_template_exp.html#dgui_template_exp_stringop_interpolation">Interpolation and concatenation</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_scalar.html">Scalars</a></dt>
+        <dt>literal, <a href="dgui_template_exp.html#dgui_template_exp_direct_string">Strings</a></dt>
+        <dt>operations, <a href="dgui_template_exp.html#dgui_template_exp_stringop">String operations</a></dt>
+        <dt>slice, <a href="dgui_template_exp.html#dgui_template_exp_stringop_slice">String slicing (substrings)</a></dt>
+        <dt>substring, <a href="dgui_template_exp.html#dgui_template_exp_stringop_slice">String slicing (substrings)</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Scalars</a></dt>
+      </dl></dd>
+    <dt>
+      string built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_string_for_number">string (when used with a numerical value)</a>,
+<a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>,
+<a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">string (when used with a boolean value)</a>
+    </dt>
+    <dt>
+      string slicing,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_stringop_slice">String slicing (substrings)</a>
+    </dt>
+    <dt>
+      string to boolean,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>
+    </dt>
+    <dt>
+      string to date,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      string to number,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_number">number</a>
+    </dt>
+    <dt>
+      string to time,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      Struts,&nbsp;&nbsp;<a href="pgui_misc_servlet.html">Using FreeMarker with servlets</a>
+    </dt>
+    <dt>
+      subsequence,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_seqenceop_slice">Sequence slicing</a>
+    </dt>
+    <dt>
+      substring,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_stringop_slice">String slicing (substrings)</a>,
+<a href="ref_builtins_string.html#ref_builtin_substring">substring (deprecated)</a>
+    </dt>
+    <dt>
+      substring built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_substring">substring (deprecated)</a>
+    </dt>
+    <dt>
+      subtraction,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_arit">Arithmetical calculations</a>
+    </dt>
+    <dt>
+      subvariable    </dt>
+      <dd><dl>
+        <dt>accessing, <a href="dgui_template_exp.html#dgui_template_exp_var_toplevel">Top-level variables</a>, <a href="dgui_template_exp.html#dgui_template_exp_var_hash">Retrieving data from a hash</a>, <a href="dgui_template_exp.html#dgui_template_exp_var_sequence">Retrieving data from a sequence</a></dt>
+      </dl></dd>
+    <dt>
+      switch built-in,&nbsp;&nbsp;<a href="ref_builtins_type_independent.html#ref_builtin_switch">switch</a>
+    </dt>
+    <dt>
+      switch directive,&nbsp;&nbsp;<a href="ref_directive_switch.html">switch, case, default, break</a>
+    </dt>
+    <dt>
+      switch expression,&nbsp;&nbsp;<a href="ref_builtins_type_independent.html#ref_builtin_switch">switch</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_T"></a>
+<h2 class="indexLabel">T</h2>
+<dl>
+    <dt>
+      tabular printing of sequences,&nbsp;&nbsp;<a href="ref_builtins_sequence.html#ref_builtin_chunk">chunk</a>
+    </dt>
+    <dt>
+      tag    </dt>
+      <dd><dl>
+        <dt>user-defined, <a href="dgui_misc_userdefdir.html">Defining your own directives</a></dt>
+      </dl></dd>
+    <dt>
+      taglib,&nbsp;&nbsp;<a href="pgui_misc_servlet.html#autoid_63">Using FreeMarker with servlets</a>
+    </dt>
+    <dt>
+      t directive,&nbsp;&nbsp;<a href="ref_directive_t.html">t, lt, rt</a>
+    </dt>
+    <dt>
+      template,&nbsp;&nbsp;<a href="dgui_template.html">The Template</a>
+    </dt>
+      <dd><dl>
+        <dt>Java side, <a href="pgui_quickstart_gettemplate.html">Get the template</a></dt>
+      </dl></dd>
+    <dt>
+      template_name,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      template caching,&nbsp;&nbsp;<a href="pgui_config_templateloading.html#pgui_config_templateloading_caching">Template caching</a>
+    </dt>
+    <dt>
+      template loaders,&nbsp;&nbsp;<a href="pgui_config_templateloading.html#autoid_38">Template loading</a>
+    </dt>
+    <dt>
+      template loading,&nbsp;&nbsp;<a href="pgui_config_templateloading.html">Template loading</a>
+    </dt>
+    <dt>
+      template name,&nbsp;&nbsp;<a href="pgui_config_templateloading.html#autoid_42">Template loading</a>
+    </dt>
+    <dt>
+      template path,&nbsp;&nbsp;<a href="pgui_config_templateloading.html#autoid_42">Template loading</a>
+    </dt>
+    <dt>
+      temporary variable,&nbsp;&nbsp;<a href="dgui_misc_var.html">Defining variables in the template</a>
+    </dt>
+    <dt>
+      ternary operator,&nbsp;&nbsp;<a href="ref_builtins_boolean.html#ref_builtin_then">then</a>
+    </dt>
+    <dt>
+      testing for missing,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing_test">Missing value test operator</a>
+    </dt>
+    <dt>
+      testing for null,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing_test">Missing value test operator</a>
+    </dt>
+    <dt>
+      testing for undefined,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing_test">Missing value test operator</a>
+    </dt>
+    <dt>
+      text,&nbsp;&nbsp;<a href="dgui_template_overallstructure.html">Overall structure</a>
+    </dt>
+    <dt>
+      then built-in,&nbsp;&nbsp;<a href="ref_builtins_boolean.html#ref_builtin_then">then</a>
+    </dt>
+    <dt>
+      thread-safety,&nbsp;&nbsp;<a href="pgui_misc_multithreading.html">Multithreading</a>
+    </dt>
+    <dt>
+      time    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_date.html">Built-ins for date/time/date-time values</a></dt>
+        <dt>Java API related difficulties, <a href="pgui_datamodel_scalar.html#autoid_31">Scalars</a></dt>
+        <dt>Java side, <a href="pgui_datamodel_scalar.html">Scalars</a></dt>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_scalar">Scalars</a></dt>
+      </dl></dd>
+    <dt>
+      time_format,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
+    </dt>
+    <dt>
+      time_zone,&nbsp;&nbsp;<a href="ref_directive_setting.html#autoid_125">setting</a>,
+<a href="ref_directive_setting.html#autoid_125">setting</a>
+    </dt>
+    <dt>
+      time built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>,
+<a href="ref_builtins_date.html#ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+          value)</a>
+    </dt>
+    <dt>
+      timestamp    </dt>
+      <dd><dl>
+        <dt>built-ins, <a href="ref_builtins_date.html">Built-ins for date/time/date-time values</a></dt>
+      </dl></dd>
+    <dt>
+      time to string,&nbsp;&nbsp;<a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>
+    </dt>
+    <dt>
+      transform,&nbsp;&nbsp;<a href="dgui_misc_userdefdir.html">Defining your own directives</a>
+    </dt>
+    <dt>
+      transform directive,&nbsp;&nbsp;<a href="ref_depr_transform.html">Transform directive</a>
+    </dt>
+    <dt>
+      tree nodes,&nbsp;&nbsp;<a href="pgui_datamodel_node.html">Node variables</a>
+    </dt>
+    <dt>
+      trees,&nbsp;&nbsp;<a href="pgui_datamodel_node.html">Node variables</a>
+    </dt>
+    <dt>
+      trim built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_trim">trim</a>
+    </dt>
+    <dt>
+      trimmer directives,&nbsp;&nbsp;<a href="ref_directive_nt.html">nt</a>,
+<a href="ref_directive_t.html">t, lt, rt</a>
+    </dt>
+    <dt>
+      type-casting,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_boolean">boolean</a>,
+<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>,
+<a href="ref_builtins_string.html#ref_builtin_number">number</a>,
+<a href="ref_builtins_number.html#ref_builtin_c">c (when used with numerical value)</a>,
+<a href="ref_builtins_number.html#ref_builtin_string_for_number">string (when used with a numerical value)</a>,
+<a href="ref_builtins_date.html#ref_builtin_date_datetype">date, time, datetime (when used with a date/time/date-time
+          value)</a>,
+<a href="ref_builtins_date.html#ref_builtin_string_for_date">string (when used with a date/time/date-time value)</a>,
+<a href="ref_builtins_boolean.html#ref_builtin_c_boolean">c (when used with boolean)</a>,
+<a href="ref_builtins_boolean.html#ref_builtin_string_for_boolean">string (when used with a boolean value)</a>,
+<a href="ref_builtins_expert.html#ref_builtin_numType">byte, double, float, int, long, short</a>,
+<a href="ref_builtins_expert.html#ref_builtin_numToDate">number_to_date, number_to_time, number_to_datetime</a>
+    </dt>
+    <dt>
+      type checking,&nbsp;&nbsp;<a href="ref_builtins_expert.html#ref_builtin_isType">is_...</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_U"></a>
+<h2 class="indexLabel">U</h2>
+<dl>
+    <dt>
+      uncap_first built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_uncap_first">uncap_first</a>
+    </dt>
+    <dt>
+      undefined variable,&nbsp;&nbsp;<a href="dgui_template_exp.html#dgui_template_exp_missing">Handling missing values</a>
+    </dt>
+    <dt>
+      upper_abc built-in,&nbsp;&nbsp;<a href="ref_builtins_number.html#ref_builtin_upper_abc">upper_abc</a>
+    </dt>
+    <dt>
+      upper_case built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_upper_case">upper_case</a>
+    </dt>
+    <dt>
+      url_escaping_charset,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_url">url</a>,
+<a href="ref_directive_setting.html#autoid_125">setting</a>
+    </dt>
+    <dt>
+      url_path built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_url_path">url_path</a>
+    </dt>
+    <dt>
+      url built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_url">url</a>
+    </dt>
+    <dt>
+      URL encoding,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_url">url</a>,
+<a href="ref_builtins_string.html#ref_builtin_url_path">url_path</a>
+    </dt>
+    <dt>
+      URL escaping,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_url">url</a>,
+<a href="ref_builtins_string.html#ref_builtin_url_path">url_path</a>
+    </dt>
+    <dt>
+      URL escaping charset,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>,
+<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      user-defined directive,&nbsp;&nbsp;<a href="dgui_misc_userdefdir.html">Defining your own directives</a>,
+<a href="ref_directive_userDefined.html">User-defined directive (&lt;@...&gt;)</a>
+    </dt>
+      <dd><dl>
+        <dt>the FTL value type, <a href="dgui_datamodel_types.html#dgui_datamodel_userdefdir">User-defined directives</a></dt>
+      </dl></dd>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_V"></a>
+<h2 class="indexLabel">V</h2>
+<dl>
+    <dt>
+      value,&nbsp;&nbsp;<a href="dgui_datamodel_basics.html#topic.value">What is a value?</a>
+    </dt>
+    <dt>
+      values built-in,&nbsp;&nbsp;<a href="ref_builtins_hash.html#ref_builtin_values">values</a>
+    </dt>
+    <dt>
+      variable,&nbsp;&nbsp;<a href="dgui_misc_var.html">Defining variables in the template</a>
+    </dt>
+    <dt>
+      variable number of parameters,&nbsp;&nbsp;<a href="ref_directive_macro.html#autoid_112">macro, nested, return</a>
+    </dt>
+    <dt>
+      variables,&nbsp;&nbsp;<a href="pgui_misc_var.html">Variables, scopes</a>
+    </dt>
+      <dd><dl>
+        <dt>names, <a href="app_faq.html#faq_legal_variable_names">FAQ</a></dt>
+      </dl></dd>
+    <dt>
+      variable scopes,&nbsp;&nbsp;<a href="pgui_misc_var.html">Variables, scopes</a>
+    </dt>
+    <dt>
+      version,&nbsp;&nbsp;<a href="ref_specvar.html">Special Variable Reference</a>
+    </dt>
+    <dt>
+      visit directive,&nbsp;&nbsp;<a href="ref_directive_visit.html">visit, recurse, fallback</a>
+    </dt>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_W"></a>
+<h2 class="indexLabel">W</h2>
+<dl>
+    <dt>
+      web_safe built-in,&nbsp;&nbsp;<a href="ref_depr_builtin.html">List of deprecated built-ins</a>
+    </dt>
+    <dt>
+      Web application framework,&nbsp;&nbsp;<a href="pgui_misc_servlet.html">Using FreeMarker with servlets</a>
+    </dt>
+    <dt>
+      white-space removal,&nbsp;&nbsp;<a href="dgui_misc_whitespace.html">White-space handling</a>
+    </dt>
+      <dd><dl>
+        <dt>compress, <a href="dgui_misc_whitespace.html#autoid_30">White-space handling</a>, <a href="ref_directive_compress.html">compress</a></dt>
+        <dt>stripping, <a href="dgui_misc_whitespace.html#dgui_misc_whitespace_stripping">White-space stripping</a>, <a href="ref_directive_ftl.html">ftl</a>, <a href="ref_directive_nt.html">nt</a></dt>
+        <dt>trimming, <a href="ref_directive_nt.html">nt</a>, <a href="ref_directive_t.html">t, lt, rt</a></dt>
+      </dl></dd>
+    <dt>
+      word_list built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_word_list">word_list</a>
+    </dt>
+    <dt>
+      wrapper,&nbsp;&nbsp;<a href="pgui_datamodel_basics.html">Basics</a>,
+<a href="pgui_datamodel_objectWrapper.html">Object wrappers</a>
+    </dt>
+    <dt>
+      wrapping    </dt>
+      <dd><dl>
+        <dt>beans, <a href="pgui_misc_beanwrapper.html">Bean wrapper</a></dt>
+        <dt>jython, <a href="pgui_misc_jythonwrapper.html">Jython wrapper</a></dt>
+        <dt>reflection, <a href="pgui_misc_beanwrapper.html">Bean wrapper</a></dt>
+      </dl></dd>
+</dl></div>
+<div class="indexdiv">
+<a name="idx_X"></a>
+<h2 class="indexLabel">X</h2>
+<dl>
+    <dt>
+      xhtml built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_xhtml">xhtml (deprecated)</a>
+    </dt>
+    <dt>
+      XML    </dt>
+      <dd><dl>
+        <dt>declarative processing, <a href="xgui_declarative.html">Declarative XML processing</a></dt>
+        <dt>exposing, <a href="xgui_expose.html">Exposing XML documents</a></dt>
+        <dt>imperative processing, <a href="xgui_imperative.html">Imperative XML processing</a></dt>
+      </dl></dd>
+    <dt>
+      xml built-in,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_xml">xml (deprecated)</a>
+    </dt>
+    <dt>
+      XML encoding,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html">Auto-escaping and output formats</a>
+    </dt>
+    <dt>
+      XML escaping,&nbsp;&nbsp;<a href="dgui_misc_autoescaping.html">Auto-escaping and output formats</a>
+    </dt>
+    <dt>
+      XML namespace    </dt>
+      <dd><dl>
+        <dt>in imperative processing, <a href="xgui_imperative_learn.html#autoid_149">Basics</a></dt>
+      </dl></dd>
+    <dt>
+      XML namespaces    </dt>
+      <dd><dl>
+        <dt>in declarative processing, <a href="xgui_declarative_details.html#autoid_154">Details</a></dt>
+      </dl></dd>
+    <dt>
+      XML Schema date parsing,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      XML Schema date rendering,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
+    </dt>
+    <dt>
+      XML Schema dateTime rendering,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
+    </dt>
+    <dt>
+      XML Schema time parsing,&nbsp;&nbsp;<a href="ref_builtins_string.html#ref_builtin_string_date">date, time, datetime</a>
+    </dt>
+    <dt>
+      XML Schema time rendering,&nbsp;&nbsp;<a href="ref_directive_setting.html#topic_date_format_settings">setting</a>
+    </dt>
+    <dt>
+      XSLT,&nbsp;&nbsp;<a href="xgui_declarative.html">Declarative XML processing</a>
+    </dt>
+</dl></div>
+<div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="gloss.html"><span>Previous</span></a><span class="paging-arrow disabled next"><span>Next</span></span></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>


[30/50] incubator-freemarker-site git commit: 2.3.26-nightly docs preview

Posted by dd...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_servlet.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_servlet.html b/builds/2.3.26-nightly/pgui_misc_servlet.html
new file mode 100644
index 0000000..d75da3a
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_servlet.html
@@ -0,0 +1,691 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Using FreeMarker with servlets - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Using FreeMarker with servlets">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_servlet.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_servlet.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_servlet.html"><span itemprop="name">Using FreeMarker with servlets</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Using FreeMarker with servlets"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_logging.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_secureenv.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_servlet" itemprop="headline">Using FreeMarker with servlets</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#pgui_misc_servlet_model2" data-menu-target="pgui_misc_servlet_model2">Using FreeMarker for "Model 2"</a></li><li><a class="page-menu-link" href="#pgui_misc_servlet_include" data-menu-target="pgui_misc_servlet_include">Including content from other web application
+resources</a></li><li><a class="page-menu-link" href="#autoid_63" data-menu-target="autoid_63">Using JSP custom tags in FTL</a></li><li><a class="page-menu-link" href="#autoid_64" data-menu-target="autoid_64">Embed FTL into JSP pages</a></li></ul> </div><a name="topic.servlet"></a><p>In a fundamental sense, using FreeMarker in the web application
+        space is no different from anywhere else; FreeMarker writes its output
+        to a <code class="inline-code">Writer</code> that you pass to the
+        <code class="inline-code">Template.process</code> method, and it does not care if
+        that <code class="inline-code">Writer</code> prints to the console or to a file or
+        to the output stream of <code class="inline-code">HttpServletResponse</code>.
+        FreeMarker knows nothing about servlets and Web; it just merges Java
+        object with template files and generates text output from them. From
+        here, it is up to you how to build a Web application around
+        this.</p><p>But, probably you want to use FreeMarker with some already
+        existing Web application framework. Many frameworks rely on the
+        "Model 2" architecture, where JSP pages handle
+        presentation. If you use such a framework (for example, <a href="http://jakarta.apache.org/struts">Apache Struts</a>),
+        then read on. For other frameworks please refer to the documentation
+        of the framework.</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_misc_servlet_model2">Using FreeMarker for "Model 2"</h2>
+
+
+          <p>Many frameworks follow the strategy that the HTTP request is
+          dispatched to user-defined "action" classes that put
+          data into <code class="inline-code">ServletContext</code>,
+          <code class="inline-code">HttpSession</code> and
+          <code class="inline-code">HttpServletRequest</code> objects as attributes, and
+          then the request is forwarded by the framework to a JSP page (the
+          view) that will generate the HTML page using the data sent with the
+          attributes. This is often referred as Model 2.</p>
+
+          <p class="center-img">            <img src="figures/model2sketch.png" alt="Figure">          </p>
+
+
+          <p>With these frameworks you can simply use FTL files instead of
+          JSP files. But, since your servlet container (Web application
+          server), unlike with JSP files, does not know out-of-the-box what to
+          do with FTL files, a little extra configuring is needed for your Web
+          application:</p>
+
+          <div class="orderedlist"><ol type="1">
+            <li>
+              <p>Copy <code class="inline-code">freemarker.jar</code> (from the
+              <code class="inline-code">lib</code> directory of the FreeMarker distribution)
+              into the <code class="inline-code">WEB-INF/lib</code> directory of your Web
+              application.</p>
+            </li>
+
+            <li>
+              <p>Insert the following section to the
+              <code class="inline-code">WEB-INF/web.xml</code> file of your Web application
+              (and adjust it if required):</p>
+            </li>
+          </ol></div>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;servlet&gt;
+  &lt;servlet-name&gt;freemarker&lt;/servlet-name&gt;
+  &lt;servlet-class&gt;<strong>freemarker.ext.servlet.FreemarkerServlet</strong>&lt;/servlet-class&gt;
+
+  &lt;!--
+    Init-param documentation:
+    <a href="http://freemarker.org/docs/api/freemarker/ext/servlet/FreemarkerServlet.html">http://freemarker.org/docs/api/freemarker/ext/servlet/FreemarkerServlet.html</a>
+  --&gt;
+
+  &lt;!-- FreemarkerServlet settings: --&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;TemplatePath&lt;/param-name&gt;
+    &lt;param-value&gt;/&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;NoCache&lt;/param-name&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;ResponseCharacterEncoding&lt;/param-name&gt;
+    &lt;!-- Use the output_encoding setting of FreeMarker: --&gt;
+    &lt;param-value&gt;fromTemplate&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;ExceptionOnMissingTemplate&lt;/param-name&gt;
+    &lt;!-- true =&gt; HTTP 500 on missing template, instead of HTTP 404. --&gt;
+    &lt;param-value&gt;true&lt;/param-value&gt;
+  &lt;/init-param&gt;
+
+  &lt;!-- FreeMarker engine settings: --&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;incompatible_improvements&lt;/param-name&gt;
+    &lt;param-value&gt;2.3.25&lt;/param-value&gt;
+    &lt;!--
+      Recommended to set to a high value.
+      See: http://freemarker.org/docs/pgui_config_incompatible_improvements.html
+    --&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;template_exception_handler&lt;/param-name&gt;
+    &lt;!-- Use &quot;html_debug&quot; during development! --&gt;
+    &lt;param-value&gt;rethrow&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;template_update_delay&lt;/param-name&gt;
+    &lt;!-- Use 0 during development! Consider what value you need otherwise. --&gt;
+    &lt;param-value&gt;30 s&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;default_encoding&lt;/param-name&gt;
+    &lt;!-- The encoding of the template files: --&gt;
+    &lt;param-value&gt;UTF-8&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;output_encoding&lt;/param-name&gt;
+    &lt;!-- The encoding of the template output; Note that you must set
+         &quot;ResponseCharacterEncodring&quot; to &quot;fromTemplate&quot; for this to work! --&gt;
+    &lt;param-value&gt;UTF-8&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;locale&lt;/param-name&gt;
+    &lt;!-- Influences number and date/time formatting, etc. --&gt;
+    &lt;param-value&gt;en_US&lt;/param-value&gt;
+  &lt;/init-param&gt;
+  &lt;init-param&gt;
+    &lt;param-name&gt;number_format&lt;/param-name&gt;
+    &lt;param-value&gt;0.##########&lt;/param-value&gt;
+  &lt;/init-param&gt;
+
+  &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+&lt;/servlet&gt;
+
+&lt;servlet-mapping&gt;
+  &lt;servlet-name&gt;freemarker&lt;/servlet-name&gt;
+  &lt;url-pattern&gt;<strong>*.ftl</strong>&lt;/url-pattern&gt;
+  &lt;!-- HTML and XML auto-escaped if incompatible_improvements &gt;= 2.3.24: --&gt;
+  &lt;url-pattern&gt;<strong>*.ftlh</strong>&lt;/url-pattern&gt;
+  &lt;url-pattern&gt;<strong>*.ftl</strong>x&lt;/url-pattern&gt;
+&lt;/servlet-mapping&gt;
+
+<em>...</em>
+
+&lt;!--
+  Prevent the visiting of MVC Views from outside the servlet container.
+  RequestDispatcher.forward/include should, and will still work.
+  Removing this may open security holes!
+--&gt;
+&lt;security-constraint&gt;
+  &lt;web-resource-collection&gt;
+    &lt;web-resource-name&gt;FreeMarker MVC Views&lt;/web-resource-name&gt;
+    &lt;url-pattern&gt;*.ftl&lt;/url-pattern&gt;
+    &lt;url-pattern&gt;*.ftlh&lt;/url-pattern&gt;
+    &lt;url-pattern&gt;*.ftlx&lt;/url-pattern&gt;
+  &lt;/web-resource-collection&gt;
+  &lt;auth-constraint&gt;
+    &lt;!-- Nobody is allowed to visit these directly. --&gt;
+  &lt;/auth-constraint&gt;
+&lt;/security-constraint&gt;</pre></div>
+
+          <p>After this, you can use FTL files (<code class="inline-code">*.ftl</code>)
+          in the same manner as JSP (<code class="inline-code">*.jsp</code>) files. (Of
+          course you can choose another extension besides
+          <code class="inline-code">ftl</code>; it is just the convention)</p>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>How does it work? Let&#39;s examine how JSP-s work. Many servlet
+            container handles JSP-s with a servlet that is mapped to the
+            <code class="inline-code">*.jsp</code> request URL pattern. That servlet will
+            receive all requests where the request URL ends with
+            <code class="inline-code">.jsp</code>, find the JSP file based on the request
+            URL, and internally compiles it to a <code class="inline-code">Servlet</code>,
+            and then call the generated servlet to generate the page. The
+            <code class="inline-code">FreemarkerServlet</code> mapped here to the
+            <code class="inline-code">*.ftl</code> URL pattern does the same, except that
+            FTL files are not compiled to <code class="inline-code">Servlet</code>-s, but to
+            <code class="inline-code">Template</code> objects, and then the
+            <code class="inline-code">process</code> method of <code class="inline-code">Template</code>
+            will be called to generate the page.</p>
+            </div>
+
+
+          <p><a name="topic.servlet.scopeAttr"></a>For example, instead
+          of this JSP file (note that it heavily uses Struts tag-libs to save
+          designers from embedded Java monsters):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;%@ taglib uri=&quot;/WEB-INF/struts-bean.tld&quot; prefix=&quot;bean&quot; %&gt;
+&lt;%@ taglib uri=&quot;/WEB-INF/struts-logic.tld&quot; prefix=&quot;logic&quot; %&gt;
+
+&lt;html&gt;
+&lt;head&gt;&lt;title&gt;Acmee Products International&lt;/title&gt;
+&lt;body&gt;
+  &lt;h1&gt;Hello &lt;bean:write name=&quot;user&quot;/&gt;!&lt;/h1&gt;
+  &lt;p&gt;These are our latest offers:
+  &lt;ul&gt;
+    &lt;logic:iterate name=&quot;latestProducts&quot; id=&quot;prod&quot;&gt;
+      &lt;li&gt;&lt;bean:write name=&quot;prod&quot; property=&quot;name&quot;/&gt;
+        for &lt;bean:write name=&quot;prod&quot; property=&quot;price&quot;/&gt; Credits.
+    &lt;/logic:iterate&gt;
+  &lt;/ul&gt;
+&lt;/body&gt;
+&lt;/html&gt;</pre></div>
+
+          <p>you can use this FTL file (use <code class="inline-code">ftl</code> file
+          extension instead of <code class="inline-code">jsp</code>):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;html&gt;
+&lt;head&gt;&lt;title&gt;Acmee Products International&lt;/title&gt;
+&lt;body&gt;
+  &lt;h1&gt;Hello ${user}!&lt;/h1&gt;
+  &lt;p&gt;These are our latest offers:
+  &lt;ul&gt;
+    &lt;#list latestProducts as prod&gt;
+      &lt;li&gt;${prod.name} for ${prod.price} Credits.
+    &lt;/#list&gt;
+  &lt;/ul&gt;
+&lt;/body&gt;
+&lt;/html&gt;</pre></div>
+
+            <div class="callout warning">
+    <strong class="callout-label">Warning!</strong>
+
+            <p>In FreeMarker <code class="inline-code">&lt;html:form
+            action=&quot;/query&quot;&gt;<em class="code-color">...</em>&lt;/html:form&gt;</code>
+            is just static text, so it is printed to the output as is, like
+            any other XML or HTML markup. JSP tags are just FreeMarker
+            directives, nothing special, so you <em>use FreeMarker
+            syntax</em> for calling them, not JSP syntax:
+            <code class="inline-code">&lt;@html.form
+            action=&quot;/query&quot;&gt;<em class="code-color">...</em>&lt;/@html.form&gt;</code>.
+            Note that in the FreeMarker syntax you <em>don&#39;t use
+            <code class="inline-code">${<em class="code-color">...</em>}</code> in
+            parameters</em> as in JSP, and you <em>don&#39;t quote the
+            parameter values</em>. So this is
+            <em>WRONG</em>:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- WRONG: --&gt;
+&lt;@my.jspTag color=&quot;${aVariable}&quot; name=&quot;aStringLiteral&quot;
+            width=&quot;100&quot; height=${a+b} /&gt;</pre></div>
+
+            <p>and this is good:</p>
+
+            
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#-- Good: --&gt;
+&lt;@my.jspTag color=aVariable name=&quot;aStringLiteral&quot;
+            width=100 height=a+b /&gt;</pre></div>
+            </div>
+
+
+          <p>In both templates, when you refer to <code class="inline-code">user</code>
+          and <code class="inline-code">latestProduct</code>, it will first try to find a
+          variable with that name that was created in the template (like
+          <code class="inline-code">prod</code>; if you master JSP: a page scope attribute).
+          If that fails, it will try to look up an attribute with that name in
+          the <code class="inline-code">HttpServletRequest</code>, and if it is not there
+          then in the <code class="inline-code">HttpSession</code>, and if it still doesn&#39;t
+          find it then in the <code class="inline-code">ServletContext</code>. In the case
+          of FTL this works because <code class="inline-code">FreemarkerServlet</code>
+          builds the data-model from the attributes of the mentioned 3
+          objects. That is, in this case the root hash is not a
+          <code class="inline-code">java.util.Map</code> (as it was in some example codes in
+          this manual), but
+          <code class="inline-code">ServletContext</code>+<code class="inline-code">HttpSession</code>+<code class="inline-code">HttpServletRequest</code>;
+          FreeMarker is pretty flexible about what the data-model is. So if
+          you want to put variable <code class="inline-code">&quot;name&quot;</code> into the
+          data-model, then you call
+          <code class="inline-code">servletRequest.setAttribute(&quot;name&quot;, &quot;Fred&quot;)</code>; this
+          is the logic of Model 2, and FreeMarker adapts itself to it.</p>
+
+          <p><code class="inline-code">FreemarkerServlet</code> also puts 3 hashes into
+          the data-model, by which you can access the attributes of the 3
+          objects directly. The hash variables are:
+          <code class="inline-code">Request</code>, <code class="inline-code">Session</code>,
+          <code class="inline-code">Application</code> (corresponds to
+          <code class="inline-code">ServletContext</code>). It also exposes another hash
+          named <code class="inline-code">RequestParameters</code> that provides access to
+          the parameters of the HTTP request.</p>
+
+          <p><code class="inline-code">FreemarkerServlet</code> has various init-params.
+          It can be set up to load templates from an arbitrary directory, from
+          the classpath, or relative to the Web application directory. You can
+          set the charset used for templates, the default locale used by
+          templates, what object wrapper do you want to use, etc.</p>
+
+          <p><code class="inline-code">FreemarkerServlet</code> is easily tailored to
+          special needs through subclassing. Say, if you need to have
+          additional variables available in your data-model for all templates,
+          subclass the servlet and override the
+          <code class="inline-code">preTemplateProcess()</code> method to shove any
+          additional data you need into the model before the template gets
+          processed. Or subclass the servlet, and set these globally available
+          variables as <a href="pgui_config_sharedvariables.html">shared
+          variables</a> in the <code class="inline-code">Configuration</code>.</p>
+
+          <p>For more information please read the Java API documentation of
+          the class.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="pgui_misc_servlet_include">Including content from other web application
+          resources</h2>
+
+
+          
+
+          
+
+          
+
+          
+
+          <p>You can use the <code class="inline-code">&lt;@include_page
+          path=&quot;...&quot;/&gt;</code> custom directive provided by the
+          <code class="inline-code">FreemarkerServlet</code> (since 2.3.15) to include the
+          contents of another web application resource into the output; this
+          is often useful to integrate output of JSP pages (living alongside
+          the FreeMarker templates in the same web server) into the FreeMarker
+          template output. Using:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@include_page path=&quot;path/to/some.jsp&quot;/&gt;</pre></div>
+
+          <p>is identical to using this tag in JSP:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;jsp:include page=&quot;path/to/some.jsp&quot;&gt;</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p><code class="inline-code">&lt;@include_page ...&gt;</code> is not to be
+            confused with <code class="inline-code">&lt;#include ...&gt;</code>, as the last
+            is for including FreeMarker templates without involving the
+            Servlet container. An <code class="inline-code">&lt;#include ...&gt;</code>-ed
+            template shares the template processing state with the including
+            template, such as the data-model and the template-language
+            variables, while <code class="inline-code">&lt;@include_page ...&gt;</code>
+            starts an independent HTTP request processing.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Some Web Application Frameworks provide their own solution
+            for this, in which case you possibly should use that instead. Also
+            some Web Application Frameworks don&#39;t use
+            <code class="inline-code">FreemarkerServlet</code>, so
+            <code class="inline-code">include_page</code> is not available.</p>
+            </div>
+
+
+          <p>The path can be relative or absolute. Relative paths are
+          interpreted relative to the URL of the current HTTP request (one
+          that triggered the template processing), while absolute paths are
+          absolute in the current servlet context (current web application).
+          You can not include pages from outside the current web application.
+          Note that you can include any page, not just a JSP page; we just
+          used page with path ending in <code class="inline-code">.jsp</code> as an
+          illustration.</p>
+
+          <p>In addition to the <code class="inline-code">path</code> parameter, you can
+          also specify an optional parameter named
+          <code class="inline-code">inherit_params</code> with a boolean value (defaults to
+          true when not specified) that specifies whether the included page
+          will see the HTTP request parameters of the current request or
+          not.</p>
+
+          <p>Finally, you can specify an optional parameter named
+          <code class="inline-code">params</code> that specifies new request parameters that
+          the included page will see. In case inherited parameters are passed
+          too, the values of specified parameters will get prepended to the
+          values of inherited parameters of the same name. The value of
+          <code class="inline-code">params</code> must be a hash, with each value in it
+          being either a string, or a sequence of strings (if you need
+          multivalued parameters). Here&#39;s a full example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;@include_page path=&quot;path/to/some.jsp&quot; inherit_params=true params={&quot;foo&quot;: &quot;99&quot;, &quot;bar&quot;: [&quot;a&quot;, &quot;b&quot;]}/&gt;</pre></div>
+
+          <p>This will include the page
+          <code class="inline-code">path/to/some.jsp</code>, pass it all request parameters
+          of the current request, except for &quot;foo&quot; and &quot;bar&quot;, which will be
+          set to &quot;99&quot; and multi-value of &quot;a&quot;, &quot;b&quot;, respectively. In case the
+          original request already had values for these parameters, the new
+          values will be prepended to the existing values. I.e. if &quot;foo&quot; had
+          values &quot;111&quot; and &quot;123&quot;, then it will now have values &quot;99&quot;, &quot;111&quot;,
+          &quot;123&quot;.</p>
+
+          <p><span class="marked-for-programmers">It is in fact possible to pass
+          non-string values for parameter values within
+          <code class="inline-code">params</code>. Such a value will be converted to a
+          suitable Java object first (i.e. a Number, a Boolean, a Date, etc.),
+          and then its Java <code class="inline-code">toString()</code> method will be used
+          to obtain the string value. It is better to not rely on this
+          mechanism, though, and instead explicitly ensure that parameter
+          values that aren&#39;t strings are converted to strings on the template
+          level where you have control over formatting using the
+          <code class="inline-code">?string</code> and <code class="inline-code">?c</code> built-ins.
+          </span></p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_63">Using JSP custom tags in FTL</h2>
+
+
+          
+
+          
+
+          
+
+          <p><code class="inline-code">FreemarkerServlet</code> puts the
+          <code class="inline-code">JspTaglibs</code> hash into the data-model, which you
+          can use to access JSP taglibs. The JSP custom tags will be
+          accessible as plain user-defined directives, and the custom EL
+          functions (since FreeMarker 2.3.22) as methods. For example, for
+          this JSP file:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;%@ page contentType=&quot;text/html;charset=ISO-8859-2&quot; language=&quot;java&quot;%&gt;
+&lt;%@ taglib prefix=&quot;e&quot; uri=&quot;/WEB-INF/example.tld&quot; %&gt;
+&lt;%@ taglib prefix=&quot;oe&quot; uri=&quot;/WEB-INF/other-example.tld&quot; %&gt;
+&lt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %&gt;
+&lt;%@ taglib prefix=&quot;fn&quot; uri=&quot;http://java.sun.com/jsp/jstl/functions&quot; %&gt;
+
+&lt;%-- Custom JSP tags and functions: --%&gt;
+
+&lt;e:someTag numParam=&quot;123&quot; boolParam=&quot;true&quot; strParam=&quot;Example&quot; anotherParam=&quot;${someVar}&quot;&gt;
+  ...
+&lt;/e:someTag&gt;
+
+&lt;oe:otherTag /&gt;
+
+${e:someELFunction(1, 2)}
+
+
+&lt;%-- JSTL: --%&gt;
+
+&lt;c:if test=&quot;${foo}&quot;&gt;
+  Do this
+&lt;/c:if&gt;
+
+&lt;c:choose&gt;
+  &lt;c:when test=&quot;${x == 1}&quot;&gt;
+      Do this
+  &lt;/c:when&gt;
+  &lt;c:otherwise&gt;
+      Do that
+  &lt;/c:otherwise&gt;
+&lt;/c:choose&gt;
+
+&lt;c:forEach var=&quot;person&quot; items=&quot;${persons}&quot;&gt;
+  ${person.name}
+&lt;/c:forEach&gt;
+
+${fn:trim(bar)}</pre></div>
+
+          <p>the about equivalent FTL is:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign e=JspTaglibs[&quot;/WEB-INF/example.tld&quot;]&gt;
+&lt;#assign oe=JspTaglibs[&quot;/WEB-INF/other-example.tld&quot;]&gt;
+
+&lt;#-- Custom JSP tags and functions: --#&gt;
+
+&lt;@e.someTag numParam=123 boolParam=true strParam=&quot;Example&quot; anotherParam=someVar&gt;
+  ...
+&lt;/@e.someTag&gt;
+
+&lt;@oe.otherTag /&gt;
+
+${e.someELFunction(1, 2)}
+
+
+&lt;#-- JSTL - Instead, use native FTL constructs: --&gt;
+
+&lt;#if foo&gt;
+  Do this
+&lt;/#if&gt;
+
+&lt;#if x == 1&gt;
+  Do this
+&lt;#else&gt;
+  Do that
+&lt;/#if&gt;
+
+&lt;#list persons as person&gt;
+  ${person.name}
+&lt;/#list&gt;
+
+${bar?trim}</pre></div>
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p>Parameter values don&#39;t use quotation and
+            <code class="inline-code">&quot;${<em class="code-color">...</em>}&quot;</code> like in
+            JSP. See more explanation later.</p>
+            </div>
+
+
+            <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+            <p><code class="inline-code">JspTaglibs</code> is not a core FreeMarker
+            feature; it only exists when the template is called through the
+            <code class="inline-code">FreemarkerServlet</code>. That&#39;s because JSP
+            tags/functions assume a servlet environment (FreeMarker doesn&#39;t),
+            plus some Servlet concepts have to be emulated in the special
+            FreeMarker data-model that <code class="inline-code">FreemarkerServlet</code>
+            builds. Many modern frameworks use FreeMarker on a pure way, not
+            through <code class="inline-code">FreemarkerServlet</code>.</p>
+            </div>
+
+
+          <p>Since JSP custom tags are written to operate in JSP
+          environment, they assume that variables (often referred as
+          "beans" in JSP world) are stored in 4 scopes: page
+          scope, request scope, session scope and application scope. FTL has
+          no such notation (the 4 scopes), but
+          <code class="inline-code">FreemarkerServlet</code> provides emulated JSP
+          environment for the custom JSP tags, which maintains correspondence
+          between the "beans" of JSP scopes and FTL variables.
+          For the custom JSP tags, the request, session and application scopes
+          are exactly the same as with real JSP: the attributes of the
+          <code class="inline-code">javax.servlet.ServletContext</code>,
+          <code class="inline-code">HttpSession</code> and <code class="inline-code">ServletRequest</code>
+          objects. From the FTL side you see these 3 scopes together as the
+          data-model, as it was explained earlier. The page scope corresponds
+          to the FTL global variables (see the <a href="ref_directive_global.html#ref.directive.global"><code>global</code>
+          directive</a>). That is, if you create a variable with the
+          <code class="inline-code">global</code> directive, it will be visible for the
+          custom tags as page scope variable through the emulated JSP
+          environment. Also, if a JSP-tag creates a new page scope variable,
+          the result will be the same as if you create a variable with the
+          <code class="inline-code">global</code> directive. Note that the variables in the
+          data-model are not visible as page-scope attributes for the JSP
+          tags, despite that they are globally visible, since the data-model
+          corresponds to the request, session and application scopes, not the
+          page-scope.</p>
+
+          <p>On JSP pages you quote all attribute values, it does not mater
+          if the type of the parameter is string or boolean or number. But
+          since custom tags are accessible in FTL templates as user-defined
+          FTL directives, you have to use the FTL syntax rules inside the
+          custom tags, not the JSP rules. So when you specify the value of an
+          "attribute", then on the right side of the
+          <code class="inline-code">=</code> there is an <a href="dgui_template_exp.html">FTL expression</a>. Thus,
+          <em>you must not quote boolean and numerical parameter
+          values</em> (e.g. <code class="inline-code">&lt;@tiles.insert
+          page=&quot;/layout.ftl&quot; flush=true/&gt;</code>), or they are
+          interpreted as string values, and this will cause a type mismatch
+          error when FreeMarker tries to pass the value to the custom tag that
+          expects non-string value. Also note that, naturally, you can use any
+          FTL expression as attribute value, such as variables, calculated
+          values, etc. (e.g. <code class="inline-code">&lt;@tiles.insert page=layoutName
+          flush=foo &amp;&amp; bar/&gt;</code>).</p>
+
+          <p>FreeMarker does not rely on the JSP support of the servlet
+          container in which it is run when it uses JSP taglibs since it
+          implements its own lightweight JSP runtime environment. There is
+          only one small detail to pay attention to: to enable the FreeMarker
+          JSP runtime environment to dispatch events to JSP taglibs that
+          register event listeners in their TLD files, you should add this to
+          the <code class="inline-code">WEB-INF/web.xml</code> of your Web
+          application:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">&lt;listener&gt;
+  &lt;listener-class&gt;freemarker.ext.jsp.EventForwarding&lt;/listener-class&gt;
+&lt;/listener&gt;</pre></div>
+
+          <p>Note that you can use JSP taglibs with FreeMarker even if the
+          servlet container has no native JSP support, just make sure that the
+          <code class="inline-code">javax.servlet.jsp.*</code> packages for JSP 2.0 (or
+          later) are available to your Web application.</p>
+
+          <p>As of this writing, JSP features up to JSP 2.1 are
+          implemented, except the &quot;tag files&quot; feature of JSP 2 (i.e., custom
+          JSP tags <em>implemented</em> in JSP language). The tag
+          files had to be compiled to Java classes to be usable under
+          FreeMarker.</p>
+
+          <p><code class="inline-code">JspTaglibs[<em class="code-color">uri</em>]</code>
+          will have to find the TLD for the URI specified, just like JSP&#39;s
+          <code class="inline-code">@taglib</code> directive has to. For this, it implements
+          the TLD discovery mechanism described in the JSP specification. See
+          more there, but in a nutshell, it searches TLD-s in
+          <code class="inline-code">WEB-INF/web.xml</code> <code class="inline-code">taglib</code>
+          elements, at <code class="inline-code">WEB-INF/**/*.tld</code>, and in
+          <code class="inline-code">WEB-INF/lib/*.{jar,zip}/META-INF/**/*.tld</code>.
+          Additionally, it can discover TLD-s that are visible for the class
+          loader even if they are outside the WAR structure, when you set that
+          up with the <code class="inline-code">MetaInfTldSources</code> and/or
+          <code class="inline-code">ClasspathTlds</code>
+          <code class="inline-code">FreemarkerServlet</code> init-params (since 2.3.22). See
+          the Java API documentation of <code class="inline-code">FreemarkerServlet</code>
+          for the description of these. It&#39;s also possible to set these from
+          Java system properties, which can be handy when you want to change
+          these in the Eclipse run configuration without modifying the
+          <code class="inline-code">web.xml</code>; again, see the
+          <code class="inline-code">FreemarkerServlet</code> API docs.
+          <code class="inline-code">FreemarkerServlet</code> also recognizes the
+          <code class="inline-code">org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</code>
+          servlet context attribute, and adds the entries from it to
+          <code class="inline-code">MetaInfTldSources</code>.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_64">Embed FTL into JSP pages</h2>
+
+
+          
+
+          <p>There is a taglib that allows you to put FTL fragments into
+          JSP pages. The embedded FTL fragment can access the attributes
+          (Beans) of the 4 JSP scopes. You can find a working example and the
+          taglib in the FreeMarker distribution.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_logging.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_secureenv.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_var.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_var.html b/builds/2.3.26-nightly/pgui_misc_var.html
new file mode 100644
index 0000000..2d36821
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_var.html
@@ -0,0 +1,113 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Variables, scopes - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Variables, scopes">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_var.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_var.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_var.html"><span itemprop="name">Variables, scopes</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Variables, scopes"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_charset.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_var" itemprop="headline">Variables, scopes</h1>
+</div></div><p>This chapter explains what happens when a template tries to
+        access a variable, and how the variables are stored.</p><p>When you call <code class="inline-code">Template.process</code> it will
+        internally create an <code class="inline-code">Environment</code> object that will
+        be in use until <code class="inline-code">process</code> returns. This object stores
+        the runtime state of template processing. Among other things, it
+        stores the variables created by the template with directives like
+        <code class="inline-code">assign</code>, <code class="inline-code">macro</code>,
+        <code class="inline-code">local</code> or <code class="inline-code">global</code>. It never tries
+        to modify the data-model object that you pass to the
+        <code class="inline-code">process</code> call, nor does it create or replace shared
+        variables stored in the configuration.</p><p>When you try to read a variable, FreeMarker will seek the
+        variable in this order, and stops when it finds a variable with the
+        right name:</p><div class="orderedlist"><ol type="1">
+          <li>
+            <p>In the Environment:</p>
+
+            <div class="orderedlist"><ol type="1">
+              <li>
+                <p>If you are in a loop, in the set of loop variables. Loop
+                variables are the variables created by directives like
+                <code class="inline-code">list</code>.</p>
+              </li>
+
+              <li>
+                <p>If you are inside a macro, in the local variable set of
+                the macro. Local variables can be created with the
+                <code class="inline-code">local</code> directive. Also, the parameters of
+                macros are local variables.</p>
+              </li>
+
+              <li>
+                <p>In the current <a href="dgui_misc_namespace.html">namespace</a>. You can put
+                variables into a namespace with the <code class="inline-code">assign</code>
+                directive.</p>
+              </li>
+
+              <li>
+                <p>In the set of variables created with
+                <code class="inline-code">global</code> directive. FTL handles these
+                variables as if they were normal members of the data-model.
+                That is, they are visible in all namespaces, and you can
+                access them as if they would be in the data-model.</p>
+              </li>
+            </ol></div>
+          </li>
+
+          <li>
+            <p>In the data-model object you have passed to the
+            <code class="inline-code">process</code> method</p>
+          </li>
+
+          <li>
+            <p>In the set of shared variables stored in the
+            <code class="inline-code">Configuration</code></p>
+          </li>
+        </ol></div><p>In practice, from the viewpoint of template authors these 6
+        layers are only 4 layers, since from that viewpoint the last 3 layers
+        (variables created with <code class="inline-code">global</code>, the actual
+        data-model object, shared variables) together constitute the set of
+        global variables.</p><p>Note that it is possible to get variables from a specific layer
+        in FTL with <a href="ref_specvar.html">special
+        variables</a>.</p><div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_charset.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_misc_xml_legacy.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_misc_xml_legacy.html b/builds/2.3.26-nightly/pgui_misc_xml_legacy.html
new file mode 100644
index 0000000..6adc019
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_misc_xml_legacy.html
@@ -0,0 +1,505 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-section">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Legacy XML wrapper implementation - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Legacy XML wrapper implementation">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_misc_xml_legacy.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_misc_xml_legacy.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc.html"><span itemprop="name">Miscellaneous</span></a></li><li class="step-3" itemprop="it
 emListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_misc_xml_legacy.html"><span itemprop="name">Legacy XML wrapper implementation</span></a></li></ul><div class="bookmarks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Miscellaneous","Legacy XML wrapper implementation"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui_misc_secureenv.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_ant.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-section1" id="pgui_misc_xml_legacy" itemprop="headline">Legacy XML wrapper implementation</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Page Contents</div>
+<ul><li><a class="page-menu-link" href="#autoid_65" data-menu-target="autoid_65">TemplateScalarModel</a></li><li><a class="page-menu-link" href="#autoid_66" data-menu-target="autoid_66">TemplateCollectionModel</a></li><li><a class="page-menu-link" href="#autoid_67" data-menu-target="autoid_67">TemplateSequenceModel</a></li><li><a class="page-menu-link" href="#autoid_68" data-menu-target="autoid_68">TemplateHashModel</a></li><li><a class="page-menu-link" href="#autoid_69" data-menu-target="autoid_69">TemplateMethodModel</a></li><li><a class="page-menu-link" href="#autoid_70" data-menu-target="autoid_70">Namespace handling</a></li></ul> </div>  <div class="callout note">
+    <strong class="callout-label">Note:</strong>
+
+          <p><em>The legacy XML wrapper is deprecated.</em>
+          FreeMarker 2.3 has introduced support for a new XML processing
+          model. To support this, a new XML wrapper package was introduced,
+          <code class="inline-code">freemarker.ext.dom</code>. For new usage, we encourage
+          you to use that. It is documented in the part <a href="xgui.html">XML Processing Guide</a>.</p>
+          </div>
+<p>The class <code class="inline-code">freemarker.ext.xml.NodeListModel</code>
+        provides a template model for wrapping XML documents represented as
+        node trees. Every node list can contain zero or more XML nodes
+        (documents, elements, texts, processing instructions, comments, entity
+        references, CDATA sections, etc.). The node list implements the
+        following template model interfaces with the following
+        semantics:</p>
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_65">TemplateScalarModel</h2>
+
+
+          <p>When used as a scalar, the node list will render the XML
+          fragment that represents its contained nodes. This makes it handy
+          for use in XML-to-XML transforming templates.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_66">TemplateCollectionModel</h2>
+
+
+          <p>When used as a collection with <code class="inline-code">list</code>
+          directive, it will simply enumerate its nodes. Every node will be
+          returned as a new node list consisting of a single node.</p>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_67">TemplateSequenceModel</h2>
+
+
+          <p>When used as a sequence, it will return the i-th node as a new
+          node list consisting of the single requested node. I.e. to return
+          the 3rd <code class="inline-code">&lt;chapter&gt;</code> element of the
+          <code class="inline-code">&lt;book&gt;</code> element, you&#39;d use the following
+          (note indexes are zero-based):</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign thirdChapter = xmldoc.book.chapter[2]&gt;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_68">TemplateHashModel</h2>
+
+
+          <p>When used as a hash, it is basically used to traverse
+          children. That is, if you have a node list named
+          <code class="inline-code">book</code> that wraps an element node with several
+          chapters, then the <code class="inline-code">book.chapter</code> will yield a node
+          list with all chapter elements of that book element. The at sign is
+          used to refer to attributes: <code class="inline-code">book.@title</code> yields a
+          node list with a single attribute node, that is the title attribute
+          of the book element.</p>
+
+          <p>It is important to realize the consequence that, for example,
+          if <code class="inline-code">book</code> has no <code class="inline-code">chapter</code>-s then
+          <code class="inline-code">book.chapter</code> is an empty sequence, so
+          <code class="inline-code">xmldoc.book.chapter??</code> will
+          <em>not</em> be <code class="inline-code">false</code>, it will be
+          always <code class="inline-code">true</code>! Similarly,
+          <code class="inline-code">xmldoc.book.somethingTotallyNonsense??</code> will not
+          be <code class="inline-code">false</code> either. To check if there was no
+          children found, use <code class="inline-code">xmldoc.book.chapter?size ==
+          0</code>.</p>
+
+          <p>The hash defines several &quot;magic keys&quot; as well. All these keys
+          start with an underscore. The most notable is the
+          <code class="inline-code">_text</code> key which retrieves the text of the node:
+          <code class="inline-code">${book.@title._text}</code> will render the value of the
+          attribute into the template. Similarly, <code class="inline-code">_name</code>
+          will retrieve the name of the element or attribute.
+          <code class="inline-code">*</code> or <code class="inline-code">_allChildren</code> returns all
+          direct children elements of all elements in the node list, while
+          <code class="inline-code">@*</code> or <code class="inline-code">_allAttributes</code> returns
+          all attributes of the elements in the node list. There are many more
+          such keys; here&#39;s a detailed summary of all the hash keys:</p>
+
+            <div class="table-responsive">
+    <table class="table">
+
+            <thead>
+              <tr>
+                <th>Key name</th>
+
+
+                <th>Evaluates to</th>
+
+              </tr>
+
+            </thead>
+
+
+            <tbody>
+              <tr>
+                <td><code class="inline-code">*</code> or <code class="inline-code">_children</code></td>
+
+
+                <td>all direct element children of current nodes
+                (non-recursive). Applicable to element and document
+                nodes.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">@*</code> or
+                <code class="inline-code">_attributes</code></td>
+
+
+                <td>all attributes of current nodes. Applicable to elements
+                only.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">@<em class="code-color">attributeName</em></code></td>
+
+
+                <td>named attributes of current nodes. Applicable to elements,
+                doctypes and processing instructions. On doctypes it supports
+                attributes <code class="inline-code">publicId</code>,
+                <code class="inline-code">systemId</code> and
+                <code class="inline-code">elementName</code>. On processing instructions, it
+                supports attributes <code class="inline-code">target</code> and
+                <code class="inline-code">data</code>, as well as any other attribute name
+                specified in data as <code class="inline-code">name=&quot;value&quot;</code> pair. The
+                attribute nodes for doctype and processing instruction are
+                synthetic, and as such have no parent. Note, however that
+                <code class="inline-code">@*</code> does NOT operate on doctypes or
+                processing instructions.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_ancestor</code></td>
+
+
+                <td>all ancestors up to root element (recursive) of current
+                nodes. Applicable to same node types as
+                <code class="inline-code">_parent</code>.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_ancestorOrSelf</code></td>
+
+
+                <td>all ancestors of current nodes plus current nodes.
+                Applicable to same node types as
+                <code class="inline-code">_parent</code>.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_cname</code></td>
+
+
+                <td>the canonical names of current nodes (namespace URI +
+                local name), one string per node (non-recursive). Applicable
+                to elements and attributes</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_content</code></td>
+
+
+                <td>the complete content of current nodes, including children
+                elements, text, entity references, and processing instructions
+                (non-recursive). Applicable to elements and documents.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_descendant</code></td>
+
+
+                <td>all recursive descendant element children of current
+                nodes. Applicable to document and element nodes.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_descendantOrSelf</code></td>
+
+
+                <td>all recursive descendant element children of current nodes
+                plus current nodes. Applicable to document and element
+                nodes.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_document</code></td>
+
+
+                <td>all documents the current nodes belong to. Applicable to
+                all nodes except text.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_doctype</code></td>
+
+
+                <td>doctypes of the current nodes. Applicable to document
+                nodes only.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_filterType</code></td>
+
+
+                <td>is a filter-by-type template method model. When called, it
+                will yield a node list that contains only those current nodes
+                whose type matches one of types passed as argument. You should
+                pass arbitrary number of strings to this method containing the
+                names of types to keep. Valid type names are: &quot;attribute&quot;,
+                &quot;cdata&quot;, &quot;comment&quot;, &quot;document&quot;, &quot;documentType&quot;, &quot;element&quot;,
+                &quot;entity&quot;, &quot;entityReference&quot;, &quot;processingInstruction&quot;,
+                &quot;text&quot;.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_name</code></td>
+
+
+                <td>the names of current nodes, one string per node
+                (non-recursive). Applicable to elements and attributes
+                (returns their local names), entities, processing instructions
+                (returns its target), doctypes (returns its public ID)</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_nsprefix</code></td>
+
+
+                <td>the namespace prefixes of current nodes, one string per
+                node (non-recursive). Applicable to elements and
+                attributes</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_nsuri</code></td>
+
+
+                <td>the namespace URIs of current nodes, one string per node
+                (non-recursive). Applicable to elements and attributes</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_parent</code></td>
+
+
+                <td>parent elements of current nodes. Applicable to element,
+                attribute, comment, entity, processing instruction.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_qname</code></td>
+
+
+                <td>the qualified names of current nodes in
+                <code class="inline-code">[namespacePrefix:]localName</code> form, one
+                string per node (non-recursive). Applicable to elements and
+                attributes</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_registerNamespace(prefix, uri)</code></td>
+
+
+                <td>register a XML namespace with the specified prefix and URI
+                for the current node list and all node lists that are derived
+                from the current node list. After registering, you can use the
+                <code class="inline-code">nodelist[&quot;prefix:localname&quot;]</code> or
+                <code class="inline-code">nodelist[&quot;@prefix:localname&quot;]</code> syntaxes to
+                reach elements and attributes whose names are
+                namespace-scoped. Note that the namespace prefix need not
+                match the actual prefix used by the XML document itself since
+                namespaces are compared solely by their URI.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_text</code></td>
+
+
+                <td>the text of current nodes, one string per node
+                (non-recursive). Applicable to elements, attributes, comments,
+                processing instructions (returns its data) and CDATA sections.
+                The reserved XML characters (&#39;&lt;&#39; and &#39;&amp;&#39;) are not
+                escaped.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_type</code></td>
+
+
+                <td>Returns a node list containing one string per node
+                describing the type of the node. Possible node type names are:
+                &quot;attribute&quot;, &quot;cdata&quot;, &quot;comment&quot;, &quot;document&quot;, &quot;documentType&quot;,
+                &quot;element&quot;, &quot;entity&quot;, &quot;entityReference&quot;,
+                &quot;processingInstruction&quot;, &quot;text&quot;. If the type of the node is
+                unknown, returns &quot;unknown&quot;.</td>
+
+              </tr>
+
+
+              <tr>
+                <td><code class="inline-code">_unique</code></td>
+
+
+                <td>a copy of the current nodes that keeps only the first
+                occurrence of every node, eliminating duplicates. Duplicates
+                can occur in the node list by applying uptree-traversals
+                <code class="inline-code">_parent</code>, <code class="inline-code">_ancestor</code>,
+                <code class="inline-code">_ancestorOrSelf</code>, and
+                <code class="inline-code">_document</code>. I.e.
+                <code class="inline-code">foo._children._parent</code> will return a node
+                list that has duplicates of nodes in foo - each node will have
+                the number of occurrences equal to the number of its children.
+                In these cases, use
+                <code class="inline-code">foo._children._parent._unique</code> to eliminate
+                duplicates. Applicable to all node types.</td>
+
+              </tr>
+
+
+              <tr>
+                <td>any other key</td>
+
+
+                <td>element children of current nodes with name matching the
+                key. This allows for convenience child traversal in
+                <code class="inline-code">book.chapter.title</code> style syntax. Note that
+                <code class="inline-code">nodeset.childname</code> is technically equivalent
+                to <code class="inline-code">nodeset(&quot;childname&quot;)</code>, but is both
+                shorter to write and evaluates faster. Applicable to document
+                and element nodes.</td>
+
+              </tr>
+
+            </tbody>
+
+              </table>
+  </div>
+
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_69">TemplateMethodModel</h2>
+
+
+          <p>When used as a method model, it returns a node list that is
+          the result of evaluating an XPath expression on the current contents
+          of the node list. For this feature to work, you must have the
+          <code class="inline-code">Jaxen</code> library in your classpath. For
+          example:</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">&lt;#assign firstChapter=xmldoc(&quot;//chapter[first()]&quot;)&gt;</pre></div>
+        
+          
+
+
+
+<h2 class="content-header header-section2" id="autoid_70">Namespace handling</h2>
+
+
+          <p>For purposes of traversal of children elements that have
+          namespace-scoped names, you can register namespace prefixes with the
+          node list. You can do it either in Java, calling the</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-unspecified">public void registerNamespace(String prefix, String uri);</pre></div>
+
+          <p>method, or inside a template using the</p>
+
+          
+
+<div class="code-wrapper"><pre class="code-block code-template">${<em>nodelist</em>._registerNamespace(<em>prefix</em>, <em>uri</em>)}</pre></div>
+
+          <p>syntax. From there on, you can refer to children elements in
+          the namespace denoted by the particular URI through the
+          syntax</p>
+
+          
+<pre class="metaTemplate"><code class="inline-code"><em class="code-color">nodelist</em>[&quot;<em class="code-color">prefix</em>:<em class="code-color">localName</em>&quot;]</code></pre>
+
+
+          <p>and</p>
+
+          
+<pre class="metaTemplate"><code class="inline-code"><em class="code-color">nodelist</em>[&quot;@<em class="code-color">prefix</em>:<em class="code-color">localName</em>&quot;]</code></pre>
+
+
+          <p>as well as use these namespace prefixes in XPath expressions.
+          Namespaces registered with a node list are propagated to all node
+          lists that are derived from the original node list. Note also that
+          namespaces are matched by their URI only, so you can safely use a
+          prefix for a namespace inside your template that differs from the
+          prefix in the actual XML document - a prefix is just a local alias
+          for the URI both in the template and in the XML document.</p>
+        <div class="bottom-pagers-wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui_misc_secureenv.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_misc_ant.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-site/blob/52c070a9/builds/2.3.26-nightly/pgui_quickstart.html
----------------------------------------------------------------------
diff --git a/builds/2.3.26-nightly/pgui_quickstart.html b/builds/2.3.26-nightly/pgui_quickstart.html
new file mode 100644
index 0000000..b1188e8
--- /dev/null
+++ b/builds/2.3.26-nightly/pgui_quickstart.html
@@ -0,0 +1,54 @@
+<!doctype html>
+<!-- Generated by FreeMarker/Docgen from DocBook -->
+<html lang="en" class="page-type-chapter">
+<head prefix="og: http://ogp.me/ns#">
+<meta charset="utf-8">
+<title>Getting Started with the Java API - Apache FreeMarker Manual</title>
+<meta http-equiv="X-UA-Compatible" content="IE=edge">
+<meta name="viewport" content="width=device-width,initial-scale=1">
+<meta name="format-detection" content="telephone=no">
+<meta property="og:site_name" content="Apache FreeMarker Manual">
+<meta property="og:title" content="Getting Started with the Java API">
+<meta property="og:locale" content="en_US">
+<meta property="og:url" content="http://freemarker.org/docs/pgui_quickstart.html">
+<link rel="canonical" href="http://freemarker.org/docs/pgui_quickstart.html">
+<link rel="icon" href="favicon.png" type="image/png">
+<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Roboto:500,700,400,300|Droid+Sans+Mono">
+<link rel="stylesheet" type="text/css" href="docgen-resources/docgen.min.css?1489402528979">
+<script>
+(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+ga('create', 'UA-55420501-1', 'auto');
+ga('send', 'pageview');
+</script>
+</head>
+<body itemscope itemtype="https://schema.org/Code">
+    <meta itemprop="url" content="http://freemarker.org/docs/">
+    <meta itemprop="name" content="Apache FreeMarker Manual">
+
+  <!--[if lte IE 9]>
+  <div style="background-color: #C00; color: #fff; padding: 12px 24px;">Please use a modern browser to view this website.</div>
+  <![endif]--><div class="header-top-bg"><div class="site-width header-top"><a class="logo" href="http://freemarker.org" role="banner">            <img itemprop="image" src="logo.png" alt="FreeMarker">
+</a><ul class="tabs"><li><a href="http://freemarker.org/">Home</a></li><li class="current"><a href="index.html">Manual</a></li><li><a class="external" href="api/index.html">Java API</a></li></ul><ul class="secondary-tabs"><li><a class="tab icon-heart" href="http://freemarker.org/contribute.html" title="Contribute"><span>Contribute</span></a></li><li><a class="tab icon-bug" href="https://issues.apache.org/jira/browse/FREEMARKER/" title="Report a Bug"><span>Report a Bug</span></a></li><li><a class="tab icon-download" href="http://freemarker.org/freemarkerdownload.html" title="Download"><span>Download</span></a></li></ul></div></div><div class="header-bottom-bg"><div class="site-width search-row"><a href="index.html" class="navigation-header">Manual</a><div class="navigation-header"></div><form method="get" class="search-form" action="search-results.html"><fieldset><legend class="sr-only">Search form</legend><label for="search-field" class="sr-only">Search query</label><input id="searc
 h-field" name="q" type="search" class="search-input" placeholder="Search" spellcheck="false" autocorrect="off" autocomplete="off"><button type="submit" class="search-btn"><span class="sr-only">Search</span></button></fieldset></form></div><div class="site-width breadcrumb-row"><ul class="breadcrumb" itemscope itemtype="http://schema.org/BreadcrumbList"><li class="step-0" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="index.html"><span itemprop="name">Apache FreeMarker Manual</span></a></li><li class="step-1" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui.html"><span itemprop="name">Programmer&#39;s Guide</span></a></li><li class="step-2" itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem"><a class="label" itemprop="item" href="pgui_quickstart.html"><span itemprop="name">Getting Started</span></a></li></ul><div class="bookma
 rks" title="Bookmarks"><span class="sr-only">Bookmarks:</span><ul class="bookmark-list"><li><a href="alphaidx.html">Alpha. index</a></li><li><a href="gloss.html">Glossary</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions</a></li><li><a href="ref_builtins_alphaidx.html">?builtins</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_specvar.html">.spec_vars</a></li><li><a href="app_faq.html">FAQ</a></li></ul></div></div></div>    <div class="main-content site-width">
+      <div class="content-wrapper">
+  <div id="table-of-contents-wrapper" class="col-left">
+      <script>var breadcrumb = ["Apache FreeMarker Manual","Programmer\'s Guide","Getting Started"];</script>
+      <script src="toc.js?1489402528979"></script>
+      <script src="docgen-resources/main.min.js?1489402528979"></script>
+  </div>
+<div class="col-right"><div class="page-content"><div class="page-title"><div class="pagers top"><a class="paging-arrow previous" href="pgui.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_createconfiguration.html"><span>Next</span></a></div><div class="title-wrapper">
+<h1 class="content-header header-chapter" id="pgui_quickstart" itemprop="headline">Getting Started</h1>
+</div></div><div class="page-menu">
+<div class="page-menu-title">Section Contents</div>
+<ul><li><a class="page-menu-link" href="pgui_quickstart_createconfiguration.html" data-menu-target="pgui_quickstart_createconfiguration">Create a configuration instance</a></li><li><a class="page-menu-link" href="pgui_quickstart_createdatamodel.html" data-menu-target="pgui_quickstart_createdatamodel">Create a data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_gettemplate.html" data-menu-target="pgui_quickstart_gettemplate">Get the template</a></li><li><a class="page-menu-link" href="pgui_quickstart_merge.html" data-menu-target="pgui_quickstart_merge">Merging the template with the data-model</a></li><li><a class="page-menu-link" href="pgui_quickstart_all.html" data-menu-target="pgui_quickstart_all">Putting all together</a></li></ul> </div><p>If you are new to FreeMarker, you should read at least the <a href="dgui_quickstart_basics.html">Template Author&#39;s Guide/Getting Started/Template + data-model = output</a> before this chapter.</p><div class="bottom-pagers-
 wrapper"><div class="pagers bottom"><a class="paging-arrow previous" href="pgui.html"><span>Previous</span></a><a class="paging-arrow next" href="pgui_quickstart_createconfiguration.html"><span>Next</span></a></div></div></div></div>      </div>
+    </div>
+<div class="site-footer"><div class="site-width"><div class="footer-top"><div class="col-left sitemap"><div class="column"><h3 class="column-header">Overview</h3><ul><li><a href="http://freemarker.org/">What is FreeMarker?</a></li><li><a href="http://freemarker.org/freemarkerdownload.html">Download</a></li><li><a href="app_versions.html">Version history</a></li><li><a href="http://freemarker.org/history.html">About us</a></li><li><a itemprop="license" href="app_license.html">License</a></li></ul></div><div class="column"><h3 class="column-header">Handy stuff</h3><ul><li><a href="http://freemarker-online.kenshoo.com/">Try template online</a></li><li><a href="dgui_template_exp.html#exp_cheatsheet">Expressions cheatsheet</a></li><li><a href="ref_directive_alphaidx.html">#directives</a></li><li><a href="ref_builtins_alphaidx.html">?built_ins</a></li><li><a href="ref_specvar.html">.special_vars</a></li></ul></div><div class="column"><h3 class="column-header">Community</h3><ul><li><a href
 ="https://github.com/freemarker/freemarker">FreeMarker on Github</a></li><li><a href="https://twitter.com/freemarker">Follow us on Twitter</a></li><li><a href="https://issues.apache.org/jira/browse/FREEMARKER/">Report a bug</a></li><li><a href="http://stackoverflow.com/questions/ask?tags=freemarker">Ask a question</a></li><li><a href="http://freemarker.org/mailing-lists.html">Mailing lists</a></li></ul></div></div><div class="col-right"><ul class="social-icons"><li><a class="github" href="https://github.com/freemarker/freemarker">Github</a></li><li><a class="twitter" href="https://twitter.com/freemarker">Twitter</a></li><li><a class="stack-overflow" href="http://stackoverflow.com/questions/ask?tags=freemarker">Stack Overflow</a></li></ul><a class="xxe" href="http://www.xmlmind.com/xmleditor/" rel="nofollow" title="Edited with XMLMind XML Editor"><span>Edited with XMLMind XML Editor</span></a></div></div><div class="footer-bottom"> <p class="last-generated">
+Last generated:
+<time itemprop="dateModified" datetime="2017-03-13T10:55:28Z" title="Monday, March 13, 2017 10:55:28 AM GMT">2017-03-13 10:55:28 GMT</time>, for Freemarker 2.3.26 </p>
+<p class="copyright">
+� <span itemprop="copyrightYear">1999</span>\u20132017
+<a itemtype="http://schema.org/Organization" itemprop="copyrightHolder" href="http://apache.org/">The Apache Software Foundation</a>. Apache FreeMarker, FreeMarker, Apache Incubator, Apache, the Apache FreeMarker logo are trademarks of The Apache Software Foundation. </p>
+</div></div></div></body>
+</html>