Timesplitter: Translate "(terminus post quem)" to since

Close #39
This commit is contained in:
2026-04-12 01:38:37 +02:00
parent 5ad7c5a29d
commit bca32c33c7
2 changed files with 44 additions and 0 deletions

View File

@@ -917,6 +917,23 @@ final class NodaTimeSplitter {
$output->counting_time_indicator, NodaTimeBeforeAfterIndicator::until, '?', $output->end_date); $output->counting_time_indicator, NodaTimeBeforeAfterIndicator::until, '?', $output->end_date);
} }
} }
if (str_ends_with($datum, "terminus ante quem")) {
if (($spacePos = \strrpos($datum, " ", -15)) === false) {
return false;
}
if ($output = self::attempt_splitting(\substr($datum, 0, $spacePos))) {
return self::_turn_noda_split_time_to_before($output);
}
}
if (\str_ends_with($datum, "termiusost quem")) {
if (($spacePos = strrpos($datum, " ", -10)) === false) {
return false;
}
if ($output = self::attempt_splitting(\substr($datum, 0, $spacePos))) {
return new NodaSplitTime($output->start_year, '?', $output->counting_time_month, $output->counting_time_day,
$output->counting_time_indicator, NodaTimeBeforeAfterIndicator::since, $output->start_date, '?');
}
}
// Ends beginning with a hyphen // Ends beginning with a hyphen
if (\preg_match("/\-ig(\.|)$/", $datum)) { if (\preg_match("/\-ig(\.|)$/", $datum)) {
if (($spacePos = strrpos($datum, "-")) === false) { if (($spacePos = strrpos($datum, "-")) === false) {

View File

@@ -764,6 +764,19 @@ final class NodaTimeSplitterTest extends TestCase {
self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals($output->toTimeName(), "1920-1929");
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925);
$output = NodaTimeSplitter::attempt_splitting("2020 (terminus ante quem)");
self::assertNotEmpty($output);
self::assertEquals($output->toOldFormat(), [
0 => "?",
1 => "2019",
2 => "00",
3 => "00",
4 => "+",
5 => "Vor",
]);
self::assertEquals($output->toTimeName(), "Vor 2020");
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020);
$output = NodaTimeSplitter::attempt_splitting("Vor Dezember 2020"); $output = NodaTimeSplitter::attempt_splitting("Vor Dezember 2020");
self::assertNotEmpty($output); self::assertNotEmpty($output);
self::assertEquals($output->toOldFormat(), [ self::assertEquals($output->toOldFormat(), [
@@ -1271,6 +1284,20 @@ final class NodaTimeSplitterTest extends TestCase {
self::assertEquals($output->toTimeName(), "Seit 1920"); self::assertEquals($output->toTimeName(), "Seit 1920");
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1920); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1920);
// From 1920 onwards
$output = NodaTimeSplitter::attempt_splitting("1926 (termius post quem)");
self::assertNotEmpty($output);
self::assertEquals($output->toOldFormat(), [
0 => "1926",
1 => "?",
2 => "00",
3 => "00",
4 => "+",
5 => "Seit",
]);
self::assertEquals($output->toTimeName(), "Seit 1926");
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1926);
$output = NodaTimeSplitter::attempt_splitting("III. század"); $output = NodaTimeSplitter::attempt_splitting("III. század");
self::assertNotEmpty($output); self::assertNotEmpty($output);
self::assertEquals($output->toOldFormat(), [ self::assertEquals($output->toOldFormat(), [