🧩 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

// Zarejestruj globalnie KitsuneModules.register(MyModule()) // Lub dla konkretnego engine'a val engine = KitsuneScriptEngine() engine.loadModule(MyModule())

Użycie w skrypcie

use "mymodule"; let result = myFunction("hello"); print(result); // "HELLO" print(add(10, 20)); // 30

Konwersja wartości

// Kotlin -> Value 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 -> Kotlin value.asNumber() // Double value.asString() // String value.asBool() // Boolean value.asList() // List value.asMap() // Map