Factor out with-mbase-progress.

This commit is contained in:
Dominik Pantůček 2023-06-19 08:58:01 +02:00
parent a56605fa3f
commit 350f7eca60
3 changed files with 34 additions and 17 deletions

View file

@ -34,7 +34,8 @@
(import scheme
(chicken base)
(chicken format)
brmember)
brmember
util-dir)
(define (print-html-member mr)
(print "<html>")
@ -52,6 +53,7 @@
#f))
(define (gen-html-members mb dir)
(ensure-directory dir)
#f)
)

View file

@ -81,21 +81,8 @@
;; Generates all member files in given directory
(define (gen-web-static mb dir)
(ensure-directory dir)
(let* ((members-list (find-members-by-predicate mb brmember-existing?))
(mlen0 (length members-list))
(mlen (if (> mlen0 0)
mlen0
1)))
(with-progress%
#t dir
(let loop ((mb members-list)
(i 0))
(if (not (null? mb))
(let ()
(progress%-advance (/ i mlen))
(gen-web-static-member (car mb) dir)
(loop (cdr mb)
(add1 i))))
(progress%-advance 1)))))
(with-mbase-progress%
mb dir mr
(gen-web-static-member mr dir)))
)

View file

@ -58,6 +58,9 @@
mbase-active-emails
mbase-merge-mailman
do-with-mbase-progress%
with-mbase-progress%
)
(import scheme
@ -288,4 +291,29 @@
mb
emails)))
;; Iteration with progress over all members
(define (do-with-mbase-progress% mb name proc)
(let* ((members-list (find-members-by-predicate mb brmember-existing?))
(mlen0 (length members-list))
(mlen (if (> mlen0 0)
mlen0
1)))
(with-progress%
#t name
(let loop ((mb members-list)
(i 0))
(if (not (null? mb))
(let ()
(progress%-advance (/ i mlen))
(proc (car mb))
(loop (cdr mb)
(add1 i))))
(progress%-advance 1)))))
;; Simple syntax wrapper
(define-syntax with-mbase-progress%
(syntax-rules ()
((_ mb name mr body ...)
(do-with-mbase-progress% mb name (lambda (mr) body ...)))))
)