Skip to content

Commit 6c71b06

Browse files
authored
fix(intl): fix circular dependency (#1302)
1 parent 9e5eed6 commit 6c71b06

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

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

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

33
namespace Tempest\Intl\MessageFormat\Functions;
44

5-
use DateTime;
6-
use Tempest\DateTime\DateTime as TempestDateTime;
5+
use Tempest\DateTime\DateTime;
76
use Tempest\Intl\MessageFormat\Formatter\FormattedValue;
87
use Tempest\Intl\MessageFormat\FormattingFunction;
98
use Tempest\Support\Arr;
@@ -14,12 +13,11 @@ final class DateTimeFunction implements FormattingFunction
1413

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

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

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

packages/intl/tests/FormatterTest.php

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

55
use PHPUnit\Framework\Attributes\TestWith;
66
use PHPUnit\Framework\TestCase;
7+
use Tempest\DateTime\DateTime;
78
use Tempest\Intl\IntlConfig;
89
use Tempest\Intl\Locale;
910
use Tempest\Intl\MessageFormat\Formatter\FormattedValue;
@@ -51,13 +52,17 @@ public function test_placeholder_variable(): void
5152

5253
public function test_format_datetime_function_and_parameters(): void
5354
{
55+
if (! class_exists(DateTime::class)) {
56+
$this->markTestSkipped('`tempest/datetime` is needed for this test.');
57+
}
58+
5459
$formatter = new MessageFormatter([new DateTimeFunction()]);
5560

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

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

6368
public function test_format_number_function(): void

0 commit comments

Comments
 (0)