ConsoleCursorFactory::create()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

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