-
Notifications
You must be signed in to change notification settings - Fork 1
/
copyReactive.r
141 lines (135 loc) · 3.84 KB
/
copyReactive.r
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#' @title
#' Copy Reactive Object (generic)
#'
#' @description
#' Copies essential information of a reactive object to a new object.
#'
#' @details
#' Takes the essential information of a reactive object (fields \code{value},
#' \code{refs_pull}, \code{refs_push} and \code{funct} of the invisible instance
#' of class \code{\link[reactr]{ReactiveObject.S3}} and creates a new reactive
#' object of name \code{id} in \code{where} with that information.
#' The important thing to note is that the two objects (and their invisible objects)
#' are not connected via any environments (pass-by-reference) as would be the
#' case if the copy was carried out by a mere call to \code{\link[base]{<-}}.
#'
#' @param id_from \strong{Signature argument}.
#' Object containing name/ID information of object to copy.
#' @param where_from \strong{Signature argument}.
#' Object containing location information of object \code{id_from}.
#' @param id_to \strong{Signature argument}.
#' Object containing name/ID information of object to assign the copy to.
#' @param where_to \strong{Signature argument}.
#' Object containing location information of object that the copy is
#' assigned to.
#' @template threedots
#' @example inst/examples/copyReactive.r
#' @seealso \code{
#' \link[reactr]{copyReactive-character-character-environment-environment-method}
#' }
#' @template author
#' @template references
#' @export
setGeneric(
name = "copyReactive",
signature = c(
"id_from",
"where_from",
"id_to",
"where_to"
),
def = function(
id_from,
where_from = parent.frame(),
id_to,
where_to = parent.frame(),
...
) {
standardGeneric("copyReactive")
}
)
#' @title
#' Copy Reactive Object (character-missing-character-missing)
#'
#' @description
#' See generic: \code{\link[reactr]{copyReactive}}
#'
#' @inheritParams copyReactive
#' @param id_from \code{\link{character}}.
#' @param where_from \code{\link{missing}}.
#' @param id_to \code{\link{character}}.
#' @param where_from \code{\link{missing}}.
#' @return See method
#' \code{\link[reactr]{copyReactive-character-environment-character-environment-method}}
#' @example inst/examples/copyReactive.r
#' @seealso \code{
#' \link[reactr]{copyReactive},
#' \link[reactr]{copyReactive-character-environment-character-environment-method}
#' }
#' @template author
#' @template references
#' @export
#' @aliases copyReactive-character-missing-character-missing-method
setMethod(
f = "copyReactive",
signature = signature(
id_from = "character",
where_from = "missing",
id_to = "character",
where_to = "missing"
),
definition = function(
id_from,
where_from,
id_to,
where_to,
...
) {
copyReactive(
id_from = id_from,
where_from = where_from,
id_to = id_to,
where_to = where_to,
...
)
}
)
#' @title
#' Copy Reactive Object (character-environment-character-environment)
#'
#' @description
#' See generic: \code{\link[reactr]{copyReactive}}
#'
#' @inheritParams copyReactive
#' @param id_from \code{\link{character}}.
#' @param where_from \code{\link{environment}}.
#' @param id_to \code{\link{character}}.
#' @param where_from \code{\link{environment}}.
#' @return \code{\link{ANY}}. Object/object value.
#' @example inst/examples/copyReactive.r
#' @seealso \code{
#' \link[reactr]{copyReactive}
#' }
#' @template author
#' @template references
#' @export
#' @aliases copyReactive-character-environment-character-environment-method
setMethod(
f = "copyReactive",
signature = signature(
id_from = "character",
where_from = "environment",
id_to = "character",
where_to = "environment"
),
definition = function(
id_from,
where_from,
id_to,
where_to,
...
) {
from <- getFromRegistry(id = id_from, where = where_from)
from$.copy(id = id_to, where = where_to)
}
)