Skip to content

Commit 62d8db4

Browse files
committed
fix inherits() issues
1 parent 09eef8d commit 62d8db4

File tree

8 files changed

+32
-21
lines changed

8 files changed

+32
-21
lines changed

R/guide-.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,7 @@ Guide <- ggproto(
379379
if (!is.theme_element(elements)) {
380380
elements <- elements$ticks
381381
}
382-
if (!inherits(elements, "element_line")) {
382+
if (!S7::S7_inherits(elements, element_line)) {
383383
return(zeroGrob())
384384
}
385385

R/guide-axis-logticks.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ guide_axis_logticks <- function(
119119
allow_null = TRUE
120120
)
121121
check_bool(expanded)
122-
check_inherits(short.theme, c("element_blank", "element_line"))
122+
check_inherits(short.theme, c("ggplot2::element_blank", "ggplot2::element_line"))
123123

124124
new_guide(
125125
available_aes = c("x", "y"),

R/guide-axis-theta.R

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ GuideAxisTheta <- ggproto(
183183

184184
build_labels = function(key, elements, params) {
185185

186-
if (inherits(elements$text, "element_blank")) {
186+
if (S7::S7_inherits(elements$text, element_blank)) {
187187
return(zeroGrob())
188188
}
189189

@@ -267,7 +267,7 @@ GuideAxisTheta <- ggproto(
267267
key <- params$key
268268
key <- vec_slice(key, !is.na(key$.label) & nzchar(key$.label))
269269
labels <- validate_labels(key$.label)
270-
if (length(labels) == 0 || inherits(elements$text, "element_blank")) {
270+
if (length(labels) == 0 || S7::S7_inherits(elements$text, element_blank)) {
271271
return(list(offset = offset))
272272
}
273273

@@ -364,7 +364,7 @@ GuideAxisTheta <- ggproto(
364364

365365
theta_tickmarks <- function(key, element, length, offset = NULL) {
366366
n_breaks <- nrow(key)
367-
if (n_breaks < 1 || inherits(element, "element_blank")) {
367+
if (n_breaks < 1 || S7::S7_inherits(element, element_blank)) {
368368
return(zeroGrob())
369369
}
370370

R/guide-axis.R

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,10 +259,10 @@ GuideAxis <- ggproto(
259259
override_elements = function(params, elements, theme) {
260260
elements$text <-
261261
label_angle_heuristic(elements$text, params$position, params$angle)
262-
if (inherits(elements$ticks, "element_blank")) {
262+
if (S7::S7_inherits(elements$ticks, element_blank)) {
263263
elements$major_length <- unit(0, "cm")
264264
}
265-
if (inherits(elements$minor, "element_blank") || isFALSE(params$minor.ticks)) {
265+
if (S7::S7_inherits(elements$minor, element_blank) || isFALSE(params$minor.ticks)) {
266266
elements$minor_length <- unit(0, "cm")
267267
}
268268
return(elements)
@@ -379,7 +379,7 @@ GuideAxis <- ggproto(
379379
# Ticks
380380
major_cm <- convertUnit(elements$major_length, "cm", valueOnly = TRUE)
381381
range <- range(0, major_cm)
382-
if (params$minor.ticks && !inherits(elements$minor, "element_blank")) {
382+
if (params$minor.ticks && !S7::S7_inherits(elements$minor, element_blank)) {
383383
minor_cm <- convertUnit(elements$minor_length, "cm", valueOnly = TRUE)
384384
range <- range(range, minor_cm)
385385
}
@@ -590,7 +590,7 @@ axis_label_priority_between <- function(x, y) {
590590
#' overridden from the user- or theme-supplied element.
591591
#' @noRd
592592
label_angle_heuristic <- function(element, position, angle) {
593-
if (!inherits(element, "element_text")
593+
if (!S7::S7_inherits(element, element_text)
594594
|| is.null(position)
595595
|| is.null(angle %|W|% NULL)) {
596596
return(element)

R/plot-build.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ table_add_tag <- function(table, label, theme) {
342342
return(table)
343343
}
344344
element <- calc_element("plot.tag", theme)
345-
if (inherits(element, "element_blank")) {
345+
if (S7::S7_inherits(element, element_blank)) {
346346
return(table)
347347
}
348348

R/theme-elements.R

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -861,8 +861,11 @@ check_element <- function(el, elname, element_tree, call = caller_env()) {
861861
if ("margin" %in% class) {
862862
if (!is.unit(el) && length(el) == 4)
863863
cli::cli_abort("The {.var {elname}} theme element must be a {.cls unit} vector of length 4.", call = call)
864-
} else if (!inherits(el, class) && !inherits(el, "element_blank")) {
865-
cli::cli_abort("The {.var {elname}} theme element must be a {.cls {eldef$class}} object.", call = call)
864+
} else if (!inherits(el, class) && !S7::S7_inherits(el, element_blank)) {
865+
if (inherits(class, "S7_class")) {
866+
class <- class@name
867+
}
868+
cli::cli_abort("The {.var {elname}} theme element must be a {.cls {class}} object.", call = call)
866869
}
867870
invisible()
868871
}

R/theme.R

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -719,7 +719,7 @@ calc_element <- function(element, theme, verbose = FALSE, skip_blank = FALSE,
719719

720720
# If result is element_blank, we skip it if `skip_blank` is `TRUE`,
721721
# and otherwise we don't inherit anything from parents
722-
if (inherits(el_out, "element_blank")) {
722+
if (S7::S7_inherits(el_out, element_blank)) {
723723
if (isTRUE(skip_blank)) {
724724
el_out <- NULL
725725
} else {
@@ -733,9 +733,17 @@ calc_element <- function(element, theme, verbose = FALSE, skip_blank = FALSE,
733733

734734
# If the element is defined (and not just inherited), check that
735735
# it is of the class specified in element_tree
736-
if (!is.null(el_out) &&
737-
!inherits(el_out, element_tree[[element]]$class)) {
738-
cli::cli_abort("Theme element {.var {element}} must have class {.cls {ggplot_global$element_tree[[element]]$class}}.", call = call)
736+
if (!is.null(el_out)) {
737+
class <- element_tree[[element]]$class
738+
if (inherits(class, "S7_class")) {
739+
if (!S7::S7_inherits(el_out, class)) {
740+
cli::cli_abort("Theme element {.var {element}} must have class {.cls {class@name}}.", call = call)
741+
}
742+
} else {
743+
if (!inherits(el_out, class)) {
744+
cli::cli_abort("Theme element {.var {element}} must have class {.cls {ggplot_global$element_tree[[element]]$class}}.", call = call)
745+
}
746+
}
739747
}
740748

741749
# Get the names of parents from the inheritance tree

tests/testthat/test-theme.R

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ test_that("modifying theme element properties with + operator works", {
2121
# Make sure the theme class didn't change or get dropped
2222
expect_true(is.theme(t))
2323
# Make sure the element class didn't change or get dropped
24-
expect_true(inherits(t$axis.title.x, "element"))
25-
expect_true(inherits(t$axis.title.x, "element_text"))
24+
expect_s3_class(t$axis.title.x, "ggplot2::element")
25+
expect_s3_class(t$axis.title.x, "ggplot2::element_text")
2626

2727
# Modifying an intermediate node works
2828
t <- theme_grey() + theme(axis.title = element_text(colour = 'red'))
@@ -346,7 +346,7 @@ test_that("element tree can be modified", {
346346
test_that("all elements in complete themes have inherit.blank=TRUE", {
347347
inherit_blanks <- function(theme) {
348348
all(vapply(theme, function(el) {
349-
if (inherits(el, "element") && !inherits(el, "element_blank")) {
349+
if (inherits(el, "element") && !S7::S7_inherits(el, element_blank)) {
350350
el$inherit.blank
351351
} else {
352352
TRUE
@@ -642,15 +642,15 @@ test_that("complete_theme completes a theme", {
642642

643643
# Missing elements are filled in if default theme is incomplete
644644
new <- complete_theme(default = theme())
645-
expect_s3_class(new$axis.line, "element_blank")
645+
expect_s3_class(new$axis.line, "ggplot2::element_blank")
646646

647647
# Registered elements are included
648648
register_theme_elements(
649649
test = element_text(),
650650
element_tree = list(test = el_def("element_text", "text"))
651651
)
652652
new <- complete_theme(default = gray)
653-
expect_s3_class(new$test, "element_text")
653+
expect_s3_class(new$test, "ggplot2::element_text")
654654
reset_theme_settings()
655655
})
656656

0 commit comments

Comments
 (0)