summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Čihař <michal@cihar.com>2017-01-07 11:25:37 +0100
committerGitHub <noreply@github.com>2017-01-07 11:25:37 +0100
commit792f0184f361df75d5328017bd3eb06411c611e7 (patch)
tree37a5643bb144710b4ba7279333db60fcbf53eda6
parent6db3f3e33806a7bf2b5aa1ac69288cff8feee840 (diff)
parent6583624389bacd1ac7605726fa479b8594386207 (diff)
downloadsql-parser-792f0184f361df75d5328017bd3eb06411c611e7.zip
sql-parser-792f0184f361df75d5328017bd3eb06411c611e7.tar.gz
sql-parser-792f0184f361df75d5328017bd3eb06411c611e7.tar.bz2
Merge pull request #121 from bigfoot90/better-html
Fix indentation on html format
-rw-r--r--src/Utils/Formatter.php6
-rw-r--r--tests/Utils/CLITest.php8
-rw-r--r--tests/Utils/FormatterTest.php60
3 files changed, 42 insertions, 32 deletions
diff --git a/src/Utils/Formatter.php b/src/Utils/Formatter.php
index ec23ba9..523f1d4 100644
--- a/src/Utils/Formatter.php
+++ b/src/Utils/Formatter.php
@@ -78,6 +78,10 @@ class Formatter
$options['line_ending'] = $options['type'] === 'html' ? '<br/>' : "\n";
}
+ if (is_null($options['indentation'])) {
+ $options['indentation'] = $options['type'] === 'html' ? '&nbsp;&nbsp;&nbsp;&nbsp;' : ' ';
+ }
+
// `parts_newline` requires `clause_newline`
$options['parts_newline'] &= $options['clause_newline'];
@@ -112,7 +116,7 @@ class Formatter
*
* @var string
*/
- 'indentation' => ' ',
+ 'indentation' => null,
/*
* Whether comments should be removed or not.
diff --git a/tests/Utils/CLITest.php b/tests/Utils/CLITest.php
index 3f5796d..a97d98f 100644
--- a/tests/Utils/CLITest.php
+++ b/tests/Utils/CLITest.php
@@ -29,17 +29,17 @@ class CLITest extends TestCase
return array(
array(
array('q' => 'SELECT 1'),
- "\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n",
+ "\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n",
0,
),
array(
array('query' => 'SELECT 1'),
- "\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n",
+ "\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n",
0,
),
array(
array('q' => 'SELECT /* comment */ 1 /* other */', 'f' => 'text'),
- "SELECT\n /* comment */ 1 /* other */\n",
+ "SELECT\n /* comment */ 1 /* other */\n",
0,
),
array(
@@ -50,7 +50,7 @@ class CLITest extends TestCase
array(
array('q' => 'SELECT 1', 'f' => 'html'),
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' <span class="sql-number">1</span>' . "\n",
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>' . "\n",
0,
),
array(
diff --git a/tests/Utils/FormatterTest.php b/tests/Utils/FormatterTest.php
index 1e03d17..15e6336 100644
--- a/tests/Utils/FormatterTest.php
+++ b/tests/Utils/FormatterTest.php
@@ -22,6 +22,7 @@ class FormatTest extends TestCase
->willReturn(array(
'type' => 'text',
'line_ending' => null,
+ 'indentation' => null,
'clause_newline' => null,
'parts_newline' => null,
));
@@ -33,6 +34,7 @@ class FormatTest extends TestCase
$expectedOptions = array(
'type' => 'test-type',
'line_ending' => '<br>',
+ 'indentation' => ' ',
'clause_newline' => null,
'parts_newline' => 0,
'formats' => $expected,
@@ -244,30 +246,30 @@ class FormatTest extends TestCase
array(
'SELECT 1',
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' <span class="sql-number">1</span>',
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>',
array('type' => 'html'),
),
array(
'SELECT 1 # Comment',
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' <span class="sql-number">1</span> <span class="sql-comment"># Comment' . "\n" .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span> <span class="sql-comment"># Comment' . "\n" .
'</span>',
array('type' => 'html'),
),
array(
'SELECT HEX("1")',
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' <span class="sql-keyword">HEX</span>(<span class="sql-string">"1"</span>)',
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-keyword">HEX</span>(<span class="sql-string">"1"</span>)',
array('type' => 'html'),
),
array(
'SELECT * FROM foo WHERE bar=1',
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' *' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;*' . '<br/>' .
'<span class="sql-reserved">FROM</span>' . '<br/>' .
- ' foo' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;foo' . '<br/>' .
'<span class="sql-reserved">WHERE</span>' . '<br/>' .
- ' bar = <span class="sql-number">1</span>',
+ '&nbsp;&nbsp;&nbsp;&nbsp;bar = <span class="sql-number">1</span>',
array('type' => 'html'),
),
array(
@@ -276,9 +278,9 @@ class FormatTest extends TestCase
'<span class="sql-reserved">PROCEDURE</span> SPTEST()' . '<br/>' .
'<span class="sql-keyword">BEGIN</span>' . '<br/>' .
'<span class="sql-reserved">FROM</span>' . '<br/>' .
- ' a' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;a' . '<br/>' .
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' *;' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;*;' . '<br/>' .
'<span class="sql-keyword">END</span>',
array('type' => 'html'),
),
@@ -286,7 +288,7 @@ class FormatTest extends TestCase
'INSERT INTO foo VALUES (0, 0, 0), (1, 1, 1)',
'<span class="sql-reserved">INSERT</span>' . '<br/>' .
'<span class="sql-reserved">INTO</span>' . '<br/>' .
- ' foo' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;foo' . '<br/>' .
'<span class="sql-reserved">VALUES</span>' .
'(<span class="sql-number">0</span>, <span class="sql-number">0</span>, <span class="sql-number">0</span>),' .
'(<span class="sql-number">1</span>, <span class="sql-number">1</span>, <span class="sql-number">1</span>)',
@@ -294,38 +296,38 @@ class FormatTest extends TestCase
),
array(
'SELECT 1',
- "\x1b[35mSELECT\n \x1b[92m1\x1b[0m",
+ "\x1b[35mSELECT\n \x1b[92m1\x1b[0m",
array('type' => 'cli'),
),
array(
'SELECT "Text" AS BAR',
- "\x1b[35mSELECT\n \x1b[91m\"Text\" \x1b[35mAS \x1b[39mBAR\x1b[0m",
+ "\x1b[35mSELECT\n \x1b[91m\"Text\" \x1b[35mAS \x1b[39mBAR\x1b[0m",
array('type' => 'cli'),
),
array(
'SELECT coditm AS Item, descripcion AS Descripcion, contenedores AS Contenedores, IF(suspendido = 1, Si, NO) AS Suspendido FROM `DW_articulos` WHERE superado = 0',
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' coditm <span class="sql-reserved">AS</span> Item,' . '<br/>' .
- ' descripcion <span class="sql-reserved">AS</span> Descripcion,' . '<br/>' .
- ' contenedores <span class="sql-reserved">AS</span> Contenedores,' . '<br/>' .
- ' <span class="sql-reserved">IF</span>(suspendido = <span class="sql-number">1</span>, Si, <span class="sql-keyword">NO</span>) <span class="sql-reserved">AS</span> Suspendido' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;coditm <span class="sql-reserved">AS</span> Item,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;descripcion <span class="sql-reserved">AS</span> Descripcion,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;contenedores <span class="sql-reserved">AS</span> Contenedores,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">IF</span>(suspendido = <span class="sql-number">1</span>, Si, <span class="sql-keyword">NO</span>) <span class="sql-reserved">AS</span> Suspendido' . '<br/>' .
'<span class="sql-reserved">FROM</span>' . '<br/>' .
- ' <span class="sql-variable">`DW_articulos`</span>' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`DW_articulos`</span>' . '<br/>' .
'<span class="sql-reserved">WHERE</span>' . '<br/>' .
- ' superado = <span class="sql-number">0</span>',
+ '&nbsp;&nbsp;&nbsp;&nbsp;superado = <span class="sql-number">0</span>',
array('type' => 'html'),
),
array(
'SELECT 1 -- comment',
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' <span class="sql-number">1</span> <span class="sql-comment">-- comment' . "\n" .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span> <span class="sql-comment">-- comment' . "\n" .
'</span>',
array('type' => 'html'),
),
array(
'SELECT 1 -- comment',
'<span class="sql-reserved">SELECT</span>' . '<br/>' .
- ' <span class="sql-number">1</span>',
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-number">1</span>',
array('type' => 'html', 'remove_comments' => true),
),
array(
@@ -337,22 +339,26 @@ class FormatTest extends TestCase
' `query` text NOT NULL,' . "\n" .
' PRIMARY KEY (`id`)' . "\n",
'<span class="sql-reserved">CREATE</span> <span class="sql-reserved">TABLE</span> <span class="sql-reserved">IF NOT EXISTS</span> <span class="sql-variable">`pma__bookmark`</span>(' . '<br/>' .
- ' <span class="sql-variable">`id`</span> <span class="sql-reserved">INT</span>(<span class="sql-number">11</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-keyword">AUTO_INCREMENT</span>,' . '<br/>' .
- ' <span class="sql-variable">`dbase`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
- ' <span class="sql-variable">`user`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
- ' <span class="sql-variable">`label`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">COLLATE</span> utf8_general_ci <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
- ' <span class="sql-variable">`query`</span> <span class="sql-keyword">TEXT</span> <span class="sql-reserved">NOT NULL</span>,' . '<br/>' .
- ' <span class="sql-reserved">PRIMARY KEY</span>(<span class="sql-variable">`id`</span>)',
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`id`</span> <span class="sql-reserved">INT</span>(<span class="sql-number">11</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-keyword">AUTO_INCREMENT</span>,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`dbase`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`user`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`label`</span> <span class="sql-reserved">VARCHAR</span>(<span class="sql-number">255</span>) <span class="sql-reserved">COLLATE</span> utf8_general_ci <span class="sql-reserved">NOT NULL</span> <span class="sql-reserved">DEFAULT</span> <span class="sql-string">""</span>,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`query`</span> <span class="sql-keyword">TEXT</span> <span class="sql-reserved">NOT NULL</span>,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-reserved">PRIMARY KEY</span>(<span class="sql-variable">`id`</span>)',
array('type' => 'html'),
),
array(
"select '<s>xss' from `<s>xss` , <s>nxss /*s<s>xss*/",
- '<span class="sql-reserved">SELECT</span><br/> <span class="sql-string">\'&lt;s&gt;xss\'</span><br/><span class="sql-reserved">FROM</span><br/> <span class="sql-variable">`&lt;s&gt;xss`</span>,<br/> &lt; s &gt; nxss <span class="sql-comment">/*s&lt;s&gt;xss*/</span>',
+ '<span class="sql-reserved">SELECT</span>' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-string">\'&lt;s&gt;xss\'</span>' . '<br/>' .
+ '<span class="sql-reserved">FROM</span>' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;<span class="sql-variable">`&lt;s&gt;xss`</span>,' . '<br/>' .
+ '&nbsp;&nbsp;&nbsp;&nbsp;&lt; s &gt; nxss <span class="sql-comment">/*s&lt;s&gt;xss*/</span>',
array('type' => 'html'),
),
array(
"select 'text\x1b[33mcolor-inj' from tbl",
- "\x1b[35mSELECT\n \x1b[91m'text\\x1B[33mcolor-inj'\n\x1b[35mFROM\n \x1b[39mtbl\x1b[0m",
+ "\x1b[35mSELECT\n \x1b[91m'text\\x1B[33mcolor-inj'\n\x1b[35mFROM\n \x1b[39mtbl\x1b[0m",
array('type' => 'cli'),
),
);