REDCapCAST/R/process_user_input.r

74 lines
1.4 KiB
R

#' User input processing
#'
#' @param x input
#'
#' @return processed input
#' @export
process_user_input <- function(x) {
UseMethod("process_user_input", x)
}
#' User input processing default
#'
#' @param x input
#' @param ... ignored
#'
#' @return processed input
#' @export
process_user_input.default <- function(x, ...) {
stop(
deparse(substitute(x)),
" must be a 'data.frame',",
" a 'response',",
" or a 'character' vector containing JSON.",
call. = FALSE
)
}
#' User input processing data.frame
#'
#' @param x input
#' @param ... ignored
#'
#' @return processed input
#' @export
process_user_input.data.frame <- function(x, ...) {
x
}
#' User input processing character
#'
#' @param x input
#' @param ... ignored
#'
#' @return processed input
#' @export
process_user_input.character <- function(x, ...) {
if (!requireNamespace("jsonlite", quietly = TRUE)) {
stop(
"The package 'jsonlite' is needed to convert ",
deparse(substitute(x)),
" into a data frame.",
"\n Either install 'jsonlite' or pass ",
deparse(substitute(x)),
" as a 'data.frame'.",
call. = FALSE
)
}
jsonlite::fromJSON(x)
}
#' User input processing response
#'
#' @param x input
#' @param ... ignored
#'
#' @return processed input
#' @export
process_user_input.response <- function(x, ...) {
process_user_input(rawToChar(x$content))
}