Skip to content

Commit 9e5eed6

Browse files
authored
fix(intl): fix circular dependency (#1301)
1 parent d1a21b0 commit 9e5eed6

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

packages/intl/src/MessageFormat/Functions/DateTimeFunction.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
namespace Tempest\Intl\MessageFormat\Functions;
44

5-
use Tempest\DateTime\DateTime;
5+
use DateTime;
6+
use Tempest\DateTime\DateTime as TempestDateTime;
67
use Tempest\Intl\MessageFormat\Formatter\FormattedValue;
78
use Tempest\Intl\MessageFormat\FormattingFunction;
89
use Tempest\Support\Arr;
@@ -13,11 +14,12 @@ final class DateTimeFunction implements FormattingFunction
1314

1415
public function format(mixed $value, array $parameters): FormattedValue
1516
{
16-
if (! class_exists(DateTime::class)) {
17-
throw new \RuntimeException('`tempest/datetime` is required to use the `datetime` function.');
17+
if (class_exists(TempestDateTime::class)) {
18+
$datetime = TempestDateTime::parse($value);
19+
} else {
20+
$datetime = new DateTime($value);
1821
}
1922

20-
$datetime = DateTime::parse($value);
2123
$formatted = $datetime->format(Arr\get_by_key($parameters, 'pattern'));
2224

2325
return new FormattedValue($value, $formatted);

packages/intl/tests/FormatterTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ public function test_format_datetime_function_and_parameters(): void
5454
$formatter = new MessageFormatter([new DateTimeFunction()]);
5555

5656
$value = $formatter->format(<<<'TXT'
57-
Today is {$today :datetime pattern=|yyyy/MM/dd|}.
57+
Today's year is {$today :datetime pattern=|Y|}.
5858
TXT, today: '2024-01-01');
5959

60-
$this->assertSame('Today is 2024/01/01.', $value);
60+
$this->assertSame('Today\'s year is 2024.', $value);
6161
}
6262

6363
public function test_format_number_function(): void

0 commit comments

Comments
 (0)