Skip to content

Commit c0254f2

Browse files
committed
Also within query statement block
1 parent 027ca22 commit c0254f2

File tree

4 files changed

+24
-6
lines changed

4 files changed

+24
-6
lines changed

src/SqlFormatter.php

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,12 @@ public function format(string $string, string $indentString = ' '): string
8686
return;
8787
}
8888

89-
$return = substr($return, 0, -($indentLevel + 1)) . str_repeat($tab, $indentLevel);
89+
$rtrimLength = $indentLevel + 1;
90+
while (substr($return, -($rtrimLength + 2), 1) === "\n") {
91+
$rtrimLength++;
92+
}
93+
94+
$return = substr($return, 0, -$rtrimLength) . str_repeat($tab, $indentLevel);
9095
};
9196

9297
// Tokenize String
@@ -117,11 +122,9 @@ public function format(string $string, string $indentString = ' '): string
117122
if ($newline) {
118123
$return = rtrim($return, ' ');
119124

120-
if ($indentLevel === 0) {
121-
$prevNotWhitespaceToken = $cursor->subCursor()->previous(Token::TOKEN_TYPE_WHITESPACE);
122-
if ($prevNotWhitespaceToken !== null && $prevNotWhitespaceToken->value() === ';') {
123-
$return .= "\n";
124-
}
125+
$prevNotWhitespaceToken = $cursor->subCursor()->previous(Token::TOKEN_TYPE_WHITESPACE);
126+
if ($prevNotWhitespaceToken !== null && $prevNotWhitespaceToken->value() === ';') {
127+
$return .= "\n";
125128
}
126129

127130
$return .= "\n" . str_repeat($tab, $indentLevel);

tests/clihighlight.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,6 +1031,7 @@ MY_NON_TOP_LEVEL_KEYWORD_FX_3();
10311031

10321032
BEGIN
10331033
MY_NON_TOP_LEVEL_KEYWORD_FX_4();
1034+
10341035
MY_NON_TOP_LEVEL_KEYWORD_FX_5();
10351036
END;
10361037

@@ -1042,6 +1043,7 @@ MY_NON_TOP_LEVEL_KEYWORD_FX_3();
10421043
SELECT
10431044
1 as x
10441045
);
1046+
10451047
MY_NON_TOP_LEVEL_KEYWORD_FX_6();
10461048
END;
10471049
---
@@ -1150,16 +1152,19 @@ MY_NON_TOP_LEVEL_KEYWORD_FX_3();
11501152
catch if ERROR_NUMBER() = 544 begin
11511153
set
11521154
IDENTITY_INSERT [t] on;
1155+
11531156
begin
11541157
try insert into [t] ([name], [int], [float], [null])
11551158
values
11561159
(N 'Ewa', 1, 1.0, null);
1160+
11571161
set
11581162
IDENTITY_INSERT [t] off;
11591163
end try begin
11601164
catch
11611165
set
11621166
IDENTITY_INSERT [t] off;
1167+
11631168
throw;
11641169
end catch
11651170
end

tests/format-highlight.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,6 +1031,7 @@
10311031

10321032
<span style="font-weight:bold;">BEGIN</span>
10331033
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_4</span>()<span >;</span>
1034+
10341035
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_5</span>()<span >;</span>
10351036
<span style="font-weight:bold;">END</span><span >;</span>
10361037

@@ -1042,6 +1043,7 @@
10421043
<span style="font-weight:bold;">SELECT</span>
10431044
<span style="color: green;">1</span> <span style="font-weight:bold;">as</span> <span style="color: #333;">x</span>
10441045
)<span >;</span>
1046+
10451047
<span style="color: #333;">MY_NON_TOP_LEVEL_KEYWORD_FX_6</span>()<span >;</span>
10461048
<span style="font-weight:bold;">END</span><span >;</span></pre>
10471049
---
@@ -1150,16 +1152,19 @@
11501152
<span style="color: #333;">catch</span> <span style="font-weight:bold;">if</span> <span style="color: #333;">ERROR_NUMBER</span>() <span >=</span> <span style="color: green;">544</span> <span style="font-weight:bold;">begin</span>
11511153
<span style="font-weight:bold;">set</span>
11521154
<span style="color: #333;">IDENTITY_INSERT</span> <span style="color: purple;">[t]</span> <span style="font-weight:bold;">on</span><span >;</span>
1155+
11531156
<span style="font-weight:bold;">begin</span>
11541157
<span style="color: #333;">try</span> <span style="font-weight:bold;">insert</span> <span style="font-weight:bold;">into</span> <span style="color: purple;">[t]</span> (<span style="color: purple;">[name]</span><span >,</span> <span style="color: purple;">[int]</span><span >,</span> <span style="color: purple;">[float]</span><span >,</span> <span style="color: purple;">[null]</span>)
11551158
<span style="font-weight:bold;">values</span>
11561159
(<span style="color: #333;">N</span> <span style="color: blue;">'Ewa'</span><span >,</span> <span style="color: green;">1</span><span >,</span> <span style="color: green;">1.0</span><span >,</span> <span style="font-weight:bold;">null</span>)<span >;</span>
1160+
11571161
<span style="font-weight:bold;">set</span>
11581162
<span style="color: #333;">IDENTITY_INSERT</span> <span style="color: purple;">[t]</span> <span style="color: #333;">off</span><span >;</span>
11591163
<span style="font-weight:bold;">end</span> <span style="color: #333;">try</span> <span style="font-weight:bold;">begin</span>
11601164
<span style="color: #333;">catch</span>
11611165
<span style="font-weight:bold;">set</span>
11621166
<span style="color: #333;">IDENTITY_INSERT</span> <span style="color: purple;">[t]</span> <span style="color: #333;">off</span><span >;</span>
1167+
11631168
<span style="color: #333;">throw</span><span >;</span>
11641169
<span style="font-weight:bold;">end</span> <span style="color: #333;">catch</span>
11651170
<span style="font-weight:bold;">end</span>

tests/format.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1029,6 +1029,7 @@ MY_NON_TOP_LEVEL_KEYWORD_FX_3();
10291029

10301030
BEGIN
10311031
MY_NON_TOP_LEVEL_KEYWORD_FX_4();
1032+
10321033
MY_NON_TOP_LEVEL_KEYWORD_FX_5();
10331034
END;
10341035

@@ -1040,6 +1041,7 @@ BEGIN
10401041
SELECT
10411042
1 as x
10421043
);
1044+
10431045
MY_NON_TOP_LEVEL_KEYWORD_FX_6();
10441046
END;
10451047
---
@@ -1148,16 +1150,19 @@ end try begin
11481150
catch if ERROR_NUMBER() = 544 begin
11491151
set
11501152
IDENTITY_INSERT [t] on;
1153+
11511154
begin
11521155
try insert into [t] ([name], [int], [float], [null])
11531156
values
11541157
(N 'Ewa', 1, 1.0, null);
1158+
11551159
set
11561160
IDENTITY_INSERT [t] off;
11571161
end try begin
11581162
catch
11591163
set
11601164
IDENTITY_INSERT [t] off;
1165+
11611166
throw;
11621167
end catch
11631168
end

0 commit comments

Comments
 (0)