Jonathan Bernard cfac536d60 Fix vCard 3 PROFILE and AGENT handling
Parse PROFILE as the concrete VC3_Profile type instead of a bare
VC3_Property, and validate PROFILE parameters under the correct
content-type name.

Preserve AGENT values in newVC3_Agent so both parsed and constructed
AGENT properties serialize with their actual URI or inline content.

Expand regression coverage to verify PROFILE is exposed and serialized
as the standard property, parsed AGENT URI values round-trip correctly,
and constructed AGENT values retain their content.

AI-Assisted: yes
AI-Tool: OpenAI Codex / gpt-5.4 xhigh
2026-03-28 13:33:20 -05:00
2023-05-03 02:16:18 -05:00
2023-05-03 07:11:32 -05:00

VCard

nim-vcard is a pure nim implementation of the VCard format defined in RFCs 2425, 2426, and 6350. It allows you to parse and serialize VCards, as well as create VCards programmatically. It aims to be a complete implememtation, supporting all of the features of the VCard3 standard. Because the standard provides many features that may be rarely used, this library also provides a simplified API for more typical use-cases.

Example Usage

BEGIN:VCARD
VERSION:3.0
UID: 5db6f100-e2d6-4e8d-951f-d920586bc069
N:Foster;Jack;Allen;;
FN:Allen Foster
REV:20230408T122102Z
EMAIL;TYPE=home;TYPE=pref:allen@fosters.test
EMAIL;TYPE=work:jack.foster@company.test
TEL;TYPE=CELL:+1 (555) 123-4567
END:VCARD

4839ff64a8/examples/simple.nim (L1-L22)

Future Goals

  • VCard 4.0 support

Debugging

Need to clean up and organize

Run tvcard3 tests in gdb:

$ cd tests
$ nim --debuginfo --linedir:on c tvcard3
$ gdb --tui tvcard3
Description
No description provided
Readme 430 KiB
Languages
Nim 99.6%
Makefile 0.4%