Class UnifiedJEXL.Template
- Enclosing class:
- UnifiedJEXL
The source text is parsed considering each line beginning with '$$' (as default pattern) as JEXL script code and all others as Unified JEXL expressions; those expressions will be invoked from the script during evaluation and their output gathered through a writer. It is thus possible to use looping or conditional construct "around" expressions generating output.
For instance:Will evaluate as:$$ for(var x : [1, 3, 5, 42, 169]) { $$ if (x == 42) { Life, the universe, and everything $$ } else if (x > 42) { The value $(x} is over fourty-two $$ } else { The value ${x} is under fourty-two $$ } $$ }
The value 1 is under fourty-two The value 3 is under fourty-two The value 5 is under fourty-two Life, the universe, and everything The value 169 is over fourty-two
During evaluation, the template context exposes its writer as '$jexl' which is safe to use in this case. This allows writing directly through the writer without adding new-lines as in:
$$ for(var cell : cells) { $jexl.print(cell); $jexl.print(';') }
A template is expanded as one JEXL script and a list of UnifiedJEXL expressions; each UnifiedJEXL expression being replace in the script by a call to jexl:print(expr) (the expr is in fact the expr number in the template). This integration uses a specialized JexlContext (TemplateContext) that serves as a namespace (for jexl:) and stores the expression array and the writer (java.io.Writer) that the 'jexl:print(...)' delegates the output generation to.
- Since:
- 2.1
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionasString()
Recreate the template source from its inner components.void
evaluate
(JexlContext context, Writer writer) Evaluates this template.void
evaluate
(JexlContext context, Writer writer, Object... args) Evaluates this template.prepare
(JexlContext context) Prepares this template by expanding any contained deferred expression.toString()
-
Constructor Details
-
Template
Creates a new template from an input.- Parameters:
directive
- the prefix for lines of code; can not be "$", "${", "#" or "#{" since this would preclude being able to differentiate directives and UnifiedJEXL expressionsreader
- the input readerparms
- the parameter names- Throws:
NullPointerException
- if either the directive prefix or input is nullIllegalArgumentException
- if the directive prefix is invalid
-
-
Method Details
-
toString
-
asString
Recreate the template source from its inner components.- Returns:
- the template source rewritten
-
prepare
Prepares this template by expanding any contained deferred expression.- Parameters:
context
- the context to prepare against- Returns:
- the prepared version of the template
-
evaluate
Evaluates this template.- Parameters:
context
- the context to use during evaluationwriter
- the writer to use for output
-
evaluate
Evaluates this template.- Parameters:
context
- the context to use during evaluationwriter
- the writer to use for outputargs
- the arguments
-