memory heap
343 subscribers
2.31K photos
471 videos
52 files
2.94K links
science ∩ art = wonder

all memory blocks here are allocated by @a_v_p

GitHub: https://github.com/artyom-poptsov
Mastodon: https://fosstodon.org/@avp

https://memory-heap.org/~avp/
Download Telegram
Пробую интегрировать работу с форматом vCard (RFC 6350) в Guile-ICS, поскольку этот формат крайне похож на iCalendar (RFC 5545.) Хочу ещё добавить также конвертацию табличных данных в vCard, чтобы массово можно было создавать карточки контактов на основе некой адресной книги (актуальная задача по работе сейчас.)

Для чтения табличных данных как раз можно использовать Guile-DSV. ^_^

Пример данных vCard:
BEGIN:VCARD
VERSION:4.0
UID:urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1
FN;PID=1.1:J. Doe
N:Doe;J.;;;
EMAIL;PID=1.1:jdoe@example.com
EMAIL;PID=2.1:boss@example.com
TEL;PID=1.1;VALUE=uri:tel:+1-555-555-5555
TEL;PID=2.1;VALUE=uri:tel:+1-666-666-6666
CLIENTPIDMAP:1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556
END:VCARD


Пример описания содержимого vCard утилитой ics, которая идёт в комплекте к Guile-ICS:
$ ics describe vcard.vcf
;;; VCARD
;;; CLIENTPIDMAP (TEXT: Text type: RFC5545, 3.3.11)
;;; 1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556
;;; TEL (TEXT: Text type: RFC5545, 3.3.11)
;;; tel:+1-666-666-6666
;;; VALUE uri
;;; PID 2.1
;;; TEL (TEXT: Text type: RFC5545, 3.3.11)
;;; tel:+1-555-555-5555
;;; VALUE uri
;;; PID 1.1
;;; EMAIL (TEXT: Text type: RFC5545, 3.3.11)
;;; boss@example.com
;;; PID 2.1
;;; EMAIL (TEXT: Text type: RFC5545, 3.3.11)
;;; jdoe@example.com
;;; PID 1.1
;;; N (TEXT: Text type: RFC5545, 3.3.11)
;;; Doe;J.;;;
;;; FN (TEXT: Text type: RFC5545, 3.3.11)
;;; J. Doe
;;; PID 1.1
;;; UID (TEXT: Text type: RFC5545, 3.3.11)
;;; urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1
;;; VERSION (TEXT: Text type: RFC5545, 3.3.11)
;;; 4.0


Режим "pretty print":
$ ics print vcard.vcf
BEGIN: VCARD
CLIENTPIDMAP: 1;urn:uuid:53e374d9-337e-4727-8803-a1e9c14e0556
TEL;VALUE=uri;PID=2.1: tel:+1-666-666-6666
TEL;VALUE=uri;PID=1.1: tel:+1-555-555-5555
EMAIL;PID=2.1: boss@example.com
EMAIL;PID=1.1: jdoe@example.com
N: Doe;J.;;;
FN;PID=1.1: J. Doe
UID: urn:uuid:4fbe8971-0bc3-424c-9c26-36c3e1eff6b1
VERSION: 4.0
END: VCARD


#projects #guile #ics #parser #rfc5545 #rfc6350
1
Выпустил релиз Guile-ICS 0.4.0:
https://github.com/artyom-poptsov/guile-ics/releases/tag/v0.4.0

Анонс в списке рассылки GNU Guile:
https://lists.gnu.org/archive/html/guile-user/2022-10/msg00075.html

Основные изменения:
- Добавлена базовая поддержка формата vCard (RFC 6350), используемого для передачи контактных данных.
- Улучшена утилита командной строки ics: теперь она лучше структуирована и поддерживает команды print, describe и convert.

С помощью ics convert теперь можно делать преобразование данных DSV (Delimiter-Separated Values) в iCalendar/vCard.

Например, пусть у вас в файле data.csv есть следующие данные:

ORG,TITLE,FN,EMAIL
Example Organisation,Programmer,Eva Luator,eva@example.org
Example Organisation,Programmer,Random J. Hacker,rjh@example.org

Как можно видеть, первая строка таблицы содержит названия параметров карточки пользователя, тогда как каждая строка описывает по сути одну такую карточку.

То из него можно получить легко контактные карточки через ics convert:

$ ics convert data.csv
BEGIN:VCARD
EMAIL:eva@example.org
FN:Eva Luator
TITLE:Programmer
ORG:Example Organisation
END:VCARD

BEGIN:VCARD
EMAIL:rjh@example.org
FN:Random J. Hacker
TITLE:Programmer
ORG:Example Organisation
END:VCARD

Если вывод ics convert перенаправить в файл, то получится файл с контактными данными. Потом этот файл можно загрузить в почтовый клиент, или приложение контактов в мобильном устройстве, и таким образом сделать массовую загрузку контактов (реальная задача, которая меня и сподвигла на реализацию этой возможности.)

Отправил также патч с обновлением Guile-ICS в GNU Guix:
https://mail.gnu.org/archive/html/guix-patches/2022-10/msg01846.html

#projects #guile #rfc5545 #rfc6350 #parser
👍1