Class EvaluationContextImpl
java.lang.Object
io.pebbletemplates.pebble.template.EvaluationContextImpl
- All Implemented Interfaces:
EvaluationContext
,RenderedSizeContext
An evaluation context will store all stateful data that is necessary for the evaluation of a
template. Passing the entire state around will assist with thread safety.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final AtomicInteger
Total number of chars written by all writers sharing this context.private final EvaluationOptions
evaluation optionsprivate final ExecutorService
The user-provided ExecutorService (can be null).private final ExtensionRegistry
All the available filters/tests/functions for this template.private final Hierarchy
A template will look to it's parent and children for overridden macros and other features; this inheritance chain will help the template keep track of where in the inheritance chain it currently is.private final List
<PebbleTemplateImpl> The imported templates are used to look up macros.private final Locale
The locale of this template.private final int
The maximum size of the rendered template, in chars.private final Map
<String, PebbleTemplateImpl> The named imported templates are used to look up macros.private final ScopeChain
A scope is a set of visible variables.private final boolean
private final PebbleCache
<CacheKey, Object> The tag cache -
Constructor Summary
ConstructorsConstructorDescriptionEvaluationContextImpl
(PebbleTemplateImpl self, boolean strictVariables, Locale locale, int maxRenderedSize, ExtensionRegistry extensionRegistry, PebbleCache<CacheKey, Object> tagCache, ExecutorService executorService, List<PebbleTemplateImpl> importedTemplates, Map<String, PebbleTemplateImpl> namedImportedTemplates, ScopeChain scopeChain, Hierarchy hierarchy, EvaluationOptions evaluationOptions) Constructor used to provide all final variables. -
Method Summary
Modifier and TypeMethodDescriptionint
addAndGet
(int delta) void
addNamedImportedTemplates
(String alias, PebbleTemplateImpl template) Returns the evaluation options.Returns the executor service if exists or nullReturns the extension registry used to access all of the tests/filters/functionsReturns the data structure representing the entire hierarchy of the template currently being evaluated.Returns a list of imported templates.Returns the localeint
Returns the max rendered size.getNamedImportedTemplate
(String alias) Returns the named imported template.Returns the scope chain data structure that allows variables to be added/removed from the current scope and retrieved from the nearest visible scopes.Returns the cache used for the "cache" taggetVariable
(String key) boolean
Returns whether or not this template is being evaluated in "strict templates" modeprivate void
pushScope
(EvaluationContextImpl newContext, Map<?, ?> additionalVariables, Callbacks.PebbleConsumer<EvaluationContextImpl> scopedFunction) void
scopedShallowWithoutInheritanceChain
(PebbleTemplateImpl template, Map<?, ?> additionalVariables, Callbacks.PebbleConsumer<EvaluationContextImpl> scopedFunction) Makes an exact copy of the evaluation context EXCEPT for the inheritance chain.Makes a "snapshot" of the evaluation context.
-
Field Details
-
strictVariables
private final boolean strictVariables -
hierarchy
A template will look to it's parent and children for overridden macros and other features; this inheritance chain will help the template keep track of where in the inheritance chain it currently is. -
scopeChain
A scope is a set of visible variables. A trivial template will only have one scope. New scopes are added with for loops and macros for example.Most scopes will have a link to their parent scope which allow an evaluation to look up the scope chain for variables. A macro is an exception to this as it only has access to it's local variables.
-
locale
The locale of this template. -
maxRenderedSize
private final int maxRenderedSizeThe maximum size of the rendered template, in chars. -
extensionRegistry
All the available filters/tests/functions for this template. -
tagCache
The tag cache -
executorService
The user-provided ExecutorService (can be null). -
importedTemplates
The imported templates are used to look up macros. -
namedImportedTemplates
The named imported templates are used to look up macros. -
evaluationOptions
evaluation options -
charsRendered
Total number of chars written by all writers sharing this context.
-
-
Constructor Details
-
EvaluationContextImpl
public EvaluationContextImpl(PebbleTemplateImpl self, boolean strictVariables, Locale locale, int maxRenderedSize, ExtensionRegistry extensionRegistry, PebbleCache<CacheKey, Object> tagCache, ExecutorService executorService, List<PebbleTemplateImpl> importedTemplates, Map<String, PebbleTemplateImpl> namedImportedTemplates, ScopeChain scopeChain, Hierarchy hierarchy, EvaluationOptions evaluationOptions) Constructor used to provide all final variables.- Parameters:
self
- The template implementationstrictVariables
- Whether strict variables is to be usedlocale
- The locale of the templateextensionRegistry
- The extension registrytagCache
- The cache used by the "cache" tagexecutorService
- The optional executor servicescopeChain
- The scope chainhierarchy
- The inheritance chain
-
-
Method Details
-
shallowCopyWithoutInheritanceChain
Makes an exact copy of the evaluation context EXCEPT for the inheritance chain. This is necessary for the "include" tag.- Parameters:
self
- The template implementation- Returns:
- A copy of the evaluation context
-
threadSafeCopy
Makes a "snapshot" of the evaluation context. The scopeChain object will be a deep copy and the imported templates will be a new list. This is used for the "parallel" tag.- Parameters:
self
- The template implementation- Returns:
- A copy of the evaluation context
-
getNamedImportedTemplate
Returns the named imported template.- Returns:
- the named imported template.
-
addNamedImportedTemplates
-
isStrictVariables
public boolean isStrictVariables()Returns whether or not this template is being evaluated in "strict templates" mode- Specified by:
isStrictVariables
in interfaceEvaluationContext
- Returns:
- Whether or not this template is being evaluated in "strict templates" mode.
-
getLocale
Returns the locale- Specified by:
getLocale
in interfaceEvaluationContext
- Returns:
- The current locale
-
getMaxRenderedSize
public int getMaxRenderedSize()Returns the max rendered size.- Specified by:
getMaxRenderedSize
in interfaceRenderedSizeContext
- Returns:
- The max rendered size.
-
getExtensionRegistry
Returns the extension registry used to access all of the tests/filters/functions- Returns:
- The extension registry
-
getExecutorService
Returns the executor service if exists or null- Returns:
- The executor service if exists, or null
-
getImportedTemplates
Returns a list of imported templates.- Returns:
- A list of imported templates.
-
getTagCache
Returns the cache used for the "cache" tag- Returns:
- The cache used for the "cache" tag
-
getScopeChain
Returns the scope chain data structure that allows variables to be added/removed from the current scope and retrieved from the nearest visible scopes.- Returns:
- The scope chain.
-
getHierarchy
Returns the data structure representing the entire hierarchy of the template currently being evaluated.- Returns:
- The inheritance chain
-
getEvaluationOptions
Returns the evaluation options.- Returns:
- the evaluation options
-
getVariable
- Specified by:
getVariable
in interfaceEvaluationContext
-
pushScope
private void pushScope(EvaluationContextImpl newContext, Map<?, ?> additionalVariables, Callbacks.PebbleConsumer<EvaluationContextImpl> scopedFunction) throws IOException- Throws:
IOException
-
scopedShallowWithoutInheritanceChain
public void scopedShallowWithoutInheritanceChain(PebbleTemplateImpl template, Map<?, ?> additionalVariables, Callbacks.PebbleConsumer<EvaluationContextImpl> scopedFunction) throws IOException- Throws:
IOException
-
addAndGet
public int addAndGet(int delta) - Specified by:
addAndGet
in interfaceRenderedSizeContext
-