emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/webfeeder 5784dd1 1/5: Fix atom generation when "author


From: Pierre Neidhardt
Subject: [elpa] externals/webfeeder 5784dd1 1/5: Fix atom generation when "author" field has no email.
Date: Fri, 6 Nov 2020 17:00:55 -0500 (EST)

branch: externals/webfeeder
commit 5784dd1d5ffe01d633c6c567aa2bef02d70948b7
Author: Pierre Neidhardt <mail@ambrevar.xyz>
Commit: Pierre Neidhardt <mail@ambrevar.xyz>

    Fix atom generation when "author" field has no email.
---
 webfeeder.el | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/webfeeder.el b/webfeeder.el
index 6a36fd0..07f0ed0 100644
--- a/webfeeder.el
+++ b/webfeeder.el
@@ -325,8 +325,12 @@ The date is set to epoch if the item date is nil."
 (defun webfeeder--extract-name+email (address)
   "Like `mail-extract-address-components' but does not set the
 address part if email is missing.
-For instance, calling this function on \"foo\" returns (\"foo\" nil)."
+For instance, calling this function on \"foo\" returns (\"foo\" nil).
+Calling it on foo@bar.abc returns (nil \"foo@bar.abc\")."
   (let ((name+addr (mail-extract-address-components address)))
+    (unless (string-match "@" (cadr name+addr))
+      (setcar name+addr (cadr name+addr))
+      (setcdr name+addr nil))
     (when (string= (car name+addr)
                    (cadr name+addr))
       (setcdr name+addr nil))
@@ -335,11 +339,15 @@ For instance, calling this function on \"foo\" returns 
(\"foo\" nil)."
 (defun webfeeder--format-atom-author (author)
   (concat "<author>"
           (let ((name+addr (webfeeder--extract-name+email author)))
-            (if (cadr name+addr)
-                (format "<name>%s</name><email>%s</email>"
-                        (xml-escape-string (car name+addr))
-                        (cadr name+addr))
-              (format "<name>%s</name>" (xml-escape-string author))))
+            (cond
+             ((and (car name+addr) (cadr name+addr))
+              (format "<name>%s</name><email>%s</email>"
+                      (xml-escape-string (car name+addr))
+                      (cadr name+addr)))
+             ((car name+addr)
+              (format "<name>%s</name>" (xml-escape-string author)))
+             (t
+              (format "<email>%s</email>" (xml-escape-string author)))))
           "</author>\n"))
 
 (defun webfeeder-item-to-atom (item)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]