Passed
Push — master ( de3d61...be839c )
by Alec
13:42 queued 13s
created

ConsoleCursorFactory::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 5
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 8
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
6
namespace AlecRabbit\Spinner\Core\Factory;
7
8
use AlecRabbit\Spinner\Contract\Option\OptionCursor;
9
use AlecRabbit\Spinner\Core\Builder\Contract\IConsoleCursorBuilder;
10
use AlecRabbit\Spinner\Core\Factory\Contract\IBufferedOutputSingletonFactory;
11
use AlecRabbit\Spinner\Core\Factory\Contract\IConsoleCursorFactory;
12
use AlecRabbit\Spinner\Core\Output\Contract\IConsoleCursor;
13
14
final class ConsoleCursorFactory implements IConsoleCursorFactory
15
{
16
    public function __construct(
17
        protected IBufferedOutputSingletonFactory $bufferedOutputFactory,
18
        protected IConsoleCursorBuilder $cursorBuilder,
19
        protected OptionCursor $optionCursor,
20
    ) {
21
    }
22
23
    public function create(): IConsoleCursor
24
    {
25
        return $this->cursorBuilder
26
            ->withOutput(
27
                $this->bufferedOutputFactory->getOutput()
28
            )
29
            ->withOptionCursor($this->optionCursor)
30
            ->build()
31
        ;
32
    }
33
}
34