diff options
-rw-r--r-- | src/Utils/Formatter.php | 10 | ||||
-rw-r--r-- | tests/Utils/FormatterTest.php | 7 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/Utils/Formatter.php b/src/Utils/Formatter.php index 16c0778..e07394c 100644 --- a/src/Utils/Formatter.php +++ b/src/Utils/Formatter.php @@ -6,6 +6,7 @@ namespace PhpMyAdmin\SqlParser\Utils; +use PhpMyAdmin\SqlParser\Components\JoinKeyword; use PhpMyAdmin\SqlParser\Lexer; use PhpMyAdmin\SqlParser\Parser; use PhpMyAdmin\SqlParser\Token; @@ -383,6 +384,15 @@ class Formatter } } + // Inline JOINs + if (($prev->type === Token::TYPE_KEYWORD && isset(JoinKeyword::$JOINS[$prev->value])) + || (in_array($curr->value, array('ON', 'USING'), true) && isset(JoinKeyword::$JOINS[$list->tokens[$list->idx - 2]->value])) + || (isset($list->tokens[$list->idx - 4]) && isset(JoinKeyword::$JOINS[$list->tokens[$list->idx - 4]->value])) + || (isset($list->tokens[$list->idx - 6]) && isset(JoinKeyword::$JOINS[$list->tokens[$list->idx - 6]->value])) + ) { + $lineEnded = false; + } + // Indenting BEGIN ... END blocks. if ($prev->type === Token::TYPE_KEYWORD && $prev->keyword === 'BEGIN') { $lineEnded = true; diff --git a/tests/Utils/FormatterTest.php b/tests/Utils/FormatterTest.php index b8a8ff2..c209d27 100644 --- a/tests/Utils/FormatterTest.php +++ b/tests/Utils/FormatterTest.php @@ -508,6 +508,13 @@ class FormatTest extends TestCase ' <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>)', ), + 'join' => array( + 'query' => 'join tbl2 on c1=c2', + 'text' => 'JOIN tbl2 ON c1 = c2', + 'cli' => "\x1b[35mJOIN \x1b[39mtbl2 \x1b[35mON \x1b[39mc1 \x1b[39m= \x1b[39mc2" . + "\x1b[0m", + 'html' => '<span class="sql-reserved">JOIN</span> tbl2 <span class="sql-reserved">ON</span> c1 = c2', + ), ); } } |