source(usethis::proj_path("vignettes",  "_common.R"))

decorators

CRAN
status R build
status codecov

A decorator is a function that receives a function, extends its behaviour, and returned the altered function. Any caller that uses the decorated function uses the same interface as it were the original, undecorated function.

Examples

time_it decorator

# Running the original Sys.sleep() produces no output
Sys.sleep(0.1)

# Decorating the Sys.sleep() with time_it() measures Sys.sleep() execution time 
# and outputs the measurement   
Sys.sleep <- decorators::time_it(base::Sys.sleep)
Sys.sleep(0.1)

validate_arguments decorator

## Define a functions that averages two numbers
average_two_numbers <- function(a = NA_real_, b = NA_real_) mean(c(a, b))

## Before: Averaging two nun-numeric values returns NA and prompts a warning
average_two_numbers(a = "1", b = "2")
## Decorating average_two_numbers() with validate_arguments() checks input types
average_two_numbers <- decorators::validate_arguments(average_two_numbers)

## After: Averaging two nun-numeric prompts an informative error
average_two_numbers(a = "1", b = "2")
cat("Error in average_two_numbers(a = \"1\", b = \"2\") : 
  a is of type `character` rather than `numeric`!")

Installation

You can install the released version of decorators from CRAN with:

install.packages("decorators")

And the development version from GitHub with:

# install.packages("devtools")
devtools::install_github("tidylab/decorators")


tidylab/decorators documentation built on Oct. 5, 2022, 4:55 p.m.