R/embedded-functions.R

Defines functions separate_args is_in_package

is_in_package <- function(x){
  if (is.null(x) || is.symbol(x))
    return(FALSE)
  
  isTRUE(paste0('package:',packageName()) %in% find(as.character(x[[1]]), mode = 'function'))
}


separate_args <- function(...){
  
  dots <- lazy_dots(...)
  args = list(args=dots)

  if(length(args[[1]]) == 0)
    return()
  embeds <- unname(sapply(dots, function(x) is_in_package(x$expr)))
  
  if (sum(embeds) == 0)
    return(args)
  
  embedded.funs <- dots[which(embeds)]
  args$args = dots[which(!embeds)]
  fun.names = sapply(embedded.funs, function(x) as.character(x$expr[[1]]))
  args$e.funs = lapply(embedded.funs, function(x) {x$expr[[1]] <- NULL; return(x$expr)}) %>% 
    setNames(fun.names)
  return(args)
}
USGS-R/gsplot documentation built on April 17, 2023, 8:45 p.m.