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.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleancontainsKey(String key) This method checks if the givenkeydoes exists within the scope chain.booleancurrentScopeContainsVariable(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.voidpopScope()Pops the most recent scope from the scope chain.voidAdds a new local scope to the scope chainvoidAdds an empty non-local scope to the scope chainvoidAdds a new non-local scope to the scope chainvoidAdds a variable to the current scope.voidSets 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.
-
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 givenkeydoes exists within the scope chain.- Parameters:
key- the for which the the check should be executed for.- Returns:
truewhen the key does exists orfalsewhen 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
-