1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
<?php
/**
* Part of php-sqllint
*
* PHP version 5
*
* @category Tools
* @package PHP-SQLlint
* @author Christian Weiske <cweiske@cweiske.de>
* @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3
* @link http://cweiske.de/php-sqllint.htm
*/
namespace phpsqllint;
/**
* Textual output, easily readable by humans.
*
* @category Tools
* @package PHP-SQLlint
* @author Christian Weiske <cweiske@cweiske.de>
* @license http://www.gnu.org/licenses/agpl.html GNU AGPL v3
* @link http://www.emacswiki.org/emacs/CreatingYourOwnCompileErrorRegexp
*/
class Renderer_Text implements Renderer
{
protected $fileshown = false;
protected $filename = null;
/**
* Begin syntax check output rendering
*
* @param string $filename Path to the SQL file
*
* @return void
*/
public function startRendering($filename)
{
$this->filename = $filename;
$this->fileshown = false;
}
protected function showFile()
{
if ($this->fileshown) {
return;
}
echo "Checking SQL syntax of " . $this->filename . "\n";
$this->fileshown = true;
}
/**
* Show the error to the user.
*
* @param string $msg Error message
* @param string $token Character which caused the error
* @param integer $line Line at which the error occured
* @param integer $col Column at which the error occured
*
* @return void
*/
public function displayError($msg, $token, $line, $col)
{
$this->showFile();
echo ' Line ' . $line
. ', col ' . $col
. ' at "' . $this->niceToken($token) . '":'
. ' ' . $msg
. "\n";
}
/**
* Finish syntax check output rendering; no syntax errors found
*
* @return void
*/
public function finishOk()
{
if ($this->fileshown) {
echo " OK\n";
}
}
/**
* Convert the token string to a readable one, especially special
* characters like newline and tabs
*
* @param string $str String with possibly special characters
*
* @return string Escaped string
*/
protected function niceToken($str)
{
return str_replace(
["\n", "\r", "\t"],
['\n', '\r', '\t'],
$str
);
}
}
?>
|