Warning: session_start(): open(/var/lib/php/sessions/sess_se3bvbhcgjh5j62saqnlq9shnl, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass EnglishDateParser > DateStructures {
bool assumeFuture = true; // e.g. for "tuesday" [not used]
LS tok;
L> longestParses(S s) {
L> l = pwt_filterByType SomeDate(allParses(s));
new L topDogs;
for (ParsedWithTokens p : l)
for (int i = p.iStart; i < p.iRemaining; i += 2)
listPut(topDogs, pwt_winner(_get(topDogs, i), p));
ret uniquify(nonNulls(topDogs));
}
ItIt allParses(S s) {
tok = javaTok(s);
new L out;
L> years = lazyListFromIterator(nestedIterator parseYear(lai_codeTokens(tok));
print(+years);
out.addAll(years);
for (ParsedWithTokens year : years)
for (ParsedWithTokens slash : parseFixedToken("/", year.remaining()))
for (ParsedWithTokens month : parseMonth(slash.remaining()))
for (ParsedWithTokens slash2 : parseFixedToken("/", month.remaining()))
for (ParsedWithTokens day : parseDayOfMonth(slash2.remaining()))
out.add(pwt_combine(new Day(day!, new Month(month!, new Year(year!))), year, day));
ret itIt(out);
}
ItIt> parseNumber(ListAndIndex toParse) {
ret mapI_nonNulls(pwt_followingTokens(1, 2, toParse),
p -> isInteger(p!) ? p.withValue(parseInt(p!)) : null);
}
ItIt> parseYear(ListAndIndex toParse) {
ret filterI(parseNumber(toParse), p -> between(p!, 1900, 2100));
}
ItIt> parseMonth(ListAndIndex toParse) {
ret filterI(parseNumber(toParse), p -> between(p!, 1, 12));
}
ItIt> parseDayOfMonth(ListAndIndex toParse) {
ret filterI(parseNumber(toParse), p -> between(p!, 1, 31));
}
ItIt> parseFixedToken(S token, ListAndIndex toParse) {
ret filterI(pwt_followingTokens(1, 2, toParse), p -> eqic(p!, token));
}
}