From 13e583aafb505d6874f4ab8147ddea842ab79d66 Mon Sep 17 00:00:00 2001 From: Hugo Gruson <10783929+Bisaloo@users.noreply.github.com> Date: Fri, 30 May 2025 20:17:27 +0200 Subject: [PATCH 1/2] Increment version number to 1.5.0.9000 --- DESCRIPTION | 2 +- NEWS.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 046e44a..ff6d7e6 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: backports Type: Package Title: Reimplementations of Functions Introduced Since R-3.0.0 -Version: 1.5.0 +Version: 1.5.0.9000 Authors@R: c( person("Michel", "Lang", NULL, "michellang@gmail.com", role = c("cre", "aut"), comment = c(ORCID = "0000-0001-9754-0393")), diff --git a/NEWS.md b/NEWS.md index de1bd9e..dd6f9bf 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,5 @@ +# backports (development version) + # backports 1.5.0 * Added backport for the null-coalesce operator `%||%` for R versions prior to 4.4.0. From 2b2e90f48de62484156bb565d927d254eed16312 Mon Sep 17 00:00:00 2001 From: Hugo Gruson <10783929+Bisaloo@users.noreply.github.com> Date: Fri, 30 May 2025 20:45:12 +0200 Subject: [PATCH 2/2] Add backport for grepv() Fix #87 --- NEWS.md | 2 ++ R/grepv.R | 36 ++++++++++++++++++++++++++++++++++++ README.md | 3 +++ tests/test-grepv.R | 10 ++++++++++ 4 files changed, 51 insertions(+) create mode 100644 R/grepv.R create mode 100644 tests/test-grepv.R diff --git a/NEWS.md b/NEWS.md index dd6f9bf..bfbc38b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # backports (development version) +* Added backport for the `grepv()` function from base for R versions prior to 4.5.0 + # backports 1.5.0 * Added backport for the null-coalesce operator `%||%` for R versions prior to 4.4.0. diff --git a/R/grepv.R b/R/grepv.R new file mode 100644 index 0000000..5c239c8 --- /dev/null +++ b/R/grepv.R @@ -0,0 +1,36 @@ +#' @title Backport of grepv for R < 4.5.0 +#' @rdname grepv +#' +#' @description +#' See the original description in [grepv()]. +#' +#' @keywords internal +#' @rawNamespace if (getRversion() < "4.5.0") export(grepv) +#' @examples +#' # get function from namespace instead of possibly getting +#' # implementation shipped with recent R versions: +#' bp_hasName = getFromNamespace("grepv", "backports") +#' +#' grepv("[a-m]", letters) +grepv = function( + pattern, + x, + ignore.case = FALSE, + perl = FALSE, + value = TRUE, + fixed = FALSE, + useBytes = FALSE, + invert = FALSE +) { + grep( + pattern = pattern, + x = x, + ignore.case = ignore.case, + perl = perl, + value = value, + fixed = fixed, + useBytes = useBytes, + invert = invert + ) +} + diff --git a/README.md b/README.md index a7ee2c6..0ff3a23 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,9 @@ Note that the braces `{}` are necessary in the `NAMESPACE` file, even though they wouldn't be for regular R code, and that you might get a warning for including `backports` in the `Imports:` section of your `DESCRIPTION` file if you never end up using it. +## Backports for R versions prior to 4.5.0 + +* `base::grepv()` ## Backports for R versions prior to 3.2.0 diff --git a/tests/test-grepv.R b/tests/test-grepv.R new file mode 100644 index 0000000..4fd75f5 --- /dev/null +++ b/tests/test-grepv.R @@ -0,0 +1,10 @@ +source("helper/helper.R") + +if (exists("grepv", envir = baseenv())) { + f = get("grepv", envir = baseenv()) + expect_same = makeCompareFun(f, backports:::grepv) + + expect_same("[a-m]", letters) + expect_same("^\\w{2}", colnames(mtcars)) +} +