Skip to content

Commit

Permalink
[RPC-12] Improved argument parsing regarding VCard 4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
AptiviCEO committed Mar 28, 2023
1 parent cfdede9 commit f189fd0
Show file tree
Hide file tree
Showing 17 changed files with 41 additions and 38 deletions.
36 changes: 18 additions & 18 deletions VisualCard.Tests/ContactData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -356,11 +356,11 @@ public static class ContactData
"John Sanders",
new TelephoneInfo[]
{
new TelephoneInfo(0, new string[] { "TYPE=cell" }, new string[] { "cell" }, "495-522-3560")
new TelephoneInfo(0, Array.Empty<string>(), new string[] { "cell" }, "495-522-3560")
},
new AddressInfo[]
{
new AddressInfo(0, new string[] { "TYPE=home" }, new string[] { "home" }, "", "", "Los Angeles, USA", "", "", "", "")
new AddressInfo(0, Array.Empty<string>(), new string[] { "home" }, "", "", "Los Angeles, USA", "", "", "", "")
},
new OrganizationInfo[]
{
Expand All @@ -374,7 +374,7 @@ public static class ContactData
"Note test for VisualCard",
new EmailInfo[]
{
new EmailInfo(0, new string[] { "TYPE=HOME" }, new string[] { "HOME" }, "john.s@acme.co")
new EmailInfo(0, Array.Empty<string>(), new string[] { "HOME" }, "john.s@acme.co")
},
new XNameInfo[]
{
Expand Down Expand Up @@ -835,15 +835,15 @@ public static class ContactData
"Neville Navasquillo",
new TelephoneInfo[]
{
new TelephoneInfo(0, new string[] { "TYPE=work" }, new string[] { "work" }, "098-765-4321"),
new TelephoneInfo(0, new string[] { "TYPE=cell" }, new string[] { "cell" }, "1-234-567-890"),
new TelephoneInfo(0, new string[] { "TYPE=voice" }, new string[] { "voice" }, "078-494-6434"),
new TelephoneInfo(0, new string[] { "TYPE=home" }, new string[] { "home" }, "348-404-8404"),
new TelephoneInfo(0, Array.Empty<string>(), new string[] { "work" }, "098-765-4321"),
new TelephoneInfo(0, Array.Empty<string>(), new string[] { "cell" }, "1-234-567-890"),
new TelephoneInfo(0, Array.Empty<string>(), new string[] { "voice" }, "078-494-6434"),
new TelephoneInfo(0, Array.Empty<string>(), new string[] { "home" }, "348-404-8404"),
},
new AddressInfo[]
{
new AddressInfo(0, new string[] { "TYPE=work" }, new string[] { "work" }, "POBOX", "", "Street Address ExtAddress", "Reg", "Loc", "Postal", "Country"),
new AddressInfo(0, new string[] { "TYPE=home" }, new string[] { "home" }, "", "", "Street Address", "", "", "", ""),
new AddressInfo(0, Array.Empty<string>(), new string[] { "work" }, "POBOX", "", "Street Address ExtAddress", "Reg", "Loc", "Postal", "Country"),
new AddressInfo(0, Array.Empty<string>(), new string[] { "home" }, "", "", "Street Address", "", "", "", ""),
},
new OrganizationInfo[]
{
Expand All @@ -857,8 +857,8 @@ public static class ContactData
"Notes",
new EmailInfo[]
{
new EmailInfo(0, new string[] { "TYPE=HOME" }, new string[] { "HOME" }, "neville.nvs@gmail.com"),
new EmailInfo(0, new string[] { "TYPE=WORK" }, new string[] { "WORK" }, "neville.nvs@nvsc.com"),
new EmailInfo(0, Array.Empty<string>(), new string[] { "HOME" }, "neville.nvs@gmail.com"),
new EmailInfo(0, Array.Empty<string>(), new string[] { "WORK" }, "neville.nvs@nvsc.com"),
},
new XNameInfo[]
{
Expand All @@ -880,9 +880,9 @@ public static class ContactData
Array.Empty<SoundInfo>(),
new ImppInfo[]
{
new ImppInfo(0, new string[] { "TYPE=HOME" }, "aim:IM", new string[] { "HOME" }),
new ImppInfo(0, new string[] { "TYPE=HOME" }, "msn:Windows LIVE", new string[] { "HOME" }),
new ImppInfo(0, new string[] { "TYPE=HOME" }, "ymsgr:Yahoo", new string[] { "HOME" })
new ImppInfo(0, Array.Empty<string>(), "aim:IM", new string[] { "HOME" }),
new ImppInfo(0, Array.Empty<string>(), "msn:Windows LIVE", new string[] { "HOME" }),
new ImppInfo(0, Array.Empty<string>(), "ymsgr:Yahoo", new string[] { "HOME" })
}
);
private static readonly Card multipleVcardFourContactsInstanceThree = new
Expand All @@ -896,11 +896,11 @@ public static class ContactData
"Sarah Santos",
new TelephoneInfo[]
{
new TelephoneInfo(0, new string[] { "TYPE=cell" }, new string[] { "cell" }, "589-210-1059")
new TelephoneInfo(0, Array.Empty<string>(), new string[] { "cell" }, "589-210-1059")
},
new AddressInfo[]
{
new AddressInfo(0, new string[] { "TYPE=home" }, new string[] { "home" }, "", "", "New York, USA", "", "", "", "")
new AddressInfo(0, Array.Empty<string>(), new string[] { "home" }, "", "", "New York, USA", "", "", "", "")
},
new OrganizationInfo[]
{
Expand All @@ -914,8 +914,8 @@ public static class ContactData
"",
new EmailInfo[]
{
new EmailInfo(0, new string[] { "TYPE=HOME" }, new string[] { "HOME" }, "sarah.s@gmail.com"),
new EmailInfo(0, new string[] { "TYPE=WORK" }, new string[] { "WORK" }, "sarah.s@sso.org"),
new EmailInfo(0, Array.Empty<string>(), new string[] { "HOME" }, "sarah.s@gmail.com"),
new EmailInfo(0, Array.Empty<string>(), new string[] { "WORK" }, "sarah.s@sso.org"),
},
new XNameInfo[]
{
Expand Down
11 changes: 7 additions & 4 deletions VisualCard/Parsers/Four/VcardFour.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,13 @@ public override Card Parse()
}

// Finalize the arguments
if (splitArgs[0].StartsWith(VcardConstants._altIdArgumentSpecifier))
finalArgs.AddRange(splitArgs.Except(new string[] { splitArgs[0] }));
else
finalArgs.AddRange(splitArgs);
finalArgs.AddRange(splitArgs.Except(
splitArgs.Where((arg) =>
arg.StartsWith(VcardConstants._altIdArgumentSpecifier) ||
arg.StartsWith(VcardConstants._valueArgumentSpecifier) ||
arg.StartsWith(VcardConstants._typeArgumentSpecifier)
)
));
}

// Card type (KIND:individual, KIND:group, KIND:org, KIND:location, ...)
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/AddressInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{VcardConstants._addressSpecifierWithType}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/EmailInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{VcardConstants._emailSpecifier}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/GeoInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{(installAltId ? VcardConstants._geoSpecifierWithType : VcardConstants._geoSpecifier)}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/ImppInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{(installAltId ? VcardConstants._imppSpecifierWithType : VcardConstants._imppSpecifier)}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/LogoInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
if (ValueType == "uri" || ValueType == "url")
{
return
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/NameInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
string altNamesStr = string.Join(VcardConstants._valueDelimiter.ToString(), AltNames);
string prefixesStr = string.Join(VcardConstants._valueDelimiter.ToString(), Prefixes);
string suffixesStr = string.Join(VcardConstants._valueDelimiter.ToString(), Suffixes);
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/NicknameInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{(installAltId ? VcardConstants._nicknameSpecifierWithType : VcardConstants._nicknameSpecifier)}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/OrganizationInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
bool installType = (installAltId || OrgTypes.Length > 0) && OrgTypes[0].ToUpper() != "WORK";
return
$"{(installType ? VcardConstants._orgSpecifierWithType : VcardConstants._orgSpecifier)}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/PhotoInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
if (ValueType == "uri" || ValueType == "url")
{
return
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/RoleInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{(installAltId ? VcardConstants._roleSpecifierWithType : VcardConstants._roleSpecifier)}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/SoundInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
if (ValueType == "uri" || ValueType == "url")
{
return
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/TelephoneInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{VcardConstants._telephoneSpecifierWithType}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/TimeZoneInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{(installAltId ? VcardConstants._timeZoneSpecifierWithType : VcardConstants._timeZoneSpecifier)}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
2 changes: 1 addition & 1 deletion VisualCard/Parts/TitleInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0 && AltArguments.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
return
$"{(installAltId ? VcardConstants._titleSpecifierWithArguments : VcardConstants._titleSpecifier)}" +
$"{(installAltId ? "ALTID=" + AltId + VcardConstants._fieldDelimiter : "")}" +
Expand Down
4 changes: 2 additions & 2 deletions VisualCard/Parts/XNameInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ internal string ToStringVcardThree()

internal string ToStringVcardFour()
{
bool installAltId = AltId > 0;
bool installType = installAltId || XKeyTypes.Length > 0;
bool installAltId = AltId >= 0 && AltArguments.Length > 0;
bool installType = installAltId && XKeyTypes.Length > 0;
return
$"{VcardConstants._xSpecifier}" +
$"{XKeyName}{(installType ? VcardConstants._fieldDelimiter : VcardConstants._argumentDelimiter)}" +
Expand Down

0 comments on commit f189fd0

Please sign in to comment.