for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace drupol\ComposerPackages\Exporter;
class Versions extends Exporter
{
public function exportToArray(): array
$data = $this->getEvent()->getComposer()->getLocker()->getLockData();
$packagesData = \array_merge(
$data['packages'],
$data['packages-dev']
);
$packageNames = \array_map(
static function (array $data) {
return $data['name'];
},
$packagesData
$packageVersions = \array_map(
return $data['version'];
if (false !== $versions = \array_combine($packageNames, $packageVersions)) {
\ksort($versions);
$regex = $this->buildRegex($versions);
return \compact('packageNames', 'regex');
}
return [];
private function buildRegex($versions): array
$groups = [];
foreach ($versions as $package => $version) {
[$prefix, $bundle] = \explode('/', $package);
$groups[\sprintf('(?i:%s)(?|', $prefix)][] = \sprintf('/?(?i:%s) (*MARK:%s)|', $bundle, $version);
return $groups;