Skip to content

Instantly share code, notes, and snippets.

@hfrick
Last active October 22, 2024 10:35
Show Gist options
  • Select an option

  • Save hfrick/5c153c289acbb2b8bf9c385daa5e0ccb to your computer and use it in GitHub Desktop.

Select an option

Save hfrick/5c153c289acbb2b8bf9c385daa5e0ccb to your computer and use it in GitHub Desktop.
Call argument to user-facing functions
# example for error calls -------------------------------------------------

# internal helper
main_function_1 <- function() {
  internal_helper()
}

internal_helper <- function(call = rlang::caller_env()){
  rlang::abort("Nope!", call = call)
}

internal_helper()
#> Error:
#> ! Nope!
#> Backtrace:
#>     ▆
#>  1. └─global internal_helper()
#>  2.   └─rlang::abort("Nope!", call = call)
main_function_1()
#> Error in `main_function_1()`:
#> ! Nope!
#> Backtrace:
#>     ▆
#>  1. └─global main_function_1()
#>  2.   └─global internal_helper()
#>  3.     └─rlang::abort("Nope!", call = call)

  
# user-facing "helper"
main_function <- function() {
  user_facing_function(call = rlang::current_env())
}

user_facing_function <- function(call = rlang::current_env()) {
  rlang::abort("Also no!", call = call)
}

user_facing_function()
#> Error in `user_facing_function()`:
#> ! Also no!
#> Backtrace:
#>     ▆
#>  1. └─global user_facing_function()
#>  2.   └─rlang::abort("Also no!", call = call)
main_function()
#> Error in `main_function()`:
#> ! Also no!
#> Backtrace:
#>     ▆
#>  1. └─global main_function()
#>  2.   └─global user_facing_function(call = rlang::current_env())
#>  3.     └─rlang::abort("Also no!", call = call)


# main function is user-facing "helper" for tune
main_function <- function(call = rlang::current_env()) {
  user_facing_function(call = call)
}

user_facing_function <- function(call = rlang::current_env()) {
  rlang::abort("Also no!", call = call)
}

user_facing_function()
#> Error in `user_facing_function()`:
#> ! Also no!
#> Backtrace:
#>     ▆
#>  1. └─global user_facing_function()
#>  2.   └─rlang::abort("Also no!", call = call)
main_function()
#> Error in `main_function()`:
#> ! Also no!
#> Backtrace:
#>     ▆
#>  1. └─global main_function()
#>  2.   └─global user_facing_function(call = call)
#>  3.     └─rlang::abort("Also no!", call = call)

Created on 2024-01-19 with reprex v2.0.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment