#' @export
`$<-.enum_enum` <- function(x, key, value) {
enum_set(x, key, value)
}
#' @export
`[[<-.enum_enum` <- function(x, key, value) {
enum_set(x, key, value)
}
#' @export
`[<-.enum_enum` <- function(x, ..., value) {
enum_set(x, vctrs::vec_c(...), value)
}
enum_set <- function(x, keys, vals) {
vctrs::vec_assert(keys, ptype = character())
if (is.null(vals)) vals <- list(NULL)
c(keys, vals) %<-% vctrs::vec_recycle_common(keys = keys, vals = vals)
enum_update(x, !!!rlang::set_names(vals, keys))
}
#' @export
enum_update <- function(x, ...) {
proxy <- enum_proxy(x)
c(vals, keys) %<-% enum_prepare(...,
.ptype = enum_ptype(proxy = proxy),
.mask = enum_mask(proxy = proxy)
)
assert_keys_match(keys, enum_keys(x))
proxy[keys] <- vals
new_enum(unname(proxy), rlang::names2(proxy))
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.