sleep.runtime

Class ScriptVariables

Implemented Interfaces:
Serializable

public class ScriptVariables
extends Object
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
  • See Also:
    Scalar, ScriptInstance, Variable

    Constructor Summary

    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

    Method Summary

    Variable
    getClosureVariables()
    returns the current closure variable scope
    Variable
    getClosureVariables(SleepClosure closure)
    returns the closure level variables for this specific script environment
    Variable
    getGlobalVariables()
    returns the global variable scope
    Variable
    getLocalVariables()
    returns the current local variable scope
    Scalar
    getScalar(String key)
    retrieves a scalar
    Scalar
    getScalar(String key, ScriptInstance i)
    Returns the specified scalar, looking at each scope in order.
    Variable
    getScalarLevel(String key, ScriptInstance i)
    retrieves the appropriate Variable container that has the specified key.
    void
    popClosureLevel()
    discards the current closure variable scope
    void
    popLocalLevel()
    discards the current local variable scope, making the previous local scope the current local scope again
    void
    pushClosureLevel(Variable variables)
    pushes the specified variables into this closures level, once the closure has executed this should be popped
    void
    pushLocalLevel()
    starts a new local variable scope.
    void
    pushLocalLevel(Variable localVariables)
    makes the specified variable container active for the local scope.
    void
    putScalar(String key, Scalar value)
    puts a scalar into the global scope
    void
    setClosureVariables(SleepClosure closure, Variable variables)
    returns the closure level variables for this specific script environment
    void
    setScalarLevel(String key, Scalar value, Variable level)
    Puts the specified scalar in a specific scope

    Constructor Details

    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

    Method Details

    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
    Parameters:
    level - the Variable container from the scope we want to store this scalar in.