Skip to content

Commit a76022a

Browse files
committed
Roll back changes to mapped_discrete
1 parent 4b7acf5 commit a76022a

File tree

6 files changed

+70
-119
lines changed

6 files changed

+70
-119
lines changed

NAMESPACE

Lines changed: 22 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,23 @@ S3method("$",ggproto)
44
S3method("$",ggproto_parent)
55
S3method("$<-",uneval)
66
S3method("+",gg)
7+
S3method("[",mapped_discrete)
78
S3method("[",uneval)
9+
S3method("[<-",mapped_discrete)
810
S3method("[<-",uneval)
911
S3method("[[",ggproto)
1012
S3method("[[<-",uneval)
1113
S3method(.DollarNames,ggproto)
14+
S3method(as.data.frame,mapped_discrete)
1215
S3method(as.list,ggproto)
1316
S3method(autolayer,default)
1417
S3method(autoplot,default)
18+
S3method(c,mapped_discrete)
1519
S3method(drawDetails,zeroGrob)
1620
S3method(element_grob,element_blank)
1721
S3method(element_grob,element_line)
1822
S3method(element_grob,element_rect)
1923
S3method(element_grob,element_text)
20-
S3method(format,ggplot2_mapped_discrete)
2124
S3method(format,ggproto)
2225
S3method(format,ggproto_method)
2326
S3method(fortify,"NULL")
@@ -139,31 +142,24 @@ S3method(scale_type,sfc)
139142
S3method(single_value,default)
140143
S3method(single_value,factor)
141144
S3method(summary,ggplot)
142-
S3method(vec_arith,ggplot2_mapped_discrete)
143-
S3method(vec_arith.ggplot2_mapped_discrete,MISSING)
144-
S3method(vec_arith.ggplot2_mapped_discrete,default)
145-
S3method(vec_arith.ggplot2_mapped_discrete,ggplot2_mapped_discrete)
146-
S3method(vec_arith.ggplot2_mapped_discrete,numeric)
147-
S3method(vec_arith.numeric,ggplot2_mapped_discrete)
148-
S3method(vec_cast,character.ggplot2_mapped_discrete)
149-
S3method(vec_cast,double.ggplot2_mapped_discrete)
150-
S3method(vec_cast,factor.ggplot2_mapped_discrete)
151-
S3method(vec_cast,ggplot2_mapped_discrete.double)
152-
S3method(vec_cast,ggplot2_mapped_discrete.factor)
153-
S3method(vec_cast,ggplot2_mapped_discrete.ggplot2_mapped_discrete)
154-
S3method(vec_cast,ggplot2_mapped_discrete.integer)
155-
S3method(vec_cast,ggplot2_mapped_discrete.logical)
156-
S3method(vec_cast,integer.ggplot2_mapped_discrete)
157-
S3method(vec_math,ggplot2_mapped_discrete)
158-
S3method(vec_ptype2,character.ggplot2_mapped_discrete)
159-
S3method(vec_ptype2,double.ggplot2_mapped_discrete)
160-
S3method(vec_ptype2,factor.ggplot2_mapped_discrete)
161-
S3method(vec_ptype2,ggplot2_mapped_discrete.character)
162-
S3method(vec_ptype2,ggplot2_mapped_discrete.double)
163-
S3method(vec_ptype2,ggplot2_mapped_discrete.factor)
164-
S3method(vec_ptype2,ggplot2_mapped_discrete.ggplot2_mapped_discrete)
165-
S3method(vec_ptype2,ggplot2_mapped_discrete.integer)
166-
S3method(vec_ptype2,integer.ggplot2_mapped_discrete)
145+
S3method(vec_cast,character.mapped_discrete)
146+
S3method(vec_cast,double.mapped_discrete)
147+
S3method(vec_cast,factor.mapped_discrete)
148+
S3method(vec_cast,integer.mapped_discrete)
149+
S3method(vec_cast,mapped_discrete.double)
150+
S3method(vec_cast,mapped_discrete.factor)
151+
S3method(vec_cast,mapped_discrete.integer)
152+
S3method(vec_cast,mapped_discrete.logical)
153+
S3method(vec_cast,mapped_discrete.mapped_discrete)
154+
S3method(vec_ptype2,character.mapped_discrete)
155+
S3method(vec_ptype2,double.mapped_discrete)
156+
S3method(vec_ptype2,factor.mapped_discrete)
157+
S3method(vec_ptype2,integer.mapped_discrete)
158+
S3method(vec_ptype2,mapped_discrete.character)
159+
S3method(vec_ptype2,mapped_discrete.double)
160+
S3method(vec_ptype2,mapped_discrete.factor)
161+
S3method(vec_ptype2,mapped_discrete.integer)
162+
S3method(vec_ptype2,mapped_discrete.mapped_discrete)
167163
S3method(widthDetails,titleGrob)
168164
S3method(widthDetails,zeroGrob)
169165
export("%+%")
@@ -692,7 +688,6 @@ export(update_geom_defaults)
692688
export(update_labels)
693689
export(update_stat_defaults)
694690
export(vars)
695-
export(vec_arith.ggplot2_mapped_discrete)
696691
export(waiver)
697692
export(wrap_dims)
698693
export(xlab)

