From 6896106f1a5e74a672beb0fadc41615c8ff6d1bb Mon Sep 17 00:00:00 2001 From: flack Date: Tue, 5 Mar 2024 16:44:35 +0100 Subject: [PATCH] Make sure virtual separator is remove in middle part, too --- src/Ranger.php | 8 ++++++-- test/RangerTest.php | 15 +++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Ranger.php b/src/Ranger.php index 09792b9..dff4c2f 100644 --- a/src/Ranger.php +++ b/src/Ranger.php @@ -231,8 +231,12 @@ public function format($start, $end) : string $left_middle = ''; $right_middle = ''; for ($k = $i; $k <= $j; $k++) { - $left_middle .= $start_tokens[$k]['content']; - $right_middle .= $end_tokens[$k]['content']; + if ($start_tokens[$k]['content'] !== $this->virtual_separator) { + $left_middle .= $start_tokens[$k]['content']; + } + if ($end_tokens[$k]['content'] !== $this->virtual_separator) { + $right_middle .= $end_tokens[$k]['content']; + } } return $left . $left_middle . $this->get_range_separator($best_match) . $right_middle . $right; diff --git a/test/RangerTest.php b/test/RangerTest.php index f7fdcfe..23f955d 100644 --- a/test/RangerTest.php +++ b/test/RangerTest.php @@ -291,4 +291,19 @@ public function testIssue14() } $this->assertEquals('2024年3月29日, ' . $day_period . '7:00', $r->format(1711738800, 1711738800)); } + + public function testIssue15() + { + $r = new Ranger('zh_TW'); + $r + ->setDateType(IntlDateFormatter::MEDIUM) + ->setTimeType(IntlDateFormatter::SHORT); + + if (version_compare(INTL_ICU_VERSION, '70.1', '<')) { + $day_period = '下午'; + } else { + $day_period = '晚上'; + } + $this->assertEquals('2024年3月29日, ' . $day_period . '7:00 – 2024年3月30日, ' . $day_period . '8:00', $r->format(1711738800, 1711828800)); + } }