diff --git a/modules/io/build.gradle b/modules/io/build.gradle new file mode 100644 index 0000000..e69de29 diff --git a/modules/io/gradle.properties b/modules/io/gradle.properties new file mode 100644 index 0000000..ba38c10 --- /dev/null +++ b/modules/io/gradle.properties @@ -0,0 +1,7 @@ +version=0.0.1 + +pluginVersion=0.1 +pluginId=smnp.io +pluginClass= +pluginProvider=Bartłomiej Pluta +pluginDependencies= \ No newline at end of file diff --git a/modules/io/src/main/kotlin/io/smnp/ext/io/IoModule.kt b/modules/io/src/main/kotlin/io/smnp/ext/io/IoModule.kt new file mode 100644 index 0000000..f7f1688 --- /dev/null +++ b/modules/io/src/main/kotlin/io/smnp/ext/io/IoModule.kt @@ -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() +} \ No newline at end of file diff --git a/modules/io/src/main/kotlin/io/smnp/ext/io/function/PrintlnFunction.kt b/modules/io/src/main/kotlin/io/smnp/ext/io/function/PrintlnFunction.kt new file mode 100644 index 0000000..41a5edd --- /dev/null +++ b/modules/io/src/main/kotlin/io/smnp/ext/io/function/PrintlnFunction.kt @@ -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).joinToString("") { it.value!!.toString() }) + Value.void() + } + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 6d92901..f409ff9 100644 --- a/settings.gradle +++ b/settings.gradle @@ -4,3 +4,4 @@ include 'app' include 'modules' include 'modules:lang' +include 'modules:io' \ No newline at end of file