Browse Source

is-ers, detect-ors, walkers

master
boB Rudis 6 years ago
parent
commit
3dcc2b1dff
No known key found for this signature in database GPG Key ID: 1D7529BE14E2BBA9
  1. 5
      DESCRIPTION
  2. 5
      NAMESPACE
  3. 17
      R/use-detect.R
  4. 15
      R/use-isers.R
  5. 2
      R/use-keepers.R
  6. 2
      R/use-mappers.R
  7. 18
      R/use-walkers.R
  8. 11
      R/utils-pipe.R
  9. 5
      README.Rmd
  10. 6
      README.md
  11. 49
      inst/templates/detect.R
  12. 7
      inst/templates/is-ers.R
  13. 37
      inst/templates/walkers.R
  14. 12
      man/pipe.Rd
  15. 21
      man/use_detect.Rd
  16. 18
      man/use_isers.Rd
  17. 3
      man/use_keepers.Rd
  18. 3
      man/use_mappers.Rd
  19. 22
      man/use_walkers.Rd

5
DESCRIPTION

@ -24,7 +24,8 @@ Suggests:
covr
Depends:
R (>= 3.2.0)
Imports:
Imports:
usethis,
rprojroot
rprojroot,
magrittr
RoxygenNote: 6.0.1.9000

5
NAMESPACE

@ -1,8 +1,13 @@
# Generated by roxygen2: do not edit by hand
export("%>%")
export(use_detect)
export(use_infix_helpers)
export(use_isers)
export(use_keepers)
export(use_mappers)
export(use_safely)
export(use_walkers)
import(rprojroot)
import(usethis)
importFrom(magrittr,"%>%")

17
R/use-detect.R

@ -0,0 +1,17 @@
#' Use base-ified equivalents of "detect"-ors
#'
#' * Creates `R/utils-detect.R` with base R pseudo-equivalents for `purrr` `detect` (et al).
#'
#' These support formula functions (i.e. `~{}`).
#'
#' @md
#' @param save_as Where to save/what to name the file. Defaults to "`R/utils-detect.R`"
#' @param open if `TRUE`, open the resultant file
#' @export
use_detect <- function(save_as = "R/utils-detect.R", open = TRUE) {
check_is_package("use_detect()")
use_template("detect.R", save_as = save_as , open = open, package = "freebase")
}

15
R/use-isers.R

@ -0,0 +1,15 @@
#' Use "is_" functions
#'
#' * Creates `R/utils-isers.R` filled with `is_...` testors
#'
#' @md
#' @param save_as Where to save/what to name the file. Defaults to "`R/utils-detect.R`"
#' @param open if `TRUE`, open the resultant file
#' @export
use_isers <- function(save_as = "R/utils-isers.R", open = TRUE) {
check_is_package("use_isers()")
use_template("is-ers.R", save_as = save_as , open = open, package = "freebase")
}

2
R/use-keepers.R

@ -3,6 +3,8 @@
#' * Creates `R/utils-keepers.R` with base R pseudo-equivalents for `purrr`
#' `keep`/`discard`/`compact`
#'
#' These support formula functions (i.e. `~{}`).
#'
#' @md
#' @param save_as Where to save/what to name the file. Defaults to "`R/utils-keepers.R`"
#' @param open if `TRUE`, open the resultant file

2
R/use-mappers.R

@ -2,6 +2,8 @@
#'
#' * Creates `R/utils-mappers.R` with base R pseudo-equivalents for `purrr` `map`-pers.
#'
#' These support formula functions (i.e. `~{}`).
#'
#' @md
#' @param save_as Where to save/what to name the file. Defaults to "`R/utils-mappers.R`"
#' @param open if `TRUE`, open the resultant file

18
R/use-walkers.R

