File: FileCache.R

package info (click to toggle)
r-cran-bbmisc 1.13.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,256 kB
  • sloc: ansic: 176; sh: 9; makefile: 5
file content (27 lines) | stat: -rw-r--r-- 895 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#' @title A caching wrapper around load2
#'
#' @description
#' This closure returns a wrapper around \code{\link{load2}} which per
#' default caches loaded objects and returns the cached version
#' in subsequent calls.
#'
#' @param use.cache [\code{logical(1)}]\cr
#'  Enable the cache?
#'  Default is \code{TRUE}.
#' @return [\code{function()}] with argument \code{slot}
#'  (name of the slot to cache the object in, default is \dQuote{default}).
#'  All other arguments are passed down to \code{\link{load2}}.
#' @export
makeFileCache = function(use.cache = TRUE) {
  assertFlag(use.cache)
  .cache = list()

  function(file, slot = "default", ...) {
    if (use.cache) {
      if (is.null(.cache[[slot]]) || .cache[[slot]]$file != file)
        .cache[[slot]] = list(file = file, obj = load2(file = file, ...))
      return(.cache[[slot]]$obj)
    }
    return(load2(file = file, ...))
  }
}