123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- <?php
- class Twig_Token
- {
- protected $value;
- protected $type;
- protected $lineno;
- const EOF_TYPE = -1;
- const TEXT_TYPE = 0;
- const BLOCK_START_TYPE = 1;
- const VAR_START_TYPE = 2;
- const BLOCK_END_TYPE = 3;
- const VAR_END_TYPE = 4;
- const NAME_TYPE = 5;
- const NUMBER_TYPE = 6;
- const STRING_TYPE = 7;
- const OPERATOR_TYPE = 8;
- const PUNCTUATION_TYPE = 9;
- const INTERPOLATION_START_TYPE = 10;
- const INTERPOLATION_END_TYPE = 11;
-
- public function __construct($type, $value, $lineno)
- {
- $this->type = $type;
- $this->value = $value;
- $this->lineno = $lineno;
- }
-
- public function __toString()
- {
- return sprintf('%s(%s)', self::typeToString($this->type, true), $this->value);
- }
-
- public function test($type, $values = null)
- {
- if (null === $values && !is_int($type)) {
- $values = $type;
- $type = self::NAME_TYPE;
- }
- return ($this->type === $type) && (
- null === $values ||
- (is_array($values) && in_array($this->value, $values)) ||
- $this->value == $values
- );
- }
-
- public function getLine()
- {
- return $this->lineno;
- }
-
- public function getType()
- {
- return $this->type;
- }
-
- public function getValue()
- {
- return $this->value;
- }
-
- public static function typeToString($type, $short = false)
- {
- switch ($type) {
- case self::EOF_TYPE:
- $name = 'EOF_TYPE';
- break;
- case self::TEXT_TYPE:
- $name = 'TEXT_TYPE';
- break;
- case self::BLOCK_START_TYPE:
- $name = 'BLOCK_START_TYPE';
- break;
- case self::VAR_START_TYPE:
- $name = 'VAR_START_TYPE';
- break;
- case self::BLOCK_END_TYPE:
- $name = 'BLOCK_END_TYPE';
- break;
- case self::VAR_END_TYPE:
- $name = 'VAR_END_TYPE';
- break;
- case self::NAME_TYPE:
- $name = 'NAME_TYPE';
- break;
- case self::NUMBER_TYPE:
- $name = 'NUMBER_TYPE';
- break;
- case self::STRING_TYPE:
- $name = 'STRING_TYPE';
- break;
- case self::OPERATOR_TYPE:
- $name = 'OPERATOR_TYPE';
- break;
- case self::PUNCTUATION_TYPE:
- $name = 'PUNCTUATION_TYPE';
- break;
- case self::INTERPOLATION_START_TYPE:
- $name = 'INTERPOLATION_START_TYPE';
- break;
- case self::INTERPOLATION_END_TYPE:
- $name = 'INTERPOLATION_END_TYPE';
- break;
- default:
- throw new LogicException(sprintf('Token of type "%s" does not exist.', $type));
- }
- return $short ? $name : 'Twig_Token::'.$name;
- }
-
- public static function typeToEnglish($type)
- {
- switch ($type) {
- case self::EOF_TYPE:
- return 'end of template';
- case self::TEXT_TYPE:
- return 'text';
- case self::BLOCK_START_TYPE:
- return 'begin of statement block';
- case self::VAR_START_TYPE:
- return 'begin of print statement';
- case self::BLOCK_END_TYPE:
- return 'end of statement block';
- case self::VAR_END_TYPE:
- return 'end of print statement';
- case self::NAME_TYPE:
- return 'name';
- case self::NUMBER_TYPE:
- return 'number';
- case self::STRING_TYPE:
- return 'string';
- case self::OPERATOR_TYPE:
- return 'operator';
- case self::PUNCTUATION_TYPE:
- return 'punctuation';
- case self::INTERPOLATION_START_TYPE:
- return 'begin of string interpolation';
- case self::INTERPOLATION_END_TYPE:
- return 'end of string interpolation';
- default:
- throw new LogicException(sprintf('Token of type "%s" does not exist.', $type));
- }
- }
- }
|