mirror of
https://github.com/rstudio/shiny.git
synced 2026-01-29 08:48:13 -05:00
The correct operators would be [[/[[<- but since we don't use them I just removed them instead.
72 lines
1.5 KiB
R
72 lines
1.5 KiB
R
# TESTS
|
|
# Simple set/get
|
|
# Simple remove
|
|
# Simple containsKey
|
|
# Simple keys
|
|
# Simple values
|
|
# Simple clear
|
|
# Get of unknown key returns NULL
|
|
# Remove of unknown key does nothing
|
|
# Setting a key twice always results in last-one-wins
|
|
# /TESTS
|
|
Map <- setRefClass(
|
|
'Map',
|
|
fields = list(
|
|
.env = 'environment'
|
|
),
|
|
methods = list(
|
|
initialize = function() {
|
|
.env <<- new.env(parent=emptyenv())
|
|
},
|
|
get = function(key) {
|
|
if (.self$containsKey(key))
|
|
return(base::get(key, pos=.env, inherits=FALSE))
|
|
else
|
|
return(NULL)
|
|
},
|
|
set = function(key, value) {
|
|
assign(key, value, pos=.env, inherits=FALSE)
|
|
return(value)
|
|
},
|
|
mset = function(...) {
|
|
args <- list(...)
|
|
for (key in names(args))
|
|
set(key, args[[key]])
|
|
return()
|
|
},
|
|
remove = function(key) {
|
|
if (.self$containsKey(key)) {
|
|
result <- .self$get(key)
|
|
rm(list = key, pos=.env, inherits=FALSE)
|
|
return(result)
|
|
}
|
|
return(NULL)
|
|
},
|
|
containsKey = function(key) {
|
|
exists(key, where=.env, inherits=FALSE)
|
|
},
|
|
keys = function() {
|
|
ls(envir=.env, all.names=TRUE)
|
|
},
|
|
values = function() {
|
|
mget(.self$keys(), envir=.env, inherits=FALSE)
|
|
},
|
|
clear = function() {
|
|
.env <<- new.env(parent=emptyenv())
|
|
invisible(NULL)
|
|
},
|
|
size = function() {
|
|
length(.env)
|
|
}
|
|
)
|
|
)
|
|
|
|
as.list.Map <- function(map) {
|
|
sapply(map$keys(),
|
|
map$get,
|
|
simplify=FALSE)
|
|
}
|
|
length.Map <- function(map) {
|
|
map$size()
|
|
}
|