Clean and fix new scripting API
This commit is contained in:
@@ -9,8 +9,8 @@ interface ScriptCompiler {
|
||||
|
||||
suspend fun compile(
|
||||
script: ScriptSource,
|
||||
configurator: ScriptCompilationConfigurator? = null,
|
||||
additionalConfiguration: ScriptCompileConfiguration? = null // overrides parameters from configurator.defaultConfiguration
|
||||
scriptDefinition: ScriptDefinition,
|
||||
additionalConfiguration: ScriptCompileConfiguration? = null // overrides properties from definition and configurator.defaultConfiguration
|
||||
): ResultWithDiagnostics<CompiledScript<*>>
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ typealias ProcessedScriptData = ChainedPropertyBag
|
||||
|
||||
interface ScriptCompilationConfigurator {
|
||||
|
||||
// constructor(environment: ScriptingEnvironment) // the constructor is expected from implementations
|
||||
// constructor(properties: ScriptDefinitionPropertiesBag) // the constructor is expected from implementations
|
||||
|
||||
val defaultConfiguration: ScriptCompileConfiguration
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ object ScriptCompileConfigurationProperties {
|
||||
|
||||
val sourceFragments by typedKey<List<ScriptSourceNamedFragment>>()
|
||||
|
||||
val baseClass = ScriptingEnvironmentProperties.baseClass
|
||||
val baseClass = ScriptDefinitionProperties.baseClass
|
||||
|
||||
val scriptBodyTarget by typedKey<ScriptBodyTarget>()
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
package kotlin.script.experimental.api
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.script.experimental.util.ChainedPropertyBag
|
||||
import kotlin.script.experimental.util.typedKey
|
||||
|
||||
@@ -18,7 +19,7 @@ interface ScriptDefinition {
|
||||
|
||||
val properties: ScriptDefinitionPropertiesBag
|
||||
|
||||
val compilationConfigurator: ScriptCompilationConfigurator
|
||||
val compilationConfigurator: ScriptCompilationConfigurator?
|
||||
|
||||
val evaluator: ScriptEvaluator<*>?
|
||||
}
|
||||
@@ -28,4 +29,12 @@ object ScriptDefinitionProperties {
|
||||
val name by typedKey<String>() // Name of the script type, by default "Kotlin script"
|
||||
|
||||
val fileExtension by typedKey<String>() // default: "kts"
|
||||
}
|
||||
|
||||
val baseClass by typedKey<KotlinType>() // script base class
|
||||
}
|
||||
|
||||
fun ScriptDefinitionPropertiesBag.getScriptBaseClass(contextClass: KClass<*>): KClass<*> =
|
||||
getScriptingClass(get(ScriptDefinitionProperties.baseClass), contextClass)
|
||||
|
||||
fun ScriptDefinitionPropertiesBag.getScriptBaseClass(context: Any): KClass<*> =
|
||||
getScriptingClass(get(ScriptDefinitionProperties.baseClass), context::class)
|
||||
|
||||
@@ -27,7 +27,7 @@ data class EvaluationResult(val returnValue: Any?, val environment: ScriptEvalua
|
||||
// NOTE: name inconsistency: run vs evaluate
|
||||
interface ScriptEvaluator<in ScriptBase : Any> {
|
||||
|
||||
// constructor(environment: ScriptingEnvironment) // the constructor is expected from implementations
|
||||
// constructor(properties: ScriptDefinitionPropertiesBag) // the constructor is expected from implementations
|
||||
|
||||
suspend fun eval(
|
||||
compiledScript: CompiledScript<ScriptBase>,
|
||||
|
||||
@@ -13,9 +13,6 @@ typealias ScriptingEnvironment = ChainedPropertyBag
|
||||
|
||||
object ScriptingEnvironmentProperties {
|
||||
|
||||
// required by definitions that extract data from script base class annotations
|
||||
val baseClass by typedKey<KotlinType>()
|
||||
|
||||
// should contain all dependencies needed for baseClass and compilationConfigurator
|
||||
val configurationDependencies by typedKey<List<ScriptDependency>>()
|
||||
|
||||
@@ -40,8 +37,3 @@ fun ScriptingEnvironment.getScriptingClass(type: KotlinType, contextClass: KClas
|
||||
|
||||
fun ScriptingEnvironment.getScriptingClass(type: KotlinType, context: Any): KClass<*> = getScriptingClass(type, context::class)
|
||||
|
||||
fun ScriptingEnvironment.getScriptBaseClass(contextClass: KClass<*>): KClass<*> =
|
||||
getScriptingClass(get(ScriptingEnvironmentProperties.baseClass), contextClass)
|
||||
|
||||
fun ScriptingEnvironment.getScriptBaseClass(context: Any): KClass<*> =
|
||||
getScriptingClass(get(ScriptingEnvironmentProperties.baseClass), context::class)
|
||||
|
||||
Reference in New Issue
Block a user