Passed
Push — master ( 9ae635...1c5d16 )
by Chema
01:22 queued 12s
created

ConsolePrinter::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
ccs 0
cts 3
cp 0
crap 2
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace EdifactParser\IO;
6
7
use EdifactParser\Segments\SegmentInterface;
8
use EdifactParser\TransactionMessage;
9
10
final class ConsolePrinter implements PrinterInterface
11
{
12
    /** @var string[] */
13
    private array $segmentNames;
14
15
    public static function createWithHeaders(array $segmentNames): self
16
    {
17
        return new self($segmentNames);
18
    }
19
20
    private function __construct(array $segmentNames)
21
    {
22
        $this->segmentNames = $segmentNames;
23
    }
24
25
    public function printMessage(TransactionMessage $message): void
26
    {
27
        foreach ($this->segmentNames as $segmentName) {
28
            $this->printSegment($message->segmentByName($segmentName));
29
        }
30
    }
31
32
    /** @var SegmentInterface[] */
33
    private function printSegment(array $segments): void
34
    {
35
        $first = $segments[array_key_first($segments)];
36
        print sprintf("> %s:\n", $first->tag());
37
38
        foreach ($segments as $segment) {
39
            print sprintf(
40
                "    %s |> %s \n",
41
                str_pad($segment->subId(), 3),
42
                json_encode($segment->rawValues())
43
            );
44
        }
45
    }
46
}
47