box_use <- function(...) { args <- as.list(sys.call())[-1] caller <- parent.frame() for (arg in args) { arg_str <- deparse(arg) arg_str <- gsub('^"|"$', '', arg_str) arg_str <- gsub("^'|'$", '', arg_str) if (startsWith(arg_str, "./") || startsWith(arg_str, "../")) { path <- sub("^\\.\\./", "", arg_str) path <- sub("^\\./", "", path) env <- new.env(parent = caller) candidates <- c( paste0(path, ".R"), paste0("core/", basename(path), ".R"), paste0("../", path, ".R") ) found <- FALSE for (f in candidates) { if (file.exists(f)) { sys.source(f, envir = env) found <- TRUE break } } if (!found) stop("Module not found: ", arg_str) assign(basename(path), env, envir = caller) } else if (grepl("\\[", arg_str)) { pkgs <- strsplit(arg_str, "\\],\\s*|,\\s*(?=[a-zA-Z])")[[1]] for (pkg_spec in pkgs) { pkg_spec <- trimws(pkg_spec) pkg_name <- sub("\\[.*", "", pkg_spec) library(pkg_name, character.only = TRUE) if (grepl("\\[", pkg_spec)) { exports <- trimws(strsplit(sub(".*\\[(.*)\\]", "\\1", pkg_spec), ",")[[1]]) for (ex in exports) { assign(ex, get(ex, envir = asNamespace(pkg_name)), envir = caller) } } } } else { library(arg_str, character.only = TRUE) } } invisible(NULL) }