|
1 | 1 | # Standalone file: do not edit by hand
|
2 |
| -# Source: <https://github.com/r-lib/rlang/blob/main/R/standalone-obj-type.R> |
| 2 | +# Source: https://github.com/r-lib/rlang/blob/HEAD/R/standalone-obj-type.R |
| 3 | +# Generated by: usethis::use_standalone("r-lib/rlang", "obj-type") |
3 | 4 | # ----------------------------------------------------------------------
|
4 | 5 | #
|
5 | 6 | # ---
|
6 | 7 | # repo: r-lib/rlang
|
7 | 8 | # file: standalone-obj-type.R
|
8 |
| -# last-updated: 2022-10-04 |
| 9 | +# last-updated: 2024-02-14 |
9 | 10 | # license: https://unlicense.org
|
10 | 11 | # imports: rlang (>= 1.1.0)
|
11 | 12 | # ---
|
12 | 13 | #
|
13 | 14 | # ## Changelog
|
14 | 15 | #
|
| 16 | +# 2024-02-14: |
| 17 | +# - `obj_type_friendly()` now works for S7 objects. |
| 18 | +# |
| 19 | +# 2023-05-01: |
| 20 | +# - `obj_type_friendly()` now only displays the first class of S3 objects. |
| 21 | +# |
| 22 | +# 2023-03-30: |
| 23 | +# - `stop_input_type()` now handles `I()` input literally in `arg`. |
| 24 | +# |
15 | 25 | # 2022-10-04:
|
16 | 26 | # - `obj_type_friendly(value = TRUE)` now shows numeric scalars
|
17 | 27 | # literally.
|
@@ -65,7 +75,7 @@ obj_type_friendly <- function(x, value = TRUE) {
|
65 | 75 | if (inherits(x, "quosure")) {
|
66 | 76 | type <- "quosure"
|
67 | 77 | } else {
|
68 |
| - type <- paste(class(x), collapse = "/") |
| 78 | + type <- class(x)[[1L]] |
69 | 79 | }
|
70 | 80 | return(sprintf("a <%s> object", type))
|
71 | 81 | }
|
@@ -261,19 +271,19 @@ vec_type_friendly <- function(x, length = FALSE) {
|
261 | 271 | #' Return OO type
|
262 | 272 | #' @param x Any R object.
|
263 | 273 | #' @return One of `"bare"` (for non-OO objects), `"S3"`, `"S4"`,
|
264 |
| -#' `"R6"`, or `"R7"`. |
| 274 | +#' `"R6"`, or `"S7"`. |
265 | 275 | #' @noRd
|
266 | 276 | obj_type_oo <- function(x) {
|
267 | 277 | if (!is.object(x)) {
|
268 | 278 | return("bare")
|
269 | 279 | }
|
270 | 280 |
|
271 |
| - class <- inherits(x, c("R6", "R7_object"), which = TRUE) |
| 281 | + class <- inherits(x, c("R6", "S7_object"), which = TRUE) |
272 | 282 |
|
273 | 283 | if (class[[1]]) {
|
274 | 284 | "R6"
|
275 | 285 | } else if (class[[2]]) {
|
276 |
| - "R7" |
| 286 | + "S7" |
277 | 287 | } else if (isS4(x)) {
|
278 | 288 | "S4"
|
279 | 289 | } else {
|
@@ -315,10 +325,15 @@ stop_input_type <- function(x,
|
315 | 325 | if (length(what)) {
|
316 | 326 | what <- oxford_comma(what)
|
317 | 327 | }
|
| 328 | + if (inherits(arg, "AsIs")) { |
| 329 | + format_arg <- identity |
| 330 | + } else { |
| 331 | + format_arg <- cli$format_arg |
| 332 | + } |
318 | 333 |
|
319 | 334 | message <- sprintf(
|
320 | 335 | "%s must be %s, not %s.",
|
321 |
| - cli$format_arg(arg), |
| 336 | + format_arg(arg), |
322 | 337 | what,
|
323 | 338 | obj_type_friendly(x, value = show_value)
|
324 | 339 | )
|
|
0 commit comments