Wizard: format templates code

This commit is contained in:
Ilya Kirillov
2019-12-17 16:15:33 +03:00
parent b29e6d0c69
commit af174b4f74
6 changed files with 52 additions and 8 deletions
@@ -0,0 +1,25 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.tools.projectWizard.wizard.service
import com.intellij.openapi.project.Project
import com.intellij.psi.codeStyle.CodeStyleManager
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileFormattingService
import java.io.File
class IdeaFileFormattingService(private val project: Project) : FileFormattingService, IdeaWizardService {
override fun formatFile(text: String, filename: String): String = runReadAction {
val psiFile = createPsiFile(text, filename) ?: return@runReadAction text
CodeStyleManager.getInstance(project).reformat(psiFile).text
}
private fun createPsiFile(text: String, filename: String) = when (File(filename.removeSuffix(".vm")).extension) {
"kt" -> KtPsiFactory(project).createFile(text)
else -> null
}
}
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.service
import com.intellij.openapi.module.ModifiableModuleModel
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileFormattingService
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardService
interface IdeaWizardService : WizardService
@@ -20,7 +21,8 @@ object IdeaServices {
fun createScopeDependent(project: Project, model: ModifiableModuleModel) = listOf(
IdeaGradleWizardService(project),
IdeaMavenWizardService(project),
IdeaJpsWizardService(project, model)
IdeaJpsWizardService(project, model),
IdeaFileFormattingService(project)
)
}