Nothing
#' Generate output and apply filters, titles, and footnotes
#'
#' @param program program name
#' @param datasets list of datasets
#' @param spec spec
#' @param verbose_level Verbose level of messages be displayed. See details for further information.
#' @return No return value, called for side effects
#' @details
#' `verbose_level` is used to control how many messages are printed out.
#' By default, `2` will show all filter messages and show output generation message.
#' `1` will show output generation message only.
#' `0` will display no message.
#' @param ... arguments passed to program
#'
#' @author Liming Li (`Lil128`)
#'
#' @export
#'
#' @examples
#' library(dplyr)
#' filters::load_filters(
#' yaml_file = system.file("filters.yml", package = "autoslider.core"),
#' overwrite = TRUE
#' )
#'
#' spec_file <- system.file("spec.yml", package = "autoslider.core")
#' spec <- spec_file %>% read_spec()
#'
#' data <- list(
#' adsl = eg_adsl,
#' adae = eg_adae
#' )
#' generate_output("t_ae_slide", data, spec$t_ae_slide_SE)
#'
generate_output <-
function(program,
datasets,
spec,
verbose_level = 2,
...) {
suffix <- spec$suffix
if (verbose_level > 0) {
cat_bullet(
sprintf(
"Running program `%s` with suffix '%s'.",
program,
suffix
),
bullet = "pointer",
bullet_col = "green"
)
}
func <- tryCatch(
{
func_wrapper(
func = match.fun(program),
datasets = datasets,
spec = spec,
verbose = verbose_level > 1
)
},
error = function(e) {
info <- e$message
if (verbose_level > 0) {
cat_bullet(paste0("Error: ", info), bullet = "warning", bullet_col = "red")
}
autoslider_error(info, spec = spec, step = "filter dataset")
}
)
if (is(func, "autoslider_error")) {
return(func)
}
ret <- tryCatch(
{
func(...)
},
error = function(e) {
info <- e$message
if (verbose_level > 0) {
cat_bullet(paste0("Error: ", info), bullet = "warning", bullet_col = "red")
}
autoslider_error(info, spec = spec, step = "user program")
}
)
return(ret)
}
#' Generate all outputs from a spec
#'
#' @param spec Specification list generated by `read_spec`
#' @param datasets A `list` of datasets
#' @param verbose_level Verbose level of messages be displayed. See details for further information.
#' @return No return value, called for side effects
#' @details
#' `verbose_level` is used to control how many messages are printed out.
#' By default, `2` will show all filter messages and show output generation message.
#' `1` will show output generation message only.
#' `0` will display no message.
#'
#' @author
#' - Thomas Neitmann (`neitmant`)
#' - Liming Li (`Lil128`)
#'
#' @export
#'
#' @examples
#' library(dplyr, warn.conflicts = FALSE)
#' data <- list(
#' adsl = eg_adsl,
#' adae = eg_adae
#' )
#' filters::load_filters(
#' yaml_file = system.file("filters.yml", package = "autoslider.core"),
#' overwrite = TRUE
#' )
#'
#' spec_file <- system.file("spec.yml", package = "autoslider.core")
#' spec_file %>%
#' read_spec() %>%
#' filter_spec(output %in% c("t_dm_slide_IT", "t_ae_slide_SE")) %>%
#' generate_outputs(datasets = data)
#'
generate_outputs <- function(spec, datasets, verbose_level = 2) {
lapply(spec, function(s) {
args <- c(
list(
program = s$program,
spec = s,
datasets = datasets,
verbose_level = verbose_level
),
s$args # ... arguments passed onto the output-generating function
)
output <- fastDoCall(generate_output, args)
attr(output, "spec") <- s
output
})
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.