R: Call hook functions by hook name

callHooks {R.utils} | R Documentation

## Call hook functions by hook name

### Description

Call hook functions by hook name.

### Usage

    ## Default S3 method:
    callHooks(hookName, ..., removeCalledHooks=FALSE)

### Arguments

`hookName` | A `character` string of the hook name.
`...` | Argument passed to each hook function.
`removeCalledHooks` | If `TRUE`, called hook functions are removed, otherwise not.

### Value

Returns (invisibly) whatever `callHooks.list`() returns.

### Author(s)

Henrik Bengtsson

### See Also

Internally, after retrieving hook functions, `callHooks.list`() is called.

### Examples

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Example 1
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # First, clean up if called more than once
    setHook("myFunction.onEnter", NULL, action="replace")
    setHook("myFunction.onExit", NULL, action="replace")

    runConference <- function(...) {
      callHooks("myFunction.onEnter")
      cat("Speaker A: Hello there...\n")
      callHooks("myFunction.onExit")
    }

    setHook("myFunction.onEnter", function(...) {
      cat("Chair: Welcome to our conference.\n")
    })

    setHook("myFunction.onEnter", function(...) {
      cat("Chair: Please welcome Speaker A!\n")
    })

    setHook("myFunction.onExit", function(...) {
      cat("Chair: Please thanks Speaker A!\n")
    })

    runConference()

    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # Example 2
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    setHook("randomNumber", NULL, action="replace")
    setHook("randomNumber", rnorm)      # By function
    setHook("randomNumber", "rexp")     # By name
    setHook("randomNumber", "runiff")   # Non-existing name
    setHook("randomNumber", .GlobalEnv) # Not a function

    res <- callHooks("randomNumber", n=1)
    str(res)
    cat("Number of hooks: ", length(res), "\n");
    isErroneous <- unlist(lapply(res, FUN=function(x) !is.null(x$exception)));
    cat("Erroneous hooks: ", sum(isErroneous), "\n");

[Package R.utils version 2.7.0 Index]