<a name="#${funcInfo.functionName}"></a>

#[[##]]# ${funcInfo.functionName}

<pre>
${util.funcSummary($funcInfo)}
</pre>

${util.htmlEscape($funcInfo.docString)}

#if (!$funcInfo.getDeprecated().docString.isEmpty())
#[[###]]# Deprecated

${util.htmlEscape($funcInfo.getDeprecated().docString)}

#end
#if (!$funcInfo.getReturn().docString.isEmpty())
#[[###]]# Returns

${util.htmlEscape($funcInfo.getReturn().docString)}

#end
#if (!$funcInfo.getParameterList().isEmpty())
#[[###]]# Parameters

<table class="params-table">
  <colgroup>
    <col class="col-param" />
    <col class="col-description" />
  </colgroup>
  <tbody>
#foreach ($param in $funcInfo.getParameterList())
    <tr id="${funcInfo.functionName}-${param.name}">
      <td><code>${param.name}</code></td>
      <td>
        ${util.mandatoryString($param)}.#if(!$param.getDefaultValue().isEmpty()) default is <code>$param.getDefaultValue()</code>#end

#if (!$param.docString.isEmpty())
        <p>
          ${param.docString.trim()}
        </p>
#end
      </td>
    </tr>
#end
  </tbody>
</table>
#end
