Skip to content

Commit 640f168

Browse files
committed
Remove support of array as valid input parameters
1 parent 781be7e commit 640f168

File tree

2 files changed

+25
-83
lines changed

2 files changed

+25
-83
lines changed

src/Dictionary.php

Lines changed: 13 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
use IteratorAggregate;
1010
use function array_key_exists;
1111
use function array_keys;
12+
use function array_map;
1213
use function count;
1314
use function implode;
15+
use function is_array;
1416
use function preg_match;
1517

1618
/**
@@ -38,10 +40,7 @@ public static function __set_state(array $properties): self
3840
* its keys represent the dictionary entry key
3941
* its values represent the dictionary entry value
4042
*
41-
* @param iterable<string, InnerList|Item|ByteSequence|Token|array{
42-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
43-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
44-
* }|bool|int|float|string> $members
43+
* @param iterable<string, InnerList|Item|ByteSequence|Token|bool|int|float|string> $members
4544
*/
4645
public static function fromAssociative(iterable $members = []): self
4746
{
@@ -60,10 +59,7 @@ public static function fromAssociative(iterable $members = []): self
6059
* the first member represents the instance entry key
6160
* the second member represents the instance entry value
6261
*
63-
* @param iterable<array{0:string, 1:InnerList|Item|ByteSequence|Token|array{
64-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
65-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
66-
* }|bool|int|float|string}> $pairs
62+
* @param iterable<array{0:string, 1:InnerList|Item|ByteSequence|Token|bool|int|float|string}> $pairs
6763
*/
6864
public static function fromPairs(iterable $pairs = []): self
6965
{
@@ -82,7 +78,10 @@ public static function fromPairs(iterable $pairs = []): self
8278
*/
8379
public static function fromHttpValue(string $httpValue): self
8480
{
85-
return self::fromAssociative(Parser::parseDictionary($httpValue));
81+
return self::fromAssociative(array_map(
82+
fn (mixed $value): mixed => is_array($value) ? InnerList::fromList(...$value) : $value,
83+
Parser::parseDictionary($httpValue)
84+
));
8685
}
8786

8887
public function toHttpValue(): string
@@ -216,13 +215,8 @@ public function pair(int $index): array
216215

217216
/**
218217
* Add a member at the end of the instance if the key is new otherwise update the value associated with the key.
219-
*
220-
* @param InnerList|Item|ByteSequence|Token|array{
221-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
222-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
223-
* }|bool|int|float|string $member
224218
*/
225-
public function set(string $key, InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): self
219+
public function set(string $key, InnerList|Item|ByteSequence|Token|bool|int|float|string $member): self
226220
{
227221
$this->members[self::filterKey($key)] = self::filterMember($member);
228222

@@ -241,17 +235,10 @@ private static function filterKey(string $key): string
241235
return $key;
242236
}
243237

244-
/**
245-
* @param InnerList|Item|ByteSequence|Token|array{
246-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
247-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
248-
* }|bool|int|float|string $member
249-
*/
250-
private static function filterMember(InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): InnerList|Item
238+
private static function filterMember(InnerList|Item|ByteSequence|Token|bool|int|float|string $member): InnerList|Item
251239
{
252240
return match (true) {
253241
$member instanceof InnerList, $member instanceof Item => $member,
254-
is_array($member) => InnerList::fromList(...$member),
255242
default => Item::from($member),
256243
};
257244
}
@@ -280,13 +267,8 @@ public function clear(): self
280267

281268
/**
282269
* Add a member at the end of the instance if the key is new delete any previous reference to the key.
283-
*
284-
* @param InnerList|Item|ByteSequence|Token|array{
285-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
286-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
287-
* }|bool|int|float|string $member
288270
*/
289-
public function append(string $key, InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): self
271+
public function append(string $key, InnerList|Item|ByteSequence|Token|bool|int|float|string $member): self
290272
{
291273
unset($this->members[$key]);
292274

@@ -297,13 +279,8 @@ public function append(string $key, InnerList|Item|ByteSequence|Token|array|bool
297279

298280
/**
299281
* Add a member at the beginning of the instance if the key is new delete any previous reference to the key.
300-
*
301-
* @param InnerList|Item|ByteSequence|Token|array{
302-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
303-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
304-
* }|bool|int|float|string $member
305282
*/
306-
public function prepend(string $key, InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): self
283+
public function prepend(string $key, InnerList|Item|ByteSequence|Token|bool|int|float|string $member): self
307284
{
308285
unset($this->members[$key]);
309286

@@ -315,10 +292,7 @@ public function prepend(string $key, InnerList|Item|ByteSequence|Token|array|boo
315292
/**
316293
* Merge multiple instances.
317294
*
318-
* @param iterable<array-key, InnerList|Item|ByteSequence|Token|array{
319-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
320-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
321-
* }|bool|int|float|string> ...$others
295+
* @param iterable<array-key, InnerList|Item|ByteSequence|Token|bool|int|float|string> ...$others
322296
*/
323297
public function merge(iterable ...$others): self
324298
{

src/OrderedList.php

Lines changed: 12 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use function array_values;
1313
use function count;
1414
use function implode;
15+
use function is_array;
1516

1617
/**
1718
* @implements IteratorAggregate<array-key, Item|InnerList>
@@ -34,22 +35,13 @@ public static function __set_state(array $properties): self
3435
return new self(...$properties['members']);
3536
}
3637

37-
/**
38-
* @param InnerList|Item|ByteSequence|Token|array{
39-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
40-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
41-
* }|bool|int|float|string ...$members
42-
*/
43-
public static function from(InnerList|Item|ByteSequence|Token|array|bool|int|float|string ...$members): self
38+
public static function from(InnerList|Item|ByteSequence|Token|bool|int|float|string ...$members): self
4439
{
4540
return self::fromList($members);
4641
}
4742

4843
/**
49-
* @param iterable<InnerList|Item|ByteSequence|Token|array{
50-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
51-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
52-
* }|bool|int|float|string> $members
44+
* @param iterable<InnerList|Item|ByteSequence|Token|bool|int|float|string> $members
5345
*/
5446
public static function fromList(iterable $members = []): self
5547
{
@@ -61,17 +53,10 @@ public static function fromList(iterable $members = []): self
6153
return new self(...$newMembers);
6254
}
6355

64-
/**
65-
* @param InnerList|Item|ByteSequence|Token|array{
66-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
67-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
68-
* }|bool|int|float|string $member
69-
*/
70-
private static function filterMember(InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): InnerList|Item
56+
private static function filterMember(InnerList|Item|ByteSequence|Token|bool|int|float|string $member): InnerList|Item
7157
{
7258
return match (true) {
7359
$member instanceof InnerList, $member instanceof Item => $member,
74-
is_array($member) => InnerList::fromList($member[0], $member[1]),
7560
default => Item::from($member),
7661
};
7762
}
@@ -83,7 +68,10 @@ private static function filterMember(InnerList|Item|ByteSequence|Token|array|boo
8368
*/
8469
public static function fromHttpValue(string $httpValue): self
8570
{
86-
return self::fromList(Parser::parseList($httpValue));
71+
return self::fromList(array_map(
72+
fn (mixed $value): mixed => is_array($value) ? InnerList::fromList(...$value) : $value,
73+
Parser::parseList($httpValue)
74+
));
8775
}
8876

8977
public function toHttpValue(): string
@@ -139,13 +127,8 @@ public function get(int $index): Item|InnerList
139127

140128
/**
141129
* Insert members at the beginning of the list.
142-
*
143-
* @param InnerList|Item|ByteSequence|Token|array{
144-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
145-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
146-
* }|bool|int|float|string ...$members
147130
*/
148-
public function unshift(InnerList|Item|ByteSequence|Token|array|bool|int|float|string ...$members): self
131+
public function unshift(InnerList|Item|ByteSequence|Token|bool|int|float|string ...$members): self
149132
{
150133
$this->members = [...array_map(self::filterMember(...), $members), ...$this->members];
151134

@@ -154,13 +137,8 @@ public function unshift(InnerList|Item|ByteSequence|Token|array|bool|int|float|s
154137

155138
/**
156139
* Insert members at the end of the list.
157-
*
158-
* @param InnerList|Item|ByteSequence|Token|array{
159-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
160-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
161-
* }|bool|int|float|string ...$members
162140
*/
163-
public function push(InnerList|Item|ByteSequence|Token|array|bool|int|float|string ...$members): self
141+
public function push(InnerList|Item|ByteSequence|Token|bool|int|float|string ...$members): self
164142
{
165143
$this->members = [...$this->members, ...array_map(self::filterMember(...), $members)];
166144

@@ -170,16 +148,11 @@ public function push(InnerList|Item|ByteSequence|Token|array|bool|int|float|stri
170148
/**
171149
* Insert members starting at the given index.
172150
*
173-
* @param InnerList|Item|ByteSequence|Token|array{
174-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
175-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
176-
* }|bool|int|float|string ...$members
177-
*
178151
* @throws InvalidOffset If the index does not exist
179152
*/
180153
public function insert(
181154
int $index,
182-
InnerList|Item|ByteSequence|Token|array|bool|int|float|string ...$members
155+
InnerList|Item|ByteSequence|Token|bool|int|float|string ...$members
183156
): self {
184157
$offset = $this->filterIndex($index);
185158
match (true) {
@@ -195,14 +168,9 @@ public function insert(
195168
/**
196169
* Replace the member associated with the index.
197170
*
198-
* @param InnerList|Item|ByteSequence|Token|array{
199-
* 0:array<Item|ByteSequence|Token|bool|int|float|string>,
200-
* 1:array<string,Item|ByteSequence|Token|bool|int|float|string>
201-
* }|bool|int|float|string $member
202-
*
203171
* @throws InvalidOffset If the index does not exist
204172
*/
205-
public function replace(int $index, InnerList|Item|ByteSequence|Token|array|bool|int|float|string $member): self
173+
public function replace(int $index, InnerList|Item|ByteSequence|Token|bool|int|float|string $member): self
206174
{
207175
if (null === ($offset = $this->filterIndex($index))) {
208176
throw InvalidOffset::dueToIndexNotFound($index);

0 commit comments

Comments
 (0)