diff options
author | Andrei Karas <akaras@inbox.ru> | 2019-11-18 12:11:56 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2019-11-18 22:53:48 +0300 |
commit | 05ea79929aa099d25b543f4a86db721f5f7e700e (patch) | |
tree | ea79ae74ce0aef63f5503a5c4f4258e622be354a /tools/php-sqllint/src/phpsqllint/Renderer | |
parent | 61e6b22b12cb66bd3bb6bc1268228ea7d5e2519b (diff) | |
download | hercules-05ea79929aa099d25b543f4a86db721f5f7e700e.tar.gz hercules-05ea79929aa099d25b543f4a86db721f5f7e700e.tar.bz2 hercules-05ea79929aa099d25b543f4a86db721f5f7e700e.tar.xz hercules-05ea79929aa099d25b543f4a86db721f5f7e700e.zip |
Add phpsqllint for check sql queries
Diffstat (limited to 'tools/php-sqllint/src/phpsqllint/Renderer')
-rw-r--r-- | tools/php-sqllint/src/phpsqllint/Renderer/Emacs.php | 70 | ||||
-rw-r--r-- | tools/php-sqllint/src/phpsqllint/Renderer/Text.php | 102 |
2 files changed, 172 insertions, 0 deletions
diff --git a/tools/php-sqllint/src/phpsqllint/Renderer/Emacs.php b/tools/php-sqllint/src/phpsqllint/Renderer/Emacs.php new file mode 100644 index 000000000..3a667c7f6 --- /dev/null +++ b/tools/php-sqllint/src/phpsqllint/Renderer/Emacs.php @@ -0,0 +1,70 @@ +<?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; + +/** + * Output for emacs' compilation mode + * + * @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_Emacs implements Renderer +{ + protected $filename; + + /** + * Begin syntax check output rendering + * + * @param string $filename Path to the SQL file + * + * @return void + */ + public function startRendering($filename) + { + $this->filename = $filename; + } + + /** + * Output errors in GNU style; see emacs compilation.txt + * + * @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) + { + echo $this->filename + . ':' . $line + . '.' . $col + . ':Error:' + . ' '. $msg + . "\n"; + } + + /** + * Finish syntax check output rendering; no syntax errors found + * + * @return void + */ + public function finishOk() + { + //do nothing + } +} +?> diff --git a/tools/php-sqllint/src/phpsqllint/Renderer/Text.php b/tools/php-sqllint/src/phpsqllint/Renderer/Text.php new file mode 100644 index 000000000..44e7ecbd4 --- /dev/null +++ b/tools/php-sqllint/src/phpsqllint/Renderer/Text.php @@ -0,0 +1,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 + ); + } +} +?> |