Laravel version update
Laravel version update
This commit is contained in:
193
vendor/phar-io/manifest/src/ManifestDocumentMapper.php
vendored
Normal file
193
vendor/phar-io/manifest/src/ManifestDocumentMapper.php
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of PharIo\Manifest.
|
||||
*
|
||||
* (c) Arne Blankerts <arne@blankerts.de>, Sebastian Heuer <sebastian@phpeople.de>, Sebastian Bergmann <sebastian@phpunit.de>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace PharIo\Manifest;
|
||||
|
||||
use PharIo\Version\Version;
|
||||
use PharIo\Version\Exception as VersionException;
|
||||
use PharIo\Version\VersionConstraintParser;
|
||||
|
||||
class ManifestDocumentMapper {
|
||||
/**
|
||||
* @param ManifestDocument $document
|
||||
*
|
||||
* @returns Manifest
|
||||
*
|
||||
* @throws ManifestDocumentMapperException
|
||||
*/
|
||||
public function map(ManifestDocument $document) {
|
||||
try {
|
||||
$contains = $document->getContainsElement();
|
||||
$type = $this->mapType($contains);
|
||||
$copyright = $this->mapCopyright($document->getCopyrightElement());
|
||||
$requirements = $this->mapRequirements($document->getRequiresElement());
|
||||
$bundledComponents = $this->mapBundledComponents($document);
|
||||
|
||||
return new Manifest(
|
||||
new ApplicationName($contains->getName()),
|
||||
new Version($contains->getVersion()),
|
||||
$type,
|
||||
$copyright,
|
||||
$requirements,
|
||||
$bundledComponents
|
||||
);
|
||||
} catch (VersionException $e) {
|
||||
throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e);
|
||||
} catch (Exception $e) {
|
||||
throw new ManifestDocumentMapperException($e->getMessage(), $e->getCode(), $e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ContainsElement $contains
|
||||
*
|
||||
* @return Type
|
||||
*
|
||||
* @throws ManifestDocumentMapperException
|
||||
*/
|
||||
private function mapType(ContainsElement $contains) {
|
||||
switch ($contains->getType()) {
|
||||
case 'application':
|
||||
return Type::application();
|
||||
case 'library':
|
||||
return Type::library();
|
||||
case 'extension':
|
||||
return $this->mapExtension($contains->getExtensionElement());
|
||||
}
|
||||
|
||||
throw new ManifestDocumentMapperException(
|
||||
sprintf('Unsupported type %s', $contains->getType())
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param CopyrightElement $copyright
|
||||
*
|
||||
* @return CopyrightInformation
|
||||
*
|
||||
* @throws InvalidUrlException
|
||||
* @throws InvalidEmailException
|
||||
*/
|
||||
private function mapCopyright(CopyrightElement $copyright) {
|
||||
$authors = new AuthorCollection();
|
||||
|
||||
foreach($copyright->getAuthorElements() as $authorElement) {
|
||||
$authors->add(
|
||||
new Author(
|
||||
$authorElement->getName(),
|
||||
new Email($authorElement->getEmail())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$licenseElement = $copyright->getLicenseElement();
|
||||
$license = new License(
|
||||
$licenseElement->getType(),
|
||||
new Url($licenseElement->getUrl())
|
||||
);
|
||||
|
||||
return new CopyrightInformation(
|
||||
$authors,
|
||||
$license
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param RequiresElement $requires
|
||||
*
|
||||
* @return RequirementCollection
|
||||
*
|
||||
* @throws ManifestDocumentMapperException
|
||||
*/
|
||||
private function mapRequirements(RequiresElement $requires) {
|
||||
$collection = new RequirementCollection();
|
||||
$phpElement = $requires->getPHPElement();
|
||||
$parser = new VersionConstraintParser;
|
||||
|
||||
try {
|
||||
$versionConstraint = $parser->parse($phpElement->getVersion());
|
||||
} catch (VersionException $e) {
|
||||
throw new ManifestDocumentMapperException(
|
||||
sprintf('Unsupported version constraint - %s', $e->getMessage()),
|
||||
$e->getCode(),
|
||||
$e
|
||||
);
|
||||
}
|
||||
|
||||
$collection->add(
|
||||
new PhpVersionRequirement(
|
||||
$versionConstraint
|
||||
)
|
||||
);
|
||||
|
||||
if (!$phpElement->hasExtElements()) {
|
||||
return $collection;
|
||||
}
|
||||
|
||||
foreach($phpElement->getExtElements() as $extElement) {
|
||||
$collection->add(
|
||||
new PhpExtensionRequirement($extElement->getName())
|
||||
);
|
||||
}
|
||||
|
||||
return $collection;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ManifestDocument $document
|
||||
*
|
||||
* @return BundledComponentCollection
|
||||
*/
|
||||
private function mapBundledComponents(ManifestDocument $document) {
|
||||
$collection = new BundledComponentCollection();
|
||||
|
||||
if (!$document->hasBundlesElement()) {
|
||||
return $collection;
|
||||
}
|
||||
|
||||
foreach($document->getBundlesElement()->getComponentElements() as $componentElement) {
|
||||
$collection->add(
|
||||
new BundledComponent(
|
||||
$componentElement->getName(),
|
||||
new Version(
|
||||
$componentElement->getVersion()
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return $collection;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ExtensionElement $extension
|
||||
*
|
||||
* @return Extension
|
||||
*
|
||||
* @throws ManifestDocumentMapperException
|
||||
*/
|
||||
private function mapExtension(ExtensionElement $extension) {
|
||||
try {
|
||||
$parser = new VersionConstraintParser;
|
||||
$versionConstraint = $parser->parse($extension->getCompatible());
|
||||
|
||||
return Type::extension(
|
||||
new ApplicationName($extension->getFor()),
|
||||
$versionConstraint
|
||||
);
|
||||
} catch (VersionException $e) {
|
||||
throw new ManifestDocumentMapperException(
|
||||
sprintf('Unsupported version constraint - %s', $e->getMessage()),
|
||||
$e->getCode(),
|
||||
$e
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user