Skip to content

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

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() when stop_on_error is set to 0.

Value

A new output_handler object

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.