File: serializers.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 (70 lines) | stat: -rw-r--r-- 1,909 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#' @title Cassette serializers
#' @description Keeps track of the cassette serializers in a hash-like object
#' @export
#' @keywords internal
#' @details
#' \strong{Private Methods}
#'   \describe{
#'     \item{\code{serialize_get()}}{
#'       Gets a named serializer. This is also run on `Serializers$new()`
#'     }
#'   }
#' @examples \dontrun{
#' (aa <- Serializers$new())
#' aa$name
#' aa$serializers
#' yaml_serializer <- aa$serializers$new()
#' yaml_serializer
#' 
#' x <- Serializers$new(name = "json")
#' x$serializers$new()
#' json_serializer <- x$serializers$new()
#' json_serializer
#' }
Serializers <- R6::R6Class(
  "Serializers",
  public = list(
    #' @field serializers (list) list of serializer names
    serializers = list(),
    #' @field name (character) Name of a serializer. "yaml" (default) or "json"
    name = "yaml",

    #' @description Create a new Serializers object
    #' @param serializers (list) list of serializer names
    #' @param name (character) Name of a serializer. "yaml" (default) or "json"
    #' @return A new `Serializers` object
    initialize = function(serializers = list(), name = "yaml") {
      self$serializers <- serializers
      self$name <- name
      private$serialize_get()
    }
  ),

  private = list(
    serialize_get = function() {
      self$serializers <- switch(self$name,
        yaml = YAML,
        json = JSON,
        stop(sprintf(
          "The requested vcr cassette serializer (%s) is not registered.",
          self$name), call. = FALSE)
      )
    }
  )
)

#' @export
#' @rdname Serializers
serializer_fetch <- function(x = "yaml", name) {
  ser <- Serializers$new(name = x)
  ser <- ser$serializers
  ser$new(path = name)
}

check_serializer <- function(x) {
  if (!x %in% c("yaml", "json")) {
    mssg <- sprintf(
      "The requested vcr cassette serializer (%s) is not registered.", x)
    stop(mssg, call. = FALSE)
  }
}