Skip to content

Commit

Permalink
Clean example.php
Browse files Browse the repository at this point in the history
  • Loading branch information
Chemaclass committed May 31, 2020
1 parent f45c961 commit dae3356
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 36 deletions.
56 changes: 23 additions & 33 deletions example.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,12 @@
declare(strict_types=1);

use EdifactParser\EdifactParser;

use EdifactParser\Segments\BGMBeginningOfMessage;
use EdifactParser\Segments\CNTControl;
use EdifactParser\Segments\DTMDateTimePeriod;
use EdifactParser\Segments\MEADimensions;
use EdifactParser\Segments\NADNameAddress;
use EdifactParser\Segments\PCIPackageId;
use EdifactParser\Segments\SegmentInterface;
use EdifactParser\Segments\UNHMessageHeader;
use EdifactParser\Segments\UNTMessageFooter;
use EdifactParser\TransactionMessage;
Expand Down Expand Up @@ -62,44 +60,36 @@
UNZ+2+8'
EDI;

$transactionResult = EdifactParser::create()->parse($fileContent);
$messages = EdifactParser::create()->parse($fileContent);

foreach ($transactionResult as $i => $message) {
print "Message number: {$i}" . PHP_EOL;
foreach ($messages as $i => $message) {
print "Message number: {$i}\n";
printMessage($message);
print PHP_EOL;
}

function printMessage(TransactionMessage $section): void
function printMessage(TransactionMessage $message): void
{
if (!$section->segmentByName(UNHMessageHeader::class)) {
print "No `UNHMessageHeader::class` segment was found \n";

return;
}

$unhSubSegmentKey = array_key_first($section->segmentByName(UNHMessageHeader::class));
printSegment($section->segmentByName(UNHMessageHeader::class)[$unhSubSegmentKey]);

printSegment($section->segmentByName(BGMBeginningOfMessage::class)['340']);
printSegment($section->segmentByName(DTMDateTimePeriod::class)['10']);
printSegment($section->segmentByName(CNTControl::class)['7']);
printSegment($section->segmentByName(CNTControl::class)['11']);
printSegment($section->segmentByName(NADNameAddress::class)['CZ']);
printSegment($section->segmentByName(MEADimensions::class)['WT']);
printSegment($section->segmentByName(MEADimensions::class)['VOL']);
printSegment($section->segmentByName(PCIPackageId::class)['18']);

$untSubSegmentKey = array_key_first($section->segmentByName(UNTMessageFooter::class));
printSegment($section->segmentByName(UNTMessageFooter::class)[$untSubSegmentKey]);
printSegment($message->segmentByName(UNHMessageHeader::class));
printSegment($message->segmentByName(BGMBeginningOfMessage::class));
printSegment($message->segmentByName(DTMDateTimePeriod::class));
printSegment($message->segmentByName(CNTControl::class));
printSegment($message->segmentByName(NADNameAddress::class));
printSegment($message->segmentByName(MEADimensions::class));
printSegment($message->segmentByName(PCIPackageId::class));
printSegment($message->segmentByName(UNTMessageFooter::class));
}

function printSegment(SegmentInterface $segment): void
function printSegment(array $segments): void
{
print sprintf(
"%s - %s <| %s \n",
str_pad($segment->name(), 44),
str_pad($segment->subSegmentKey(), 3),
json_encode($segment->rawValues())
);
$first = $segments[array_key_first($segments)];
print sprintf("> %s:\n", $first->name());

foreach ($segments as $segment) {
print sprintf(
" %s |> %s \n",
str_pad($segment->subSegmentKey(), 3),
json_encode($segment->rawValues())
);
}
}
2 changes: 1 addition & 1 deletion src/Segments/CNTControl.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public function subSegmentKey(): string
throw new MissingSubSegmentKey('[1][0]', $this->rawValues);
}

return (string)$this->rawValues[1][0];
return (string) $this->rawValues[1][0];
}

public function rawValues(): array
Expand Down
6 changes: 5 additions & 1 deletion src/TransactionMessage.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,11 @@ public static function groupSegmentsByMessage(SegmentInterface...$segments): arr

$messages[] = self::groupSegmentsByName(...$groupedSegments);

return $messages;
return array_values(
array_filter($messages, function (self $m) {
return !empty($m->segmentByName(UNHMessageHeader::class));
})
);
}

/** @param array<string, array<string,SegmentInterface>> $groupedSegments */
Expand Down
1 change: 0 additions & 1 deletion tests/Unit/Segments/DTMDateTimePeriodTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
namespace EdifactParser\Tests\Unit\Segments;

use EdifactParser\Exception\MissingSubSegmentKey;
use EdifactParser\Segments\CNTControl;
use EdifactParser\Segments\DTMDateTimePeriod;
use PHPUnit\Framework\TestCase;

Expand Down

0 comments on commit dae3356

Please sign in to comment.