Passed
Push — master ( 823aee...b9b37f )
by Alec
13:15 queued 12s
created

ASettableDefaults::setOutputStream()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 5
rs 10
1
<?php
2
3
declare(strict_types=1);
4
// 10.03.23
5
6
namespace AlecRabbit\Spinner\Core\Defaults\A;
7
8
use AlecRabbit\Spinner\Contract\RunMode;
9
use AlecRabbit\Spinner\Core\Contract\ILoopProbe;
10
use AlecRabbit\Spinner\Core\Pattern\Contract\IPattern;
11
use AlecRabbit\Spinner\Core\Terminal\Contract\ITerminalProbe;
12
use AlecRabbit\Spinner\Helper\Asserter;
13
use Traversable;
14
15
abstract class ASettableDefaults extends ACoreDefaults
16
{
17
    /** @inheritdoc */
18
    public function setOutputStream($stream): static
19
    {
20
        Asserter::assertStream($stream);
21
        static::$outputStream = $stream;
22
        return $this;
23
    }
24
25
    public function setIntervalMilliseconds(int $defaultInterval): static
26
    {
27
        static::$millisecondsInterval = $defaultInterval;
28
        return $this;
29
    }
30
31
    public function setShutdownDelay(float|int $shutdownDelay): static
32
    {
33
        static::$shutdownDelay = $shutdownDelay;
34
        return $this;
35
    }
36
37
    public function setMaxShutdownDelay(float|int $maxShutdownDelay): static
38
    {
39
        static::$shutdownMaxDelay = $maxShutdownDelay;
40
        return $this;
41
    }
42
43
    public function overrideRunMode(RunMode $runMode): static
44
    {
45
        static::$runMode = $runMode;
46
        return $this;
47
    }
48
49
    public function setPercentNumberFormat(string $percentNumberFormat): static
50
    {
51
        static::$percentNumberFormat = $percentNumberFormat;
52
        return $this;
53
    }
54
55
56
    public function setStylePattern(IPattern $spinnerStylePattern): static
57
    {
58
        static::$stylePattern = $spinnerStylePattern;
59
        return $this;
60
    }
61
62
    public function setCharPattern(IPattern $spinnerCharPattern): static
63
    {
64
        static::$charPattern = $spinnerCharPattern;
65
        return $this;
66
    }
67
68
    /** @inheritdoc */
69
    public function overrideTerminalProbeClasses(Traversable $terminalProbes): static
70
    {
71
        /** @var class-string<ITerminalProbe> $probe */
72
        foreach ($terminalProbes as $probe) {
73
            Asserter::isSubClass($probe, ITerminalProbe::class, __METHOD__);
74
        }
75
        static::$terminalProbes = $terminalProbes;
76
        return $this;
77
    }
78
79
    /** @inheritdoc */
80
    public function overrideLoopProbeClasses(Traversable $loopProbes): static
81
    {
82
        /** @var class-string<ILoopProbe> $probe */
83
        foreach ($loopProbes as $probe) {
84
            Asserter::isSubClass($probe, ILoopProbe::class, __METHOD__);
85
        }
86
        static::$loopProbes = $loopProbes;
87
        return $this;
88
    }
89
}
90