aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2016-06-21 22:28:38 +0300
committerJan Tuomi <jans.tuomi@gmail.com>2016-07-26 19:47:08 +0300
commit485fe60b9838708a07b1d1af7054c729cfa9bbf5 (patch)
treee290f96ffe5723e6913119d067d1966d521f7261
parentbb809670621accc4ac57b989d05ac68ce6cd94b9 (diff)
Add builtin function 'concat'
-rw-r--r--main/core/runtime/builtins/BuiltinManager.java1
-rw-r--r--main/core/runtime/builtins/ConcatBuiltinFunction.java38
-rw-r--r--test/resources/program.bork2
3 files changed, 40 insertions, 1 deletions
diff --git a/main/core/runtime/builtins/BuiltinManager.java b/main/core/runtime/builtins/BuiltinManager.java
index e001cda..a16d8e9 100644
--- a/main/core/runtime/builtins/BuiltinManager.java
+++ b/main/core/runtime/builtins/BuiltinManager.java
@@ -20,6 +20,7 @@ public class BuiltinManager {
private BuiltinManager() {
builtins.add(new OutBuiltinFunction());
builtins.add(new InBuiltinFunction());
+ builtins.add(new ConcatBuiltinFunction());
}
public List<Function> getBuiltins() {
diff --git a/main/core/runtime/builtins/ConcatBuiltinFunction.java b/main/core/runtime/builtins/ConcatBuiltinFunction.java
new file mode 100644
index 0000000..5f87a38
--- /dev/null
+++ b/main/core/runtime/builtins/ConcatBuiltinFunction.java
@@ -0,0 +1,38 @@
+package com.jantuomi.interpreter.main.core.runtime.builtins;
+
+import com.jantuomi.interpreter.main.core.parser.datatype.DataContainer;
+import com.jantuomi.interpreter.main.core.parser.datatype.StringDataContainer;
+import com.jantuomi.interpreter.main.core.runtime.Function;
+import com.jantuomi.interpreter.main.exception.InterpreterException;
+
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Created by jan on 21.6.2016.
+ */
+public class ConcatBuiltinFunction extends Function {
+ public ConcatBuiltinFunction() {
+ super(
+ Arrays.asList("strings"),
+ null
+ );
+ }
+
+ @Override
+ public String getName() {
+ return "concat";
+ }
+
+ @Override
+ public DataContainer evaluate(List<DataContainer> params) throws InterpreterException {
+ StringBuilder sb = new StringBuilder();
+ for (DataContainer d : params) {
+ sb.append(d.getData());
+ }
+
+ return new StringDataContainer(
+ sb.toString()
+ );
+ }
+}
diff --git a/test/resources/program.bork b/test/resources/program.bork
index 8159939..0901bd7 100644
--- a/test/resources/program.bork
+++ b/test/resources/program.bork
@@ -14,7 +14,7 @@ sum(x y)
decl user_input
set user_input in("give input: ")
-out( + + "your input was " user_input "!" )
+out( concat("your input was: " user_input "!") )
decl var
set var true