Skip to content

Commit b680a8d

Browse files
authored
feat(types): add support for LineString and MultiLineString (#277)
1 parent ff6a880 commit b680a8d

File tree

2 files changed

+27
-7
lines changed

2 files changed

+27
-7
lines changed

src/Param/ParamValueConverterRegistry.php

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,19 @@ public function __construct()
5151
{
5252
$formatPoint = static fn (array $point) => sprintf('(%s)', implode(',', $point));
5353
// phpcs:ignore SlevomatCodingStandard.Functions.RequireArrowFunction.RequiredArrowFunction
54-
$formatRing = static function (array $v) use ($formatPoint) {
54+
$formatRingOrLineString = static function (array $v) use ($formatPoint) {
5555
/** @phpstan-var array<array<string>> $v */
5656
return sprintf('[%s]', implode(
5757
',',
5858
array_map($formatPoint, $v),
5959
));
6060
};
6161
// phpcs:ignore SlevomatCodingStandard.Functions.RequireArrowFunction.RequiredArrowFunction
62-
$formatPolygon = static function (array $v) use ($formatRing) {
62+
$formatPolygonOrMultiLineString = static function (array $v) use ($formatRingOrLineString) {
6363
/** @phpstan-var array<array<string>> $v */
6464
return sprintf('[%s]', implode(
6565
',',
66-
array_map($formatRing, $v),
66+
array_map($formatRingOrLineString, $v),
6767
));
6868
};
6969

@@ -158,18 +158,24 @@ public function __construct()
158158
: $formatPoint($v),
159159
'Ring' => static fn (string|array $v) => is_string($v)
160160
? $v
161-
: $formatRing($v),
161+
: $formatRingOrLineString($v),
162+
'LineString' => static fn (string|array $v) => is_string($v)
163+
? $v
164+
: $formatRingOrLineString($v),
165+
'MultiLineString' => static fn (string|array $v) => is_string($v)
166+
? $v
167+
: $formatPolygonOrMultiLineString($v),
162168
'Polygon' => static fn (string|array $v) => is_string($v)
163169
? $v
164-
: $formatPolygon($v),
170+
: $formatPolygonOrMultiLineString($v),
165171
'MultiPolygon' => static fn (string|array $v) => is_string($v)
166172
? $v
167173
// phpcs:ignore SlevomatCodingStandard.Functions.RequireArrowFunction.RequiredArrowFunction
168-
: (static function (array $vv) use ($formatPolygon) {
174+
: (static function (array $vv) use ($formatPolygonOrMultiLineString) {
169175
/** @phpstan-var array<array<string>> $vv */
170176
return sprintf('[%s]', implode(
171177
',',
172-
array_map($formatPolygon, $vv),
178+
array_map($formatPolygonOrMultiLineString, $vv),
173179
));
174180
})($v),
175181

tests/Param/ParamValueConverterRegistryTest.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,20 @@ public static function providerConvert(): Generator
239239
yield 'Point (array)' => ['Point', [1, 2], '(1,2)'];
240240
yield 'Ring' => ['Ring', '[(1,2),(3,4)]', '[(1,2),(3,4)]'];
241241
yield 'Ring (array)' => ['Ring', [[1, 2], [3, 4]], '[(1,2),(3,4)]'];
242+
yield 'LineString' => ['LineString', '[(1,2),(3,4)]', '[(1,2),(3,4)]'];
243+
yield 'LineString (array)' => ['LineString', [[1, 2], [3, 4]], '[(1,2),(3,4)]'];
244+
yield 'MultiLineString' => [
245+
'MultiLineString',
246+
'[[(1,2),(3,4)],[(5,6),(7,8)]]',
247+
'[[(1,2),(3,4)],[(5,6),(7,8)]]',
248+
];
249+
250+
yield 'MultiLineString (array)' => [
251+
'MultiLineString',
252+
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]],
253+
'[[(1,2),(3,4)],[(5,6),(7,8)]]',
254+
];
255+
242256
yield 'Polygon' => ['Polygon', '[[(1,2),(3,4)],[(5,6),(7,8)]]', '[[(1,2),(3,4)],[(5,6),(7,8)]]'];
243257
yield 'Polygon (array)' => ['Polygon', [[[1, 2], [3, 4]], [[5, 6], [7, 8]]], '[[(1,2),(3,4)],[(5,6),(7,8)]]'];
244258
yield 'MultiPolygon' => [

0 commit comments

Comments
 (0)