This repository has been archived by the owner on Sep 3, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDecimalNumber.php
90 lines (74 loc) · 1.67 KB
/
DecimalNumber.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
/**
* League.Period Visualizer (https://github.com/bakame-php/period-visualizer)
*
* (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace Bakame\Period\Visualizer;
use function array_map;
use function range;
final class DecimalNumber implements LabelGenerator
{
/**
* @var int
*/
private $int;
/**
* New instance.
*/
public function __construct(int $int = 1)
{
if (0 >= $int) {
$int = 1;
}
$this->int = $int;
}
/**
* {@inheritdoc}
*/
public function generate(int $nbLabels): array
{
if (0 >= $nbLabels) {
return [];
}
$end = $this->int + $nbLabels - 1;
$values = range($this->int, $end);
return array_map([$this, 'format'], $values);
}
/**
* {@inheritdoc}
*/
public function format(string $label): string
{
return $label;
}
/**
* Returns the starting Letter.
*/
public function startingAt(): int
{
return $this->int;
}
/**
* Return an instance with the starting Letter.
*
* This method MUST retain the state of the current instance, and return
* an instance that contains the starting Letter.
*/
public function startsWith(int $int): self
{
if (0 >= $int) {
$int = 1;
}
if ($int === $this->int) {
return $this;
}
$clone = clone $this;
$clone->int = $int;
return $clone;
}
}