public interface EvaluationEnvironment
Modifier and Type | Field and 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 |
Modifier and Type | Method and 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.
|
static final int EVENT_ENTER_HASH_KEY
static final int EVENT_LEAVE_HASH_KEY
static final int EVENT_ENTER_FUNCTION_PARAMS
static final int EVENT_LEAVE_FUNCTION_PARAMS
static final int EVENT_ENTER_SEQUENCE
static final int EVENT_LEAVE_SEQUENCE
static final int EVENT_ENTER_HASH
static final int EVENT_LEAVE_HASH
static final java.lang.Object RETURN_SKIP
static final java.lang.Object RETURN_FRAGMENT
java.lang.Object evalFunctionCall(FunctionCall fc, Interpreter ip) throws java.lang.Exception
fc
- the function call to evaluate.FunctionCall
object, it will not be
evaluated again. This way, the final result of a TDD expression
evaluation can contain FunctionCall
objects.java.lang.Exception
java.lang.Object notify(int event, Interpreter ip, java.lang.String name, java.lang.Object extra) throws java.lang.Exception
event
- An EVENT_...
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 each
EVENT_ENTER_...
event there will be an
EVENT_LEAVE_...
event later, except if
notifyContextChange
has thrown exception during handling
EVENT_ENTER_...
, in which case it is guaranteed that
there will be no corresponding EVENT_LEAVE_...
event.ip
- the Interpreter
instance that evaluates the text.
The value returned by Interpreter.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
, and
EVENT_ENTER_FUNCTION_PARAMS
: points the first
character after the [ and ( respectively.
EVENT_LEAVE_SEQUENCE
, EVENT_LEAVE_HASH
, and
EVENT_LEAVE_FUNCTION_PARAMS
: points the
terminating character, that is, the ] or )
or the character after the end of the string.
name
- For EVENT_ENTER_HASH_KEY
and
EVENT_ENTER_FUNCTION_PARAMS
, the name of the hash key or
function. It is null
otherwise.extra
- Even specific extra information.
EVENT_ENTER_HASH
, EVENT_LEAVE_HASH
,
EVENT_ENTER_SEQUENCE
, EVENT_LEAVE_SEQUENCE
it
is the Map
or List
that is being
built by the hash or sequence. It's OK to modify this
Map
or List
.
null
.
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 the Fragment
that stores the value
expression. The value expression will not be evaluated.
However, if the value is implicit boolean
true
, (i.e. you omit the value) then
RETURN_FRAGMENT
has no effect.
EVENT_ENTER_HASH
if the hash uses { and
}):
RETURN_FRAGMENT
: The value of the hash will be
the Fragment
that stores the hash expression.
The hash expression will not be evaluated.
java.lang.Exception