Skip to content

Commit a203f81

Browse files
committed
feat: qenv inherits from environment class
1 parent 873a1b6 commit a203f81

16 files changed

+80
-119
lines changed

NAMESPACE

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
# Generated by roxygen2: do not edit by hand
22

33
S3method("[[",qenv.error)
4-
S3method(names,qenv)
5-
S3method(names,qenv.error)
64
S3method(within,qenv)
75
S3method(within,qenv.error)
86
export(concat)

R/qenv-class.R

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,19 @@
1414
#' @exportClass qenv
1515
setClass(
1616
"qenv",
17-
slots = c(env = "environment", code = "character", id = "integer", warnings = "character", messages = "character"),
17+
slots = c(
18+
code = "character",
19+
id = "integer",
20+
warnings = "character",
21+
messages = "character"
22+
),
23+
contains = "environment",
1824
prototype = list(
19-
env = new.env(parent = parent.env(.GlobalEnv)), code = character(0), id = integer(0),
20-
warnings = character(0), messages = character(0)
25+
.xData = new.env(parent = parent.env(.GlobalEnv)),
26+
code = character(0),
27+
id = integer(0),
28+
warnings = character(0),
29+
messages = character(0)
2130
)
2231
)
2332

R/qenv-concat.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ setMethod("concat", signature = c("qenv", "qenv"), function(x, y) {
3838
y@messages <- c(x@messages, y@messages)
3939

4040
# insert (and overwrite) objects from y to x
41-
y@env <- rlang::env_clone(y@env, parent = parent.env(.GlobalEnv))
42-
rlang::env_coalesce(env = y@env, from = x@env)
41+
y@.xData <- rlang::env_clone(y@.xData, parent = parent.env(.GlobalEnv))
42+
rlang::env_coalesce(env = y@.xData, from = x@.xData)
4343
y
4444
})
4545

R/qenv-constructor.R

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
qenv <- function() {
2626
q_env <- new.env(parent = parent.env(.GlobalEnv))
2727
lockEnvironment(q_env, bindings = TRUE)
28-
methods::new("qenv", env = q_env)
28+
methods::new("qenv", .xData = q_env)
2929
}
3030

3131

@@ -73,7 +73,11 @@ setMethod(
7373
id <- sample.int(.Machine$integer.max, size = length(code))
7474
methods::new(
7575
"qenv",
76-
env = new_env, code = code, warnings = rep("", length(code)), messages = rep("", length(code)), id = id
76+
.xData = new_env,
77+
code = code,
78+
warnings = rep("", length(code)),
79+
messages = rep("", length(code)),
80+
id = id
7781
)
7882
}
7983
)

R/qenv-eval_code.R

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ setMethod("eval_code", signature = c("qenv", "character"), function(object, code
3131
id <- sample.int(.Machine$integer.max, size = 1)
3232

3333
object@id <- c(object@id, id)
34-
object@env <- rlang::env_clone(object@env, parent = parent.env(.GlobalEnv))
34+
object@.xData <- rlang::env_clone(object@.xData, parent = parent.env(.GlobalEnv))
3535
code <- paste(code, collapse = "\n")
3636
object@code <- c(object@code, code)
3737

@@ -45,11 +45,11 @@ setMethod("eval_code", signature = c("qenv", "character"), function(object, code
4545
x <- withCallingHandlers(
4646
tryCatch(
4747
{
48-
eval(single_call, envir = object@env)
49-
if (!identical(parent.env(object@env), parent.env(.GlobalEnv))) {
48+
eval(single_call, envir = object@.xData)
49+
if (!identical(parent.env(object@.xData), parent.env(.GlobalEnv))) {
5050
# needed to make sure that @env is always a sibling of .GlobalEnv
5151
# could be changed when any new package is added to search path (through library or require call)
52-
parent.env(object@env) <- parent.env(.GlobalEnv)
52+
parent.env(object@.xData) <- parent.env(.GlobalEnv)
5353
}
5454
NULL
5555
},
@@ -83,7 +83,7 @@ setMethod("eval_code", signature = c("qenv", "character"), function(object, code
8383
object@warnings <- c(object@warnings, current_warnings)
8484
object@messages <- c(object@messages, current_messages)
8585

86-
lockEnvironment(object@env, bindings = TRUE)
86+
lockEnvironment(object@.xData, bindings = TRUE)
8787
object
8888
})
8989

R/qenv-get_env.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ setGeneric("get_env", function(object) {
2424
})
2525

2626
setMethod("get_env", "qenv", function(object) {
27-
object@env
27+
object@.xData
2828
})
2929

3030
setMethod("get_env", "qenv.error", function(object) {

R/qenv-get_var.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ setGeneric("get_var", function(object, var) {
2828

2929
setMethod("get_var", signature = c("qenv", "character"), function(object, var) {
3030
tryCatch(
31-
get(var, envir = object@env, inherits = FALSE),
31+
get(var, envir = object@.xData, inherits = FALSE),
3232
error = function(e) {
3333
message(conditionMessage(e))
3434
NULL

R/qenv-join.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,8 +150,8 @@ setMethod("join", signature = c("qenv", "qenv"), function(x, y) {
150150
x@messages <- c(x@messages, y@messages[id_unique])
151151

152152
# insert (and overwrite) objects from y to x
153-
x@env <- rlang::env_clone(x@env, parent = parent.env(.GlobalEnv))
154-
rlang::env_coalesce(env = x@env, from = y@env)
153+
x@.xData <- rlang::env_clone(x@.xData, parent = parent.env(.GlobalEnv))
154+
rlang::env_coalesce(env = x@.xData, from = y@.xData)
155155
x
156156
})
157157

@@ -175,9 +175,9 @@ setMethod("join", signature = c("qenv.error", "ANY"), function(x, y) {
175175
checkmate::assert_class(x, "qenv")
176176
checkmate::assert_class(y, "qenv")
177177

178-
common_names <- intersect(rlang::env_names(x@env), rlang::env_names(y@env))
178+
common_names <- intersect(rlang::env_names(x@.xData), rlang::env_names(y@.xData))
179179
is_overwritten <- vapply(common_names, function(el) {
180-
!identical(get(el, x@env), get(el, y@env))
180+
!identical(get(el, x@.xData), get(el, y@.xData))
181181
}, logical(1))
182182
if (any(is_overwritten)) {
183183
return(

R/qenv-names.R

Lines changed: 0 additions & 33 deletions
This file was deleted.

R/qenv-show.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
#' @importFrom methods show
1717
#' @export
1818
setMethod("show", "qenv", function(object) {
19-
rlang::env_print(object@env)
19+
rlang::env_print(object@.xData)
2020
})

0 commit comments

Comments
 (0)