|
@@ -16,6 +16,7 @@ use Composer\Package;
|
|
|
|
|
|
/**
|
|
|
* @author Konstantin Kudryashiv <ever.zet@gmail.com>
|
|
|
+ * @author Jordi Boggiano <j.boggiano@seld.be>
|
|
|
*/
|
|
|
class ArrayLoader
|
|
|
{
|
|
@@ -28,13 +29,22 @@ class ArrayLoader
|
|
|
'suggest' => 'suggests',
|
|
|
);
|
|
|
|
|
|
+ protected $versionParser;
|
|
|
+
|
|
|
+ public function __construct($parser = null)
|
|
|
+ {
|
|
|
+ $this->versionParser = $parser;
|
|
|
+ if (!$parser) {
|
|
|
+ $this->versionParser = new Package\Version\VersionParser;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public function load($config)
|
|
|
{
|
|
|
$this->validateConfig($config);
|
|
|
|
|
|
- $versionParser = new Package\Version\VersionParser();
|
|
|
- $version = $versionParser->parse($config['version']);
|
|
|
- $package = new Package\MemoryPackage($config['name'], $version['version'], $version['type']);
|
|
|
+ $version = $this->versionParser->normalize($config['version']);
|
|
|
+ $package = new Package\MemoryPackage($config['name'], $version);
|
|
|
|
|
|
$package->setType(isset($config['type']) ? $config['type'] : 'library');
|
|
|
|
|
@@ -87,15 +97,10 @@ class ArrayLoader
|
|
|
private function loadLinksFromConfig($srcPackageName, $description, array $linksSpecs)
|
|
|
{
|
|
|
$links = array();
|
|
|
- foreach ($linksSpecs as $packageName => $version) {
|
|
|
+ foreach ($linksSpecs as $packageName => $constraint) {
|
|
|
$name = strtolower($packageName);
|
|
|
|
|
|
- preg_match('#^([>=<~]*)([\d.]+.*)$#', $version, $match);
|
|
|
- if (!$match[1]) {
|
|
|
- $match[1] = '=';
|
|
|
- }
|
|
|
-
|
|
|
- $constraint = new Package\LinkConstraint\VersionConstraint($match[1], $match[2]);
|
|
|
+ $constraint = $this->versionParser->parseConstraints($constraint);
|
|
|
$links[] = new Package\Link($srcPackageName, $packageName, $constraint, $description);
|
|
|
}
|
|
|
|