From 81c7cb20f359bb8153502a0a665ba4c7c76ef9c4 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Sat, 7 Mar 2020 23:38:50 +0300 Subject: [PATCH] Wizard: minor, move out module validators from Module class --- .../settings/buildsystem/Module.kt | 74 +++++++++++-------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt index d8572448bbe..7635ad51909 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt @@ -40,37 +40,10 @@ class Module( val kind: ModuleKind get() = configurator.moduleKind - override val validator: SettingValidator = settingValidator { module -> - StringValidators.shouldNotBeBlank("Module name").validate(this, module.name) - } and settingValidator { module -> - StringValidators.shouldBeValidIdentifier("Module name `$name`", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES).validate(this, module.name) - } and settingValidator { module -> - withSettingsOf(module) { - allSettingsOfModuleConfigurator(configurator).map { setting -> - val reference = when (setting) { - is PluginSetting> -> setting.reference - is ModuleConfiguratorSetting> -> setting.reference - else -> null - } - val value = reference?.notRequiredSettingValue - ?: reference?.savedOrDefaultValue - ?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank") - (setting.validator as SettingValidator).validate(this@settingValidator, value) - }.fold() - } - } and settingValidator { module -> - val template = module.template ?: return@settingValidator ValidationResult.OK - org.jetbrains.kotlin.tools.projectWizard.templates.withSettingsOf(module) { - template.settings.map { setting -> - val value = setting.reference.notRequiredSettingValue - ?: setting.reference.savedOrDefaultValue - ?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank") - (setting.validator as SettingValidator).validate(this@settingValidator, value) - }.fold() - } - } and inValidatorContext { module -> - validateList(module.subModules) - } + override val validator = moduleNameValidator and + moduleConfiguratorValidator and + moduleTemplateValidator and + subModulesValidator var subModules = subModules set(value) { @@ -115,6 +88,45 @@ class Module( val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() } Module(name, configurator, template, sourcesets, submodules, identificator = identificator) } + + private val moduleNameValidator = settingValidator { module -> + StringValidators.shouldNotBeBlank("Module name").validate(this, module.name) + } and settingValidator { module -> + StringValidators.shouldBeValidIdentifier("Module name `${module.name}`", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES) + .validate(this, module.name) + } + + val moduleConfiguratorValidator = settingValidator { module -> + withSettingsOf(module) { + allSettingsOfModuleConfigurator(module.configurator).map { setting -> + val reference = when (setting) { + is PluginSetting> -> setting.reference + is ModuleConfiguratorSetting> -> setting.reference + else -> null + } + val value = reference?.notRequiredSettingValue + ?: reference?.savedOrDefaultValue + ?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank") + (setting.validator as SettingValidator).validate(this@settingValidator, value) + }.fold() + } + } + + val moduleTemplateValidator = settingValidator { module -> + val template = module.template ?: return@settingValidator ValidationResult.OK + org.jetbrains.kotlin.tools.projectWizard.templates.withSettingsOf(module) { + template.settings.map { setting -> + val value = setting.reference.notRequiredSettingValue + ?: setting.reference.savedOrDefaultValue + ?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank") + (setting.validator as SettingValidator).validate(this@settingValidator, value) + }.fold() + } + } + + val subModulesValidator = inValidatorContext { module -> + validateList(module.subModules) + } } }