Regular predicates.
This commit is contained in:
parent
bf2b8ef23a
commit
4bd6837e08
6 changed files with 51 additions and 51 deletions
|
@ -50,12 +50,12 @@
|
||||||
brmember-usable?
|
brmember-usable?
|
||||||
brmember-has-problems?
|
brmember-has-problems?
|
||||||
|
|
||||||
member-destroyed?
|
brmember-destroyed?
|
||||||
member-suspended?
|
brmember-suspended?
|
||||||
member-active?
|
brmember-active?
|
||||||
member-student?
|
brmember-student?
|
||||||
member-existing?
|
brmember-existing?
|
||||||
member-flags
|
brmember-flags
|
||||||
|
|
||||||
member-nick
|
member-nick
|
||||||
member-id
|
member-id
|
||||||
|
@ -250,8 +250,8 @@
|
||||||
;; Returns true if the member record represents non-existing
|
;; Returns true if the member record represents non-existing
|
||||||
;; member. The *current-month* is a global parameter from period
|
;; member. The *current-month* is a global parameter from period
|
||||||
;; module.
|
;; module.
|
||||||
(define (member-destroyed? mr)
|
(define (brmember-destroyed? mr)
|
||||||
(and (not (member-existing? mr))
|
(and (not (brmember-existing? mr))
|
||||||
(let ((member (brmember-info mr 'member)))
|
(let ((member (brmember-info mr 'member)))
|
||||||
(if (null? member)
|
(if (null? member)
|
||||||
#f
|
#f
|
||||||
|
@ -269,37 +269,37 @@
|
||||||
(member-period-predicate? 'suspend))
|
(member-period-predicate? 'suspend))
|
||||||
|
|
||||||
;; Suspended must not be destroyed
|
;; Suspended must not be destroyed
|
||||||
(define (member-suspended? mr)
|
(define (brmember-suspended? mr)
|
||||||
(and (member-is-suspended? mr)
|
(and (member-is-suspended? mr)
|
||||||
(not (member-destroyed? mr))))
|
(not (brmember-destroyed? mr))))
|
||||||
|
|
||||||
;; True if the member is student
|
;; True if the member is student
|
||||||
(define member-is-student?
|
(define member-is-student?
|
||||||
(member-period-predicate? 'student))
|
(member-period-predicate? 'student))
|
||||||
|
|
||||||
;; Only active members can be students.
|
;; Only active members can be students.
|
||||||
(define (member-student? mr)
|
(define (brmember-student? mr)
|
||||||
(and (member-active? mr)
|
(and (brmember-active? mr)
|
||||||
(member-is-student? mr)))
|
(member-is-student? mr)))
|
||||||
|
|
||||||
;; Returns true if the member is active (not suspended or destroyed).
|
;; Returns true if the member is active (not suspended or destroyed).
|
||||||
(define (member-active? mr)
|
(define (brmember-active? mr)
|
||||||
(and (month-in-periods? (brmember-info mr 'member))
|
(and (month-in-periods? (brmember-info mr 'member))
|
||||||
(not (member-suspended? mr))))
|
(not (brmember-suspended? mr))))
|
||||||
|
|
||||||
;; Returns true if the member is currently a member
|
;; Returns true if the member is currently a member
|
||||||
(define (member-existing? mr)
|
(define (brmember-existing? mr)
|
||||||
(month-in-periods?
|
(month-in-periods?
|
||||||
(brmember-info mr 'member)))
|
(brmember-info mr 'member)))
|
||||||
|
|
||||||
;; Returns a list of flags of given member record.
|
;; Returns a list of flags of given member record.
|
||||||
(define (member-flags mr)
|
(define (brmember-flags mr)
|
||||||
(filter identity
|
(filter identity
|
||||||
(list (if (member-student? mr) 'student #f)
|
(list (if (brmember-student? mr) 'student #f)
|
||||||
(if (member-suspended? mr) 'suspended #f)
|
(if (brmember-suspended? mr) 'suspended #f)
|
||||||
(if (member-active? mr) 'active #f)
|
(if (brmember-active? mr) 'active #f)
|
||||||
(if (member-destroyed? mr) 'destroyed #f)
|
(if (brmember-destroyed? mr) 'destroyed #f)
|
||||||
(if (member-existing? mr) 'existing #f))))
|
(if (brmember-existing? mr) 'existing #f))))
|
||||||
|
|
||||||
;; Nickname as string
|
;; Nickname as string
|
||||||
(define (member-nick mr)
|
(define (member-nick mr)
|
||||||
|
@ -312,7 +312,7 @@
|
||||||
;; Returns the number of months the user is suspended. Zero if not
|
;; Returns the number of months the user is suspended. Zero if not
|
||||||
;; suspended.
|
;; suspended.
|
||||||
(define (member-suspended-months mr)
|
(define (member-suspended-months mr)
|
||||||
(if (member-suspended? mr)
|
(if (brmember-suspended? mr)
|
||||||
(let ((period (periods-match (brmember-info mr 'suspend))))
|
(let ((period (periods-match (brmember-info mr 'suspend))))
|
||||||
(if period
|
(if period
|
||||||
(month-diff (car period) (*current-month*))
|
(month-diff (car period) (*current-month*))
|
||||||
|
@ -379,41 +379,41 @@
|
||||||
(brmember-add-highlight (make-ldict) 123 "Interesting..." 0 'info)
|
(brmember-add-highlight (make-ldict) 123 "Interesting..." 0 'info)
|
||||||
(make-ldict
|
(make-ldict
|
||||||
'((highlights . ((123 "Interesting..." 0 info)))))))
|
'((highlights . ((123 "Interesting..." 0 info)))))))
|
||||||
(test-true member-destroyed?
|
(test-true brmember-destroyed?
|
||||||
(parameterize ((*current-month* (list 2023 2)))
|
(parameterize ((*current-month* (list 2023 2)))
|
||||||
(member-destroyed?
|
(brmember-destroyed?
|
||||||
(make-ldict `((info . ,(make-ldict
|
(make-ldict `((info . ,(make-ldict
|
||||||
`((member . (((2010 1) (2010 5))))))))))))
|
`((member . (((2010 1) (2010 5))))))))))))
|
||||||
(test-false member-destroyed?
|
(test-false brmember-destroyed?
|
||||||
(parameterize ((*current-month* (list 2009 2)))
|
(parameterize ((*current-month* (list 2009 2)))
|
||||||
(member-destroyed?
|
(brmember-destroyed?
|
||||||
(make-ldict `((info . ,(make-ldict
|
(make-ldict `((info . ,(make-ldict
|
||||||
`((member . (((2001 1) (2010 5))))))))))))
|
`((member . (((2001 1) (2010 5))))))))))))
|
||||||
(test-false member-suspended?
|
(test-false brmember-suspended?
|
||||||
(member-suspended?
|
(brmember-suspended?
|
||||||
(make-ldict `((info . ,(make-ldict
|
(make-ldict `((info . ,(make-ldict
|
||||||
`((member . (((2015 1) #f))))))))))
|
`((member . (((2015 1) #f))))))))))
|
||||||
(test-true member-suspended?
|
(test-true brmember-suspended?
|
||||||
(parameterize ((*current-month* (list 2015 2)))
|
(parameterize ((*current-month* (list 2015 2)))
|
||||||
(member-suspended?
|
(brmember-suspended?
|
||||||
(make-ldict `((info . ,(make-ldict
|
(make-ldict `((info . ,(make-ldict
|
||||||
`((member . (((2015 1) #f)))
|
`((member . (((2015 1) #f)))
|
||||||
(suspend ((2010 1) (2022 4) #f #f))))))))))
|
(suspend ((2010 1) (2022 4) #f #f))))))))))
|
||||||
(test-true member-suspended?
|
(test-true brmember-suspended?
|
||||||
(parameterize ((*current-month* (list 2015 2)))
|
(parameterize ((*current-month* (list 2015 2)))
|
||||||
(member-suspended?
|
(brmember-suspended?
|
||||||
(make-ldict `((info . ,(make-ldict
|
(make-ldict `((info . ,(make-ldict
|
||||||
`((member . (((2015 1) #f)))
|
`((member . (((2015 1) #f)))
|
||||||
(suspend ((2010 1) #f #f #f))))))))))
|
(suspend ((2010 1) #f #f #f))))))))))
|
||||||
(test-false member-suspended?
|
(test-false brmember-suspended?
|
||||||
(parameterize ((*current-month* (list 2023 2)))
|
(parameterize ((*current-month* (list 2023 2)))
|
||||||
(member-suspended?
|
(brmember-suspended?
|
||||||
(make-ldict `((info . ,(make-ldict
|
(make-ldict `((info . ,(make-ldict
|
||||||
`((member . (((2015 1) #f)))
|
`((member . (((2015 1) #f)))
|
||||||
(suspend ((2010 1) (2022 4) #f #f))))))))))
|
(suspend ((2010 1) (2022 4) #f #f))))))))))
|
||||||
(test-true member-active?
|
(test-true brmember-active?
|
||||||
(parameterize ((*current-month* (list 2023 2)))
|
(parameterize ((*current-month* (list 2023 2)))
|
||||||
(member-active?
|
(brmember-active?
|
||||||
(make-ldict `((info . ,(make-ldict
|
(make-ldict `((info . ,(make-ldict
|
||||||
`((member . (((2015 1) #f)))
|
`((member . (((2015 1) #f)))
|
||||||
(suspend ((2010 1) (2022 4) #f #f))))))))))
|
(suspend ((2010 1) (2022 4) #f #f))))))))))
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
(let* ((rmb (filter-members-by-predicate
|
(let* ((rmb (filter-members-by-predicate
|
||||||
mb
|
mb
|
||||||
(lambda (mr)
|
(lambda (mr)
|
||||||
(and (member-active? mr)
|
(and (brmember-active? mr)
|
||||||
(ldict-contains? (ldict-ref mr 'info) type)
|
(ldict-contains? (ldict-ref mr 'info) type)
|
||||||
(not (null? (ldict-ref (ldict-ref mr 'info) type)))))))
|
(not (null? (ldict-ref (ldict-ref mr 'info) type)))))))
|
||||||
(recs (map (lambda (mr)
|
(recs (map (lambda (mr)
|
||||||
|
|
|
@ -84,7 +84,7 @@
|
||||||
(loop (month-add cm)
|
(loop (month-add cm)
|
||||||
(cons (list cm
|
(cons (list cm
|
||||||
(parameterize ((*current-month* cm))
|
(parameterize ((*current-month* cm))
|
||||||
(member-flags mr)))
|
(brmember-flags mr)))
|
||||||
cal))))))
|
cal))))))
|
||||||
|
|
||||||
;; Returns the first month of the calendar
|
;; Returns the first month of the calendar
|
||||||
|
|
|
@ -163,13 +163,13 @@
|
||||||
(di1 (ldict-set di0 'invalid
|
(di1 (ldict-set di0 'invalid
|
||||||
(filter (compose not is-4digit-prime? member-id) members)))
|
(filter (compose not is-4digit-prime? member-id) members)))
|
||||||
(di2 (ldict-set di1 'active
|
(di2 (ldict-set di1 'active
|
||||||
(filter member-active? members)))
|
(filter brmember-active? members)))
|
||||||
(di3 (ldict-set di2 'suspended
|
(di3 (ldict-set di2 'suspended
|
||||||
(filter member-suspended? members)))
|
(filter brmember-suspended? members)))
|
||||||
(di4 (ldict-set di3 'students
|
(di4 (ldict-set di3 'students
|
||||||
(filter member-student? members)))
|
(filter brmember-student? members)))
|
||||||
(di5 (ldict-set di4 'destroyed
|
(di5 (ldict-set di4 'destroyed
|
||||||
(filter member-destroyed? members)))
|
(filter brmember-destroyed? members)))
|
||||||
(di6 (ldict-set di5 'month (*current-month*)))
|
(di6 (ldict-set di5 'month (*current-month*)))
|
||||||
(di7 (ldict-set di6 'total members)))
|
(di7 (ldict-set di6 'total members)))
|
||||||
di7))
|
di7))
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
(map
|
(map
|
||||||
(lambda (mr)
|
(lambda (mr)
|
||||||
(brmember-info mr 'mail))
|
(brmember-info mr 'mail))
|
||||||
(filter member-active?
|
(filter brmember-active?
|
||||||
(members-base-members mb))))
|
(members-base-members mb))))
|
||||||
string-ci<?))
|
string-ci<?))
|
||||||
|
|
||||||
|
|
|
@ -219,10 +219,10 @@
|
||||||
mb
|
mb
|
||||||
(lambda (mr)
|
(lambda (mr)
|
||||||
(let ((total (member-total-balance mr))
|
(let ((total (member-total-balance mr))
|
||||||
(fee (lookup-member-fee (if (member-student? mr)
|
(fee (lookup-member-fee (if (brmember-student? mr)
|
||||||
'student
|
'student
|
||||||
'regular))))
|
'regular))))
|
||||||
(and (member-active? mr)
|
(and (brmember-active? mr)
|
||||||
(< total 0)
|
(< total 0)
|
||||||
(< total (- (* months fee))))))))
|
(< total (- (* months fee))))))))
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@
|
||||||
(string-intersperse
|
(string-intersperse
|
||||||
(map symbol->string aliases)
|
(map symbol->string aliases)
|
||||||
", "))
|
", "))
|
||||||
(when (member-suspended? mr)
|
(when (brmember-suspended? mr)
|
||||||
(print " Suspended for " (member-suspended-months mr) " months."))
|
(print " Suspended for " (member-suspended-months mr) " months."))
|
||||||
(newline)
|
(newline)
|
||||||
(let loop ((sinfo sinfo))
|
(let loop ((sinfo sinfo))
|
||||||
|
@ -96,7 +96,7 @@
|
||||||
(ansi-string #:red #:bold (number->string mid) " (not prime)")))
|
(ansi-string #:red #:bold (number->string mid) " (not prime)")))
|
||||||
(list (sprintf "Alias~A:" (if (> (length aliases) 1) "es" ""))
|
(list (sprintf "Alias~A:" (if (> (length aliases) 1) "es" ""))
|
||||||
(string-intersperse (map symbol->string aliases) ", "))
|
(string-intersperse (map symbol->string aliases) ", "))
|
||||||
(if (member-suspended? mr)
|
(if (brmember-suspended? mr)
|
||||||
(list "Suspended for:"
|
(list "Suspended for:"
|
||||||
(let ((msm (member-suspended-months mr)))
|
(let ((msm (member-suspended-months mr)))
|
||||||
(sprintf "~A month~A" msm
|
(sprintf "~A month~A" msm
|
||||||
|
@ -351,11 +351,11 @@
|
||||||
(payment (ldict-ref balance 'payment))
|
(payment (ldict-ref balance 'payment))
|
||||||
(total (- (+ credit payment) fees)))
|
(total (- (+ credit payment) fees)))
|
||||||
(list (member-nick mr)
|
(list (member-nick mr)
|
||||||
(if (member-suspended? mr)
|
(if (brmember-suspended? mr)
|
||||||
'suspended
|
'suspended
|
||||||
(if (member-student? mr)
|
(if (brmember-student? mr)
|
||||||
'student
|
'student
|
||||||
(if (member-destroyed? mr)
|
(if (brmember-destroyed? mr)
|
||||||
'destroyed
|
'destroyed
|
||||||
'active)))
|
'active)))
|
||||||
fees
|
fees
|
||||||
|
@ -368,7 +368,7 @@
|
||||||
(if destroyed?
|
(if destroyed?
|
||||||
(members-base-members MB)
|
(members-base-members MB)
|
||||||
(filter (lambda (mr)
|
(filter (lambda (mr)
|
||||||
(not (member-destroyed? mr)))
|
(not (brmember-destroyed? mr)))
|
||||||
(members-base-members MB)))
|
(members-base-members MB)))
|
||||||
member<?)))
|
member<?)))
|
||||||
(balances (map (lambda (m)
|
(balances (map (lambda (m)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue