<?php
namespace ZBateson\MailMimeParser\Header\Part;
use Psr\Log\LoggerInterface;
use Psr\Log\LogLevel;
use ZBateson\MailMimeParser\ErrorBag;
use ZBateson\MbWrapper\MbWrapper;
class NameValuePart extends ContainerPart
{
protected string $name;
public function __construct(
LoggerInterface $logger,
MbWrapper $charsetConverter,
array $nameParts,
array $valueParts
) {
ErrorBag::__construct($logger);
$this->charsetConverter = $charsetConverter;
$this->name = (!empty($nameParts)) ? $this->getNameFromParts($nameParts) : '';
parent::__construct($logger, $charsetConverter, $valueParts);
\array_unshift($this->children, ...$nameParts);
}
protected function getNameFromParts(array $parts) : string
{
return \array_reduce($this->filterIgnoredSpaces($parts), fn ($c, $p) => $c . $p->getValue(), '');
}
public function getName() : string
{
return $this->name;
}
protected function validate() : void
{
if ($this->value === '') {
$this->addError('NameValuePart value is empty', LogLevel::NOTICE);
}
}
}