Skip to content

Commit ce3b887

Browse files
committed
Revert "Update to update_*_defaults() (#5781)"
This reverts commit 60407ac.
1 parent 1050f09 commit ce3b887

File tree

3 files changed

+23
-61
lines changed

3 files changed

+23
-61
lines changed

R/geom-defaults.R

Lines changed: 17 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
#' @param stat,geom Name of geom/stat to modify (like `"point"` or
44
#' `"bin"`), or a Geom/Stat object (like `GeomPoint` or
55
#' `StatBin`).
6-
#' @param new One of the following:
7-
#' * A named list of aesthetics to serve as new defaults.
8-
#' * `NULL` to reset the defaults.
6+
#' @param new Named list of aesthetics.
97
#' @keywords internal
108
#' @export
119
#' @examples
@@ -18,7 +16,7 @@
1816
#' ggplot(mtcars, aes(mpg, wt)) + geom_point()
1917
#'
2018
#' # reset default
21-
#' update_geom_defaults("point", NULL)
19+
#' update_geom_defaults("point", aes(color = "black"))
2220
#'
2321
#'
2422
#' # updating a stat's default aesthetic settings
@@ -31,45 +29,27 @@
3129
#' geom_function(fun = dnorm, color = "red")
3230
#'
3331
#' # reset default
34-
#' update_stat_defaults("bin", NULL)
32+
#' update_stat_defaults("bin", aes(y = after_stat(count)))
3533
#'
3634
#' @rdname update_defaults
3735
update_geom_defaults <- function(geom, new) {
38-
update_defaults(geom, "Geom", new, env = parent.frame())
36+
g <- check_subclass(geom, "Geom", env = parent.frame())
37+
old <- g$default_aes
38+
new <- rename_aes(new)
39+
new_names_order <- unique(c(names(old), names(new)))
40+
new <- defaults(new, old)[new_names_order]
41+
g$default_aes[names(new)] <- new
42+
invisible()
3943
}
4044

4145
#' @rdname update_defaults
4246
#' @export
4347
update_stat_defaults <- function(stat, new) {
44-
update_defaults(stat, "Stat", new, env = parent.frame())
45-
}
46-
47-
cache_defaults <- new_environment()
48-
49-
update_defaults <- function(name, subclass, new, env = parent.frame()) {
50-
obj <- check_subclass(name, subclass, env = env)
51-
index <- snake_class(obj)
52-
53-
if (is.null(new)) { # Reset from cache
54-
55-
old <- cache_defaults[[index]]
56-
if (!is.null(old)) {
57-
new <- update_defaults(name, subclass, new = old, env = env)
58-
}
59-
invisible(new)
60-
61-
} else { # Update default aesthetics
62-
63-
old <- obj$default_aes
64-
# Only update cache the first time defaults are changed
65-
if (!exists(index, envir = cache_defaults)) {
66-
cache_defaults[[index]] <- old
67-
}
68-
new <- rename_aes(new)
69-
name_order <- unique(c(names(old), names(new)))
70-
new <- defaults(new, old)[name_order]
71-
obj$default_aes[names(new)] <- new
72-
invisible(old)
73-
74-
}
48+
g <- check_subclass(stat, "Stat", env = parent.frame())
49+
old <- g$default_aes
50+
new <- rename_aes(new)
51+
new_names_order <- unique(c(names(old), names(new)))
52+
new <- defaults(new, old)[new_names_order]
53+
g$default_aes[names(new)] <- new
54+
invisible()
7555
}

man/update_defaults.Rd

Lines changed: 3 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/testthat/test-geom-.R

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,7 @@ test_that("aesthetic checking in geom throws correct errors", {
66
expect_snapshot_error(check_aesthetics(aes, 4))
77
})
88

9-
test_that("geom defaults can be set and reset", {
10-
l <- geom_point()
11-
test <- l$geom$use_defaults(data_frame0())
12-
expect_equal(test$colour, "black")
13-
14-
inv <- update_geom_defaults("point", list(colour = "red"))
15-
test <- l$geom$use_defaults(data_frame0())
16-
expect_equal(test$colour, "red")
17-
expect_equal(inv$colour, "black")
18-
19-
inv <- update_geom_defaults("point", NULL)
20-
test <- l$geom$use_defaults(data_frame0())
21-
expect_equal(test$colour, "black")
22-
expect_equal(inv$colour, "red")
23-
})
9+
2410

2511
test_that("updating geom aesthetic defaults preserves class and order", {
2612

@@ -37,7 +23,7 @@ test_that("updating geom aesthetic defaults preserves class and order", {
3723

3824
expect_equal(updated_defaults, intended_defaults)
3925

40-
update_geom_defaults("point", NULL)
26+
update_geom_defaults("point", original_defaults)
4127

4228
})
4329

@@ -60,6 +46,6 @@ test_that("updating stat aesthetic defaults preserves class and order", {
6046

6147
expect_equal(updated_defaults, intended_defaults)
6248

63-
update_stat_defaults("bin", NULL)
49+
update_stat_defaults("bin", original_defaults)
6450

6551
})

0 commit comments

Comments
 (0)