diff --git a/src/vcard/vcard3.nim b/src/vcard/vcard3.nim index b8953b0..f2a1198 100644 --- a/src/vcard/vcard3.nim +++ b/src/vcard/vcard3.nim @@ -520,7 +520,11 @@ func newVC3_Agent*( isInline = true, group = none[string]()): VC3_Agent = - return VC3_Agent(name: $pnAgent, isInline: isInline, group: group) + return VC3_Agent( + name: $pnAgent, + value: value, + isInline: isInline, + group: group) func newVC3_Org*( value: seq[string], @@ -1067,8 +1071,8 @@ proc parseContentLines*(p: var VCardParser): seq[VC3_Property] = if p.readValue.toUpper != "VCARD": p.error("the value of the PROFILE content type must be \"$1\"" % ["vcard"]) - p.validateNoParameters(params, "NAME") - result.add(VC3_Property(group: group, name: name)) + p.validateNoParameters(params, "PROFILE") + result.add(newVC3_Profile(group)) of $pnSource: p.validateRequiredParameters(params, diff --git a/tests/tvcard3.nim b/tests/tvcard3.nim index 59a6f83..ca991ae 100644 --- a/tests/tvcard3.nim +++ b/tests/tvcard3.nim @@ -240,7 +240,9 @@ suite "vcard/vcard3": "FN:John Smith", "N:Smith;John;;;")) - check parsed.profile.isSome + check: + parsed.profile.isSome + ($parsed).contains("PROFILE:VCARD") test "spec: AGENT uri values survive parse and serialize": let serialized = $parseSingleVCard3(vcard3Doc( @@ -251,6 +253,12 @@ suite "vcard/vcard3": check serialized.contains("AGENT;VALUE=uri:mailto:assistant@example.com") + test "spec: constructed AGENT values serialize with their content": + let vc = newMinimalVCard3() + vc.add(newVC3_Agent("mailto:assistant@example.com", isInline = false)) + + check ($vc).contains("AGENT;VALUE=uri:mailto:assistant@example.com") + test "spec: folded lines may continue with horizontal tab": let parsed = parseSingleVCard3( "BEGIN:VCARD\r\n" &