R/scale-discrete-.r

Lines changed: 40 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -141,98 +141,73 @@ ScaleDiscretePosition <- ggproto("ScaleDiscretePosition", ScaleDiscrete,
141141
}
142142
)
143143

144+
# Can't use vctrs - vctrs is too restrictive for mapped_discrete
144145
new_mapped_discrete <- function(x = double()) {
145146
vec_assert(x, double())
146-
obj <- new_vctr(x, class = "ggplot2_mapped_discrete")
147-
# vctrs does not support inheriting from numeric base class
148-
class(obj) <- c(class(obj), "numeric")
149-
obj
147+
class(x) <- c("mapped_discrete", "numeric")
148+
x
150149
}
151150
mapped_discrete <- function(x = double()) {
152151
if (is.null(x)) return(NULL)
153152
x <- as.vector(x)
154153
new_mapped_discrete(vec_cast(x, double()))
155154
}
156-
is_mapped_discrete <- function(x) inherits(x, "ggplot2_mapped_discrete")
155+
is_mapped_discrete <- function(x) inherits(x, "mapped_discrete")
157156
#' @export
158-
format.ggplot2_mapped_discrete <- function(x, ...) format(vec_data(x), ...)
159-
#' @export
160-
vec_ptype2.ggplot2_mapped_discrete.ggplot2_mapped_discrete <- function(x, y, ...) new_mapped_discrete()
161-
#' @export
162-
vec_ptype2.ggplot2_mapped_discrete.double <- function(x, y, ...) new_mapped_discrete()
163-
#' @export
164-
vec_ptype2.double.ggplot2_mapped_discrete <- function(x, y, ...) new_mapped_discrete()
165-
#' @export
166-
vec_ptype2.ggplot2_mapped_discrete.integer <- function(x, y, ...) new_mapped_discrete()
157+
c.mapped_discrete <- function(..., recursive = FALSE) {
158+
mapped_discrete(unlist(lapply(list(...), unclass)))
159+
}
167160
#' @export
168-
vec_ptype2.integer.ggplot2_mapped_discrete <- function(x, y, ...) new_mapped_discrete()
161+
`[.mapped_discrete` <- function(x, ..., drop = TRUE) {
162+
mapped_discrete(NextMethod())
163+
}
169164
#' @export
170-
vec_ptype2.ggplot2_mapped_discrete.character <- function(x, y, ...) character()
165+
`[<-.mapped_discrete` <- function(x, ..., value) {
166+
if (length(value) == 0) {
167+
return(x)
168+
}
169+
value <- as.numeric(unclass(value))
170+
mapped_discrete(NextMethod())
171+
}
171172
#' @export
172-
vec_ptype2.character.ggplot2_mapped_discrete <- function(x, y, ...) character()
173+
as.data.frame.mapped_discrete <- function (x, ...) {
174+
as.data.frame.vector(x = unclass(x), ...)
175+
}
176+
173177
#' @export
174-
vec_ptype2.ggplot2_mapped_discrete.factor <- function(x, y, ...) new_mapped_discrete()
178+
vec_ptype2.mapped_discrete.mapped_discrete <- function(x, y, ...) new_mapped_discrete()
175179
#' @export
176-
vec_ptype2.factor.ggplot2_mapped_discrete <- function(x, y, ...) new_mapped_discrete()
180+
vec_ptype2.mapped_discrete.double <- function(x, y, ...) new_mapped_discrete()
177181
#' @export
178-
vec_cast.ggplot2_mapped_discrete.ggplot2_mapped_discrete <- function(x, to, ...) x
182+
vec_ptype2.double.mapped_discrete <- function(x, y, ...) new_mapped_discrete()
179183
#' @export
180-
vec_cast.ggplot2_mapped_discrete.integer <- function(x, to, ...) mapped_discrete(x)
184+
vec_ptype2.mapped_discrete.integer <- function(x, y, ...) new_mapped_discrete()
181185
#' @export
182-
vec_cast.integer.ggplot2_mapped_discrete <- function(x, to, ...) as.integer(vec_data(x))
186+
vec_ptype2.integer.mapped_discrete <- function(x, y, ...) new_mapped_discrete()
183187
#' @export
184-
vec_cast.ggplot2_mapped_discrete.double <- function(x, to, ...) new_mapped_discrete(x)
188+
vec_ptype2.mapped_discrete.character <- function(x, y, ...) character()
185189
#' @export
186-
vec_cast.double.ggplot2_mapped_discrete <- function(x, to, ...) vec_data(x)
190+
vec_ptype2.character.mapped_discrete <- function(x, y, ...) character()
187191
#' @export
188-
vec_cast.character.ggplot2_mapped_discrete <- function(x, to, ...) as.character(vec_data(x))
192+
vec_ptype2.mapped_discrete.factor <- function(x, y, ...) new_mapped_discrete()
189193
#' @export
190-
vec_cast.ggplot2_mapped_discrete.factor <- function(x, to, ...) mapped_discrete(unclass(x))
194+
vec_ptype2.factor.mapped_discrete <- function(x, y, ...) new_mapped_discrete()
191195
#' @export
192-
vec_cast.factor.ggplot2_mapped_discrete <- function(x, to, ...) factor(vec_data(x), ...)
196+
vec_cast.mapped_discrete.mapped_discrete <- function(x, to, ...) x
193197
#' @export
194-
vec_cast.ggplot2_mapped_discrete.logical <- function(x, to, ...) mapped_discrete(x)
195-
#' Utilities for working with discrete values mapped to numeric domain
196-
#'
197-
#' @param op The operator to apply
198-
#' @param x,y items to apply the operator to
199-
#' @param ... passed on
200-
#' @export vec_arith.ggplot2_mapped_discrete
201-
#' @method vec_arith ggplot2_mapped_discrete
202-
#'
203-
#' @keywords internal
198+
vec_cast.mapped_discrete.integer <- function(x, to, ...) mapped_discrete(x)
204199
#' @export
205-
vec_arith.ggplot2_mapped_discrete <- function(op, x, y, ...) {
206-
UseMethod("vec_arith.ggplot2_mapped_discrete", y)
207-
}
200+
vec_cast.integer.mapped_discrete <- function(x, to, ...) as.integer(as.vector(x))
208201
#' @export
209-
#' @method vec_arith.ggplot2_mapped_discrete default
210-
vec_arith.ggplot2_mapped_discrete.default <- function(op, x, y, ...) {
211-
stop_incompatible_op(op, x, y)
212-
}
202+
vec_cast.mapped_discrete.double <- function(x, to, ...) new_mapped_discrete(x)
213203
#' @export
214-
#' @method vec_arith.ggplot2_mapped_discrete ggplot2_mapped_discrete
215-
vec_arith.ggplot2_mapped_discrete.ggplot2_mapped_discrete <- function(op, x, y, ...) {
216-
mapped_discrete(vec_arith_base(op, x, y))
217-
}
204+
vec_cast.double.mapped_discrete <- function(x, to, ...) as.vector(x)
218205
#' @export
219-
#' @method vec_arith.ggplot2_mapped_discrete numeric
220-
vec_arith.ggplot2_mapped_discrete.numeric <- function(op, x, y, ...) {
221-
mapped_discrete(vec_arith_base(op, x, y))
222-
}
206+
vec_cast.character.mapped_discrete <- function(x, to, ...) as.character(as.vector(x))
223207
#' @export
224-
#' @method vec_arith.numeric ggplot2_mapped_discrete
225-
vec_arith.numeric.ggplot2_mapped_discrete <- function(op, x, y, ...) {
226-
mapped_discrete(vec_arith_base(op, x, y))
227-
}
208+
vec_cast.mapped_discrete.factor <- function(x, to, ...) mapped_discrete(as.vector(unclass(x)))
228209
#' @export
229-
#' @method vec_arith.ggplot2_mapped_discrete MISSING
230-
vec_arith.ggplot2_mapped_discrete.MISSING <- function(op, x, y, ...) {
231-
op_fn <- getExportedValue("base", op)
232-
mapped_discrete(op_fn(vec_data(x)))
233-
}
210+
vec_cast.factor.mapped_discrete <- function(x, to, ...) factor(as.vector(x), ...)
234211
#' @export
235-
vec_math.ggplot2_mapped_discrete <- function(.fn, .x, ...) {
236-
res <- vec_math_base(.fn, .x, ...)
237-
if (is.numeric(res)) mapped_discrete(res) else res
238-
}
212+
vec_cast.mapped_discrete.logical <- function(x, to, ...) mapped_discrete(x)
213+

