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;
|
|
}
|
|
|
|
}
|