File: persisters.R

package info (click to toggle)
r-cran-vcr 0.6.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,360 kB
  • sloc: cpp: 15; sh: 13; makefile: 2
file content (55 lines) | stat: -rw-r--r-- 1,585 bytes parent folder | download | duplicates (3)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#' @title Cassette persisters
#' @description Keeps track of the cassette persisters in a hash-like object
#' @export
#' @keywords internal
#' @details There's only one option: `FileSystem`
#' \strong{Private Methods}
#'  \describe{
#'     \item{\code{persister_get()}}{
#'       Gets and sets a named persister
#'     }
#'   }
#' @examples
#' (aa <- Persisters$new())
#' aa$name
#' aa$persisters
#' yaml_serializer <- aa$persisters$new()
#' yaml_serializer
Persisters <- R6::R6Class(
  "Persisters",
  public = list(
    #' @field persisters (list) internal use, holds persister object
    persisters = list(),
    #' @field name (character)
    name = "FileSystem",

    #' @description Create a new `Persisters` object
    #' @param persisters (list) a list
    #' @param name (character) Persister name, only option right now
    #' is "FileSystem"
    #' @return A new `Persisters` object
    initialize = function(persisters = list(), name = "FileSystem") {
      self$persisters <- persisters
      self$name <- name
      private$persister_get()
    }
  ),

  private = list(
    # Gets and sets a named persister
    persister_get = function() {
      if (!self$name %in% 'FileSystem') {
        stop(sprintf("The requested VCR cassette persister (%s) is not registered.", self$name),
             call. = FALSE)
      }
      self$persisters <- switch(self$name, FileSystem = FileSystem)
    }
  )
)

#' @rdname Persisters
persister_fetch <- function(x = "FileSystem", file_name) {
  per <- Persisters$new(name = x)
  per <- per$persisters
  per$new(file_name = file_name)
}