R/process_user_input.r

Defines functions process_user_input.response process_user_input.character process_user_input.data.frame process_user_input.default process_user_input

Documented in process_user_input process_user_input.character process_user_input.data.frame process_user_input.default process_user_input.response

#' 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))
}

Try the REDCapCAST package in your browser

Any scripts or data that you put into this service are public.

REDCapCAST documentation built on April 4, 2025, 3:18 a.m.