11multi_dots <- function (... ,
22 .multi = c(" error" , " comma" , " pipe" , " explode" ),
3+ .space = c(" percent" , " form" ),
34 error_arg = " ..." ,
45 error_call = caller_env()) {
56 if (is.function(.multi )) {
67 check_function2(.multi , call = error_call , arg = " .multi" )
78 } else {
89 .multi <- arg_match(.multi , error_arg = " .multi" , error_call = error_call )
910 }
11+ .space <- arg_match(.space , call = error_call )
12+ form <- .space == " form"
1013
1114 dots <- list2(... )
1215 if (length(dots ) == 0 ) {
@@ -31,20 +34,20 @@ multi_dots <- function(...,
3134 n <- lengths(dots )
3235 if (any(n > 1 )) {
3336 if (is.function(.multi )) {
34- dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE )
37+ dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE , form = form )
3538 dots [n > 1 ] <- lapply(dots [n > 1 ], .multi )
3639 dots [n > 1 ] <- lapply(dots [n > 1 ], I )
3740 } else if (.multi == " comma" ) {
38- dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE )
41+ dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE , form = form )
3942 dots [n > 1 ] <- lapply(dots [n > 1 ], paste0 , collapse = " ," )
4043 dots [n > 1 ] <- lapply(dots [n > 1 ], I )
4144 } else if (.multi == " pipe" ) {
42- dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE )
45+ dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE , form = form )
4346 dots [n > 1 ] <- lapply(dots [n > 1 ], paste0 , collapse = " |" )
4447 dots [n > 1 ] <- lapply(dots [n > 1 ], I )
4548 } else if (.multi == " explode" ) {
4649 dots <- explode(dots )
47- dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE )
50+ dots [n > 1 ] <- imap(dots [n > 1 ], format_query_param , multi = TRUE , form = form )
4851 dots [n > 1 ] <- lapply(dots [n > 1 ], I )
4952 } else if (.multi == " error" ) {
5053 cli :: cli_abort(
@@ -58,7 +61,12 @@ multi_dots <- function(...,
5861 }
5962
6063 # Format other params
61- dots [n == 1 ] <- imap(dots [n == 1 ], format_query_param , error_call = error_call )
64+ dots [n == 1 ] <- imap(
65+ dots [n == 1 ],
66+ format_query_param ,
67+ form = form ,
68+ error_call = error_call
69+ )
6270 dots [n == 1 ] <- lapply(dots [n == 1 ], I )
6371
6472 dots
0 commit comments