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
@@ -8,20 +8,37 @@
* that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("unused")
package kotlin.script.experimental.annotations
import kotlin.reflect.KClass
import kotlin.script.experimental.api.ScriptConfigurator
import kotlin.script.experimental.api.ScriptRunner
import kotlin.script.experimental.api.ScriptSelector
import kotlin.script.experimental.basic.DefaultScriptSelector
import kotlin.script.experimental.basic.DummyRunner
import kotlin.script.experimental.basic.PassThroughConfigurator
import kotlin.script.experimental.api.ScriptCompilationConfigurator
import kotlin.script.experimental.api.ScriptDefinition
import kotlin.script.experimental.api.ScriptEvaluator
import kotlin.script.experimental.definitions.ScriptDefinitionFromAnnotatedBaseClass
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class KotlinScript(
val selector: KClass<out ScriptSelector> = DefaultScriptSelector::class,
val configurator: KClass<out ScriptConfigurator> = PassThroughConfigurator::class,
val runner: KClass<out ScriptRunner<*>> = DummyRunner::class
val definition: KClass<out ScriptDefinition> = ScriptDefinitionFromAnnotatedBaseClass::class
)
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class KotlinScriptFileExtension(
val extension: String
)
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class KotlinScriptCompilationConfigurator(
val compilationConfigurator: KClass<out ScriptCompilationConfigurator>
)
@Target(AnnotationTarget.CLASS)
@Retention(AnnotationRetention.RUNTIME)
annotation class KotlinScriptEvaluator(
val evaluator: KClass<out ScriptEvaluator<*>>
)