sleep.runtime

Class ScriptVariables

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
    VariablegetClosureVariables()
    returns the current closure variable scope
    VariablegetClosureVariables(SleepClosure closure)
    returns the closure level variables for this specific script environment
    VariablegetGlobalVariables()
    returns the global variable scope
    VariablegetLocalVariables()
    returns the current local variable scope
    ScalargetScalar(String key)
    retrieves a scalar
    ScalargetScalar(String key, ScriptInstance i)
    Returns the specified scalar, looking at each scope in order.
    VariablegetScalarLevel(String key, ScriptInstance i)
    retrieves the appropriate Variable container that has the specified key.
    voidpopClosureLevel()
    discards the current closure variable scope
    voidpopLocalLevel()
    discards the current local variable scope, making the previous local scope the current local scope again
    voidpushClosureLevel(Variable variables)
    pushes the specified variables into this closures level, once the closure has executed this should be popped
    voidpushLocalLevel(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.
    voidpushLocalLevel()
    starts a new local variable scope. once the code that is using this has finished, it should be popped
    voidputScalar(String key, Scalar value)
    puts a scalar into the global scope
    voidsetClosureVariables(SleepClosure closure, Variable variables)
    returns the closure level variables for this specific script environment
    voidsetScalarLevel(String key, Scalar value, Variable level)
    Puts the specified scalar in a specific scope

    Constructor Detail

    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 Detail

    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(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.

    pushLocalLevel

    public void pushLocalLevel()
    starts a new local variable scope. once the code that is using this has finished, it 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.