1: | <?php
|
2: |
|
3: | |
4: | |
5: | |
6: | |
7: | |
8: | |
9: | |
10: |
|
11: |
|
12: | namespace Symfony\Component\Yaml\Exception;
|
13: |
|
14: | |
15: | |
16: | |
17: | |
18: |
|
19: | class ParseException extends RuntimeException
|
20: | {
|
21: | private $parsedFile;
|
22: | private $parsedLine;
|
23: | private $snippet;
|
24: | private $rawMessage;
|
25: |
|
26: | |
27: | |
28: | |
29: | |
30: | |
31: | |
32: |
|
33: | public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, \Exception $previous = null)
|
34: | {
|
35: | $this->parsedFile = $parsedFile;
|
36: | $this->parsedLine = $parsedLine;
|
37: | $this->snippet = $snippet;
|
38: | $this->rawMessage = $message;
|
39: |
|
40: | $this->updateRepr();
|
41: |
|
42: | parent::__construct($this->message, 0, $previous);
|
43: | }
|
44: |
|
45: | |
46: | |
47: | |
48: | |
49: |
|
50: | public function getSnippet()
|
51: | {
|
52: | return $this->snippet;
|
53: | }
|
54: |
|
55: | |
56: | |
57: | |
58: | |
59: |
|
60: | public function setSnippet($snippet)
|
61: | {
|
62: | $this->snippet = $snippet;
|
63: |
|
64: | $this->updateRepr();
|
65: | }
|
66: |
|
67: | |
68: | |
69: | |
70: | |
71: | |
72: | |
73: |
|
74: | public function getParsedFile()
|
75: | {
|
76: | return $this->parsedFile;
|
77: | }
|
78: |
|
79: | |
80: | |
81: | |
82: | |
83: |
|
84: | public function setParsedFile($parsedFile)
|
85: | {
|
86: | $this->parsedFile = $parsedFile;
|
87: |
|
88: | $this->updateRepr();
|
89: | }
|
90: |
|
91: | |
92: | |
93: | |
94: | |
95: |
|
96: | public function getParsedLine()
|
97: | {
|
98: | return $this->parsedLine;
|
99: | }
|
100: |
|
101: | |
102: | |
103: | |
104: | |
105: |
|
106: | public function setParsedLine($parsedLine)
|
107: | {
|
108: | $this->parsedLine = $parsedLine;
|
109: |
|
110: | $this->updateRepr();
|
111: | }
|
112: |
|
113: | private function updateRepr()
|
114: | {
|
115: | $this->message = $this->rawMessage;
|
116: |
|
117: | $dot = false;
|
118: | if ('.' === substr($this->message, -1)) {
|
119: | $this->message = substr($this->message, 0, -1);
|
120: | $dot = true;
|
121: | }
|
122: |
|
123: | if (null !== $this->parsedFile) {
|
124: | if (\PHP_VERSION_ID >= 50400) {
|
125: | $jsonOptions = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
|
126: | } else {
|
127: | $jsonOptions = 0;
|
128: | }
|
129: | $this->message .= sprintf(' in %s', json_encode($this->parsedFile, $jsonOptions));
|
130: | }
|
131: |
|
132: | if ($this->parsedLine >= 0) {
|
133: | $this->message .= sprintf(' at line %d', $this->parsedLine);
|
134: | }
|
135: |
|
136: | if ($this->snippet) {
|
137: | $this->message .= sprintf(' (near "%s")', $this->snippet);
|
138: | }
|
139: |
|
140: | if ($dot) {
|
141: | $this->message .= '.';
|
142: | }
|
143: | }
|
144: | }
|
145: | |