Skip to content

Commit 493682e

Browse files
authored
Merge PR #458: Improve CASE expression formatting
2 parents 4795196 + 9e9f9e1 commit 493682e

25 files changed

+58
-28
lines changed

src/formatter/ExpressionFormatter.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -350,20 +350,22 @@ export default class ExpressionFormatter {
350350
switch (node.tokenType) {
351351
case TokenType.RESERVED_JOIN:
352352
return this.formatJoin(node);
353-
case TokenType.RESERVED_DEPENDENT_CLAUSE:
354-
return this.formatDependentClause(node);
355353
case TokenType.AND:
356354
case TokenType.OR:
357355
case TokenType.XOR:
358356
return this.formatLogicalOperator(node);
359357
case TokenType.RESERVED_KEYWORD:
360358
case TokenType.RESERVED_FUNCTION_NAME:
361359
case TokenType.RESERVED_PHRASE:
360+
case TokenType.THEN:
362361
return this.formatKeyword(node);
363362
case TokenType.CASE:
364363
return this.formatCaseStart(node);
365364
case TokenType.END:
366365
return this.formatCaseEnd(node);
366+
case TokenType.WHEN:
367+
case TokenType.ELSE:
368+
return this.formatCaseWhenOrElse(node);
367369
default:
368370
throw new Error(`Unexpected token type: ${node.tokenType}`);
369371
}
@@ -384,7 +386,7 @@ export default class ExpressionFormatter {
384386
this.layout.add(this.showKw(node), WS.SPACE);
385387
}
386388

387-
private formatDependentClause(node: KeywordNode) {
389+
private formatCaseWhenOrElse(node: KeywordNode) {
388390
this.layout.add(WS.NEWLINE, WS.INDENT, this.showKw(node), WS.SPACE);
389391
}
390392

src/formatter/tabularStyle.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ export default function toTabularFormat(tokenText: string, indentStyle: IndentSt
3131
export function isTabularToken(type: TokenType): boolean {
3232
return (
3333
isLogicalOperator(type) ||
34-
type === TokenType.RESERVED_DEPENDENT_CLAUSE ||
3534
type === TokenType.RESERVED_COMMAND ||
3635
type === TokenType.RESERVED_SELECT ||
3736
type === TokenType.RESERVED_SET_OPERATION ||

src/languages/bigquery/bigquery.formatter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ export default class BigQueryFormatter extends Formatter {
147147
reservedSelect,
148148
reservedSetOperations,
149149
reservedJoins,
150-
reservedDependentClauses: ['WHEN', 'ELSE'],
151150
reservedPhrases,
152151
reservedKeywords: keywords,
153152
reservedFunctionNames: functions,

src/languages/db2/db2.formatter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,6 @@ export default class Db2Formatter extends Formatter {
176176
reservedSelect,
177177
reservedSetOperations,
178178
reservedJoins,
179-
reservedDependentClauses: ['WHEN', 'ELSE', 'ELSEIF'],
180179
reservedPhrases,
181180
reservedKeywords: keywords,
182181
reservedFunctionNames: functions,

src/languages/db2/db2.keywords.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ export const keywords = flatKeywordList({
6565
'DSSIZE',
6666
'DYNAMIC',
6767
'EDITPROC',
68+
'ELSE',
69+
'ELSEIF',
6870
'ENCODING',
6971
'ENCRYPTION',
7072
'ENDING',

src/languages/hive/hive.formatter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ export default class HiveFormatter extends Formatter {
8888
reservedSelect,
8989
reservedSetOperations,
9090
reservedJoins,
91-
reservedDependentClauses: ['WHEN', 'ELSE'],
9291
reservedPhrases,
9392
reservedKeywords: keywords,
9493
reservedFunctionNames: functions,

src/languages/mariadb/mariadb.formatter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,6 @@ export default class MariaDbFormatter extends Formatter {
268268
reservedSelect,
269269
reservedSetOperations,
270270
reservedJoins,
271-
reservedDependentClauses: ['WHEN', 'ELSE', 'ELSEIF', 'ELSIF'],
272271
reservedPhrases,
273272
supportsXor: true,
274273
reservedKeywords: keywords,

src/languages/mysql/mysql.formatter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,6 @@ export default class MySqlFormatter extends Formatter {
236236
reservedSelect,
237237
reservedSetOperations,
238238
reservedJoins,
239-
reservedDependentClauses: ['WHEN', 'ELSE', 'ELSEIF'],
240239
reservedPhrases,
241240
supportsXor: true,
242241
reservedKeywords: keywords,

src/languages/n1ql/n1ql.formatter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ export default class N1qlFormatter extends Formatter {
8585
reservedSelect,
8686
reservedSetOperations,
8787
reservedJoins,
88-
reservedDependentClauses: ['WHEN', 'ELSE'],
8988
reservedPhrases,
9089
supportsXor: true,
9190
reservedKeywords: keywords,

src/languages/plsql/plsql.formatter.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ export default class PlSqlFormatter extends Formatter {
8585
reservedSelect,
8686
reservedSetOperations,
8787
reservedJoins,
88-
reservedDependentClauses: ['WHEN', 'ELSE'],
8988
reservedPhrases,
9089
supportsXor: true,
9190
reservedKeywords: keywords,

0 commit comments

Comments
 (0)