Make load-members create more complex structure.

This commit is contained in:
Dominik Pantůček 2023-04-04 22:39:45 +02:00
parent e25a75ab27
commit 78164ecafe

View file

@ -65,26 +65,29 @@
(define (load-members dn . opts)
(let ((progress? (and (not (null? opts))
(car opts))))
(with-progress%
progress? "members"
(let* ((fss (load-members-dir dn))
(tot (sub1 (length (dict-keys fss))))
(mb0 (dict-map
(lambda (symfn symlinks prg)
(progress%-advance (/ prg tot))
(members-dir-load-member dn
symfn
symlinks))
fss))
(mb1 (dict-reduce (make-dict)
(lambda (acc symfn mr)
(dict-set acc (dict-ref mr 'id) mr))
mb0))
(mb (dict-reduce '()
(lambda (acc id mr)
(cons mr acc))
mb1)))
mb))))
(make-dict
`((members
.
,(with-progress%
progress? "members"
(let* ((fss (load-members-dir dn))
(tot (sub1 (length (dict-keys fss))))
(mb0 (dict-map
(lambda (symfn symlinks prg)
(progress%-advance (/ prg tot))
(members-dir-load-member dn
symfn
symlinks))
fss))
(mb1 (dict-reduce (make-dict)
(lambda (acc symfn mr)
(dict-set acc (dict-ref mr 'id) mr))
mb0))
(mb (dict-reduce '()
(lambda (acc id mr)
(cons mr acc))
mb1)))
mb)))))))
;; Gets member based by generic predicate
(define (find-member-by-predicate mb pred)