⚙️ KitsuneScriptEngine
Główna klasa do uruchamiania skryptów KitsuneScript z poziomu Kotlina.
Podstawowe użycie
import rip.nerd.kitsunescript.api.KitsuneScriptEngine
val engine = KitsuneScriptEngine()
val result = engine.eval("""
let x = 10 + 20;
x * 2;
""")
println("Wynik: $result")
Builder pattern
val engine = KitsuneScriptEngine.builder()
.maxSteps(100000)
.loadModule("math")
.loadModule("string")
.build()
Rejestracja funkcji
import rip.nerd.kitsunescript.runtime.HostFunction
import rip.nerd.kitsunescript.runtime.Value
engine.register("log", HostFunction { args, _ ->
println(args.joinToString(" ") { it.asString() })
Value.Null
})
engine.register("getTime", HostFunction { _, _ ->
Value.Num(System.currentTimeMillis().toDouble())
})
Zmienne globalne
engine.setGlobal("userName", "Alice")
engine.setGlobal("userAge", 25)
engine.setGlobal("config", mapOf("debug" to true))
val value = engine.getGlobal("userName")
Async evaluation
import kotlinx.coroutines.*
lifecycleScope.launch {
val result = engine.evalSuspend("""
// Długi skrypt...
""")
withContext(Dispatchers.Main) {
textView.text = result.asString()
}
}
Obsługa błędów
try {
engine.eval("invalid code {")
} catch (e: KitsuneScriptException) {
println("Błąd: ${e.message}")
println("Linia: ${e.line}")
}