Create a spinner
make_spinner(
which = NULL,
stream = "auto",
template = "{spin}",
static = c("dots", "print", "print_line", "silent")
)
A cli_spinner
object, which is a list of functions. See
its methods below.
cli_spinner
methods:
$spin()
: output the next frame of the spinner.
$finish()
: terminate the spinner. Depending on terminal capabilities
this removes the spinner from the screen. Spinners can be reused,
you can start calling the $spin()
method again.
All methods return the spinner object itself, invisibly.
The spinner is automatically throttled to its ideal update frequency.
The name of the chosen spinner. If NULL
, then the default
is used, which can be customized via the cli.spinner_unicode
,
cli.spinner_ascii
and cli.spinner
options. (The latter applies to
both Unicode and ASCII displays. These options can be set to the name
of a built-in spinner, or to a list that has an entry called frames
,
a character vector of frames.
The stream to use for the spinner. Typically this is
standard error, or maybe the standard output stream.
It can also be a string, one of "auto"
, "message"
, "stdout"
,
"stderr"
. "auto"
will select stdout()
if the session is
interactive and there are no sinks, otherwise it will select
stderr()
.
A template string, that will contain the spinner. The
spinner itself will be substituted for {spin}
. See example below.
What to do if the terminal does not support dynamic displays:
"dots"
: show a dot for each $spin()
call.
"print"
: just print the frames of the spinner, one after another.
"print_line"
: print the frames of the spinner, each on its own line.
"silent"
do not print anything, just the template
.
sp1 <- make_spinner()
fun_with_spinner <- function() {
lapply(1:100, function(x) { sp1$spin(); Sys.sleep(0.05) })
sp1$finish()
}
ansi_with_hidden_cursor(fun_with_spinner())
sp2 <- make_spinner(template = "Computing {spin}")
fun_with_spinner2 <- function() {
lapply(1:100, function(x) { sp2$spin(); Sys.sleep(0.05) })
sp2$finish()
}
ansi_with_hidden_cursor(fun_with_spinner2())
sp3 <- make_spinner("simpleDotsScrolling", template = "Downloading {spin}")
fun_with_spinner3 <- function() {
lapply(1:100, function(x) { sp3$spin(); Sys.sleep(0.05) })
sp3$finish()
}
ansi_with_hidden_cursor(fun_with_spinner3())
Other spinners:
demo_spinners()
,
get_spinner()
,
list_spinners()