| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 | 
							- <?php
 - 
 - /*
 -  * This file is part of Twig.
 -  *
 -  * (c) 2009 Fabien Potencier
 -  * (c) 2009 Armin Ronacher
 -  *
 -  * For the full copyright and license information, please view the LICENSE
 -  * file that was distributed with this source code.
 -  */
 - 
 - /**
 -  * Represents a token stream.
 -  *
 -  * @package twig
 -  * @author  Fabien Potencier <fabien@symfony.com>
 -  */
 - class Twig_TokenStream
 - {
 -     protected $tokens;
 -     protected $current;
 -     protected $filename;
 - 
 -     /**
 -      * Constructor.
 -      *
 -      * @param array  $tokens   An array of tokens
 -      * @param string $filename The name of the filename which tokens are associated with
 -      */
 -     public function __construct(array $tokens, $filename = null)
 -     {
 -         $this->tokens     = $tokens;
 -         $this->current    = 0;
 -         $this->filename   = $filename;
 -     }
 - 
 -     /**
 -      * Returns a string representation of the token stream.
 -      *
 -      * @return string
 -      */
 -     public function __toString()
 -     {
 -         return implode("\n", $this->tokens);
 -     }
 - 
 -     /**
 -      * Sets the pointer to the next token and returns the old one.
 -      *
 -      * @return Twig_Token
 -      */
 -     public function next()
 -     {
 -         if (!isset($this->tokens[++$this->current])) {
 -             throw new Twig_Error_Syntax('Unexpected end of template', -1, $this->filename);
 -         }
 - 
 -         return $this->tokens[$this->current - 1];
 -     }
 - 
 -     /**
 -      * Tests a token and returns it or throws a syntax error.
 -      *
 -      * @return Twig_Token
 -      */
 -     public function expect($type, $value = null, $message = null)
 -     {
 -         $token = $this->tokens[$this->current];
 -         if (!$token->test($type, $value)) {
 -             $line = $token->getLine();
 -             throw new Twig_Error_Syntax(sprintf('%sUnexpected token "%s" of value "%s" ("%s" expected%s)',
 -                 $message ? $message.'. ' : '',
 -                 Twig_Token::typeToEnglish($token->getType(), $line), $token->getValue(),
 -                 Twig_Token::typeToEnglish($type, $line), $value ? sprintf(' with value "%s"', $value) : ''),
 -                 $line,
 -                 $this->filename
 -             );
 -         }
 -         $this->next();
 - 
 -         return $token;
 -     }
 - 
 -     /**
 -      * Looks at the next token.
 -      *
 -      * @param integer $number
 -      *
 -      * @return Twig_Token
 -      */
 -     public function look($number = 1)
 -     {
 -         if (!isset($this->tokens[$this->current + $number])) {
 -             throw new Twig_Error_Syntax('Unexpected end of template', -1, $this->filename);
 -         }
 - 
 -         return $this->tokens[$this->current + $number];
 -     }
 - 
 -     /**
 -      * Tests the current token
 -      *
 -      * @return bool
 -      */
 -     public function test($primary, $secondary = null)
 -     {
 -         return $this->tokens[$this->current]->test($primary, $secondary);
 -     }
 - 
 -     /**
 -      * Checks if end of stream was reached
 -      *
 -      * @return bool
 -      */
 -     public function isEOF()
 -     {
 -         return $this->tokens[$this->current]->getType() === Twig_Token::EOF_TYPE;
 -     }
 - 
 -     /**
 -      * Gets the current token
 -      *
 -      * @return Twig_Token
 -      */
 -     public function getCurrent()
 -     {
 -         return $this->tokens[$this->current];
 -     }
 - 
 -     /**
 -      * Gets the filename associated with this stream
 -      *
 -      * @return string
 -      */
 -     public function getFilename()
 -     {
 -         return $this->filename;
 -     }
 - }
 
 
  |