48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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;
 | |
|     }
 | |
| 
 | |
| }
 | 
