An output_handler
handles the results of evaluate()
,
including the values, graphics, conditions. Each type of output is handled by
a particular function in the handler object.
new_output_handler(
source = identity,
text = identity,
graphics = identity,
message = identity,
warning = identity,
error = identity,
value = render,
calling_handlers = list()
)
A new output_handler
object
Function to handle the echoed source code under evaluation.
This function should take two arguments (src
and expr
), and return
an object that will be inserted into the evaluate outputs. src
is the
unparsed text of the source code, and expr
is the complete input
expression (which may have 0, 1, 2, or more components; see parse_all()
for details).
Return src
for the default evaluate behaviour. Return NULL
to
drop the source from the output.
Function to handle any textual console output.
Function to handle graphics, as returned by
recordPlot()
.
Function to handle message()
output.
Function to handle warning()
output.
Function to handle stop()
output.
Function to handle the values returned from evaluation.
If it has one argument, it called on visible values.
If it has two arguments, it handles all values, with the second argument indicating whether or not the value is visible.
If it has three arguments, it will be called on all values, with the the third argument given the evaluation environment which is needed to look up print methods for S3 objects.
List of calling handlers.
These handlers have precedence over the exiting handler installed
by evaluate()
when stop_on_error
is set to 0.
The handler functions should accept an output object as their first argument.
The return value of the handlers is ignored, except in the case of the
value
handler, where a visible return value is saved in the output
list.
Calling the constructor with no arguments results in the default handler, which mimics the behavior of the console by printing visible values.
Note that recursion is common: for example, if value
does any
printing, then the text
or graphics
handlers may be called.