Skip to content

Commit bafed54

Browse files
committed
feat: add support for ELSIF keyword alongside ELSEIF
1 parent d2702cb commit bafed54

File tree

8 files changed

+9
-8
lines changed

8 files changed

+9
-8
lines changed

src/SqlFormatter.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ public function format(string $string, string $indentString = ' '): string
302302
$newline = true;
303303
$increaseBlockIndent = true;
304304
}
305-
} elseif (in_array($tokenValueUpper, ['IF', 'WHEN', 'THEN', 'ELSE', 'ELSEIF', 'END'], true)) {
305+
} elseif (in_array($tokenValueUpper, ['IF', 'WHEN', 'THEN', 'ELSE', 'ELSEIF', 'ELSIF', 'END'], true)) {
306306
if ($tokenValueUpper !== 'THEN' && $tokenValueUpper !== 'IF') {
307307
$decreaseIndentationLevelFx();
308308

@@ -318,7 +318,7 @@ public function format(string $string, string $indentString = ' '): string
318318

319319
// Track IF condition context only for IF/ELSEIF that are part of conditional blocks
320320
// (not for "IF()" function calls)
321-
if ($tokenValueUpper === 'IF' || $tokenValueUpper === 'ELSEIF') {
321+
if (in_array($tokenValueUpper, ['IF', 'ELSEIF', 'ELSIF'], true)) {
322322
// Check if this IF is part of a conditional block by looking at the next token
323323
$nextToken = $cursor->subCursor()->next(Token::TOKEN_TYPE_WHITESPACE);
324324
if (

src/Tokenizer.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ final class Tokenizer
105105
'DYNAMIC',
106106
'ELSE',
107107
'ELSEIF',
108+
'ELSIF',
108109
'ENCLOSED',
109110
'END',
110111
'ENGINE',

tests/clihighlight.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ MY_NON_TOP_LEVEL_KEYWORD_FX_3();
12111211
RETURN CONCAT(first_name, ' ', last_name);
12121212
ELSEIF first_name != '' THEN
12131213
RETURN first_name;
1214-
ELSEIF last_name != '' THEN
1214+
ELSIF last_name != '' THEN
12151215
RETURN last_name;
12161216
ELSE
12171217
RETURN id;

tests/compress.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,4 +112,4 @@ SELECT t.id, t.start, t.end, t.end AS e2, t.limit, t.begin, t.case, t.when, t.th
112112
---
113113
CREATE TABLE t (c VARCHAR(20)) DEFAULT CHARACTER SET utf8mb4 ENGINE = InnoDB
114114
---
115-
BEGIN IF first_name != '' AND last_name != '' THEN RETURN CONCAT(first_name, ' ', last_name); ELSEIF first_name != '' THEN RETURN first_name; ELSEIF last_name != '' THEN RETURN last_name; ELSE RETURN id; END IF; END;
115+
BEGIN IF first_name != '' AND last_name != '' THEN RETURN CONCAT(first_name, ' ', last_name); ELSEIF first_name != '' THEN RETURN first_name; ELSIF last_name != '' THEN RETURN last_name; ELSE RETURN id; END IF; END;

tests/format-highlight.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@
12111211
<span style="font-weight:bold;">RETURN</span> <span style="font-weight:bold;">CONCAT</span>(<span style="color: #333;">first_name</span><span >,</span> <span style="color: blue;">' '</span><span >,</span> <span style="color: #333;">last_name</span>)<span >;</span>
12121212
<span style="font-weight:bold;">ELSEIF</span> <span style="color: #333;">first_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span>
12131213
<span style="font-weight:bold;">RETURN</span> <span style="color: #333;">first_name</span><span >;</span>
1214-
<span style="font-weight:bold;">ELSEIF</span> <span style="color: #333;">last_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span>
1214+
<span style="font-weight:bold;">ELSIF</span> <span style="color: #333;">last_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span>
12151215
<span style="font-weight:bold;">RETURN</span> <span style="color: #333;">last_name</span><span >;</span>
12161216
<span style="font-weight:bold;">ELSE</span>
12171217
<span style="font-weight:bold;">RETURN</span> <span style="color: #333;">id</span><span >;</span>

tests/format.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1209,7 +1209,7 @@ BEGIN
12091209
RETURN CONCAT(first_name, ' ', last_name);
12101210
ELSEIF first_name != '' THEN
12111211
RETURN first_name;
1212-
ELSEIF last_name != '' THEN
1212+
ELSIF last_name != '' THEN
12131213
RETURN last_name;
12141214
ELSE
12151215
RETURN id;

tests/highlight.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,4 +426,4 @@
426426
---
427427
<pre style="color: black; background-color: white;"><span style="font-weight:bold;">CREATE</span> <span style="font-weight:bold;">TABLE</span> <span style="color: #333;">t</span> (<span style="color: #333;">c</span> <span style="font-weight:bold;">VARCHAR</span>(<span style="color: green;">20</span>)) <span style="font-weight:bold;">DEFAULT</span> <span style="font-weight:bold;">CHARACTER</span> <span style="font-weight:bold;">SET</span> <span style="color: #333;">utf8mb4</span> <span style="font-weight:bold;">ENGINE</span> <span >=</span> <span style="color: #333;">InnoDB</span></pre>
428428
---
429-
<pre style="color: black; background-color: white;"><span style="font-weight:bold;">BEGIN</span> <span style="font-weight:bold;">IF</span> <span style="color: #333;">first_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">AND</span> <span style="color: #333;">last_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span> <span style="font-weight:bold;">RETURN</span> <span style="font-weight:bold;">CONCAT</span>(<span style="color: #333;">first_name</span><span >,</span> <span style="color: blue;">' '</span><span >,</span> <span style="color: #333;">last_name</span>)<span >;</span> <span style="font-weight:bold;">ELSEIF</span> <span style="color: #333;">first_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span> <span style="font-weight:bold;">RETURN</span> <span style="color: #333;">first_name</span><span >;</span> <span style="font-weight:bold;">ELSEIF</span> <span style="color: #333;">last_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span> <span style="font-weight:bold;">RETURN</span> <span style="color: #333;">last_name</span><span >;</span> <span style="font-weight:bold;">ELSE</span> <span style="font-weight:bold;">RETURN</span> <span style="color: #333;">id</span><span >;</span> <span style="font-weight:bold;">END</span> <span style="font-weight:bold;">IF</span><span >;</span> <span style="font-weight:bold;">END</span><span >;</span></pre>
429+
<pre style="color: black; background-color: white;"><span style="font-weight:bold;">BEGIN</span> <span style="font-weight:bold;">IF</span> <span style="color: #333;">first_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">AND</span> <span style="color: #333;">last_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span> <span style="font-weight:bold;">RETURN</span> <span style="font-weight:bold;">CONCAT</span>(<span style="color: #333;">first_name</span><span >,</span> <span style="color: blue;">' '</span><span >,</span> <span style="color: #333;">last_name</span>)<span >;</span> <span style="font-weight:bold;">ELSEIF</span> <span style="color: #333;">first_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span> <span style="font-weight:bold;">RETURN</span> <span style="color: #333;">first_name</span><span >;</span> <span style="font-weight:bold;">ELSIF</span> <span style="color: #333;">last_name</span> <span >!</span><span >=</span> <span style="color: blue;">''</span> <span style="font-weight:bold;">THEN</span> <span style="font-weight:bold;">RETURN</span> <span style="color: #333;">last_name</span><span >;</span> <span style="font-weight:bold;">ELSE</span> <span style="font-weight:bold;">RETURN</span> <span style="color: #333;">id</span><span >;</span> <span style="font-weight:bold;">END</span> <span style="font-weight:bold;">IF</span><span >;</span> <span style="font-weight:bold;">END</span><span >;</span></pre>

tests/sql.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,4 +426,4 @@ WHERE t.start = t.end
426426
---
427427
CREATE TABLE t (c VARCHAR(20)) DEFAULT CHARACTER SET utf8mb4 ENGINE = InnoDB
428428
---
429-
BEGIN IF first_name != '' AND last_name != '' THEN RETURN CONCAT(first_name, ' ', last_name); ELSEIF first_name != '' THEN RETURN first_name; ELSEIF last_name != '' THEN RETURN last_name; ELSE RETURN id; END IF; END;
429+
BEGIN IF first_name != '' AND last_name != '' THEN RETURN CONCAT(first_name, ' ', last_name); ELSEIF first_name != '' THEN RETURN first_name; ELSIF last_name != '' THEN RETURN last_name; ELSE RETURN id; END IF; END;

0 commit comments

Comments
 (0)