Refactor scriptDefinition in the common part

- get rid of selector (because of confusions), move it's data into
definition itself and make it more generic with heterogeneous map
- make main KotlinScript annotation accept complete definition
- make additional annotation for building definition from parts
- add ScriptingEnvironment and pass it as a constructor parameter to
the script handlers
- rename some classes for clarity
This commit is contained in:
Ilya Chernikov
2018-03-26 18:42:18 +02:00
parent 2c3a50e4b3
commit 1f0cac50d2
13 changed files with 147 additions and 75 deletions
@@ -5,34 +5,17 @@
package kotlin.script.experimental.basic
import kotlin.reflect.KClass
import kotlin.reflect.full.findAnnotation
import kotlin.script.experimental.api.*
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class KotlinScriptFileExtension(val extension: String)
class PassThroughCompilationConfigurator(val environment: ScriptingEnvironment) : ScriptCompilationConfigurator {
open class DefaultScriptSelector(val baseClass: KClass<Any>? = null) : ScriptSelector {
override val defaultConfiguration = ScriptCompileConfiguration(
ScriptCompileConfigurationParams.baseClass to environment[ScriptingEnvironmentParams.baseClass]
)
override val name: String = "Kotlin script"
override val fileExtension: String = baseClass?.findAnnotation<KotlinScriptFileExtension>()?.extension ?: "kts"
override fun makeScriptName(scriptFileName: String?): String = scriptFileName?.removeSuffix(".$fileExtension") ?: "Kotlin script"
override fun isKnownScript(script: ScriptSource): Boolean =
script.location?.file?.endsWith(fileExtension) ?: true
}
class PassThroughConfigurator(val baseClass: KClass<Any>? = null) : ScriptConfigurator {
override suspend fun baseConfiguration(scriptSource: ScriptSource?): ResultWithDiagnostics<ScriptCompileConfiguration> =
(when (scriptSource) {
null -> ScriptCompileConfiguration()
else -> ScriptCompileConfiguration(scriptSource.toConfigEntry())
}).asSuccess()
override suspend fun baseConfiguration(scriptSource: ScriptSource): ResultWithDiagnostics<ScriptCompileConfiguration> =
defaultConfiguration.asSuccess()
override suspend fun refineConfiguration(
configuration: ScriptCompileConfiguration,
@@ -41,8 +24,8 @@ class PassThroughConfigurator(val baseClass: KClass<Any>? = null) : ScriptConfig
configuration.asSuccess()
}
class DummyRunner<ScriptBase : Any>(val baseClass: KClass<ScriptBase>? = null) : ScriptRunner<ScriptBase> {
override suspend fun run(
class DummyEvaluator<ScriptBase : Any>(val environment: ScriptingEnvironment) : ScriptEvaluator<ScriptBase> {
override suspend fun eval(
compiledScript: CompiledScript<ScriptBase>,
scriptEvaluationEnvironment: ScriptEvaluationEnvironment
): ResultWithDiagnostics<EvaluationResult> =