Class TemplateScript

java.lang.Object
org.apache.commons.jexl3.internal.TemplateScript
All Implemented Interfaces:
JxltEngine.Template

public final class TemplateScript extends Object implements JxltEngine.Template
A Template instance.
  • Field Details

  • Constructor Details

    • TemplateScript

      public TemplateScript(TemplateEngine engine, JexlInfo jexlInfo, String directive, Reader reader, String... parms)
      Creates a new template from an character input.
      Parameters:
      engine - the template engine
      jexlInfo - the source info
      directive - the prefix for lines of code; can not be "$", "${", "#" or "#{" since this would preclude being able to differentiate directives and jxlt expressions
      reader - the input reader
      parms - the parameter names
      Throws:
      NullPointerException - if either the directive prefix or input is null
      IllegalArgumentException - if the directive prefix is invalid
    • TemplateScript

      TemplateScript(TemplateEngine engine, String thePrefix, TemplateEngine.Block[] theSource, ASTJexlScript theScript, TemplateEngine.TemplateExpression[] theExprs)
      Private ctor used to expand deferred expressions during prepare.
      Parameters:
      engine - the template engine
      thePrefix - the directive prefix
      theSource - the source
      theScript - the script
      theExprs - the expressions
  • Method Details

    • scopeOf

      private static Scope scopeOf(JexlNode.Info info)
      Gets the scope from an info.
      Parameters:
      info - the node info
      Returns:
      the scope
    • collectPrintScope

      private static void collectPrintScope(JexlNode node, Map<Integer,JexlNode.Info> minfo)
      Collects the scope surrounding a call to jexl:print(i).

      This allows to later parse the blocks with the known symbols in the frame visible to the parser.

      Parameters:
      node - the visited node
      minfo - the map of printed expression number to node info
    • getScript

      ASTJexlScript getScript()
      Returns:
      script
    • getExpressions

      Returns:
      exprs
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • asString

      public String asString()
      Description copied from interface: JxltEngine.Template
      Recreate the template source from its inner components.
      Specified by:
      asString in interface JxltEngine.Template
      Returns:
      the template source rewritten
    • prepare

      public TemplateScript prepare(JexlContext context)
      Description copied from interface: JxltEngine.Template
      Prepares this template by expanding any contained deferred TemplateExpression.
      Specified by:
      prepare in interface JxltEngine.Template
      Parameters:
      context - the context to prepare against
      Returns:
      the prepared version of the template
    • evaluate

      public void evaluate(JexlContext context, Writer writer)
      Description copied from interface: JxltEngine.Template
      Evaluates this template.
      Specified by:
      evaluate in interface JxltEngine.Template
      Parameters:
      context - the context to use during evaluation
      writer - the writer to use for output
    • evaluate

      public void evaluate(JexlContext context, Writer writer, Object... args)
      Description copied from interface: JxltEngine.Template
      Evaluates this template.
      Specified by:
      evaluate in interface JxltEngine.Template
      Parameters:
      context - the context to use during evaluation
      writer - the writer to use for output
      args - the arguments
    • getVariables

      public Set<List<String>> getVariables()
      Description copied from interface: JxltEngine.Template
      Gets the list of variables accessed by this template.

      This method will visit all nodes of the sub-expressions and extract all variables whether they are written in 'dot' or 'bracketed' notation. (a.b is equivalent to a['b']).

      Specified by:
      getVariables in interface JxltEngine.Template
      Returns:
      the set of variables, each as a list of strings (ant-ish variables use more than 1 string) or the empty set if no variables are used
    • getParameters

      public String[] getParameters()
      Description copied from interface: JxltEngine.Template
      Gets the list of parameters expected by this template.
      Specified by:
      getParameters in interface JxltEngine.Template
      Returns:
      the parameter names array
    • getPragmas

      public Map<String,Object> getPragmas()
      Description copied from interface: JxltEngine.Template
      Gets this script pragmas.
      Specified by:
      getPragmas in interface JxltEngine.Template
      Returns:
      the (non null, may be empty) pragmas map