| Constructor and Description |
|---|
Fragment() |
| Modifier and Type | Method and Description |
|---|---|
abstract Object |
context()
Returns the context object in effect for this fragment.
|
abstract Object |
context(int n)
Like
context() btu returns the nth parent context object. |
String |
decompile()
Decompiles the template inside this lamdba and returns an approximation of
the original template from which it was parsed.
|
abstract StringBuilder |
decompile(StringBuilder into)
Decompiles this fragment into
into. |
String |
execute()
Executes this fragment and returns its result as a string.
|
String |
execute(Object context)
Executes this fragment with the provided context; returns its result as a string.
|
abstract void |
execute(Object context,
Writer out)
Executes this fragment with the provided context; writes its result to
out. |
abstract void |
execute(Writer out)
Executes this fragment; writes its result to
out. |
abstract void |
executeTemplate(Template tmpl,
Writer out)
Executes
tmpl using this fragment's bound context. |
public abstract void execute(Writer out)
out.public abstract void execute(Object context, Writer out)
out. The
provided context will be nested in the fragment's bound context.public abstract void executeTemplate(Template tmpl, Writer out)
tmpl using this fragment's bound context. This allows a lambda to
resolve its fragment to a dynamically loaded template and then run that template with
the same context as the lamda, allowing a lambda to act as a 'late bound' included
template, i.e. you can decide which template to include based on information in the
context.public String execute()
public String execute(Object context)
public abstract Object context()
Map or a POJO or something else).public abstract Object context(int n)
context() btu returns the nth parent context object. 0
returns the same value as context(), 1 returns the parent context,
2 returns the grandparent and so forth. Note that if you request a parent that
does not exist an exception will be thrown. You should only use this method when you
know your lambda is run consistently in a context with a particular lineage.public String decompile()
Limitations:
{{ foo.bar }} becomes
{{foo.bar}}.
Compiler are used for all decompilation.
This feature is meant to enable use of lambdas for i18n such that you can recover
the contents of a lambda (so long as they're simple) to use as the lookup key for a
translation string. For example: {{#i18n}}Hello {{user.name}}!{{/i18n}} can be
sent to an i18n lambda which can use decompile to recover the text
Hello {{user.name}}! to be looked up in a translation dictionary. The
translated fragment could then be compiled and cached and then executed in lieu of the
original fragment using context().
public abstract StringBuilder decompile(StringBuilder into)
into. See decompile().into for call chaining.Copyright © 2017. All rights reserved.