Allow splitting times after <year><month>

This commit is contained in:
2020-10-04 19:17:18 +02:00
committed by Stefan Rohde-Enslin
parent be46c39efd
commit a0037c9883
3 changed files with 49 additions and 13 deletions

View File

@ -190,7 +190,7 @@ final class NodaTimeSplitter {
public static function timePartsToTimeName(array $moda):string {
if (!empty($moda[5]) and $moda[5] === "Nach" and $moda[1] === "?") {
$moda[0] = strval(intval($moda[0]) - 1);
if (empty(trim($moda[2], "0 "))) $moda[0] = strval(intval($moda[0]) - 1);
$moda[1] = $moda[0];
$prefix = "Nach ";
}
@ -250,7 +250,7 @@ final class NodaTimeSplitter {
}
if ($moda[1] === "?") {
if (!empty($moda[5]) and $moda[5] === "Nach") {
if (!empty($moda[5]) and $moda[5] === "Nach" and empty(trim($moda[2], " 0"))) {
return abs(intval($moda[0])) - 1;
}
return abs(intval($moda[0]));
@ -681,13 +681,19 @@ final class NodaTimeSplitter {
return ["?", $start, "00", "00", "+", ""];
}
if (preg_match("/^(Nach|nach)\ [0-9]{4}/", $datum)) {
if (preg_match("/^(Nach|nach)\ /", $datum)) {
if (($spacePos = strpos($datum, " ")) === false) {
return [];
}
if ($output = self::attempt_splitting(substr($datum, $spacePos))) {
// Handle cases like "Nach 60er Jahre" with divergent start and end year
if ($output[1] !== $output[0] and intval($output[1]) > intval($output[0])) {
$output[0] = $output[1];
}
$output[1] = "?";
$output[0] = strval((intval($output[0]) + 1));
if (empty(trim($output[2], "0 .,"))) $output[0] = strval((intval($output[0]) + 1));
$output[5] = "Nach";
return $output;
}
@ -697,8 +703,14 @@ final class NodaTimeSplitter {
return [];
}
if ($output = self::attempt_splitting(substr($datum, 0, $spacePos))) {
// Handle cases like "Nach 60er Jahre" with divergent start and end year
if ($output[1] !== $output[0] and intval($output[1]) > intval($output[0])) {
$output[0] = $output[1];
}
$output[1] = "?";
$output[0] = strval((intval($output[0]) + 1));
if (empty(trim($output[2], "0 .,"))) $output[0] = strval((intval($output[0]) + 1));
$output[5] = "Nach";
return $output;
}