diff options
-rw-r--r-- | src/Utils/Formatter.php | 6 | ||||
-rw-r--r-- | tests/Utils/CLITest.php | 8 | ||||
-rw-r--r-- | tests/Utils/FormatterTest.php | 60 |
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' ? ' ' : ' '; + } + // `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", + ' <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>', + ' <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" . + ' <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>)', + ' <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/>' . + ' *' . '<br/>' . '<span class="sql-reserved">FROM</span>' . '<br/>' . - ' foo' . '<br/>' . + ' foo' . '<br/>' . '<span class="sql-reserved">WHERE</span>' . '<br/>' . - ' bar = <span class="sql-number">1</span>', + ' 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/>' . + ' a' . '<br/>' . '<span class="sql-reserved">SELECT</span>' . '<br/>' . - ' *;' . '<br/>' . + ' *;' . '<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/>' . + ' 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/>' . + ' 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/>' . '<span class="sql-reserved">FROM</span>' . '<br/>' . - ' <span class="sql-variable">`DW_articulos`</span>' . '<br/>' . + ' <span class="sql-variable">`DW_articulos`</span>' . '<br/>' . '<span class="sql-reserved">WHERE</span>' . '<br/>' . - ' superado = <span class="sql-number">0</span>', + ' 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" . + ' <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>', + ' <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>)', + ' <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>)', 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">\'<s>xss\'</span><br/><span class="sql-reserved">FROM</span><br/> <span class="sql-variable">`<s>xss`</span>,<br/> < s > nxss <span class="sql-comment">/*s<s>xss*/</span>', + '<span class="sql-reserved">SELECT</span>' . '<br/>' . + ' <span class="sql-string">\'<s>xss\'</span>' . '<br/>' . + '<span class="sql-reserved">FROM</span>' . '<br/>' . + ' <span class="sql-variable">`<s>xss`</span>,' . '<br/>' . + ' < s > nxss <span class="sql-comment">/*s<s>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'), ), ); |