summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/Utils/Formatter.php10
-rw-r--r--tests/Utils/FormatterTest.php7
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
'&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>)',
),
+ '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',
+ ),
);
}
}