Package fmpp.tdd
Interface EvaluationEnvironment
-
- All Known Implementing Classes:
DataLoaderEvaluationEnvironment
public interface EvaluationEnvironment
Callbacks that let you control the behaviour of TDD expression evaluation.
-
-
Field Summary
Fields Modifier and Type Field Description static int
EVENT_ENTER_FUNCTION_PARAMS
The code of event that indicates that we have started to evaluate the parameter list in a function call.static int
EVENT_ENTER_HASH
The code of event that indicates that we have started to evaluate the items in a hash.static int
EVENT_ENTER_HASH_KEY
The code of event that indicates that we have started to evaluate the value in a key:value pair.static int
EVENT_ENTER_SEQUENCE
The code of event that indicates that we have started to evaluate the items in a sequence.static int
EVENT_LEAVE_FUNCTION_PARAMS
The code of event that indicates that we have finished to evaluate the parameter list in a function call.static int
EVENT_LEAVE_HASH
The code of event that indicates that we have finished to evaluate the items in a sequence.static int
EVENT_LEAVE_HASH_KEY
The code of event that indicates that we have finished to evaluate the value in a key:value pair.static int
EVENT_LEAVE_SEQUENCE
The code of event that indicates that we have finished to evaluate the items in a sequence.static java.lang.Object
RETURN_FRAGMENT
static java.lang.Object
RETURN_SKIP
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.lang.Object
evalFunctionCall(FunctionCall fc, Interpreter ip)
Evaluates the function call.java.lang.Object
notify(int event, Interpreter ip, java.lang.String name, java.lang.Object extra)
Notifies about an event during expression evaluation.
-
-
-
Field Detail
-
EVENT_ENTER_HASH_KEY
static final int EVENT_ENTER_HASH_KEY
The code of event that indicates that we have started to evaluate the value in a key:value pair.- See Also:
- Constant Field Values
-
EVENT_LEAVE_HASH_KEY
static final int EVENT_LEAVE_HASH_KEY
The code of event that indicates that we have finished to evaluate the value in a key:value pair.- See Also:
- Constant Field Values
-
EVENT_ENTER_FUNCTION_PARAMS
static final int EVENT_ENTER_FUNCTION_PARAMS
The code of event that indicates that we have started to evaluate the parameter list in a function call.- See Also:
- Constant Field Values
-
EVENT_LEAVE_FUNCTION_PARAMS
static final int EVENT_LEAVE_FUNCTION_PARAMS
The code of event that indicates that we have finished to evaluate the parameter list in a function call.- See Also:
- Constant Field Values
-
EVENT_ENTER_SEQUENCE
static final int EVENT_ENTER_SEQUENCE
The code of event that indicates that we have started to evaluate the items in a sequence. This does not include function call parameter lists.- See Also:
- Constant Field Values
-
EVENT_LEAVE_SEQUENCE
static final int EVENT_LEAVE_SEQUENCE
The code of event that indicates that we have finished to evaluate the items in a sequence.- See Also:
- Constant Field Values
-
EVENT_ENTER_HASH
static final int EVENT_ENTER_HASH
The code of event that indicates that we have started to evaluate the items in a hash.- See Also:
- Constant Field Values
-
EVENT_LEAVE_HASH
static final int EVENT_LEAVE_HASH
The code of event that indicates that we have finished to evaluate the items in a sequence.- See Also:
- Constant Field Values
-
RETURN_SKIP
static final java.lang.Object RETURN_SKIP
-
RETURN_FRAGMENT
static final java.lang.Object RETURN_FRAGMENT
-
-
Method Detail
-
evalFunctionCall
java.lang.Object evalFunctionCall(FunctionCall fc, Interpreter ip) throws java.lang.Exception
Evaluates the function call. This method may simply returns its parameter, which means that the function was not resolved, and thus the function call will be availble for further interpretation in the result of the TDD expression evaluation.- Parameters:
fc
- the function call to evaluate.- Returns:
- the return value of the function call. During the evaluation of
a TDD expression, function calls will be replaced with their return
values.
If the return value is a
FunctionCall
object, it will not be evaluated again. This way, the final result of a TDD expression evaluation can containFunctionCall
objects. - Throws:
java.lang.Exception
-
notify
java.lang.Object notify(int event, Interpreter ip, java.lang.String name, java.lang.Object extra) throws java.lang.Exception
Notifies about an event during expression evaluation.- Parameters:
event
- AnEVENT_...
constant. Further events may will be added later, so the implementation must silently ignore events that it does not know. It is guaranteed that for eachEVENT_ENTER_...
event there will be anEVENT_LEAVE_...
event later, except ifnotifyContextChange
has thrown exception during handlingEVENT_ENTER_...
, in which case it is guaranteed that there will be no correspondingEVENT_LEAVE_...
event.ip
- theInterpreter
instance that evaluates the text. The value returned byInterpreter.getPosition()
will be the position in the text where the this even has been created:EVENT_ENTER_HASH_KEY
: points the first character of the value of the key:value pair.EVENT_ENTER_SEQUENCE
,EVENT_ENTER_HASH
, andEVENT_ENTER_FUNCTION_PARAMS
: points the first character after the [ and ( respectively.EVENT_LEAVE_SEQUENCE
,EVENT_LEAVE_HASH
, andEVENT_LEAVE_FUNCTION_PARAMS
: points the terminating character, that is, the ] or ) or the character after the end of the string.
name
- ForEVENT_ENTER_HASH_KEY
andEVENT_ENTER_FUNCTION_PARAMS
, the name of the hash key or function. It isnull
otherwise.extra
- Even specific extra information.- For
EVENT_ENTER_HASH
,EVENT_LEAVE_HASH
,EVENT_ENTER_SEQUENCE
,EVENT_LEAVE_SEQUENCE
it is theMap
orList
that is being built by the hash or sequence. It's OK to modify thisMap
orList
. - For other events it's
value is currently
null
.
- For
- Returns:
- return The allowed return values and their meaning depends on
the event. But return value
null
always means "do nothing special". The currently defiend non-null
return values for the events:EVENT_ENTER_HASH_KEY
:RETURN_SKIP
: Skip the key:value pair. That is, the key:value pair will not be added to the map. The value expression will not be evaluated.RETURN_FRAGMENT
: The value of the key:value pair will be theFragment
that stores the value expression. The value expression will not be evaluated. However, if the value is implicit booleantrue
, (i.e. you omit the value) thenRETURN_FRAGMENT
has no effect.
EVENT_ENTER_HASH
if the hash uses { and }):RETURN_FRAGMENT
: The value of the hash will be theFragment
that stores the hash expression. The hash expression will not be evaluated.
- Throws:
java.lang.Exception
-
-