Skip to content
This repository was archived by the owner on Sep 3, 2022. It is now read-only.

Commit d5cc22b

Browse files
committed
prepare 0.1.0 release
1 parent ea76c0c commit d5cc22b

File tree

4 files changed

+135
-5
lines changed

4 files changed

+135
-5
lines changed

README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,38 @@ results:
247247
vi. [===]
248248
~~~
249249

250+
#### Reverse strategy
251+
252+
~~~php
253+
<?php
254+
255+
use Bakame\Period\Visualizer\Viewer;
256+
use Bakame\Period\Visualizer\ConsoleOutput;
257+
use Bakame\Period\Visualizer\Label\IntegerType;
258+
use Bakame\Period\Visualizer\Label\RomanType;
259+
use Bakame\Period\Visualizer\Label\AffixType;
260+
use Bakame\Period\Visualizer\Label\ReverseType;
261+
use League\Period\Period;
262+
use League\Period\Sequence;
263+
264+
$labelGenerator = new AffixType(new RomanType(new IntegerType(5), RomanType::LOWER));
265+
$labelGenerator = new ReverserType($labelGenerator->withSuffix('.'));
266+
267+
$view = new Viewer(new ConsoleOutput(), $labelGenerator);
268+
echo $view->sequence(new Sequence(
269+
new Period('2018-01-01', '2018-02-01'),
270+
new Period('2018-01-01', '2018-01-15')
271+
));
272+
~~~
273+
274+
results:
275+
276+
~~~bash
277+
vi. [========]
278+
v. [===]
279+
~~~
280+
281+
250282
#### Custom strategy
251283

252284
You can create your own strategy by implementing the `Bakame\Period\Visualizer\Label\LabelGenerator` interface like shown below:

src/Label/ReverseType.php

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
/**
4+
* League.Period Visualizer (https://github.com/bakame-php/period-visualizer).
5+
*
6+
* (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Bakame\Period\Visualizer\Label;
13+
14+
use League\Period\Sequence;
15+
16+
final class ReverseType implements LabelGenerator
17+
{
18+
/**
19+
* @var LabelGenerator
20+
*/
21+
private $labelGenerator;
22+
23+
/**
24+
* New instance.
25+
*/
26+
public function __construct(LabelGenerator $labelGenerator)
27+
{
28+
$this->labelGenerator = $labelGenerator;
29+
}
30+
31+
/**
32+
* {@inheritdoc}
33+
*/
34+
public function getLabels(Sequence $sequence): array
35+
{
36+
return array_reverse($this->labelGenerator->getLabels($sequence));
37+
}
38+
}

src/Matrix.php

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,6 @@
2828
*/
2929
final class Matrix
3030
{
31-
/**
32-
* @var ConsoleConfig
33-
*/
34-
private static $config;
35-
3631
/**
3732
* @codeCoverageIgnore
3833
*/

tests/Label/ReverseTypeTest.php

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
/**
4+
* League.Period Visualizer (https://github.com/bakame-php/period-visualizer).
5+
*
6+
* (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace BakameTest\Period\Visualizer\Label;
15+
16+
use Bakame\Period\Visualizer\Label\LetterType;
17+
use Bakame\Period\Visualizer\Label\ReverseType;
18+
use League\Period\Period;
19+
use League\Period\Sequence;
20+
use PHPUnit\Framework\TestCase;
21+
22+
/**
23+
* @coversDefaultClass Bakame\Period\Visualizer\Label\AffixType;
24+
*/
25+
final class ReverseTypeTest extends TestCase
26+
{
27+
/**
28+
* @dataProvider providerLetter
29+
*/
30+
public function testGetLabels(
31+
Sequence $sequence,
32+
string $letter,
33+
array $expected
34+
): void {
35+
$generator = new ReverseType(new LetterType($letter));
36+
self::assertSame($expected, $generator->getLabels($sequence));
37+
}
38+
39+
public function providerLetter(): iterable
40+
{
41+
return [
42+
'empty labels' => [
43+
'sequence' => new Sequence(),
44+
'letter' => 'i',
45+
'expected' => [],
46+
],
47+
'labels starts at i' => [
48+
'sequence' => new Sequence(
49+
new Period('2018-01-01', '2018-02-01'),
50+
new Period('2018-01-01', '2018-02-01')
51+
),
52+
'letter' => 'i',
53+
'expected' => ['j', 'i'],
54+
],
55+
'labels starts ends at ab' => [
56+
'sequence' => new Sequence(
57+
new Period('2018-01-01', '2018-02-01'),
58+
new Period('2018-02-01', '2018-03-01')
59+
),
60+
'letter' => 'aa',
61+
'expected' => ['ab', 'aa'],
62+
],
63+
];
64+
}
65+
}

0 commit comments

Comments
 (0)