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:
<?php
namespace Net\Bazzline\Component\ApacheServerStatusParser\Service\Content\Parser;
use InvalidArgumentException;
use Net\Bazzline\Component\ApacheServerStatusParser\DomainModel\Scoreboard;
class ScoreboardListOfLineParser implements ListOfLineParserInterface
{
public function parse(array $listOfLine)
{
$listOfLineHasMinimalSize = (count($listOfLine) > 12);
if ($listOfLineHasMinimalSize) {
$collectListOfLegend = false;
$listOMandatoryProperties = [
'list_of_legend' => [],
'line_of_process' => ''
];
foreach ($listOfLine as $line) {
if ($collectListOfLegend) {
$listOMandatoryProperties['list_of_legend'][] = $line;
} else {
if ($line === 'Scoreboard Key:') {
$collectListOfLegend = true;
} else {
$listOMandatoryProperties['line_of_process'] .= $line;
}
}
}
foreach ($listOMandatoryProperties as $name => $mandatoryProperty) {
if (empty($mandatoryProperty)) {
throw new InvalidArgumentException(
'could not find mandatory property "' . $name . '"'
);
}
}
$scoreboard = new Scoreboard(
$listOMandatoryProperties['line_of_process'],
$listOMandatoryProperties['list_of_legend']
);
} else {
throw new InvalidArgumentException(
self::class . ' can not parse given list of line "'
. implode(',', $listOfLine) . '"'
);
}
return $scoreboard;
}
}