friendica-addons/advancedcontentfilter/vendor/fxp/composer-asset-plugin/Type/AbstractAssetType.php

106 lines
2.4 KiB
PHP

<?php
/*
* This file is part of the Fxp Composer Asset Plugin package.
*
* (c) François Pluchino <francois.pluchino@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Fxp\Composer\AssetPlugin\Type;
use Fxp\Composer\AssetPlugin\Converter\PackageConverterInterface;
use Fxp\Composer\AssetPlugin\Converter\SemverConverter;
use Fxp\Composer\AssetPlugin\Converter\VersionConverterInterface;
/**
* Abstract asset type.
*
* @author François Pluchino <francois.pluchino@gmail.com>
*/
abstract class AbstractAssetType implements AssetTypeInterface
{
/**
* @var PackageConverterInterface
*/
protected $packageConverter;
/**
* @var VersionConverterInterface
*/
protected $versionConverter;
/**
* Constructor.
*
* @param PackageConverterInterface $packageConverter
* @param VersionConverterInterface $versionConverter
*/
public function __construct(PackageConverterInterface $packageConverter = null, VersionConverterInterface $versionConverter = null)
{
$this->packageConverter = !$packageConverter ? $this->createPackageConverter() : $packageConverter;
$this->versionConverter = !$versionConverter ? new SemverConverter() : $versionConverter;
}
/**
* {@inheritdoc}
*/
public function getComposerVendorName()
{
return $this->getName().'-asset';
}
/**
* {@inheritdoc}
*/
public function getComposerType()
{
return $this->getName().'-asset-library';
}
/**
* {@inheritdoc}
*/
public function getFilename()
{
return $this->getName().'.json';
}
/**
* {@inheritdoc}
*/
public function getPackageConverter()
{
return $this->packageConverter;
}
/**
* {@inheritdoc}
*/
public function getVersionConverter()
{
return $this->versionConverter;
}
/**
* {@inheritdoc}
*/
public function formatComposerName($name)
{
$prefix = $this->getComposerVendorName().'/';
if (preg_match('/(\:\/\/)|\@/', $name) || 0 === strpos($name, $prefix)) {
return $name;
}
return $prefix.$name;
}
/**
* @return PackageConverterInterface
*/
abstract protected function createPackageConverter();
}