summaryrefslogtreecommitdiff
path: root/vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php')
-rw-r--r--vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php36
1 files changed, 36 insertions, 0 deletions
diff --git a/vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php b/vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php
new file mode 100644
index 0000000..68683d0
--- /dev/null
+++ b/vendor/mtdowling/jmespath.php/src/SyntaxErrorException.php
@@ -0,0 +1,36 @@
+<?php
+namespace JmesPath;
+
+/**
+ * Syntax errors raise this exception that gives context
+ */
+class SyntaxErrorException extends \InvalidArgumentException
+{
+ /**
+ * @param string $expectedTypesOrMessage Expected array of tokens or message
+ * @param array $token Current token
+ * @param string $expression Expression input
+ */
+ public function __construct(
+ $expectedTypesOrMessage,
+ array $token,
+ $expression
+ ) {
+ $message = "Syntax error at character {$token['pos']}\n"
+ . $expression . "\n" . str_repeat(' ', max($token['pos'], 0)) . "^\n";
+ $message .= !is_array($expectedTypesOrMessage)
+ ? $expectedTypesOrMessage
+ : $this->createTokenMessage($token, $expectedTypesOrMessage);
+ parent::__construct($message);
+ }
+
+ private function createTokenMessage(array $token, array $valid)
+ {
+ return sprintf(
+ 'Expected one of the following: %s; found %s "%s"',
+ implode(', ', array_keys($valid)),
+ $token['type'],
+ $token['value']
+ );
+ }
+}