git subrepo clone https://github.com/mailcow/mailcow-dockerized.git mailcow/src/mailcow-dockerized
subrepo: subdir: "mailcow/src/mailcow-dockerized"
merged: "a832becb"
upstream: origin: "https://github.com/mailcow/mailcow-dockerized.git"
branch: "master"
commit: "a832becb"
git-subrepo: version: "0.4.3"
origin: "???"
commit: "???"
Change-Id: If5be2d621a211e164c9b6577adaa7884449f16b5
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/sieve/SieveToken.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/sieve/SieveToken.php
new file mode 100644
index 0000000..459f45b
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/sieve/SieveToken.php
@@ -0,0 +1,88 @@
+<?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_);
+ }
+}