| <?php namespace Sieve; |
| |
| require_once('SieveToken.php'); |
| |
| use Exception; |
| |
| class SieveException extends Exception |
| { |
| protected $token_; |
| |
| public function __construct(SieveToken $token, $arg) |
| { |
| $message = 'undefined sieve exception'; |
| $this->token_ = $token; |
| |
| if (is_string($arg)) |
| { |
| $message = $arg; |
| } |
| else |
| { |
| if (is_array($arg)) |
| { |
| $type = SieveToken::typeString(array_shift($arg)); |
| foreach($arg as $t) |
| { |
| $type .= ' or '. SieveToken::typeString($t); |
| } |
| } |
| else |
| { |
| $type = SieveToken::typeString($arg); |
| } |
| |
| $tokenType = SieveToken::typeString($token->type); |
| $message = "$tokenType where $type expected near ". $token->text; |
| } |
| |
| parent::__construct('line '. $token->line .": $message"); |
| } |
| |
| public function getLineNo() |
| { |
| return $this->token_->line; |
| } |
| |
| } |