for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
declare(strict_types=1);
namespace AlecRabbit\Spinner\Core\Factory;
use AlecRabbit\Spinner\Contract\Pattern\IPattern;
use AlecRabbit\Spinner\Core\Config\Contract\IRevolverConfig;
use AlecRabbit\Spinner\Core\Factory\Contract\ICharFrameRevolverFactory;
use AlecRabbit\Spinner\Core\Factory\Contract\IFrameCollectionFactory;
use AlecRabbit\Spinner\Core\Revolver\Contract\IFrameRevolver;
use AlecRabbit\Spinner\Core\Revolver\Contract\IFrameRevolverBuilder;
final class CharFrameRevolverFactory implements ICharFrameRevolverFactory
{
public function __construct(
protected IFrameRevolverBuilder $frameRevolverBuilder,
protected IFrameCollectionFactory $frameCollectionFactory,
protected IRevolverConfig $revolverConfig,
) {
}
public function create(IPattern $pattern): IFrameRevolver
return $this->frameRevolverBuilder
->withFrameCollection(
$this->frameCollectionFactory
->create(
$pattern->getFrames()
)
->withInterval(
$pattern->getInterval()
->withTolerance(
$this->revolverConfig->getTolerance()
->build()
;