Time/NL: Support short year notation (19 april '80)

This commit is contained in:
Arjan Scherpenisse 2023-08-02 10:34:33 +02:00
parent 7520daaeba
commit 37c52eaf6d
No known key found for this signature in database
GPG Key ID: 9AE38E3EFD2E6599
2 changed files with 24 additions and 0 deletions

View File

@ -153,6 +153,10 @@ allExamples = concat
, examples (datetime (2015, 4, 14, 0, 0, 0) Day)
[ "14 april 2015"
, "April 14, 2015"
, "14 april 15"
]
, examples (datetime (1980, 4, 14, 0, 0, 0) Day)
[ "14 april '80"
]
, examples (datetime (2013, 2, 19, 0, 0, 0) Day)
[ "volgende week dinsdag"

View File

@ -783,6 +783,25 @@ ruleDayofmonthNonOrdinalNamedmonth = Rule
_ -> Nothing
}
ruleDayofmonthNonOrdinalNamedmonthYear :: Rule
ruleDayofmonthNonOrdinalNamedmonthYear = Rule
{ name = "<day-of-month> (non ordinal) <named-month> year"
, pattern =
[ Predicate isDOMInteger
, Predicate isAMonth
, regex "'?(\\d{2,4})"
]
, prod = \tokens -> case tokens of
(token:
Token Time td:
Token RegexMatch (GroupMatch (match:_)):
_) -> do
y <- parseInt match
dom <- intersectDOM td token
Token Time <$> intersect dom (year y)
_ -> Nothing
}
ruleIntersect :: Rule
ruleIntersect = Rule
{ name = "intersect"
@ -1507,6 +1526,7 @@ rules =
, ruleDatetimeDatetimeInterval
, ruleDayofmonthNonOrdinalNamedmonth
, ruleDayofmonthNonOrdinalOfNamedmonth
, ruleDayofmonthNonOrdinalNamedmonthYear
, ruleDayofmonthOrdinal
, ruleDayofmonthordinalNamedmonth
, ruleDayofmonthordinalNamedmonthYear