[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ebdb 4882f66 238/350: Include addresses in vcard output
From: |
Eric Abrahamsen |
Subject: |
[elpa] externals/ebdb 4882f66 238/350: Include addresses in vcard output, plus escaping |
Date: |
Mon, 14 Aug 2017 11:46:45 -0400 (EDT) |
branch: externals/ebdb
commit 4882f66a00f359975c74049918891949c5e42a9c
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>
Include addresses in vcard output, plus escaping
* ebdb-vcard.el (ebdb-vcard-escape): Escape commas and semicolons, as
per vcard RFC. Use where appropriate
(ebdb-fmt-field): Add formatting method for addresses.
---
ebdb-vcard.el | 55 ++++++++++++++++++++++++++++++++++++-------------------
1 file changed, 36 insertions(+), 19 deletions(-)
diff --git a/ebdb-vcard.el b/ebdb-vcard.el
index b08af56..3527358 100644
--- a/ebdb-vcard.el
+++ b/ebdb-vcard.el
@@ -60,6 +60,7 @@
ebdb-field-timestamp
ebdb-field-mail
ebdb-field-name
+ ebdb-field-address
ebdb-field-url
ebdb-field-role
ebdb-field-anniversary
@@ -81,6 +82,7 @@
ebdb-field-timestamp
ebdb-field-mail
ebdb-field-name
+ ebdb-field-address
ebdb-field-url
ebdb-field-role
ebdb-field-anniversary
@@ -118,8 +120,19 @@ not always respect these headings."
:type '(repeat
(cons string symbol)))
+(defsubst ebdb-vcard-escape (str)
+ "Escape commas, semi-colons and newlines in STR."
+ (replace-regexp-in-string
+ "\\(\n\\)" "\\\\n"
+ (replace-regexp-in-string "\\([,;]\\)" "\\\\\\1" str)))
+
+(cl-defmethod ebdb-fmt-process-fields ((_f ebdb-formatter-vcard)
+ (_record ebdb-record)
+ field-list)
+ field-list)
+
(cl-defmethod ebdb-fmt-process-fields ((fmt ebdb-formatter-vcard)
- (record ebdb-record)
+ (record ebdb-record-person)
field-list)
"Process fields in FIELD-LIST.
@@ -219,7 +232,7 @@ method is just responsible for formatting the record name."
(field ebdb-field)
_style
_record)
- (ebdb-string field))
+ (ebdb-vcard-escape (ebdb-string field)))
(cl-defmethod ebdb-fmt-field-label ((_f ebdb-formatter-vcard)
(field ebdb-field)
@@ -273,31 +286,34 @@ method is just responsible for formatting the record
name."
(t "")))))
(cl-defmethod ebdb-fmt-field-label ((_f ebdb-formatter-vcard)
- (phone ebdb-field-phone)
- _style
- _record)
- (concat (cl-call-next-method)
- ";TYPE=" (slot-value phone 'object-name)))
-
-(cl-defmethod ebdb-fmt-field-label ((_f ebdb-formatter-vcard)
- (rel ebdb-field-relation)
+ (field ebdb-field-labeled)
_style
_record)
(concat (cl-call-next-method)
- ";TYPE=" (slot-value rel 'object-name)))
+ ";TYPE=" (ebdb-vcard-escape
+ (slot-value field 'object-name))))
-(cl-defmethod ebdb-fmt-field-label ((_f ebdb-formatter-vcard)
- (url ebdb-field-url)
- _style
- _record)
- (concat (cl-call-next-method)
- ";TYPE=" (slot-value url 'object-name)))
+(cl-defmethod ebdb-fmt-field ((_f ebdb-formatter-vcard)
+ (addr ebdb-field-address)
+ _style
+ _record)
+ (with-slots (streets locality region postcode country) addr
+ (concat ";;"
+ (mapconcat
+ #'ebdb-vcard-escape
+ streets ",")
+ (format
+ ";%s;%s;%s;%s"
+ (or locality "")
+ (or region "")
+ (or postcode "")
+ (or country "")))))
(cl-defmethod ebdb-fmt-field ((_f ebdb-formatter-vcard)
(rel ebdb-field-relation)
_style
_record)
- (concat ":urn:uuid:" (slot-value rel 'rel-uuid)))
+ (concat "urn:uuid:" (slot-value rel 'rel-uuid)))
(cl-defmethod ebdb-fmt-field ((_f ebdb-formatter-vcard)
(tags ebdb-org-field-tags)
@@ -314,7 +330,8 @@ method is just responsible for formatting the record name."
(if (string= label "birthday")
"BDAY"
(concat "ANNIVERSARY;TYPE=" label))))
- (concat label-string ";CALSCALE=" (slot-value ann 'calendar))))
+ (concat label-string (format ";CALSCALE=%s"
+ (slot-value ann 'calendar)))))
(provide 'ebdb-vcard)
;;; ebdb-vcard.el ends here
- [elpa] externals/ebdb c9f8f33 226/350: Be more when careful migrating timestamps, (continued)
- [elpa] externals/ebdb c9f8f33 226/350: Be more when careful migrating timestamps, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb b7a28f3 227/350: Be more forgiving about contents of BBDB file when migrating, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb dd675a6 223/350: Revert changes to pop-up routine., Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 1096c6e 230/350: Search read transform functions needs to work for all methods, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb adfe13f 235/350: Fix stupidity, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 817414a 234/350: Drop object-print for cl-print-object, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb a629bde 236/350: Last tweak to pop-up buffers, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 444f762 231/350: Fix condition-case catch in ebdb-i18n-* methods, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 2de4f0e 241/350: Apparently I was spelling vCard wrong, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb f9d5af6 243/350: Add close parenthesis to email regexp delimiter, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 4882f66 238/350: Include addresses in vcard output, plus escaping,
Eric Abrahamsen <=
- [elpa] externals/ebdb 440cb9e 245/350: More search functions can use prefixes: mention in manual, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb c8bdb70 194/350: Don't assume Chinese names have both surname and given-names, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 212a1e1 212/350: Snarfing shouldn't pop up its own window, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb fc813dd 193/350: Yet more fixes to proper name formatting, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 06123d9 217/350: Make sure database files are decoded as utf-8-emacs, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb c07babf 203/350: If alt-names search fails, fall back on actual name field search, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 501edfb 149/350: Give Org mode its own popup window, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 0612d92 153/350: Comment out ebdb-mua-auto-snarf-signature, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 957fc1b 157/350: Implement popping of buffer search history, Eric Abrahamsen, 2017/08/14
- [elpa] externals/ebdb 3cb827e 181/350: Check for existence of fiel-attribute-modification-time, Eric Abrahamsen, 2017/08/14