Skip to content

Commit c18d395

Browse files
BUG FIX: Workaround r-lib/progress#119 to allow for zero-length **progress** bars [#108]
1 parent 951ab10 commit c18d395

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

R/handler_progress.R

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,15 +45,18 @@ handler_progress <- function(format = ":spin [:bar] :percent :message", show_aft
4545

4646
if (!is_fake("handler_progress")) {
4747
progress_bar <- progress::progress_bar
48+
get_private <- function(pb) {
49+
pb$.__enclos_env__$private
50+
}
4851
erase_progress_bar <- function(pb) {
4952
if (pb$finished) return()
50-
private <- pb$.__enclos_env__$private
53+
private <- get_private(pb)
5154
private$clear_line(private$width)
5255
private$cursor_to_start()
5356
}
5457
redraw_progress_bar <- function(pb, tokens = list()) {
5558
if (pb$finished) return()
56-
private <- pb$.__enclos_env__$private
59+
private <- get_private(pb)
5760
private$last_draw <- ""
5861
private$render(tokens)
5962
}
@@ -65,6 +68,7 @@ handler_progress <- function(format = ":spin [:bar] :percent :message", show_aft
6568
update = function(...) NULL
6669
)
6770
)
71+
get_private <- function(pb) NULL
6872
erase_progress_bar <- function(pb) NULL
6973
redraw_progress_bar <- function(pb, tokens = list()) NULL
7074
}
@@ -81,12 +85,28 @@ handler_progress <- function(format = ":spin [:bar] :percent :message", show_aft
8185

8286
last_tokens <- list()
8387
pb_tick <- function(pb, delta = 0, message = NULL, ...) {
88+
if (isTRUE(pb$finished)) return()
89+
90+
## WORKAROUND: https://github.com/r-lib/progress/issues/119
91+
private <- get_private(pb)
92+
if (!is.null(private) && private$total == 0) return()
93+
8494
tokens <- list(message = paste0(message, ""))
8595
last_tokens <<- tokens
8696
if (delta < 0) return()
8797
pb$tick(delta, tokens = tokens)
8898
}
8999

100+
pb_update <- function(pb, ratio, ...) {
101+
if (isTRUE(pb$finished)) return()
102+
103+
## WORKAROUND: https://github.com/r-lib/progress/issues/119
104+
private <- get_private(pb)
105+
if (!is.null(private) && private$total == 0) return()
106+
107+
pb$update(ratio = ratio, ...)
108+
}
109+
90110
list(
91111
reset = function(...) {
92112
pb <<- NULL
@@ -123,7 +143,7 @@ handler_progress <- function(format = ":spin [:bar] :percent :message", show_aft
123143
make_pb(format = format, total = config$max_steps,
124144
clear = config$clear, show_after = config$enable_after)
125145
reporter$update(config = config, state = state, progression = progression, ...)
126-
if (config$clear && !pb$finished) pb$update(1.0)
146+
if (config$clear && !pb$finished) pb_update(pb, ratio = 1.0)
127147
}
128148
)
129149
})

0 commit comments

Comments
 (0)