| Title: | Simplified Error Handling | 
| Version: | 2024.4.1 | 
| Description: | Alternative to using withCallingHandlers() in the simple case of catch and rethrow. The '%!%' operator evaluates the expression on its left hand side, and if an error occurs, the right hand side is used to construct a new error that embeds the original error. | 
| License: | MIT + file LICENSE | 
| Suggests: | testthat (≥ 3.0.0) | 
| Config/testthat/edition: | 3 | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.1 | 
| Imports: | cli, rlang | 
| URL: | https://github.com/tadascience/slap, https://slap.tada.science | 
| BugReports: | https://github.com/tadascience/slap/issues | 
| NeedsCompilation: | no | 
| Packaged: | 2024-04-23 07:36:18 UTC; romainfrancois | 
| Author: | Romain François [aut, cre], tada.science [cph, fnd] | 
| Maintainer: | Romain François <romain@tada.science> | 
| Repository: | CRAN | 
| Date/Publication: | 2024-04-24 14:00:02 UTC | 
Slap Operator
Description
Slap Operator
Usage
expr %!% message
expr %!!% message
Arguments
expr | 
 An expression or quosure to evaluate carefully  | 
message | 
 A message meant to be formatted by   | 
Value
If expr succeeds, its result is returned.
When expr generates an error, the %!% and %!!% operators
catch it and embed it in a new error thrown by cli::cli_abort().
If message evaluates to a character vector, it is used as the
message argument of cli::cli_abort().
If message evaluates to a function, the function is called with one
argument: the caught error from evaluating expr.
When the current environment has an error_call object, it is
used as the call argument of cli::cli_abort().
Examples
# g() throws an error
g <- function() {
  stop("ouch")
}
# h() catches that error and embed it in a new error
# with "bam" as its message, the g() error as the parent error,
# and the caller environment as call=
h <- function(error_call = rlang::caller_env()) {
  g() %!% "bam"
}
# f() will be used as the error call
f <- function() {
  h()
}
# Error in `f()`:
# ! bam
# Caused by error in `g()`:
# ! ouch
tryCatch(f(), error = function(err) {
  print(err, backtrace = FALSE)
})