12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- <?php namespace Sieve;
- include_once('SieveDumpable.php');
- class SieveToken implements SieveDumpable
- {
- const Unknown = 0x0000;
- const ScriptEnd = 0x0001;
- const LeftBracket = 0x0002;
- const RightBracket = 0x0004;
- const BlockStart = 0x0008;
- const BlockEnd = 0x0010;
- const LeftParenthesis = 0x0020;
- const RightParenthesis = 0x0040;
- const Comma = 0x0080;
- const Semicolon = 0x0100;
- const Whitespace = 0x0200;
- const Tag = 0x0400;
- const QuotedString = 0x0800;
- const Number = 0x1000;
- const Comment = 0x2000;
- const MultilineString = 0x4000;
- const Identifier = 0x8000;
- const String = 0x4800; // Quoted | Multiline
- const StringList = 0x4802; // Quoted | Multiline | LeftBracket
- const StringListSep = 0x0084; // Comma | RightBracket
- const Unparsed = 0x2200; // Comment | Whitespace
- const TestList = 0x8020; // Identifier | LeftParenthesis
- public $type;
- public $text;
- public $line;
- public function __construct($type, $text, $line)
- {
- $this->text = $text;
- $this->type = $type;
- $this->line = intval($line);
- }
- public function dump()
- {
- return '<'. SieveToken::escape($this->text) .'> type:'. SieveToken::typeString($this->type) .' line:'. $this->line;
- }
- public function text()
- {
- return $this->text;
- }
- public function is($type)
- {
- return (bool)($this->type & $type);
- }
- public static function typeString($type)
- {
- switch ($type)
- {
- case SieveToken::Identifier: return 'identifier';
- case SieveToken::Whitespace: return 'whitespace';
- case SieveToken::QuotedString: return 'quoted string';
- case SieveToken::Tag: return 'tag';
- case SieveToken::Semicolon: return 'semicolon';
- case SieveToken::LeftBracket: return 'left bracket';
- case SieveToken::RightBracket: return 'right bracket';
- case SieveToken::BlockStart: return 'block start';
- case SieveToken::BlockEnd: return 'block end';
- case SieveToken::LeftParenthesis: return 'left parenthesis';
- case SieveToken::RightParenthesis: return 'right parenthesis';
- case SieveToken::Comma: return 'comma';
- case SieveToken::Number: return 'number';
- case SieveToken::Comment: return 'comment';
- case SieveToken::MultilineString: return 'multiline string';
- case SieveToken::ScriptEnd: return 'script end';
- case SieveToken::String: return 'string';
- case SieveToken::StringList: return 'string list';
- default: return 'unknown token';
- }
- }
- protected static $tr_ = array("\r" => '\r', "\n" => '\n', "\t" => '\t');
- public static function escape($val)
- {
- return strtr($val, self::$tr_);
- }
- }
|