Skip to content

Commit

Permalink
Conditional (ternary) operator formatting (fixes #15)
Browse files Browse the repository at this point in the history
ris58h committed Mar 30, 2024

Unverified

This user has not yet uploaded their public signing key.
1 parent 96b5acf commit 3f6ab43
Showing 3 changed files with 16 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -17,22 +17,28 @@ class JavaScriptBlock(node: ASTNode, wrap: Wrap?, alignment: Alignment?) : Abstr
if (elementType == JavaScriptTypes.DOT || elementType == JavaScriptTypes.QUESTION_MARK_DOT) {
return Indent.getNormalIndent()
}
//TODO: the same hack as above
if (elementType == JavaScriptTypes.QUESTION_MARK || elementType == JavaScriptTypes.COLON) {
return Indent.getNormalIndent()
}

if (parentElement is JavaScriptFile) {
return Indent.getNoneIndent()
}

if (JavaScriptTokenSets.BRACES.contains(elementType) ||
JavaScriptTokenSets.BRACKETS.contains(elementType) ||
JavaScriptTokenSets.PARENTHESES.contains(elementType)) {
JavaScriptTokenSets.PARENTHESES.contains(elementType)
) {
return Indent.getNoneIndent()
}

if ((parentElement is JavaScriptStatementsOwner && (element is JavaScriptStatement || element is PsiComment)) ||
parentElement is JavaScriptObject ||
parentElement is JavaScriptArray ||
parentElement is JavaScriptArguments ||
parentElement is JavaScriptCaseBlock) {
parentElement is JavaScriptCaseBlock
) {
return Indent.getNormalIndent()
}

@@ -52,7 +58,8 @@ class JavaScriptBlock(node: ASTNode, wrap: Wrap?, alignment: Alignment?) : Abstr
if (element is JavaScriptIdentifier ||
element is JavaScriptIdentifierName ||
element is JavaScriptIdentifierExpression ||
element is JavaScriptLiteral) return true
element is JavaScriptLiteral
) return true
return myNode.firstChildNode == null
}

@@ -86,7 +93,8 @@ class JavaScriptBlock(node: ASTNode, wrap: Wrap?, alignment: Alignment?) : Abstr
element is JavaScriptObject ||
element is JavaScriptArray ||
element is JavaScriptArguments ||
element is JavaScriptCaseBlock) {
element is JavaScriptCaseBlock
) {
return Indent.getNormalIndent()
}

Original file line number Diff line number Diff line change
@@ -43,6 +43,7 @@ object JavaScriptTypes {
val QUESTION_MARK_DOT = TOKENS[JavaScriptLexer.QuestionMarkDot]!!
val SEMICOLON = TOKENS[JavaScriptLexer.SemiColon]!!
val COMMA = TOKENS[JavaScriptLexer.Comma]!!
val QUESTION_MARK = TOKENS[JavaScriptLexer.QuestionMark]!!
val COLON = TOKENS[JavaScriptLexer.Colon]!!
val PLUS_PLUS_OP = TOKENS[JavaScriptLexer.PlusPlus]!!
val MINUS_MINUS_OP = TOKENS[JavaScriptLexer.MinusMinus]!!
3 changes: 3 additions & 0 deletions src/test/testData/javascript/conditional-operator.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
const result = condition
? "true"
: "false"

0 comments on commit 3f6ab43

Please sign in to comment.