Add new modules to standard library

This commit is contained in:
2020-03-13 17:28:02 +01:00
parent 264100eef1
commit 5680ed4e42
17 changed files with 321 additions and 4 deletions

View File

@@ -2,9 +2,10 @@ package io.smnp.ext.io
import io.smnp.ext.NativeModuleProvider
import io.smnp.ext.io.function.PrintlnFunction
import io.smnp.ext.io.function.ReadFunction
import org.pf4j.Extension
@Extension
class IoModule : NativeModuleProvider("smnp.io") {
override fun functions() = listOf(PrintlnFunction())
override fun functions() = listOf(PrintlnFunction(), ReadFunction())
}

View File

@@ -0,0 +1,18 @@
package io.smnp.ext.io.function
import io.smnp.callable.function.Function
import io.smnp.callable.function.FunctionDefinitionTool
import io.smnp.callable.signature.Signature.Companion.simple
import io.smnp.type.enumeration.DataType.STRING
import io.smnp.type.matcher.Matcher.Companion.ofType
import io.smnp.type.matcher.Matcher.Companion.optional
import io.smnp.type.model.Value
class ReadFunction : Function("read") {
override fun define(new: FunctionDefinitionTool) {
new function simple(optional(ofType(STRING))) body { _, arguments ->
arguments.getOrNull(0)?.let { print(it.value!!) }
Value.string(readLine() ?: "")
}
}
}