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"))