@ -0,0 +1,18 @@
#' Use base-ified equivalents of keep/discard/compact
#'
#' * Creates `R/utils-walkers.R` with base R pseudo-equivalents for `purrr`
#' `walk`/`walk2`
#'
#' These support formula functions (i.e. `~{}`).
#'
#' @md
#' @param save_as Where to save/what to name the file. Defaults to "`R/utils-walkers.R`"
#' @param open if `TRUE`, open the resultant file
#' @export
use_walkers <- function(save_as = "R/utils-walkers.R", open = TRUE) {
check_is_package("use_walkers()")
use_template("walkers.R", save_as = save_as , open = open, package = "freebase")
}

11
R/utils-pipe.R

@ -0,0 +1,11 @@
#' Pipe operator
#'
#' See \code{magrittr::\link[magrittr]{\%>\%}} for details.
#'
#' @name %>%
#' @rdname pipe
#' @keywords internal
#' @export
#' @importFrom magrittr %>%
#' @usage lhs \%>\% rhs
NULL

5
README.Rmd

@ -22,10 +22,13 @@ Use deliberately and with caution.
The following functions are implemented:
- `use_detect`: Use base-ified equivalents of "detect"-ors (these support `~{}` formula functions)
- `use_infix_helpers`: Use infix-helpers
- `use_keepers`: Use base-ified equivalents of keep/discard/compact
- `use_isers`: Use "is_" functions
- `use_keepers`: Use base-ified equivalents of keep/discard/compact (these support `~{}` formula functions)
- `use_mappers`: Use base-ified equivalents of 'map'-pers (these support `~{}` formula functions)
- `use_safely`: Use base-ified equivalents of "safely"-ifiers
- `use_walkers`: Use base-ified equivalents of keep/discard/compact (these support `~{}` formula functions)
## Installation

6
README.md

@ -19,11 +19,17 @@ Use deliberately and with caution.
The following functions are implemented:
- `use_detect`: Use base-ified equivalents of “detect”-ors (these
support `~{}` formula functions)
- `use_infix_helpers`: Use infix-helpers
- `use_isers`: Use “is\_” functions
- `use_keepers`: Use base-ified equivalents of keep/discard/compact
(these support `~{}` formula functions)
- `use_mappers`: Use base-ified equivalents of ‘map’-pers (these
support `~{}` formula functions)
- `use_safely`: Use base-ified equivalents of “safely”-ifiers
- `use_walkers`: Use base-ified equivalents of keep/discard/compact
(these support `~{}` formula functions)
## Installation

49
inst/templates/detect.R

@ -0,0 +1,49 @@
# NOTE: is_true() is also in use_isers()
is_true <- function (x) identical(x, TRUE)
# These support formula functions (i.e. `~{}`).
detect <- function (.x, .f, ..., .right = FALSE, .p) {
if (inherits(.f, "formula")) {
.body <- dimnames(attr(terms(.f), "factors"))[[1]]
.f <- function(.x, .=.x) {}
body(.f) <- as.expression(parse(text=.body))
}
for (i in index(.x, .right)) {
if (inherits(.f, "function")) {
if (is_true(.f(.x[[i]], ...))) return(.x[[i]])
} else {
if (is_true(.x[[i]][[.f]])) return(.x[[i]])
}
}
NULL
}
detect_index <- function (.x, .f, ..., .right = FALSE, .p) {
if (inherits(.f, "formula")) {
.body <- dimnames(attr(terms(.f), "factors"))[[1]]
.f <- function(.x, .=.x) {}
body(.f) <- as.expression(parse(text=.body))
}
for (i in index(.x, .right)) {
if (inherits(.f, "function")) {
if (is_true(.f(.x[[i]], ...))) return(i)
} else {
if (is_true(.x[[i]][[.f]])) return(i)
}
}
0L
}
index <- function (x, right = FALSE) {
idx <- seq_along(x)
if (right) idx <- rev(idx)
idx
}

7
inst/templates/is-ers.R

@ -0,0 +1,7 @@
is_even <- function(x) x %% 2 == 0
is_odd <- function(x) x %% 2 != 0
is_empty <- function(x) length(x) == 0
is_true <- function (x) identical(x, TRUE)
is_false <- function(x) identical(x, FALSE)

37
inst/templates/walkers.R

