sleep.runtime
Class ScriptVariables
- Serializable
public class ScriptVariables
implements Serializable
Maintains variables and variable scopes for a script instance. If you want to change the way variables are handled do not
override this class. This class handles all accessing of variables through an object that implements the Variable
interface.
Set/Get a Variable without Parsing
script.getScriptVariables().putScalar("$var", SleepUtils.getScalar("value"));
The ScriptVariables object is the entry point for installing variables into
a script's runtime environment. The above example illustrates how to set a
variable named $var to a specified Scalar value.
Scalar value = script.getScriptVariables().getScalar("$var");
The code above illustrates how to retrieve a Scalar named $var from a
script instance object.
Sleep has 3 levels of scope. They are (in order of precedence):
Local - discarded after use
Closure - specific to the current executing closure
Global - global to all scripts sharing this script variables instance
ScriptVariables() - Initializes this ScriptVariables container using a DefaultVariable object for default variable storage
|
ScriptVariables(Variable aVariableClass) - Initializes this class with your version of variable storage
|
ScriptVariables
public ScriptVariables()
Initializes this ScriptVariables container using a DefaultVariable object for default variable storage
ScriptVariables
public ScriptVariables(Variable aVariableClass)
Initializes this class with your version of variable storage
getClosureVariables
public Variable getClosureVariables()
returns the current closure variable scope
getClosureVariables
public Variable getClosureVariables(SleepClosure closure)
returns the closure level variables for this specific script environment
getGlobalVariables
public Variable getGlobalVariables()
returns the global variable scope
getLocalVariables
public Variable getLocalVariables()
returns the current local variable scope
getScalar
public Scalar getScalar(String key)
retrieves a scalar
getScalar
public Scalar getScalar(String key,
ScriptInstance i)
Returns the specified scalar, looking at each scope in order. It is worth noting that only one local variable level is
qeuried. If a variable is not local, the previous local scope is not checked.
getScalarLevel
public Variable getScalarLevel(String key,
ScriptInstance i)
retrieves the appropriate Variable container that has the specified key. Precedence is in the order of the current
local variable container, the script specific container, and then the global container
popClosureLevel
public void popClosureLevel()
discards the current closure variable scope
popLocalLevel
public void popLocalLevel()
discards the current local variable scope, making the previous local scope the current local scope again
pushClosureLevel
public void pushClosureLevel(Variable variables)
pushes the specified variables into this closures level, once the closure has executed this should be popped
pushLocalLevel
public void pushLocalLevel()
starts a new local variable scope. once the code that is using this has finished, it should be popped
pushLocalLevel
public void pushLocalLevel(Variable localVariables)
makes the specified variable container active for the local scope. once the code that is using this has finished, it really should be popped.
putScalar
public void putScalar(String key,
Scalar value)
puts a scalar into the global scope
setClosureVariables
public void setClosureVariables(SleepClosure closure,
Variable variables)
returns the closure level variables for this specific script environment
setScalarLevel
public void setScalarLevel(String key,
Scalar value,
Variable level)
Puts the specified scalar in a specific scope
level
- the Variable container from the scope we want to store this scalar in.