/R/zzz.R

https://github.com/hadley/dbplyr · R · 61 lines · 41 code · 9 blank · 11 comment · 7 complexity · d1f43aa7ec84fd6242fbf7b9f3565fdf MD5 · raw file

  1. # nocov start
  2. .onLoad <- function(...) {
  3. register_s3_method("dplyr", "union", "tbl_lazy")
  4. register_s3_method("dplyr", "intersect", "tbl_lazy")
  5. register_s3_method("dplyr", "setdiff", "tbl_lazy")
  6. register_s3_method("dplyr", "setdiff", "tbl_Oracle")
  7. register_s3_method("dplyr", "setdiff", "OraConnection")
  8. register_s3_method("dplyr", "filter", "tbl_lazy")
  9. register_s3_method("tidyr", "pivot_wider", "tbl_lazy")
  10. register_s3_method("tidyr", "pivot_longer", "tbl_lazy")
  11. register_s3_method("tidyr", "fill", "tbl_lazy")
  12. register_s3_method("tidyr", "complete", "tbl_lazy")
  13. register_s3_method("tidyr", "expand", "tbl_lazy")
  14. register_s3_method("tidyr", "replace_na", "tbl_lazy")
  15. if (utils::packageVersion("dplyr") >= "0.8.99") {
  16. register_s3_method("dplyr", "group_by_drop_default", "tbl_lazy")
  17. methods::setOldClass(c("ident_q", "ident", "character"), ident_q())
  18. methods::setOldClass(c("ident", "character"), ident())
  19. methods::setOldClass(c("sql", "character"), sql())
  20. }
  21. base_scalar$`%>%` <- magrittr::`%>%`
  22. }
  23. # Silence R CMD check note:
  24. # ** checking whether the namespace can be loaded with stated dependencies ... NOTE
  25. # Warning in .undefineMethod("initialize", Class, classWhere) :
  26. # no generic function 'initialize' found
  27. #
  28. # I'm not sure why this is necessary, but I suspect it's due to the use of
  29. # setOldClass onLoad
  30. #' @importFrom methods initialize
  31. NULL
  32. register_s3_method <- function(pkg, generic, class, fun = NULL) {
  33. stopifnot(is.character(pkg), length(pkg) == 1)
  34. stopifnot(is.character(generic), length(generic) == 1)
  35. stopifnot(is.character(class), length(class) == 1)
  36. if (is.null(fun)) {
  37. fun <- get(paste0(generic, ".", class), envir = parent.frame())
  38. } else {
  39. stopifnot(is.function(fun))
  40. }
  41. if (pkg %in% loadedNamespaces()) {
  42. registerS3method(generic, class, fun, envir = asNamespace(pkg))
  43. }
  44. # Always register hook in case package is later unloaded & reloaded
  45. setHook(
  46. packageEvent(pkg, "onLoad"),
  47. function(...) {
  48. registerS3method(generic, class, fun, envir = asNamespace(pkg))
  49. }
  50. )
  51. }
  52. # nocov end