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.
Usage
new_output_handler(
source = identity,
text = identity,
graphics = identity,
message = identity,
warning = identity,
error = identity,
value = render,
calling_handlers = list()
)
Arguments
- source
Function to handle the echoed source code under evaluation. This function should take two arguments (
src
andexpr
), and return an object that will be inserted into the evaluate outputs.src
is the unparsed text of the source code, andexpr
is the complete input expression (which may have 0, 1, 2, or more components; seeparse_all()
for details).Return
src
for the default evaluate behaviour. ReturnNULL
to drop the source from the output.- text
Function to handle any textual console output.
- graphics
Function to handle graphics, as returned by
recordPlot()
.- message
Function to handle
message()
output.- warning
Function to handle
warning()
output.- error
Function to handle
stop()
output.- value
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.
- calling_handlers
List of calling handlers. These handlers have precedence over the exiting handler installed by
evaluate()
whenstop_on_error
is set to 0.
Details
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.