⚙️ KitsuneScriptEngine

Główna klasa do uruchamiania skryptów KitsuneScript z poziomu Kotlina.

Podstawowe użycie

import rip.nerd.kitsunescript.api.KitsuneScriptEngine val engine = KitsuneScriptEngine() // Uruchom skrypt val result = engine.eval(""" let x = 10 + 20; x * 2; """) println("Wynik: $result") // 60.0

Builder pattern

val engine = KitsuneScriptEngine.builder() .maxSteps(100000) // Limit kroków .loadModule("math") // Załaduj moduł .loadModule("string") // Załaduj moduł .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

// Ustaw zmienną engine.setGlobal("userName", "Alice") engine.setGlobal("userAge", 25) engine.setGlobal("config", mapOf("debug" to true)) // Pobierz zmienną val value = engine.getGlobal("userName")

Async evaluation

import kotlinx.coroutines.* lifecycleScope.launch { val result = engine.evalSuspend(""" // Długi skrypt... """) // Aktualizuj UI 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}") }