Passed
Push — master ( 6d7209...7d0057 )
by Chema
11:13 queued 11s
created

printMessage()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 8
c 2
b 0
f 0
nc 1
nop 1
dl 0
loc 10
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
use EdifactParser\EdifactParser;
6
use EdifactParser\Segments\BGMBeginningOfMessage;
7
use EdifactParser\Segments\CNTControl;
8
use EdifactParser\Segments\DTMDateTimePeriod;
9
use EdifactParser\Segments\MEADimensions;
10
use EdifactParser\Segments\NADNameAddress;
11
use EdifactParser\Segments\PCIPackageId;
12
use EdifactParser\Segments\SegmentInterface;
13
use EdifactParser\Segments\UNHMessageHeader;
14
use EdifactParser\Segments\UNTMessageFooter;
15
use EdifactParser\TransactionMessage;
16
17
require __DIR__ . '/vendor/autoload.php';
18
19
$fileContent = <<<EDI
20
UNA:+.? '
21
UNB+UNOC:3+9457386:30+73130012:30+19101:118+8+MPM 2.19+1424'
22
23
UNH+1+IFTMIN:S:93A:UN:PN001'
24
BGM+340+56677786689+9'
25
DTM+10:20191011:102'
26
TSR+19+A4'
27
CNT+7:0.51:KGM'
28
CNT+11:1:PCE'
29
RFF+CU:ValidationSet1'
30
TDT+20'
31
NAD+CZ+0410106314:160:Z12++Company Centre+c/o Carrier AB+City1++12345+DE'
32
NAD+CN+++Person Name+Street Nr 2+City2++12345+DE'
33
CTA+IC+:Person Name'
34
COM+?+46980100:AL'
35
[email protected]:EM'
36
GID+1+1'
37
MEA+WT+G+KGM:0.62'
38
MEA+VOL++MTQ:0'
39
PCI+18+56677786689'
40
UNT+18+1'
41
42
UNH+2+IFTMIN:S:93A:UN:PN001'
43
BGM+340+05055700896+9'
44
DTM+10:20191011:102'
45
TSR+19+A4'
46
CNT+7:0.62:KGM'
47
CNT+11:1:PCE'
48
RFF+CU:ValidationSet2'
49
TDT+20'
50
NAD+CZ+0410106314:160:Z12++Company Returns+c/o Carrier AB+City1++12345+DE'
51
NAD+CN+++Person Name+Street Nr 2+City2++12345+DE'
52
CTA+IC+:Person Name'
53
COM+?+46980100:AL'
54
[email protected]:EM'
55
GID+1+1'
56
MEA+WT+G+KGM:0.62'
57
MEA+VOL++MTQ:0'
58
PCI+18+05055700896'
59
UNT+19+2'
60
61
UNZ+2+8'
62
EDI;
63
64
$messages = EdifactParser::create()->parse($fileContent);
65
66
foreach ($messages as $i => $message) {
67
    print "Message number: {$i}\n";
68
    printMessage($message);
69
    print PHP_EOL;
70
}
71
72
function printMessage(TransactionMessage $message): void
73
{
74
    printSegment($message->segmentByName(UNHMessageHeader::class));
75
    printSegment($message->segmentByName(BGMBeginningOfMessage::class));
76
    printSegment($message->segmentByName(DTMDateTimePeriod::class));
77
    printSegment($message->segmentByName(CNTControl::class));
78
    printSegment($message->segmentByName(NADNameAddress::class));
79
    printSegment($message->segmentByName(MEADimensions::class));
80
    printSegment($message->segmentByName(PCIPackageId::class));
81
    printSegment($message->segmentByName(UNTMessageFooter::class));
82
}
83
84
/** @var SegmentInterface[] $segments */
85
function printSegment(array $segments): void
86
{
87
    $first = $segments[array_key_first($segments)];
88
    print sprintf("> %s:\n", $first->tag());
89
90
    foreach ($segments as $segment) {
91
        print sprintf(
92
            "    %s |> %s \n",
93
            str_pad($segment->subId(), 3),
94
            json_encode($segment->rawValues())
95
        );
96
    }
97
}
98