Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 10
Alternatives
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
20
0.00% covered (danger)
0.00%
0 / 10
 addLexer
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 3
 tokenizeDate
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 7
<?php
namespace Popy\Calendar\Parser\DateLexer;
use Popy\Calendar\Parser\DateLexerResult;
use Popy\Calendar\Parser\DateLexerInterface;
/**
 * Alternatives implementation : if any internal lexer matches, its result will
 * be returned.
 */
class Alternatives implements DateLexerInterface
{
    /**
     * Lexer list.
     *
     * @var array
     */
    protected $lexers = [];
    /**
     * Add a lexer.
     *
     * @param DateLexerInterface $lexer
     */
    public function addLexer(DateLexerInterface $lexer)
    {
        $this->lexers[] = $lexer;
    }
    /**
     * @inheritDoc
     */
    public function tokenizeDate($string, $offset = 0)
    {
        foreach ($this->lexers as $lexer) {
            if (null !== $res = $lexer->tokenizeDate($string, $offset)) {
                // A lexer failed to match : exit.
                return $res;
            }
        }
    }
}