Skip to content

Commit

Permalink
refactor(ArrayLikeTransformerTrait): Cleanup.
Browse files Browse the repository at this point in the history
  • Loading branch information
priyadi committed Jan 31, 2024
1 parent 77ea752 commit fbe6c50
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 15 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
* refactor(`ArrayLikeMetadata`): Add `$type`.
* refactor(`PropertyMapping`): Add `$sourceTypes`.
* refactor(`TraversableToArrayAccessTransformer`): Refactor for clarity.
* refactor(`ArrayLikeTransformerTrait`): Cleanup.

## 0.5.22

Expand Down
25 changes: 10 additions & 15 deletions src/Transformer/Trait/ArrayLikeTransformerTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,11 @@ private function transformTraversableSource(
* @var mixed $sourceMemberValue
*/
foreach ($source as $sourceMemberKey => $sourceMemberValue) {
$result = $this->transformMember(
/**
* @var mixed $key
* @var mixed $value
*/
[$key, $value] = $this->transformMember(
counter: $i,
sourceMemberKey: $sourceMemberKey,
sourceMemberValue: $sourceMemberValue,
Expand All @@ -53,15 +57,15 @@ private function transformTraversableSource(
context: $context,
);

yield $result['key'] => $result['value'];
yield $key => $value;

$i++;
}
}

/**
* @param null|\ArrayAccess<mixed,mixed>|array<mixed,mixed> $target
* @return array{key:mixed,value:mixed}
* @return array{0:mixed,1:mixed}
*/
private function transformMember(
mixed $sourceMemberKey,
Expand Down Expand Up @@ -165,21 +169,15 @@ private function transformMember(
// the target value

if ($targetMetadata->memberValueIsUntyped()) {
return [
'key' => $targetMemberKey,
'value' => $sourceMemberValue,
];
return [$targetMemberKey, $sourceMemberValue];
}

// if the target value types has a type compatible with the source
// value, then we use the source value as the target value

foreach ($targetMetadata->getMemberValueTypes() as $memberValueType) {
if (TypeCheck::isVariableInstanceOf($sourceMemberValue, $memberValueType)) {
return [
'key' => $targetMemberKey,
'value' => $sourceMemberValue,
];
return [$targetMemberKey, $sourceMemberValue];
}
}

Expand Down Expand Up @@ -219,9 +217,6 @@ private function transformMember(
path: $path,
);

return [
'key' => $targetMemberKey,
'value' => $targetMemberValue,
];
return [$targetMemberKey, $targetMemberValue];
}
}

0 comments on commit fbe6c50

Please sign in to comment.