Skip to content

Commit d395cd4

Browse files
committed
Update Parameters implementation
1 parent 1a55920 commit d395cd4

File tree

1 file changed

+8
-19
lines changed

1 file changed

+8
-19
lines changed

src/Parameters.php

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -75,23 +75,12 @@ public static function fromPairs(MemberOrderedMap|iterable $pairs): self
7575
return $instance;
7676
}
7777

78-
/**
79-
* @throws SyntaxError If the bare item contains parameters
80-
*/
81-
private static function filterMember(Item $item): Item
82-
{
83-
if ($item->parameters()->hasMembers()) {
84-
throw new InvalidArgument('Parameters instances can only contain bare items.');
85-
}
86-
87-
return $item;
88-
}
89-
90-
private static function formatMember(Item|Token|ByteSequence|DateTimeInterface|Stringable|string|int|float|bool $member): Item
78+
private static function filterMember(Item|Token|ByteSequence|DateTimeInterface|Stringable|string|int|float|bool $member): Item
9179
{
9280
return match (true) {
93-
$member instanceof Item => self::filterMember($member),
94-
default => Item::from($member),
81+
$member instanceof Item && $member->parameters()->hasNoMembers() => $member,
82+
!$member instanceof Item => Item::from($member),
83+
default => throw new InvalidArgument('Parameters instances can only contain bare items.'),
9584
};
9685
}
9786

@@ -187,7 +176,7 @@ public function get(string|int $offset): Item
187176
throw InvalidOffset::dueToKeyNotFound($offset);
188177
}
189178

190-
return self::filterMember($this->members[$offset]);
179+
return $this->members[$offset];
191180
}
192181

193182
/**
@@ -232,7 +221,7 @@ public function pair(int $index): array
232221
$i = 0;
233222
foreach ($this->members as $key => $member) {
234223
if ($i === $offset) {
235-
return [$key, self::filterMember($member)];
224+
return [$key, $member];
236225
}
237226
++$i;
238227
}
@@ -247,7 +236,7 @@ public function pair(int $index): array
247236
*/
248237
public function set(string $key, StructuredField|Token|ByteSequence|DateTimeInterface|Stringable|string|int|float|bool $member): self
249238
{
250-
$this->members[MapKey::fromString($key)->value] = self::formatMember($member);
239+
$this->members[MapKey::fromString($key)->value] = self::filterMember($member);
251240

252241
return $this;
253242
}
@@ -288,7 +277,7 @@ public function prepend(string $key, StructuredField|Token|ByteSequence|DateTime
288277
{
289278
unset($this->members[$key]);
290279

291-
$this->members = [...[MapKey::fromString($key)->value => self::formatMember($member)], ...$this->members];
280+
$this->members = [...[MapKey::fromString($key)->value => self::filterMember($member)], ...$this->members];
292281

293282
return $this;
294283
}

0 commit comments

Comments
 (0)