diff options
author | Arun Isaac | 2019-10-08 20:25:48 +0530 |
---|---|---|
committer | Arun Isaac | 2019-10-08 20:25:48 +0530 |
commit | b77d730f8c001f212f8e5de46cc5a4eb3277b205 (patch) | |
tree | b709e9f56a0594fc1bd7598bf21867b9cdaa52d9 /email/utils.scm | |
parent | 1693fcdcb5593dc8f6d245dc1bf1e1202341f9d4 (diff) | |
download | guile-email-b77d730f8c001f212f8e5de46cc5a4eb3277b205.tar.gz guile-email-b77d730f8c001f212f8e5de46cc5a4eb3277b205.tar.lz guile-email-b77d730f8c001f212f8e5de46cc5a4eb3277b205.zip |
email: Introduce alist union utility.
* email/utils.scm (alist-combine): New function.
(alist-delete*): Delete function.
* email/email.scm (add-default-headers,
add-default-mime-entity-headers): Use alist-combine.
Diffstat (limited to 'email/utils.scm')
-rw-r--r-- | email/utils.scm | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/email/utils.scm b/email/utils.scm index 536dc52..70153be 100644 --- a/email/utils.scm +++ b/email/utils.scm @@ -26,13 +26,14 @@ #:use-module ((rnrs io ports) #:select (call-with-bytevector-output-port)) #:use-module (rnrs io simple) + #:use-module (srfi srfi-1) #:use-module (srfi srfi-26) #:export (get-line-with-delimiter read-objects read-while read-bytes-till acons* - alist-delete*)) + alist-combine)) (define (read-objects read-proc port) "Read all objects using READ-PROC from PORT and return them as a @@ -101,13 +102,15 @@ delimiting linefeed character." (acons key value (apply acons* rest))) ((alist) alist))) -(define (alist-delete* keys alist) - "Return a list containing all elements of ALIST whose keys are not a -member of KEYS." - (filter (match-lambda - ((key . _) - (not (member key keys)))) - alist)) +(define (alist-combine alist1 alist2) + "Combine two association lists ALIST1 and ALIST2 into a single +association list. Key-value pairs in ALIST2 are more significant and +override those in ALIST1." + (append alist2 + (remove (match-lambda + ((key . _) + (assoc key alist2))) + alist1))) (define (cg-string-ci pat accum) (syntax-case pat () |