Refactoring: wrap Spacing.createSpacing to Kotlin function with default parameters
This commit is contained in:
committed by
Nikolay Krasko
parent
f8196d8331
commit
49aaeb5a38
@@ -27,7 +27,7 @@ import com.intellij.psi.tree.TokenSet
|
||||
import org.jetbrains.kotlin.KtNodeTypes
|
||||
import org.jetbrains.kotlin.idea.KotlinLanguage
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import java.util.ArrayList
|
||||
import java.util.*
|
||||
|
||||
class KotlinSpacingBuilder(val codeStyleSettings: CodeStyleSettings, val spacingBuilderUtil: KotlinSpacingBuilderUtil) {
|
||||
private val builders = ArrayList<Builder>()
|
||||
@@ -120,7 +120,7 @@ class KotlinSpacingBuilder(val codeStyleSettings: CodeStyleSettings, val spacing
|
||||
if (child1.node.elementType == KtTokens.EOL_COMMENT && spacing.toString().contains("minLineFeeds=0")) {
|
||||
val isBeforeBlock = child2.node.elementType == KtNodeTypes.BLOCK || child2.node.firstChildNode?.elementType == KtNodeTypes.BLOCK
|
||||
val keepBlankLines = if (isBeforeBlock) 0 else codeStyleSettings.KEEP_BLANK_LINES_IN_CODE
|
||||
return Spacing.createSpacing(0, 0, 1, true, keepBlankLines)
|
||||
return createSpacing(0, minLineFeeds = 1, keepLineBreaks = true, keepBlankLines = keepBlankLines)
|
||||
}
|
||||
return spacing
|
||||
}
|
||||
@@ -139,6 +139,14 @@ class KotlinSpacingBuilder(val codeStyleSettings: CodeStyleSettings, val spacing
|
||||
builder.init()
|
||||
builders.add(builder)
|
||||
}
|
||||
|
||||
fun createSpacing(minSpaces: Int,
|
||||
maxSpaces: Int = minSpaces,
|
||||
minLineFeeds: Int = 0,
|
||||
keepLineBreaks: Boolean = codeStyleSettings.KEEP_LINE_BREAKS,
|
||||
keepBlankLines: Int = codeStyleSettings.KEEP_BLANK_LINES_IN_CODE): Spacing {
|
||||
return Spacing.createSpacing(minSpaces, maxSpaces, minLineFeeds, keepLineBreaks, keepBlankLines)
|
||||
}
|
||||
}
|
||||
|
||||
interface KotlinSpacingBuilderUtil {
|
||||
|
||||
@@ -70,14 +70,14 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
inPosition(parent = CLASS_BODY, left = SEMICOLON).customRule { parent, left, right ->
|
||||
val klass = parent.node.treeParent.psi as? KtClass ?: return@customRule null
|
||||
if (klass.isEnum() && right.node.elementType in DECLARATIONS) {
|
||||
Spacing.createSpacing(0, 0, 2, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_DECLARATIONS)
|
||||
createSpacing(0, minLineFeeds = 2, keepBlankLines = settings.KEEP_BLANK_LINES_IN_DECLARATIONS)
|
||||
} else null
|
||||
}
|
||||
|
||||
val parameterWithDocCommentRule = {
|
||||
parent: ASTBlock, left: ASTBlock, right: ASTBlock ->
|
||||
if (right.node.firstChildNode.elementType == KtTokens.DOC_COMMENT) {
|
||||
Spacing.createSpacing(0, 0, 1, true, settings.KEEP_BLANK_LINES_IN_DECLARATIONS)
|
||||
createSpacing(0, minLineFeeds = 1, keepLineBreaks = true, keepBlankLines = settings.KEEP_BLANK_LINES_IN_DECLARATIONS)
|
||||
}
|
||||
else {
|
||||
null
|
||||
@@ -178,7 +178,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
custom {
|
||||
inPosition(right = PRIMARY_CONSTRUCTOR).customRule { p, l, r ->
|
||||
val spacesCount = if (r.node.findLeafElementAt(0)?.elementType != LPAR) 1 else 0
|
||||
Spacing.createSpacing(spacesCount, spacesCount, 0, true, 0)
|
||||
createSpacing(spacesCount, minLineFeeds = 0, keepLineBreaks = true, keepBlankLines = 0)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -267,7 +267,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
} else null
|
||||
|
||||
val removeLineBreaks = leftBlock != null && afterBlockFilter(right.node?.treeParent!!, leftBlock)
|
||||
Spacing.createSpacing(1, 1, 0, !removeLineBreaks, 0)
|
||||
createSpacing(1, minLineFeeds = 0, keepLineBreaks = !removeLineBreaks, keepBlankLines = 0)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -290,10 +290,10 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
val isAfterEolComment = previousLeaf != null && (previousLeaf.elementType == EOL_COMMENT)
|
||||
val keepLineBreaks = kotlinSettings.LBRACE_ON_NEXT_LINE || isAfterEolComment
|
||||
val minimumLF = if (kotlinSettings.LBRACE_ON_NEXT_LINE) 1 else 0
|
||||
return Spacing.createSpacing(1, 1, minimumLF, keepLineBreaks, 0)
|
||||
return createSpacing(1, minLineFeeds = minimumLF, keepLineBreaks = keepLineBreaks, keepBlankLines = 0)
|
||||
}
|
||||
}
|
||||
return Spacing.createSpacing(1, 1, 0, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE)
|
||||
return createSpacing(1)
|
||||
}
|
||||
|
||||
fun leftBraceRule(blockType: IElementType = BLOCK) = {
|
||||
@@ -311,7 +311,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
val nodeBeforeRight = right.node.treePrev
|
||||
if (nodeBeforeRight is PsiWhiteSpace && !nodeBeforeRight.textContains('\n')) {
|
||||
// Several line comments happened to be generated in one line
|
||||
Spacing.createSpacing(1, 0, 1, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE)
|
||||
createSpacing(0, minLineFeeds = 1)
|
||||
}
|
||||
else {
|
||||
null
|
||||
@@ -326,7 +326,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
inPosition(left = SEMICOLON).customRule { parent, left, right ->
|
||||
val nodeAfterLeft = left.node.treeNext
|
||||
if (nodeAfterLeft is PsiWhiteSpace && !nodeAfterLeft.textContains('\n')) {
|
||||
Spacing.createSpacing(1, 1, 0, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE)
|
||||
createSpacing(1)
|
||||
}
|
||||
else {
|
||||
null
|
||||
@@ -371,7 +371,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
inPosition(parent = FUNCTION_LITERAL,
|
||||
left = LBRACE,
|
||||
right = RBRACE)
|
||||
.spacing(Spacing.createSpacing(0, 1, 0, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE))
|
||||
.spacing(createSpacing(minSpaces = 0, maxSpaces = 1))
|
||||
|
||||
inPosition(parent = FUNCTION_LITERAL,
|
||||
right = RBRACE)
|
||||
@@ -392,7 +392,7 @@ fun createSpacingBuilder(settings: CodeStyleSettings, builderUtil: KotlinSpacing
|
||||
}
|
||||
}
|
||||
|
||||
Spacing.createSpacing(numSpaces, numSpaces, 0, settings.KEEP_LINE_BREAKS, settings.KEEP_BLANK_LINES_IN_CODE)
|
||||
createSpacing(numSpaces)
|
||||
}
|
||||
|
||||
inPosition(parent = CLASS_BODY, right = RBRACE).lineBreakIfLineBreakInParent(numSpacesOtherwise = 1)
|
||||
|
||||
Reference in New Issue
Block a user