Fix edge cases in time splitter where inputs start with many digits but

are not dates
This commit is contained in:
Joshua Ramon Enslin 2023-11-07 00:27:20 +01:00
parent 93c0ff3fa0
commit 1a7dbcd6f6
Signed by: jrenslin
GPG Key ID: 46016F84501B70AE
2 changed files with 7 additions and 1 deletions

View File

@ -514,10 +514,13 @@ final class NodaTimeSplitter {
// Further code requires a year to be present, skip if none is set // Further code requires a year to be present, skip if none is set
if (empty($year)) return []; if (empty($year)) return [];
// Skip, if dates are too long and do not contain spaces (= no translatable names)
if (str_contains($datum, " ") === false && strlen($datum) > 12) return [];
foreach (self::MONTH_NAMES_HUNGARIAN as $monthVal => $monthValidNames) { foreach (self::MONTH_NAMES_HUNGARIAN as $monthVal => $monthValidNames) {
if (self::stri_occurs($datum, $monthValidNames)) { if (self::stri_occurs($datum, $monthValidNames)) {
if (!empty($monat)) return [];
$monat = (string)$monthVal; $monat = (string)$monthVal;
break;
} }
} }

View File

@ -695,6 +695,9 @@ final class NodaTimeSplitterTest extends TestCase {
$output = NodaTimeSplitter::attempt_splitting("6;November 1978"); $output = NodaTimeSplitter::attempt_splitting("6;November 1978");
self::assertEquals($output, []); self::assertEquals($output, []);
$output = NodaTimeSplitter::attempt_splitting("65497028c51eb");
self::assertEquals($output, []);
# $output = NodaTimeSplitter::attempt_splitting("Nach 1944-1964"); # $output = NodaTimeSplitter::attempt_splitting("Nach 1944-1964");
# self::assertEquals($output, []); # self::assertEquals($output, []);