comparison vendor/symfony/yaml/Exception/ParseException.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
comparison
equal deleted inserted replaced
-1:000000000000 0:4c8ae668cc8c
1 <?php
2
3 /*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12 namespace Symfony\Component\Yaml\Exception;
13
14 /**
15 * Exception class thrown when an error occurs during parsing.
16 *
17 * @author Fabien Potencier <fabien@symfony.com>
18 */
19 class ParseException extends RuntimeException
20 {
21 private $parsedFile;
22 private $parsedLine;
23 private $snippet;
24 private $rawMessage;
25
26 /**
27 * Constructor.
28 *
29 * @param string $message The error message
30 * @param int $parsedLine The line where the error occurred
31 * @param string|null $snippet The snippet of code near the problem
32 * @param string|null $parsedFile The file name where the error occurred
33 * @param \Exception|null $previous The previous exception
34 */
35 public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, \Exception $previous = null)
36 {
37 $this->parsedFile = $parsedFile;
38 $this->parsedLine = $parsedLine;
39 $this->snippet = $snippet;
40 $this->rawMessage = $message;
41
42 $this->updateRepr();
43
44 parent::__construct($this->message, 0, $previous);
45 }
46
47 /**
48 * Gets the snippet of code near the error.
49 *
50 * @return string The snippet of code
51 */
52 public function getSnippet()
53 {
54 return $this->snippet;
55 }
56
57 /**
58 * Sets the snippet of code near the error.
59 *
60 * @param string $snippet The code snippet
61 */
62 public function setSnippet($snippet)
63 {
64 $this->snippet = $snippet;
65
66 $this->updateRepr();
67 }
68
69 /**
70 * Gets the filename where the error occurred.
71 *
72 * This method returns null if a string is parsed.
73 *
74 * @return string The filename
75 */
76 public function getParsedFile()
77 {
78 return $this->parsedFile;
79 }
80
81 /**
82 * Sets the filename where the error occurred.
83 *
84 * @param string $parsedFile The filename
85 */
86 public function setParsedFile($parsedFile)
87 {
88 $this->parsedFile = $parsedFile;
89
90 $this->updateRepr();
91 }
92
93 /**
94 * Gets the line where the error occurred.
95 *
96 * @return int The file line
97 */
98 public function getParsedLine()
99 {
100 return $this->parsedLine;
101 }
102
103 /**
104 * Sets the line where the error occurred.
105 *
106 * @param int $parsedLine The file line
107 */
108 public function setParsedLine($parsedLine)
109 {
110 $this->parsedLine = $parsedLine;
111
112 $this->updateRepr();
113 }
114
115 private function updateRepr()
116 {
117 $this->message = $this->rawMessage;
118
119 $dot = false;
120 if ('.' === substr($this->message, -1)) {
121 $this->message = substr($this->message, 0, -1);
122 $dot = true;
123 }
124
125 if (null !== $this->parsedFile) {
126 $this->message .= sprintf(' in %s', json_encode($this->parsedFile, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
127 }
128
129 if ($this->parsedLine >= 0) {
130 $this->message .= sprintf(' at line %d', $this->parsedLine);
131 }
132
133 if ($this->snippet) {
134 $this->message .= sprintf(' (near "%s")', $this->snippet);
135 }
136
137 if ($dot) {
138 $this->message .= '.';
139 }
140 }
141 }