Class ScopeChain
java.lang.Object
io.pebbletemplates.pebble.template.ScopeChain
A stack data structure used to represent the scope of variables that are currently accessible.
Pushing a new scope will allow the template to add variables with names of pre-existing variables
without overriding the originals; to access the original variables you would pop the scope
again.
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
containsKey
(String key) This method checks if the givenkey
does exists within the scope chain.boolean
currentScopeContainsVariable
(String variableName) Checks if the current scope contains a variable without then looking up the scope chain.deepCopy()
Creates a deep copy of the ScopeChain.Retrieves a variable from the scope chain, starting at the current scope and working it's way up all visible scopes.void
popScope()
Pops the most recent scope from the scope chain.void
Adds a new local scope to the scope chainvoid
Adds an empty non-local scope to the scope chainvoid
Adds a new non-local scope to the scope chainvoid
Adds a variable to the current scope.void
Sets the value of a variable in the first scope in the chain that already contains the variable; adds a variable to the current scope if an existing variable is not found.
-
Field Details
-
stack
The stack of scopes
-
-
Constructor Details
-
ScopeChain
public ScopeChain()Constructs an empty scope chain without any known scopes.
-
-
Method Details
-
deepCopy
Creates a deep copy of the ScopeChain. This is used for the parallel tag because every new thread should have a "snapshot" of the scopes, i.e. if one thread adds a new object to a scope, it should not be available to the other threads.This will construct a new scope chain and new scopes but it will continue to have references to the original user-provided variables. This is why it is important for the user to only provide thread-safe variables when using the "parallel" tag.
- Returns:
- A copy of the scope chain
-
pushScope
public void pushScope()Adds an empty non-local scope to the scope chain -
pushScope
Adds a new non-local scope to the scope chain- Parameters:
map
- The known variables of this scope.
-
pushLocalScope
public void pushLocalScope()Adds a new local scope to the scope chain -
popScope
public void popScope()Pops the most recent scope from the scope chain. -
put
Adds a variable to the current scope.- Parameters:
key
- The name of the variablevalue
- The value of the variable
-
get
Retrieves a variable from the scope chain, starting at the current scope and working it's way up all visible scopes.- Parameters:
key
- The name of the variable- Returns:
- The value of the variable
-
containsKey
This method checks if the givenkey
does exists within the scope chain.- Parameters:
key
- the for which the the check should be executed for.- Returns:
true
when the key does exists orfalse
when the given key does not exists.
-
currentScopeContainsVariable
Checks if the current scope contains a variable without then looking up the scope chain.- Parameters:
variableName
- The name of the variable- Returns:
- Whether or not the variable exists in the current scope
-
set
Sets the value of a variable in the first scope in the chain that already contains the variable; adds a variable to the current scope if an existing variable is not found.- Parameters:
key
- The name of the variablevalue
- The value of the variable
-
getGlobalScopes
-