Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
66.67% |
2 / 3 |
CRAP | |
92.86% |
13 / 14 |
AgnosticFormatter | |
0.00% |
0 / 1 |
|
66.67% |
2 / 3 |
5.01 | |
92.86% |
13 / 14 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
4 / 4 |
|||
format | |
0.00% |
0 / 1 |
2.06 | |
75.00% |
3 / 4 |
|||
formatDateRepresentation | |
100.00% |
1 / 1 |
2 | |
100.00% |
6 / 6 |
<?php | |
namespace Popy\Calendar\Formatter; | |
use DateTimeInterface; | |
use Popy\Calendar\FormatterInterface; | |
use Popy\Calendar\ConverterInterface; | |
use Popy\Calendar\Parser\FormatLexerInterface; | |
use Popy\Calendar\ValueObject\DateRepresentationInterface; | |
use Popy\Calendar\ValueObject\DateRepresentation\Date; | |
/** | |
* Agnostic formatter implementation. | |
*/ | |
class AgnosticFormatter implements FormatterInterface | |
{ | |
/** | |
* Format lexer | |
* | |
* @var FormatLexerInterface | |
*/ | |
protected $lexer; | |
/** | |
* Date converter. | |
* | |
* @var ConverterInterface | |
*/ | |
protected $converter; | |
/** | |
* Symbol Formatter | |
* | |
* @var SymbolFormatterInterface | |
*/ | |
protected $formatter; | |
/** | |
* Class constructor. | |
* | |
* @param FormatLexerInterface $lexer Format lexer. | |
* @param ConverterInterface $converter Date converter. | |
* @param SymbolFormatterInterface $formatter Symbol formatter. | |
*/ | |
public function __construct(FormatLexerInterface $lexer, ConverterInterface $converter, SymbolFormatterInterface $formatter) | |
{ | |
$this->lexer = $lexer; | |
$this->converter = $converter; | |
$this->formatter = $formatter; | |
} | |
/** | |
* @inheritDoc | |
*/ | |
public function format(DateTimeInterface $input, $format) | |
{ | |
$date = Date::buildFromDateTimeInterface($input); | |
if (null === $date = $this->converter->to($date)) { | |
return; | |
} | |
return $this->formatDateRepresentation($date, $format); | |
} | |
/** | |
* @inheritDoc | |
*/ | |
public function formatDateRepresentation(DateRepresentationInterface $input, $format) | |
{ | |
$res = ''; | |
$tokens = $this->lexer->tokenizeFormat($format); | |
foreach ($tokens as $token) { | |
$res .= $this->formatter->formatSymbol($input, $token, $this); | |
} | |
return $res; | |
} | |
} |