diff --git a/orx-olive/build.gradle b/orx-olive/build.gradle index f669f5ad..db39aab2 100644 --- a/orx-olive/build.gradle +++ b/orx-olive/build.gradle @@ -2,13 +2,8 @@ dependencies { implementation project(":orx-file-watcher") // -- JSR 223, old style script loader - api "org.jetbrains.kotlin:kotlin-scripting-jsr223:$kotlinVersion" - - api "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion" - api "org.jetbrains.kotlin:kotlin-scripting-jvm-host-embeddable:$kotlinVersion" - api "org.jetbrains.kotlin:kotlin-scripting-common:$kotlinVersion" - api "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable:$kotlinVersion" - api "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlinVersion" - api "org.jetbrains.kotlin:kotlin-compiler:$kotlinVersion" - api "org.jetbrains.kotlin:kotlin-script-runtime:$kotlinVersion" + implementation "org.jetbrains.kotlin:kotlin-scripting-jvm:$kotlinVersion" + implementation "org.jetbrains.kotlin:kotlin-scripting-jvm-host:$kotlinVersion" + implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion" + implementation "org.jetbrains.kotlin:kotlin-scripting-jsr223:$kotlinVersion" } \ No newline at end of file diff --git a/orx-olive/src/main/kotlin/ScriptObjectLoaderKSH.kt b/orx-olive/src/main/kotlin/ScriptObjectLoaderKSH.kt index 9f16f063..41d1fdaa 100644 --- a/orx-olive/src/main/kotlin/ScriptObjectLoaderKSH.kt +++ b/orx-olive/src/main/kotlin/ScriptObjectLoaderKSH.kt @@ -30,6 +30,20 @@ fun loadFromScriptKSH( } } -): T = (evalScriptWithConfiguration(script.readText(), host, body).valueOrThrow().returnValue as ResultValue.Value).value as T +): T = loadFromScriptKSH(script.readText(), host, body) + +@Suppress("UNCHECKED_CAST") +fun loadFromScriptKSH( + script: String, + host: BasicScriptingHost = BasicJvmScriptingHost(), + body: ScriptCompilationConfiguration.Builder.() -> Unit = { + + jvm { + dependenciesFromCurrentContext(wholeClasspath = true) + } + + } +): T = (evalScriptWithConfiguration(script, host, body).valueOrThrow().returnValue as ResultValue.Value).value as T + diff --git a/orx-olive/src/test/kotlin/TestLoadScript.kt b/orx-olive/src/test/kotlin/TestLoadScript.kt new file mode 100644 index 00000000..26f7631d --- /dev/null +++ b/orx-olive/src/test/kotlin/TestLoadScript.kt @@ -0,0 +1,18 @@ +import org.amshove.kluent.`should be equal to` +import org.openrndr.extra.olive.ScriptObjectLoader +import org.openrndr.extra.olive.loadFromScript +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +object TestLoadScript : Spek({ + + describe("some script") { + val loader = ScriptObjectLoader() + + val number = loader.load("5") + + it("should evaluate properly") { + number `should be equal to` 5 + } + } +}) \ No newline at end of file diff --git a/orx-olive/src/test/kotlin/TestLoadScriptKSH.kt b/orx-olive/src/test/kotlin/TestLoadScriptKSH.kt new file mode 100644 index 00000000..39834653 --- /dev/null +++ b/orx-olive/src/test/kotlin/TestLoadScriptKSH.kt @@ -0,0 +1,17 @@ +import org.amshove.kluent.`should be equal to` +import org.openrndr.extra.olive.ScriptObjectLoader +import org.openrndr.extra.olive.loadFromScript +import org.openrndr.extra.olive.loadFromScriptKSH +import org.spekframework.spek2.Spek +import org.spekframework.spek2.style.specification.describe + +object TestLoadScriptKSH : Spek({ + + describe("some script") { + val number = loadFromScriptKSH("5") + + it("should evaluate properly") { + number `should be equal to` 5 + } + } +}) \ No newline at end of file