From 5b6d7f9401b7e0f77e0f41ad18d108706dd11ad3 Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Mon, 8 Jun 2026 13:42:45 +0200 Subject: [PATCH] Identify and clean component uncertainty in timespans --- src/NodaUncertaintyHelper.php | 16 ++++++++++++++++ tests/NodaUncertaintyHelperTest.php | 3 +++ 2 files changed, 19 insertions(+) diff --git a/src/NodaUncertaintyHelper.php b/src/NodaUncertaintyHelper.php index 9ae3aaf..07ecab9 100644 --- a/src/NodaUncertaintyHelper.php +++ b/src/NodaUncertaintyHelper.php @@ -266,6 +266,15 @@ final class NodaUncertaintyHelper { return ""; } + if (str_contains($name, '-')) { + $parts = explode('-', $name); + $partsCleaned = []; + foreach ($parts as $part) { + $partsCleaned[] = self::cleanUncertaintyIndicatorsTime($part); + } + $name = implode('-', $partsCleaned); + } + // Remove uncertainty prefixes foreach (NodaUncertaintyHelper::TIME_UNCERTAINTY_PREFIXES as $prefix) { if (\substr($name, 0, \strlen($prefix)) === "$prefix") { @@ -296,6 +305,13 @@ final class NodaUncertaintyHelper { $zeit_name = self::trim(strtolower($zeit_name)); + if (str_contains($zeit_name, '-')) { + $parts = explode('-', $zeit_name); + foreach ($parts as $part) { + if (self::guessTimeCertainty($part) === false) return false; + } + } + // Attempt to guess uncertainty based on prefixes. foreach (self::TIME_UNCERTAINTY_PREFIXES as $prefix) { if (\substr($zeit_name, 0, \strlen($prefix)) === $prefix) { diff --git a/tests/NodaUncertaintyHelperTest.php b/tests/NodaUncertaintyHelperTest.php index f95ad88..1fb7769 100644 --- a/tests/NodaUncertaintyHelperTest.php +++ b/tests/NodaUncertaintyHelperTest.php @@ -24,6 +24,9 @@ final class NodaUncertaintyHelperTest extends TestCase { public static function uncertainTimesProvider():array { return [ + 'infix: "1950-wohl 1960"' => ["1950-ca. 1960", "1950-1960", false], + 'uncertainty prefix + infix: "ca. 1950-ca. 1960"' => ["ca. 1950-ca. 1960", "1950-1960", false], + 'uncertainty prefix + infix: "wohl 1950-wohl 1960"' => ["wohl 1950-wohl 1960", "1950-1960", false], 'uncertainty prefix: "wohl 1950"' => ["wohl 1950", "1950", false], 'uncertainty prefix: "etwa 1950"' => ["etwa 1950", "1950", false], 'uncertainty suffix: "1950?"' => ["1950?", "1950", false],