Create smnp.io module with println() function

This commit is contained in:
2020-03-11 20:52:30 +01:00
parent 473f6b862c
commit 6264be6573
5 changed files with 40 additions and 0 deletions

0
modules/io/build.gradle Normal file
View File

View File

@@ -0,0 +1,7 @@
version=0.0.1
pluginVersion=0.1
pluginId=smnp.io
pluginClass=
pluginProvider=Bartłomiej Pluta
pluginDependencies=

View File

@@ -0,0 +1,15 @@
package io.smnp.ext.io
import io.smnp.callable.method.Method
import io.smnp.ext.ModuleDefinition
import io.smnp.ext.io.function.PrintlnFunction
import org.pf4j.Extension
@Extension
class IoModule : ModuleDefinition {
override fun modulePath() = "smnp.io"
override fun functions() = listOf(PrintlnFunction())
override fun methods() = emptyList<Method>()
}

View File

@@ -0,0 +1,17 @@
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.vararg
import io.smnp.type.matcher.Matcher.Companion.allTypes
import io.smnp.type.model.Value
class PrintlnFunction : Function("println") {
override fun define(new: FunctionDefinitionTool) {
new function vararg(allTypes()) define { _module, (vararg) ->
// TODO: Implement equivalent of "toString()" method
println((vararg.value!! as List<Value>).joinToString("") { it.value!!.toString() })
Value.void()
}
}
}

View File

@@ -4,3 +4,4 @@ include 'app'
include 'modules'
include 'modules:lang'
include 'modules:io'