<?php namespace MailPoetVendor\Twig; if (!defined('ABSPATH')) exit; final class Token { private $value; private $type; private $lineno; public const EOF_TYPE = -1; public const TEXT_TYPE = 0; public const BLOCK_START_TYPE = 1; public const VAR_START_TYPE = 2; public const BLOCK_END_TYPE = 3; public const VAR_END_TYPE = 4; public const NAME_TYPE = 5; public const NUMBER_TYPE = 6; public const STRING_TYPE = 7; public const OPERATOR_TYPE = 8; public const PUNCTUATION_TYPE = 9; public const INTERPOLATION_START_TYPE = 10; public const INTERPOLATION_END_TYPE = 11; public const ARROW_TYPE = 12; public function __construct(int $type, $value, int $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) : bool { 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() : int { return $this->lineno; } public function getType() : int { return $this->type; } public function getValue() { return $this->value; } public static function typeToString(int $type, bool $short = \false) : string { 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; case self::ARROW_TYPE: $name = 'ARROW_TYPE'; break; default: throw new \LogicException(\sprintf('Token of type "%s" does not exist.', $type)); } return $short ? $name : 'MailPoetVendor\\Twig\\Token::' . $name; } public static function typeToEnglish(int $type) : string { 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'; case self::ARROW_TYPE: return 'arrow function'; default: throw new \LogicException(\sprintf('Token of type "%s" does not exist.', $type)); } } }