summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Liebler <liebler.dominik@googlemail.com>2014-01-22 10:44:21 +0100
committerDominik Liebler <liebler.dominik@googlemail.com>2014-01-22 10:44:21 +0100
commitdbeecfdfbbe03c84d73e6f48aafc30a031470279 (patch)
treeeb6e36fa8790b079493a8719482c447dcf4687c3
parent5e3938b7125cd677d8e4e0a4ac2630524bb43df1 (diff)
downloadsql-formatter-dbeecfdfbbe03c84d73e6f48aafc30a031470279.zip
sql-formatter-dbeecfdfbbe03c84d73e6f48aafc30a031470279.tar.gz
sql-formatter-dbeecfdfbbe03c84d73e6f48aafc30a031470279.tar.bz2
cleaner solution to highlight binary data
and added new test highlightBinaryData to test for this case
-rw-r--r--lib/SqlFormatter.php6
-rw-r--r--tests/SqlFormatterTest.php15
2 files changed, 20 insertions, 1 deletions
diff --git a/lib/SqlFormatter.php b/lib/SqlFormatter.php
index 99f0d56..f6556c9 100644
--- a/lib/SqlFormatter.php
+++ b/lib/SqlFormatter.php
@@ -864,7 +864,11 @@ class SqlFormatter
if (self::is_cli()) {
$token = $token[self::TOKEN_VALUE];
} else {
- $token = @htmlentities($token[self::TOKEN_VALUE],ENT_COMPAT,'UTF-8');
+ if (defined('ENT_IGNORE')) {
+ $token = htmlentities($token[self::TOKEN_VALUE],ENT_COMPAT | ENT_IGNORE ,'UTF-8');
+ } else {
+ $token = htmlentities($token[self::TOKEN_VALUE],ENT_COMPAT,'UTF-8');
+ }
}
if ($type===self::TOKEN_TYPE_BOUNDARY) {
diff --git a/tests/SqlFormatterTest.php b/tests/SqlFormatterTest.php
index ca535cf..a7951e8 100644
--- a/tests/SqlFormatterTest.php
+++ b/tests/SqlFormatterTest.php
@@ -25,6 +25,21 @@ class SqlFormatterTest extends PHPUnit_Framework_TestCase {
function testHighlight($sql, $html) {
$this->assertEquals(trim($html), trim(SqlFormatter::highlight($sql)));
}
+
+ function testHighlightBinary() {
+ $sql = 'SELECT "' . pack('H*', "ed180e98a47a45b3bdd304b798bc5797") . '" AS BINARY';
+
+ if (defined('ENT_IGNORE')) {
+ // this is what gets written as string
+ $binaryData = '&quot;' . pack('H*', "180e7a450457") . '&quot;';
+ } else {
+ $binaryData = '';
+ }
+
+ $html = '<pre style="color: black; background-color: white;"><span style="font-weight:bold;">SELECT</span> <span style="color: blue;">' . $binaryData . '</span> <span style="font-weight:bold;">AS</span> <span style="color: #333;">BINARY</span></pre>';
+
+ $this->assertEquals(trim($html), trim(SqlFormatter::highlight($sql)));
+ }
/**
* @dataProvider highlightCliData
*/