The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Tools for defensive programming, inspired by {purrr}
mappers and based on {rlang}
.
{attempt}
is designed to handle the cases when something / someone attempts to do something it shouldn’t.
For example:
log("a")
(error)paste()
"good morning"
and iris
(message/warning){attempt}
provides several condition handlers, from try catch to simple message printing.
{attempt}
only depends on {rlang}
, and every function is design to be fast, making it easy to implement in other functions and packages.
From CRAN:
The dev version:
{attempt}
provides four families of functions :
Try catch functions are a family of functions which are used to deal with errors and warnings.
attempt
behaves like base::try
, except that it allows custom message printing.try_catch
is a wrapper around tryCatch
that has a consistent grammar and allows the use of mappers.try_catch_df
returns a tibble with the call, the error message if any, the warning message if any, and the value of the evaluated expression or “error”. The values will always be contained in a list-column.map_try_catch
and map_try_catch_df
allow to map on a list of arguments to be evaluated by the function in fun
.Adverbs take a function and return a modified function.
silently
transforms a function so that when you call this new function, it returns nothing unless there is an error or a warning.surely
transforms a function so that when you call this new function, it calls attempt()
.with_message
and with_warning
take a function, and add a warning or a message to it.if_none
, if_any
and if_all
test the elements of the list.if_then
perfoms a “if this then that”.if_else
is a wrapper around base::ifelse()
that works with mappers.stop_if
, warn_if
and message_if
are easy to use functions that send an error, a warning or a message if a condition is met._if_not
, and _if_all
, _if_any
and _if_none
.Mappers are functions built like one sided formulas.
In other words, ~ .x + 2
is the equivalent of function(x) return(x + 2)
.
The first argument in a mapper need to be .x
.
Questions and feedback welcome!
You want to contribute ? Open a PR :) If you encounter a bug or want to suggest an enhancement, please open an issue.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.