-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Experimental | Optimize & Fix (独立实现KTS的JSR223)
- Loading branch information
1 parent
d6cd747
commit 1212d85
Showing
12 changed files
with
159 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
...ain/kotlin/cn/fd/ratziel/script/internal/jsr223/KotlinJsr223DefaultScriptEngineFactory.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package cn.fd.ratziel.script.internal.jsr223 | ||
|
||
import cn.fd.ratziel.script.kts.KotlinScriptConfiguration | ||
import org.jetbrains.kotlin.cli.common.repl.KotlinJsr223JvmScriptEngineFactoryBase | ||
import org.jetbrains.kotlin.cli.common.repl.ScriptArgsWithTypes | ||
import javax.script.Bindings | ||
import javax.script.ScriptContext | ||
import javax.script.ScriptEngine | ||
import kotlin.script.experimental.jvmhost.jsr223.KotlinJsr223ScriptEngineImpl | ||
|
||
/** | ||
* KotlinJsr223DefaultScriptEngineFactory | ||
* | ||
* @author TheFloodDragon | ||
* @since 2024/7/15 19:02 | ||
*/ | ||
@Suppress("unused") | ||
class KotlinJsr223DefaultScriptEngineFactory : KotlinJsr223JvmScriptEngineFactoryBase() { | ||
|
||
override fun getScriptEngine(): ScriptEngine = | ||
KotlinJsr223ScriptEngineImpl( | ||
this, | ||
KotlinScriptConfiguration.compilation, | ||
KotlinScriptConfiguration.evaluation, | ||
) { ScriptArgsWithTypes(arrayOf(it.getBindings(ScriptContext.ENGINE_SCOPE).orEmpty()), arrayOf(Bindings::class)) } | ||
|
||
} |
45 changes: 45 additions & 0 deletions
45
project/module-script/src/main/kotlin/cn/fd/ratziel/script/kts/KotlinScriptConfiguration.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package cn.fd.ratziel.script.kts | ||
|
||
import kotlin.script.experimental.api.* | ||
import kotlin.script.experimental.jvm.JvmDependencyFromClassLoader | ||
import kotlin.script.experimental.jvm.jvm | ||
import kotlin.script.experimental.jvm.jvmTarget | ||
import kotlin.script.experimental.jvmhost.jsr223.configureProvidedPropertiesFromJsr223Context | ||
import kotlin.script.experimental.jvmhost.jsr223.importAllBindings | ||
import kotlin.script.experimental.jvmhost.jsr223.jsr223 | ||
|
||
/** | ||
* KotlinScriptConfiguration | ||
* | ||
* @author TheFloodDragon | ||
* @since 2024/7/15 19:11 | ||
*/ | ||
object KotlinScriptConfiguration { | ||
|
||
/** | ||
* [ScriptCompilationConfiguration] | ||
*/ | ||
val compilation = ScriptCompilationConfiguration { | ||
refineConfiguration { | ||
beforeCompiling(::configureProvidedPropertiesFromJsr223Context) | ||
} | ||
jvm { | ||
dependencies(JvmDependencyFromClassLoader { this::class.java.classLoader }) | ||
jvmTarget(System.getProperty("java.specification.version") ?: "1.8") | ||
} | ||
jsr223 { | ||
importAllBindings(true) | ||
} | ||
ide { | ||
acceptedLocations(ScriptAcceptedLocation.Everywhere) | ||
} | ||
} | ||
|
||
/** | ||
* [ScriptEvaluationConfiguration] | ||
*/ | ||
val evaluation = ScriptEvaluationConfiguration { | ||
refineConfigurationBeforeEvaluate(::configureProvidedPropertiesFromJsr223Context) | ||
} | ||
|
||
} |
1 change: 1 addition & 0 deletions
1
project/module-script/src/main/resources/META-INF/services/javax.script.ScriptEngineFactory
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
cn.fd.ratziel.script.internal.jsr223.KotlinJsr223DefaultScriptEngineFactory |