Skip to content

Commit

Permalink
Allow partial dates to be parsed from non-4.0 vCards
Browse files Browse the repository at this point in the history
  • Loading branch information
mangstadt committed Feb 1, 2025
1 parent 510728d commit 0c7431a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 10 deletions.
7 changes: 3 additions & 4 deletions src/main/java/ezvcard/io/scribe/DateOrTimePropertyScribe.java
Original file line number Diff line number Diff line change
Expand Up @@ -221,13 +221,12 @@ private T parse(String value, ParseContext context) {
try {
return newInstance(date(value));
} catch (IllegalArgumentException e) {
if (context.getVersion() == VCardVersion.V2_1 || context.getVersion() == VCardVersion.V3_0) {
throw new CannotParseException(5);
}

try {
return newInstance(PartialDate.parse(value));
} catch (IllegalArgumentException e2) {
if (context.getVersion() == VCardVersion.V2_1 || context.getVersion() == VCardVersion.V3_0) {
throw new CannotParseException(5);
}
context.addWarning(6);
return newInstance(value);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,12 +161,9 @@ public void writeJson() {
public void parseText() {
sensei.assertParseText(dateExtendedStr).run(withDate);
sensei.assertParseText(dateTimeExtendedStr).run(withDateTime);
sensei.assertParseText(partialDate.toISO8601(false)).versions(V2_1, V3_0).cannotParse(5);
sensei.assertParseText(partialDate.toISO8601(false)).versions(V4_0).run(withPartialDate);
sensei.assertParseText(partialTime.toISO8601(false)).versions(V2_1, V3_0).cannotParse(5);
sensei.assertParseText(partialTime.toISO8601(false)).versions(V4_0).run(withPartialTime);
sensei.assertParseText(partialDateTime.toISO8601(false)).versions(V2_1, V3_0).cannotParse(5);
sensei.assertParseText(partialDateTime.toISO8601(false)).versions(V4_0).run(withPartialDateTime);
sensei.assertParseText(partialDate.toISO8601(false)).run(withPartialDate);
sensei.assertParseText(partialTime.toISO8601(false)).run(withPartialTime);
sensei.assertParseText(partialDateTime.toISO8601(false)).run(withPartialDateTime);
sensei.assertParseText(text).versions(V2_1, V3_0).cannotParse(5);
sensei.assertParseText(text).versions(V4_0).warnings(6).run(hasText(text));
sensei.assertParseText(text).versions(V2_1, V3_0).dataType(TEXT).cannotParse(5);
Expand Down

0 comments on commit 0c7431a

Please sign in to comment.