@ -0,0 +1,37 @@
# NOTE these aren't 100% equivalent to the purrr mappers but cover very common use-cases
#
# NOTE formula function (e.g. ~{}) are 100% supported
walk <- function(.x, .f, ...) {
if (inherits(.f, "formula")) {
.body <- dimnames(attr(terms(.f), "factors"))[[1]]
.f <- function(.x, . = .x) {}
body(.f) <- as.expression(parse(text=.body))
}
if (inherits(.f, "function")) {
lapply(.x, .f, ...)
} else {
stop("I'm not sure indexing by name or number makes sense for walk().")
}
invisible(.x)
}
walk2 <- function(.x, .y, .f, ...) {
if (inherits(.f, "formula")) {
.body <- dimnames(attr(terms(.f), "factors"))[[1]]
.f <- function(.x, .y, . = .x) {}
body(.f) <- as.expression(parse(text=.body))
}
if (inherits(.f, "function")) {
mapply(.f, .x, .y, ..., SIMPLIFY=FALSE, USE.NAMES=FALSE)
}
invisible(.x)
}

12
man/pipe.Rd

@ -0,0 +1,12 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/utils-pipe.R
\name{\%>\%}
\alias{\%>\%}
\title{Pipe operator}
\usage{
lhs \%>\% rhs
}
\description{
See \code{magrittr::\link[magrittr]{\%>\%}} for details.
}
\keyword{internal}

21
man/use_detect.Rd

@ -0,0 +1,21 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/use-detect.R
\name{use_detect}
\alias{use_detect}
\title{Use base-ified equivalents of "detect"-ors}
\usage{
use_detect(save_as = "R/utils-detect.R", open = TRUE)
}
\arguments{
\item{save_as}{Where to save/what to name the file. Defaults to "\code{R/utils-detect.R}"}
\item{open}{if \code{TRUE}, open the resultant file}
}
\description{
\itemize{
\item Creates \code{R/utils-detect.R} with base R pseudo-equivalents for \code{purrr} \code{detect} (et al).
}
}
\details{
These support formula functions (i.e. \code{~{}}).
}

18
man/use_isers.Rd

@ -0,0 +1,18 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/use-isers.R
\name{use_isers}
\alias{use_isers}
\title{Use "is_" functions}
\usage{
use_isers(save_as = "R/utils-isers.R", open = TRUE)
}
\arguments{
\item{save_as}{Where to save/what to name the file. Defaults to "\code{R/utils-detect.R}"}
\item{open}{if \code{TRUE}, open the resultant file}
}
\description{
\itemize{
\item Creates \code{R/utils-isers.R} filled with \code{is_...} testors
}
}

3
man/use_keepers.Rd

@ -17,3 +17,6 @@ use_keepers(save_as = "R/utils-keepers.R", open = TRUE)
\code{keep}/\code{discard}/\code{compact}
}
}
\details{
These support formula functions (i.e. \code{~{}}).
}

3
man/use_mappers.Rd

@ -16,3 +16,6 @@ use_mappers(save_as = "R/utils-mappers.R", open = TRUE)
\item Creates \code{R/utils-mappers.R} with base R pseudo-equivalents for \code{purrr} \code{map}-pers.
}
}
\details{
These support formula functions (i.e. \code{~{}}).
}

22
man/use_walkers.Rd

@ -0,0 +1,22 @@
% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/use-walkers.R
\name{use_walkers}
\alias{use_walkers}
\title{Use base-ified equivalents of keep/discard/compact}
\usage{
use_walkers(save_as = "R/utils-walkers.R", open = TRUE)
}
\arguments{
\item{save_as}{Where to save/what to name the file. Defaults to "\code{R/utils-walkers.R}"}
\item{open}{if \code{TRUE}, open the resultant file}
}
\description{
\itemize{
\item Creates \code{R/utils-walkers.R} with base R pseudo-equivalents for \code{purrr}
\code{walk}/\code{walk2}
}
}
\details{
These support formula functions (i.e. \code{~{}}).
}
Loading…
Cancel
Save