Skip to content

Commit 5f433f0

Browse files
committed
Improve internal codebase
1 parent 2976a1a commit 5f433f0

File tree

3 files changed

+14
-15
lines changed

3 files changed

+14
-15
lines changed

src/Dictionary.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,15 @@ public static function fromHttpValue(Stringable|string $httpValue): self
127127

128128
public function toHttpValue(): string
129129
{
130-
$formatter = static fn (StructuredField $member, string $key): string => match (true) {
131-
$member instanceof ValueAccess && $member instanceof ParameterAccess && true === $member->value() => $key.$member->parameters()->toHttpValue(),
132-
default => $key.'='.$member->toHttpValue(),
133-
};
130+
$members = [];
131+
foreach ($this->members as $key => $member) {
132+
$members[] = match (true) {
133+
$member instanceof ValueAccess && true === $member->value() => $key.$member->parameters()->toHttpValue(),
134+
default => $key.'='.$member->toHttpValue(),
135+
};
136+
}
134137

135-
return implode(', ', array_map($formatter, $this->members, array_keys($this->members)));
138+
return implode(', ', $members);
136139
}
137140

138141
public function __toString(): string

src/InnerList.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use Stringable;
1212
use function array_filter;
1313
use function array_map;
14+
use function array_replace;
1415
use function array_splice;
1516
use function array_values;
1617
use function count;
@@ -260,14 +261,11 @@ public function replace(int $key, StructuredField|Token|ByteSequence|DateTimeInt
260261
}
261262

262263
$member = self::filterMember($member);
263-
if ($member == $this->members[$offset]) {
264+
if ($member->toHttpValue() === $this->members[$offset]->toHttpValue()) {
264265
return $this;
265266
}
266267

267-
$members = $this->members;
268-
$members[$offset] = self::filterMember($member);
269-
270-
return new self($members, $this->parameters);
268+
return new self(array_replace($this->members, [$offset => $member]), $this->parameters);
271269
}
272270

273271
public function remove(string|int ...$keys): static

src/OuterList.php

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Stringable;
1111
use function array_filter;
1212
use function array_map;
13+
use function array_replace;
1314
use function array_splice;
1415
use function array_values;
1516
use function count;
@@ -224,14 +225,11 @@ public function replace(int $key, iterable|StructuredField|Token|ByteSequence|Da
224225
}
225226

226227
$member = self::filterMember($member);
227-
if ($member == $this->members[$offset]) {
228+
if ($member->toHttpValue() === $this->members[$offset]->toHttpValue()) {
228229
return $this;
229230
}
230231

231-
$members = $this->members;
232-
$members[$offset] = self::filterMember($member);
233-
234-
return new self(...$members);
232+
return new self(...array_replace($this->members, [$offset => $member]));
235233
}
236234

237235
public function remove(string|int ...$keys): static

0 commit comments

Comments
 (0)