function MetadataMinifier::minify
Minifies an array of versions into a set of version diffs
Parameters
array[] $versions A list of version arrays:
Return value
array[] A list of versions minified with each array only containing the differences to the previous one
File
-
vendor/
composer/ metadata-minifier/ src/ MetadataMinifier.php, line 54
Class
Namespace
Composer\MetadataMinifierCode
public static function minify(array $versions) {
$minifiedVersions = array();
$lastKnownVersionData = null;
foreach ($versions as $version) {
if (!$lastKnownVersionData) {
$lastKnownVersionData = $version;
$minifiedVersions[] = $version;
continue;
}
$minifiedVersion = array();
// add any changes from the previous version
foreach ($version as $key => $val) {
if (!isset($lastKnownVersionData[$key]) || $lastKnownVersionData[$key] !== $val) {
$minifiedVersion[$key] = $val;
$lastKnownVersionData[$key] = $val;
}
}
// store any deletions from the previous version for keys missing in current one
foreach ($lastKnownVersionData as $key => $val) {
if (!isset($version[$key])) {
$minifiedVersion[$key] = "__unset";
unset($lastKnownVersionData[$key]);
}
}
$minifiedVersions[] = $minifiedVersion;
}
return $minifiedVersions;
}