R/if.R

#'@title Run code if time has elapsed
#'@description a common operation is needing to run queries
#'to update a file-based dataset after N (days, hours, minutes)
#'have elapsed. \code{iftime} and \code{ifdate} are simple
#'conditionals that evaluate an expression if and only if
#'a certain time period has passed since a provided baseline.
#'
#'@param baseline the baseline - the time we're checking the
#'current time against
#'
#'@param offset the amount of time that should have elapsed
#'since \code{baseline} for the expression to be evaluated
#'
#'@param expr an expression to be evaluated if baseline + offset
#'>= current time
#'
#'@seealso \code{\link{timehandlers}} for other time handlers.
#'@examples
#'
#'#Use time. If it's been 20 seconds since the
#'\dontrun{
#'baseline, run.
#'baseline_time <- Sys.time() - 20
#'iftime(baseline = baseline_time, offset = 20,
#'expr = {
#'print("Baaaah")
#'})
#'#[1] "Baaaah"
#'
#'#Use dates. If it's been 30 days since the
#'baseline, run.
#'baseline_date <- Sys.Date() - 30
#'ifdate(baseline = baseline_time, offset = 30,
#'expr = {
#'print("Baaaah")
#'})
#'#[1] "Baaaah"
#'}
#'
#'@name conditional_run
#'@rdname conditional_run
#'@export
iftime <- function(baseline, offset, expr){
  current <- Sys.time()
  if(baseline + offset <= current){
    expr
  }
}

#'@rdname conditional_run
#'@export
ifdate <- function(baseline, offset, expr){
  current <- Sys.Date()
  if(baseline + offset >= current){
    expr
  }
}
Ironholds/olivr documentation built on May 7, 2019, 6:40 a.m.