From 77fd6cb53d52890aebc6a87db40451251fcc5b07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Sat, 11 Mar 2023 21:28:55 +0100 Subject: [PATCH] Find members by various means. --- brmsaptool.scm | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/brmsaptool.scm b/brmsaptool.scm index 9ac682c..48086e0 100644 --- a/brmsaptool.scm +++ b/brmsaptool.scm @@ -440,26 +440,37 @@ (expand-members-raw-index (load-members-raw-index)))) -;; Gets member record by member key -(define (find-member-by-key mdb key val) +;; Gets member based by generic predicate +(define (find-member-by-predicate mdb pred) (let loop ((mdb mdb)) (if (null? mdb) #f (let ((mr (car mdb))) - (if (equal? (dict-ref mr key) val) + (if (pred mr) mr (loop (cdr mdb))))))) +;; Gets member record by member key +(define (find-member-by-key mdb key val) + (find-member-by-predicate + mdb + (lambda (mr) + (equal? (dict-ref mr key) val)))) + ;; Gets member record by member id (from file/symlink) (define (find-member-by-id mdb id) (find-member-by-key mdb 'id id)) ;; Gets member record by member name (from file/symlink) -(define (find-member-by-fname mb fname) +(define (find-member-by-fname mdb fname) (find-member-by-key mdb 'name fname)) -(define (find-member-by-nick mb nick) - #f) +;; Gets member record by member nick in member file the key 'nick +(define (find-member-by-nick mdb nick) + (find-member-by-predicate + mdb + (lambda (mr) + (equal? (dict-ref (dict-ref mr 'info) 'nick) nick)))) (define (list-members-ids mdb) #f) @@ -487,7 +498,7 @@ ;; Perform requested action (display "Loading members ") -(define mdb (load-members)) +(define MDB (load-members)) (print " ok.") (newline) @@ -495,5 +506,6 @@ ; (print (load-member-file "trimen")) -(print (find-member-by-id mdb 2803)) -(print (find-member-by-fname mdb "joe")) +(print (find-member-by-id MDB 2803)) +(print (find-member-by-fname MDB "joe")) +(print (find-member-by-nick MDB "joe"))