man/vec_arith.ggplot2_mapped_discrete.Rd

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

tests/testthat/test-build.r

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ test_that("position aesthetics are coerced to correct type", {
2323
l2 <- ggplot(df, aes(x, z)) + geom_point() + scale_x_discrete()
2424
d2 <- layer_data(l2, 1)
2525

26-
expect_s3_class(d2$x, "ggplot2_mapped_discrete")
27-
expect_s3_class(d2$y, "ggplot2_mapped_discrete")
26+
expect_s3_class(d2$x, "mapped_discrete")
27+
expect_s3_class(d2$y, "mapped_discrete")
2828
})
2929

3030
test_that("non-position aesthetics are mapped", {

tests/testthat/test-geom-freqpoly.R

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ test_that("can do frequency polygon with categorical x", {
44
p <- ggplot(df, aes(x)) + geom_freqpoly(stat = "count")
55
d <- layer_data(p)
66

7-
expect_s3_class(d$x, "ggplot2_mapped_discrete")
7+
expect_s3_class(d$x, "mapped_discrete")
88
expect_equal(d$x, mapped_discrete(1:3))
99
expect_equal(d$y, 3:1)
1010
})

tests/testthat/test-scale-discrete.R

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,13 @@ test_that("Aesthetics with no continuous interpretation fails when called", {
152152

153153
test_that("mapped_discrete vectors behaves as predicted", {
154154
expect_null(mapped_discrete(NULL))
155-
expect_s3_class(mapped_discrete(c(0, 3.5)), "ggplot2_mapped_discrete")
156-
expect_s3_class(mapped_discrete(seq_len(4)), "ggplot2_mapped_discrete")
155+
expect_s3_class(mapped_discrete(c(0, 3.5)), "mapped_discrete")
156+
expect_s3_class(mapped_discrete(seq_len(4)), "mapped_discrete")
157157
expect_error(mapped_discrete(letters))
158158

159159
x <- mapped_discrete(1:10)
160-
expect_s3_class(x[2:4], "ggplot2_mapped_discrete")
161-
expect_s3_class(c(x, x), "ggplot2_mapped_discrete")
160+
expect_s3_class(x[2:4], "mapped_discrete")
161+
expect_s3_class(c(x, x), "mapped_discrete")
162162
x[5:7] <- mapped_discrete(seq_len(3))
163-
expect_s3_class(x, "ggplot2_mapped_discrete")
163+
expect_s3_class(x, "mapped_discrete")
164164
})

0 commit comments

Comments
 (0)