Split times in more cases (300-20 BC, 300-4000 CE)
This commit is contained in:
		| @@ -669,7 +669,27 @@ final class NodaTimeSplitter { | ||||
|         if (\preg_match("/^[0-9]{4}\-[0-9]{3}$/", $datum)) { // Hungarian Y-m | ||||
|             $start = \substr($datum, 0, 4); | ||||
|             $end = \substr($datum, -3); | ||||
|             return new NodaSplitTime("0" . $start, "0" . $end); | ||||
|             return new NodaSplitTime($start, "0" . $end); | ||||
|         } | ||||
|  | ||||
|         // 2-3 (n. Chr.) | ||||
|         if (\preg_match("/^[0-9]{1}\-[0-9]{1}$/", $datum)) { | ||||
|             return new NodaSplitTime("000" . \substr($datum, 0, 1), "000" . \substr($datum, -1)); | ||||
|         } | ||||
|  | ||||
|         // 300-2 (v. Chr.) | ||||
|         if (\preg_match("/^[0-9]{3}\-[0-9]{2}$/", $datum)) { | ||||
|             return new NodaSplitTime("0" . \substr($datum, 0, 3), "00" . \substr($datum, -2)); | ||||
|         } | ||||
|  | ||||
|         // 30-2 (v. Chr.) | ||||
|         if (\preg_match("/^[0-9]{2}\-[0-9]{1}$/", $datum)) { | ||||
|             return new NodaSplitTime("00" . \substr($datum, 0, 2), "000" . \substr($datum, -1)); | ||||
|         } | ||||
|  | ||||
|         // 2-300 (n. Chr.) | ||||
|         if (\preg_match("/^[0-9]{1}\-[0-9]{3}$/", $datum)) { | ||||
|             return new NodaSplitTime("000" . \substr($datum, 0, 1), "0" . \substr($datum, -3)); | ||||
|         } | ||||
|  | ||||
|         // 20-30 (n. Chr.) | ||||
| @@ -679,6 +699,18 @@ final class NodaTimeSplitter { | ||||
|             return new NodaSplitTime("00" . $start, "00" . $end); | ||||
|         } | ||||
|  | ||||
|         // 20-130 (n. Chr.) | ||||
|         if (\preg_match("/^[0-9]{2}\-[0-9]{3}$/", $datum)) { // 20-40 (n. Chr.) | ||||
|             $start = \substr($datum, 0, 2); | ||||
|             $end = \substr($datum, -3); | ||||
|             return new NodaSplitTime("00" . $start, "0" . $end); | ||||
|         } | ||||
|  | ||||
|         // 120-1130 (n. Chr.) | ||||
|         if (\preg_match("/^[0-9]{3}\-[0-9]{4}$/", $datum)) { // 20-40 (n. Chr.) | ||||
|             return new NodaSplitTime("0" . \substr($datum, 0, 3), \substr($datum, -4)); | ||||
|         } | ||||
|  | ||||
|         // 1920 | ||||
|         if (\preg_match("/^[0-9]{4}(\.|)$/", $datum)) { | ||||
|             $start = \substr($datum, 0, 4); | ||||
|   | ||||
| @@ -174,6 +174,43 @@ final class NodaTimeSplitterTest extends TestCase { | ||||
|                     end_date: '-0018-12-31'), | ||||
|                 "18 v. Chr.", | ||||
|             ], | ||||
|             "843-1100" => [ | ||||
|                 "843-1100", | ||||
|                 new NodaSplitTime('0843', '1100', | ||||
|                     start_date: '0843-01-01', | ||||
|                     end_date: '1100-12-31'), | ||||
|                 "843-1100", | ||||
|             ], | ||||
|             "2-7 n. Chr." => [ | ||||
|                 "2-7 n. Chr.", | ||||
|                 new NodaSplitTime('0002', '0007', | ||||
|                     start_date: '0002-01-01', | ||||
|                     end_date: '0007-12-31'), | ||||
|                 "2-7 n. Chr.", | ||||
|             ], | ||||
|             "0-280 n. Chr." => [ | ||||
|                 "0-280 n. Chr.", | ||||
|                 new NodaSplitTime('0000', '0280', | ||||
|                     start_date: '0000-01-01', | ||||
|                     end_date: '0280-12-31'), | ||||
|                 "0-280 n. Chr.", | ||||
|             ], | ||||
|             "280-10 v. Chr." => [ | ||||
|                 "280-10 v. Chr.", | ||||
|                 new NodaSplitTime('-280', '-10', | ||||
|                     counting_time_indicator: NodaCountingTimeIndicator::bce, | ||||
|                     start_date: '-0280-01-01', | ||||
|                     end_date: '-0010-12-31'), | ||||
|                 "280-10 v. Chr.", | ||||
|             ], | ||||
|             "28-1 v. Chr." => [ | ||||
|                 "28-1 v. Chr.", | ||||
|                 new NodaSplitTime('-28', '-1', | ||||
|                     counting_time_indicator: NodaCountingTimeIndicator::bce, | ||||
|                     start_date: '-0028-01-01', | ||||
|                     end_date: '-0001-12-31'), | ||||
|                 "28-1 v. Chr.", | ||||
|             ], | ||||
|         ]; | ||||
|  | ||||
|     } | ||||
| @@ -567,7 +604,6 @@ final class NodaTimeSplitterTest extends TestCase { | ||||
|             "1978. július7", | ||||
|             "1978. július 7 elött", | ||||
|             "Anfang September 1903", | ||||
|             "120-63 v. Chr.", | ||||
|             "0-25 n. Chr.", // Should not be splittable because 25 CE is too close to 0. 0 might actually be correct, not an artefact. | ||||
|         ] as $entry) { | ||||
|             $output[$entry] = [$entry]; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user