summaryrefslogtreecommitdiff
path: root/vendor/phar-io/manifest/src/ManifestSerializer.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phar-io/manifest/src/ManifestSerializer.php')
-rw-r--r--vendor/phar-io/manifest/src/ManifestSerializer.php168
1 files changed, 0 insertions, 168 deletions
diff --git a/vendor/phar-io/manifest/src/ManifestSerializer.php b/vendor/phar-io/manifest/src/ManifestSerializer.php
deleted file mode 100644
index e236b5984..000000000
--- a/vendor/phar-io/manifest/src/ManifestSerializer.php
+++ /dev/null
@@ -1,168 +0,0 @@
-<?php declare(strict_types = 1);
-/*
- * 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\AnyVersionConstraint;
-use PharIo\Version\Version;
-use PharIo\Version\VersionConstraint;
-use XMLWriter;
-
-/** @psalm-suppress MissingConstructor */
-class ManifestSerializer {
- /** @var XMLWriter */
- private $xmlWriter;
-
- public function serializeToFile(Manifest $manifest, string $filename): void {
- \file_put_contents(
- $filename,
- $this->serializeToString($manifest)
- );
- }
-
- public function serializeToString(Manifest $manifest): string {
- $this->startDocument();
-
- $this->addContains($manifest->getName(), $manifest->getVersion(), $manifest->getType());
- $this->addCopyright($manifest->getCopyrightInformation());
- $this->addRequirements($manifest->getRequirements());
- $this->addBundles($manifest->getBundledComponents());
-
- return $this->finishDocument();
- }
-
- private function startDocument(): void {
- $xmlWriter = new XMLWriter();
- $xmlWriter->openMemory();
- $xmlWriter->setIndent(true);
- $xmlWriter->setIndentString(\str_repeat(' ', 4));
- $xmlWriter->startDocument('1.0', 'UTF-8');
- $xmlWriter->startElement('phar');
- $xmlWriter->writeAttribute('xmlns', 'https://phar.io/xml/manifest/1.0');
-
- $this->xmlWriter = $xmlWriter;
- }
-
- private function finishDocument(): string {
- $this->xmlWriter->endElement();
- $this->xmlWriter->endDocument();
-
- return $this->xmlWriter->outputMemory();
- }
-
- private function addContains(ApplicationName $name, Version $version, Type $type): void {
- $this->xmlWriter->startElement('contains');
- $this->xmlWriter->writeAttribute('name', $name->asString());
- $this->xmlWriter->writeAttribute('version', $version->getVersionString());
-
- switch (true) {
- case $type->isApplication(): {
- $this->xmlWriter->writeAttribute('type', 'application');
-
- break;
- }
-
- case $type->isLibrary(): {
- $this->xmlWriter->writeAttribute('type', 'library');
-
- break;
- }
-
- case $type->isExtension(): {
- $this->xmlWriter->writeAttribute('type', 'extension');
- /* @var $type Extension */
- $this->addExtension(
- $type->getApplicationName(),
- $type->getVersionConstraint()
- );
-
- break;
- }
-
- default: {
- $this->xmlWriter->writeAttribute('type', 'custom');
- }
- }
-
- $this->xmlWriter->endElement();
- }
-
- private function addCopyright(CopyrightInformation $copyrightInformation): void {
- $this->xmlWriter->startElement('copyright');
-
- foreach ($copyrightInformation->getAuthors() as $author) {
- $this->xmlWriter->startElement('author');
- $this->xmlWriter->writeAttribute('name', $author->getName());
- $this->xmlWriter->writeAttribute('email', $author->getEmail()->asString());
- $this->xmlWriter->endElement();
- }
-
- $license = $copyrightInformation->getLicense();
-
- $this->xmlWriter->startElement('license');
- $this->xmlWriter->writeAttribute('type', $license->getName());
- $this->xmlWriter->writeAttribute('url', $license->getUrl()->asString());
- $this->xmlWriter->endElement();
-
- $this->xmlWriter->endElement();
- }
-
- private function addRequirements(RequirementCollection $requirementCollection): void {
- $phpRequirement = new AnyVersionConstraint();
- $extensions = [];
-
- foreach ($requirementCollection as $requirement) {
- if ($requirement instanceof PhpVersionRequirement) {
- $phpRequirement = $requirement->getVersionConstraint();
-
- continue;
- }
-
- if ($requirement instanceof PhpExtensionRequirement) {
- $extensions[] = $requirement->asString();
- }
- }
-
- $this->xmlWriter->startElement('requires');
- $this->xmlWriter->startElement('php');
- $this->xmlWriter->writeAttribute('version', $phpRequirement->asString());
-
- foreach ($extensions as $extension) {
- $this->xmlWriter->startElement('ext');
- $this->xmlWriter->writeAttribute('name', $extension);
- $this->xmlWriter->endElement();
- }
-
- $this->xmlWriter->endElement();
- $this->xmlWriter->endElement();
- }
-
- private function addBundles(BundledComponentCollection $bundledComponentCollection): void {
- if (\count($bundledComponentCollection) === 0) {
- return;
- }
- $this->xmlWriter->startElement('bundles');
-
- foreach ($bundledComponentCollection as $bundledComponent) {
- $this->xmlWriter->startElement('component');
- $this->xmlWriter->writeAttribute('name', $bundledComponent->getName());
- $this->xmlWriter->writeAttribute('version', $bundledComponent->getVersion()->getVersionString());
- $this->xmlWriter->endElement();
- }
-
- $this->xmlWriter->endElement();
- }
-
- private function addExtension(ApplicationName $applicationName, VersionConstraint $versionConstraint): void {
- $this->xmlWriter->startElement('extension');
- $this->xmlWriter->writeAttribute('for', $applicationName->asString());
- $this->xmlWriter->writeAttribute('compatible', $versionConstraint->asString());
- $this->xmlWriter->endElement();
- }
-}