Pass script source directly instead of via configuration
This commit is contained in:
@@ -8,6 +8,7 @@ package kotlin.script.experimental.api
|
||||
interface ScriptCompiler {
|
||||
|
||||
suspend fun compile(
|
||||
script: ScriptSource,
|
||||
configuration: ScriptCompileConfiguration,
|
||||
configurator: ScriptCompilationConfigurator? = null
|
||||
): ResultWithDiagnostics<CompiledScript<*>>
|
||||
|
||||
+6
-2
@@ -29,9 +29,13 @@ abstract class BasicScriptingHost<ScriptBase : Any>(
|
||||
) {
|
||||
open fun <T> runInCoroutineContext(block: suspend CoroutineScope.() -> T): T = runBlocking { block() }
|
||||
|
||||
open fun eval(configuration: ScriptCompileConfiguration, environment: ScriptEvaluationEnvironment): ResultWithDiagnostics<EvaluationResult> =
|
||||
open fun eval(
|
||||
script: ScriptSource,
|
||||
configuration: ScriptCompileConfiguration,
|
||||
environment: ScriptEvaluationEnvironment
|
||||
): ResultWithDiagnostics<EvaluationResult> =
|
||||
runInCoroutineContext {
|
||||
val compiled = compiler.compile(configuration, configurator)
|
||||
val compiled = compiler.compile(script, configuration, configurator)
|
||||
when (compiled) {
|
||||
is ResultWithDiagnostics.Failure -> compiled
|
||||
is ResultWithDiagnostics.Success -> {
|
||||
|
||||
@@ -5,11 +5,9 @@
|
||||
|
||||
package kotlin.script.experimental.host
|
||||
|
||||
import kotlin.script.experimental.api.ScriptSource
|
||||
import kotlin.script.experimental.api.ScriptSourceFragments
|
||||
import kotlin.script.experimental.api.ScriptSourceNamedFragment
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
import kotlin.script.experimental.api.*
|
||||
|
||||
fun ScriptSourceFragments.isWholeFile(): Boolean = fragments?.isEmpty() ?: true
|
||||
|
||||
@@ -20,14 +18,15 @@ fun ScriptSource.getScriptText(): String = when {
|
||||
else -> throw RuntimeException("unable to get text from null script")
|
||||
}
|
||||
|
||||
fun ScriptSourceFragments.getMergedScriptText(): String {
|
||||
val originalScriptText = originalSource.getScriptText()
|
||||
return if (isWholeFile()) {
|
||||
fun getMergedScriptText(script: ScriptSource, configuration: ScriptCompileConfiguration): String {
|
||||
val originalScriptText = script.getScriptText()
|
||||
val sourceFragments = configuration.getOrNull(ScriptCompileConfigurationParams.scriptSourceFragments)
|
||||
return if (sourceFragments == null || sourceFragments.isWholeFile()) {
|
||||
originalScriptText
|
||||
} else {
|
||||
val sb = StringBuilder(originalScriptText.length)
|
||||
var prevFragment: ScriptSourceNamedFragment? = null
|
||||
for (fragment in fragments!!) {
|
||||
for (fragment in sourceFragments!!.fragments!!) {
|
||||
val fragmentStartPos = fragment.range.start.absolutePos
|
||||
val fragmentEndPos = fragment.range.end.absolutePos
|
||||
if (fragmentStartPos == null || fragmentEndPos == null)
|
||||
|
||||
Reference in New Issue
Block a user