From 90e746abdd345773da106dfda51b184fb5cd8e18 Mon Sep 17 00:00:00 2001 From: Jonathan Bernard Date: Sat, 28 Mar 2026 20:28:22 -0500 Subject: [PATCH] Support vCard 4 TZ alternate value types --- src/vcard/vcard4.nim | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/vcard/vcard4.nim b/src/vcard/vcard4.nim index 42ee00b..4fe03aa 100644 --- a/src/vcard/vcard4.nim +++ b/src/vcard/vcard4.nim @@ -1342,6 +1342,19 @@ macro genPropParsers( if valueType.isSome and valueType.get != $vtLanguageTag: p.error("parameter 'VALUE' must have the value '" & $vtLanguageTag & "'") contents.add(ac(typeName(value: p.readTextValue))) + elif pn == pnTz: + parseCase[1] = genAst(contents, typeName, p): + let valueType = params.getSingleValue("VALUE") + if valueType.isSome and + valueType.get notin [$vtText, $vtUri, $vtUtcOffset]: + p.error("parameter 'VALUE' must be one of 'text', 'uri', or 'utc-offset'") + + contents.add(ac(typeName( + value: + if valueType.isSome and valueType.get in [$vtUri, $vtUtcOffset]: + p.readValue + else: + p.readTextValue))) else: parseCase[1] = genAst(contents, typeName, pt): p.validateType(params, pt)