🧩 Tworzenie własnych modułów
Możesz rozszerzyć KitsuneScript o własne moduły z funkcjami.
Podstawowy moduł
import rip.nerd.kitsunescript.api.KitsuneModule
import rip.nerd.kitsunescript.runtime.Value
class MyModule : KitsuneModule {
override val name = "mymodule"
override fun install(engine: KitsuneScriptEngine) {
engine.register("myFunction") { args, _ ->
val input = args.firstOrNull()?.asString() ?: ""
Value.Str(input.uppercase())
}
engine.register("add") { args, _ ->
val a = args.getOrNull(0)?.asNumber() ?: 0.0
val b = args.getOrNull(1)?.asNumber() ?: 0.0
Value.Num(a + b)
}
}
}
Rejestracja modułu
KitsuneModules.register(MyModule())
val engine = KitsuneScriptEngine()
engine.loadModule(MyModule())
Użycie w skrypcie
use "mymodule";
let result = myFunction("hello");
print(result);
print(add(10, 20));
Konwersja wartości
Value.Num(42.0)
Value.Str("text")
Value.Bool(true)
Value.Null
Value.ListVal(listOf(Value.Num(1.0), Value.Num(2.0)))
Value.MapVal(mutableMapOf("key" to Value.Str("value")))
value.asNumber()
value.asString()
value.asBool()
value.asList()
value.asMap()