Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
namespace JmesPath;
3
 
4
/**
5
 * Syntax errors raise this exception that gives context
6
 */
7
class SyntaxErrorException extends \InvalidArgumentException
8
{
9
    /**
10
     * @param string $expectedTypesOrMessage Expected array of tokens or message
11
     * @param array  $token                  Current token
12
     * @param string $expression             Expression input
13
     */
14
    public function __construct(
15
        $expectedTypesOrMessage,
16
        array $token,
17
        $expression
18
    ) {
19
        $message = "Syntax error at character {$token['pos']}\n"
20
            . $expression . "\n" . str_repeat(' ', max($token['pos'], 0)) . "^\n";
21
        $message .= !is_array($expectedTypesOrMessage)
22
            ? $expectedTypesOrMessage
23
            : $this->createTokenMessage($token, $expectedTypesOrMessage);
24
        parent::__construct($message);
25
    }
26
 
27
    private function createTokenMessage(array $token, array $valid)
28
    {
29
        return sprintf(
30
            'Expected one of the following: %s; found %s "%s"',
31
            implode(', ', array_keys($valid)),
32
            $token['type'],
33
            $token['value']
34
        );
35
    }
36
}