.robustDigest for simList objectsThis is intended to be used within the Cache function, but can be used to evaluate what
a simList would look like once it is converted to a repeatably digestible object.
# S4 method for simList
.robustDigest(object, .objects, length, algo, quick, classOptions)an object to digest.
Character vector of objects to be digested. This is only applicable if there is a list, environment (or similar) named objects within it. Only this/these objects will be considered for caching, i.e., only use a subset of the list, environment or similar objects.
Numeric. If the element passed to Cache is a Path class
object (from e.g., asPath(filename)) or it is a Raster with
file-backing, then this will be
passed to digest::digest, essentially limiting the number of bytes
to digest (for speed). This will only be used if quick = FALSE.
Default is getOption("reproducible.length"),
which is set to Inf.
The algorithms to be used; currently available choices are
md5, which is also the default, sha1, crc32,
sha256, sha512, xxhash32, xxhash64,
murmur32 and spookyhash.
Logical. If TRUE,
little or no disk-based information will be assessed, i.e., mostly its
memory content. This is relevant for objects of class character,
Path and Raster currently. For class character, it is ambiguous
whether this represents a character string or a vector of file paths. The function
will assess if it is a path to a file or directory first. If not, it will treat
the object as a character string. If it is known that character strings should
not be treated as paths, then quick = TRUE will be much faster, with no loss
of information. If it is file or directory, then it will digest the file content,
or basename(object). For class Path objects, the file's metadata
(i.e., filename and file size)
will be hashed instead of the file contents if quick = TRUE.
If set to FALSE (default),
the contents of the file(s) are hashed.
If quick = TRUE, length is ignored. Raster objects are treated
as paths, if they are file-backed.
Optional list. This will pass into .robustDigest for
specific classes. Should be options that the .robustDigest knows what
to do with.
See robustDigest.
This method strips out stuff from a simList class object that would make it otherwise not
reproducibly digestible between sessions, operating systems, or machines.
This will likely still not allow identical digest results across R versions.