Skip to content

Commit a5ae935

Browse files
authored
Merge pull request #114 from mvorisek/merge_14_15
Merge branch 1.4.x into 1.5.x
2 parents 156f3fa + 5df92af commit a5ae935

7 files changed

+122
-0
lines changed

src/SqlFormatter.php

+9
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,15 @@ public function format(string $string, string $indentString = ' '): string
261261
if (strtoupper($token->value()) === 'LIMIT' && ! $inlineParentheses) {
262262
$clauseLimit = true;
263263
}
264+
} elseif ($token->value() === ';') {
265+
// If the last indent type was special, decrease the special indent for this round
266+
reset($indentTypes);
267+
if (current($indentTypes) === self::INDENT_TYPE_SPECIAL) {
268+
$indentLevel--;
269+
array_shift($indentTypes);
270+
}
271+
272+
$newline = true;
264273
} elseif (strtoupper($token->value()) === 'CASE') {
265274
$increaseBlockIndent = true;
266275
} elseif (in_array(strtoupper($token->value()), ['WHEN', 'THEN', 'ELSE', 'END'], true)) {

tests/clihighlight.txt

+25
Original file line numberDiff line numberDiff line change
@@ -1010,6 +1010,31 @@
10101010
SELECT
10111011
1 :: text;
10121012
---
1013+
-- semicolon must decrease special indentation level
1014+
MY_NON_TOP_LEVEL_KEYWORD_FX_1();
1015+
MY_NON_TOP_LEVEL_KEYWORD_FX_2();
1016+
SELECT
1017+
x
1018+
FROM
1019+
(
1020+
SELECT
1021+
1 as x
1022+
);
1023+
MY_NON_TOP_LEVEL_KEYWORD_FX_3();
1024+
BEGIN MY_NON_TOP_LEVEL_KEYWORD_FX_4();
1025+
MY_NON_TOP_LEVEL_KEYWORD_FX_5();
1026+
END;
1027+
BEGIN
1028+
SELECT
1029+
x
1030+
FROM
1031+
(
1032+
SELECT
1033+
1 as x
1034+
);
1035+
MY_NON_TOP_LEVEL_KEYWORD_FX_6();
1036+
END;
1037+
---
10131038
SELECT
10141039
case when name = 1 then
10151040
10

tests/compress.txt

+2
Original file line numberDiff line numberDiff line change
@@ -94,4 +94,6 @@ SELECT a, GROUP_CONCAT(b, '.') OVER (ORDER BY c GROUPS BETWEEN UNBOUNDED PRECEDI
9494
---
9595
SELECT 1::text;
9696
---
97+
MY_NON_TOP_LEVEL_KEYWORD_FX_1(); MY_NON_TOP_LEVEL_KEYWORD_FX_2(); SELECT x FROM (SELECT 1 as x); MY_NON_TOP_LEVEL_KEYWORD_FX_3(); BEGIN MY_NON_TOP_LEVEL_KEYWORD_FX_4(); MY_NON_TOP_LEVEL_KEYWORD_FX_5(); END; BEGIN SELECT x FROM (SELECT 1 as x); MY_NON_TOP_LEVEL_KEYWORD_FX_6(); END;
98+
---
9799
SELECT case when name = 1 then 10 when name = 2 then 20 when name = 3 then case when age > 10 then 30 else 31 end else 40 end AS case1, (SELECT case name when 1 then 10 when 2 then 20 when 3 then case age when 10 then 30 else 31 end else 40 end) case2, name FROM user

tests/format-highlight.html

+25
Original file line numberDiff line numberDiff line change
@@ -1010,6 +1010,31 @@
10101010
<pre style="color: black; background-color: white;"><span style="font-weight:bold;">SELECT</span>
10111011
<span style="color: green;">1</span> <span >::</span> <span style="color: #333;">text</span><span >;</span></pre>
10121012
---
1013+
<pre style="color: black; background-color: white;"><span style="color: #aaa;">-- semicolon must decrease special indentation level</span>
1014+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_1</span>()<span >;</span>
1015+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_2</span>()<span >;</span>
1016+
<span style="font-weight:bold;">SELECT</span>
1017+
<span style="color: #333;">x</span>
1018+
<span style="font-weight:bold;">FROM</span>
1019+
(
1020+
<span style="font-weight:bold;">SELECT</span>
1021+
<span style="color: green;">1</span> <span style="font-weight:bold;">as</span> <span style="color: #333;">x</span>
1022+
)<span >;</span>
1023+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_3</span>()<span >;</span>
1024+
<span style="font-weight:bold;">BEGIN</span> <span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_4</span>()<span >;</span>
1025+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_5</span>()<span >;</span>
1026+
<span style="font-weight:bold;">END</span><span >;</span>
1027+
<span style="font-weight:bold;">BEGIN</span>
1028+
<span style="font-weight:bold;">SELECT</span>
1029+
<span style="color: #333;">x</span>
1030+
<span style="font-weight:bold;">FROM</span>
1031+
(
1032+
<span style="font-weight:bold;">SELECT</span>
1033+
<span style="color: green;">1</span> <span style="font-weight:bold;">as</span> <span style="color: #333;">x</span>
1034+
)<span >;</span>
1035+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_6</span>()<span >;</span>
1036+
<span style="font-weight:bold;">END</span><span >;</span></pre>
1037+
---
10131038
<pre style="color: black; background-color: white;"><span style="font-weight:bold;">SELECT</span>
10141039
<span style="font-weight:bold;">case</span> <span style="font-weight:bold;">when</span> <span style="color: #333;">name</span> <span >=</span> <span style="color: green;">1</span> <span style="font-weight:bold;">then</span>
10151040
<span style="color: green;">10</span>

tests/format.txt

+25
Original file line numberDiff line numberDiff line change
@@ -1008,6 +1008,31 @@ WINDOW
10081008
SELECT
10091009
1 :: text;
10101010
---
1011+
-- semicolon must decrease special indentation level
1012+
MY_NON_TOP_LEVEL_KEYWORD_FX_1();
1013+
MY_NON_TOP_LEVEL_KEYWORD_FX_2();
1014+
SELECT
1015+
x
1016+
FROM
1017+
(
1018+
SELECT
1019+
1 as x
1020+
);
1021+
MY_NON_TOP_LEVEL_KEYWORD_FX_3();
1022+
BEGIN MY_NON_TOP_LEVEL_KEYWORD_FX_4();
1023+
MY_NON_TOP_LEVEL_KEYWORD_FX_5();
1024+
END;
1025+
BEGIN
1026+
SELECT
1027+
x
1028+
FROM
1029+
(
1030+
SELECT
1031+
1 as x
1032+
);
1033+
MY_NON_TOP_LEVEL_KEYWORD_FX_6();
1034+
END;
1035+
---
10111036
SELECT
10121037
case when name = 1 then
10131038
10

tests/highlight.html

+18
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,24 @@
305305
---
306306
<pre style="color: black; background-color: white;"><span style="font-weight:bold;">SELECT</span> <span style="color: green;">1</span><span >::</span><span style="color: #333;">text</span><span >;</span></pre>
307307
---
308+
<pre style="color: black; background-color: white;"><span style="color: #aaa;">-- semicolon must decrease special indentation level</span>
309+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_1</span>()<span >;</span>
310+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_2</span>()<span >;</span>
311+
<span style="font-weight:bold;">SELECT</span> <span style="color: #333;">x</span>
312+
<span style="font-weight:bold;">FROM</span>
313+
(<span style="font-weight:bold;">SELECT</span> <span style="color: green;">1</span> <span style="font-weight:bold;">as</span> <span style="color: #333;">x</span>)<span >;</span>
314+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_3</span>()<span >;</span>
315+
<span style="font-weight:bold;">BEGIN</span>
316+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_4</span>()<span >;</span>
317+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_5</span>()<span >;</span>
318+
<span style="font-weight:bold;">END</span><span >;</span>
319+
<span style="font-weight:bold;">BEGIN</span>
320+
<span style="font-weight:bold;">SELECT</span> <span style="color: #333;">x</span>
321+
<span style="font-weight:bold;">FROM</span>
322+
(<span style="font-weight:bold;">SELECT</span> <span style="color: green;">1</span> <span style="font-weight:bold;">as</span> <span style="color: #333;">x</span>)<span >;</span>
323+
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_6</span>()<span >;</span>
324+
<span style="font-weight:bold;">END</span><span >;</span></pre>
325+
---
308326
<pre style="color: black; background-color: white;"><span style="font-weight:bold;">SELECT</span>
309327
<span style="font-weight:bold;">case</span> <span style="font-weight:bold;">when</span> <span style="color: #333;">name</span> <span >=</span> <span style="color: green;">1</span> <span style="font-weight:bold;">then</span>
310328
<span style="color: green;">10</span>

tests/sql.sql

+18
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,24 @@ WINDOW w1 AS (PARTITION BY department, division), w2 AS (w1 ORDER BY hire_date);
305305
---
306306
SELECT 1::text;
307307
---
308+
-- semicolon must decrease special indentation level
309+
MY_NON_TOP_LEVEL_KEYWORD_FX_1();
310+
MY_NON_TOP_LEVEL_KEYWORD_FX_2();
311+
SELECT x
312+
FROM
313+
(SELECT 1 as x);
314+
MY_NON_TOP_LEVEL_KEYWORD_FX_3();
315+
BEGIN
316+
MY_NON_TOP_LEVEL_KEYWORD_FX_4();
317+
MY_NON_TOP_LEVEL_KEYWORD_FX_5();
318+
END;
319+
BEGIN
320+
SELECT x
321+
FROM
322+
(SELECT 1 as x);
323+
MY_NON_TOP_LEVEL_KEYWORD_FX_6();
324+
END;
325+
---
308326
SELECT
309327
case when name = 1 then
310328
10

0 commit comments

Comments
 (0)