67 lines
1.9 KiB
PHP
67 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* This file is part of the ZBateson\MailMimeParser project.
|
|
*
|
|
* @license http://opensource.org/licenses/bsd-license.php BSD
|
|
*/
|
|
|
|
namespace ZBateson\MailMimeParser\Header\Part;
|
|
|
|
use Psr\Log\LoggerInterface;
|
|
use ZBateson\MbWrapper\MbWrapper;
|
|
|
|
/**
|
|
* Holds a string value token that will require additional processing by a
|
|
* consumer prior to returning to a client.
|
|
*
|
|
* A Token is meant to hold a value for further processing -- for instance when
|
|
* consuming an address list header (like From or To) -- before it's known what
|
|
* type of IHeaderPart it is (could be an email address, could be a name, or
|
|
* could be a group.)
|
|
*
|
|
* @author Zaahid Bateson
|
|
*/
|
|
class Token extends HeaderPart
|
|
{
|
|
/**
|
|
* @var string the raw value of the part.
|
|
*/
|
|
protected string $rawValue;
|
|
|
|
public function __construct(
|
|
LoggerInterface $logger,
|
|
MbWrapper $charsetConverter,
|
|
string $value,
|
|
bool $isLiteral = false,
|
|
bool $preserveSpaces = false
|
|
) {
|
|
parent::__construct($logger, $charsetConverter, $value);
|
|
$this->rawValue = $value;
|
|
if (!$isLiteral) {
|
|
$this->value = \preg_replace(['/(\r|\n)+(\s)/', '/(\r|\n)+/'], ['$2', ' '], $value);
|
|
if (!$preserveSpaces) {
|
|
$this->value = \preg_replace('/^\s+$/m', ' ', $this->value);
|
|
}
|
|
}
|
|
$this->isSpace = ($this->value === '' || (!$isLiteral && \preg_match('/^\s*$/m', $this->value) === 1));
|
|
$this->canIgnoreSpacesBefore = $this->canIgnoreSpacesAfter = $this->isSpace;
|
|
}
|
|
|
|
/**
|
|
* Returns the part's representative value after any necessary processing
|
|
* has been performed. For the raw value, call getRawValue().
|
|
*/
|
|
public function getValue() : string
|
|
{
|
|
return $this->convertEncoding($this->value);
|
|
}
|
|
|
|
/**
|
|
* Returns the part's raw value.
|
|
*/
|
|
public function getRawValue() : string
|
|
{
|
|
return $this->rawValue;
|
|
}
|
|
}
|