Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
16 / 16
MbString
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
16 / 16
 tokenizeFormat
100.00% covered (success)
100.00%
1 / 1
4
100.00% covered (success)
100.00%
16 / 16
<?php
namespace Popy\Calendar\Parser\FormatLexer;
use Popy\Calendar\Parser\FormatToken;
use Popy\Calendar\Parser\FormatLexerInterface;
/**
 * mb_string based implementation.
 */
class MbString implements FormatLexerInterface
{
    /**
     * @inheritDoc
     */
    public function tokenizeFormat($format)
    {
        $res = [];
        $escaped = false;
        $length = mb_strlen($format);
        for ($i=0; $i < $length; $i++) {
            $symbol = mb_substr($format, $i, 1);
            if ($escaped) {
                $escaped = false;
                $res[] = new FormatToken($symbol, FormatToken::TYPE_LITTERAL);
                continue;
            }
            if ($symbol === '\\') {
                $escaped = true;
                continue;
            }
            $res[] = new FormatToken($symbol, FormatToken::TYPE_SYMBOL);
        }
        $res[] = new FormatToken(null, FormatToken::TYPE_EOF);
        return $res;
    }
}