summary refs log tree commit diff
path: root/email/utils.scm
diff options
context:
space:
mode:
authorArun Isaac2019-10-08 20:25:48 +0530
committerArun Isaac2019-10-08 20:25:48 +0530
commitb77d730f8c001f212f8e5de46cc5a4eb3277b205 (patch)
treeb709e9f56a0594fc1bd7598bf21867b9cdaa52d9 /email/utils.scm
parent1693fcdcb5593dc8f6d245dc1bf1e1202341f9d4 (diff)
downloadguile-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.scm19
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 ()