##############################################################################
# This code has to come first in a library. To do this make sure this file
# is named "000.R" (zeros).
##############################################################################
setConstructorS3("CmdArgsFunction", function(fcn=function() {}, output=print, ...) {
# Argument 'fcn':
.stop_if_not(is.function(fcn))
# Argument 'output':
.stop_if_not(is.function(output))
attr(fcn, "output") <- output
extend(fcn, "CmdArgsFunction")
})
setMethodS3("print", "CmdArgsFunction", function(x, ..., call=!interactive(), envir=parent.frame()) {
# Nothing todo?
if (!call) return(NextMethod())
# Call function...
res <- withVisible(cmdArgsCall(x, ..., envir=envir))
# Should the result be printed?
if (res$visible) {
output <- attr(x, "output")
if (is.null(output)) output <- print
output(res$value)
}
# Return nothing
invisible(return())
}, protected=TRUE)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.