aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java19
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java1
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java29
3 files changed, 42 insertions, 7 deletions
diff --git a/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java b/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java
index 5cd7e90..b8afb9f 100644
--- a/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java
+++ b/src/main/com/jantuomi/tunkki/core/parser/datatype/ListDataContainer.java
@@ -9,26 +9,31 @@ import java.util.stream.Collectors;
/**
* Created by jan on 27.7.2016.
*/
-public class ListDataContainer extends DataContainer{
+public class ListDataContainer extends DataContainer<List<DataContainer>> {
+
+ public ListDataContainer(List<DataContainer> elements) {
+ setData(elements);
+ }
+
@Override
public Type getType() {
return Type.List;
}
- private List<DataContainer> elements = new ArrayList<>();
-
@Override
public String toString() {
- List<String> strings = elements.stream().map( dataContainer -> dataContainer.toString() ).collect(Collectors.toList());
- return String.join(", ", strings);
+ List<String> strings = getData().stream().map( dataContainer -> dataContainer.toString() ).collect(Collectors.toList());
+ return String.format("[%s]", String.join(", ", strings));
}
@Override
public DataContainer add(DataContainer other) throws TunkkiError {
switch (other.getType()) {
case List:
- elements.addAll(((ListDataContainer) other).elements);
- break;
+ List<DataContainer> newList = new ArrayList<>();
+ newList.addAll(getData());
+ newList.addAll(((ListDataContainer) other).getData());
+ return new ListDataContainer(newList);
}
return null;
}
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java
index 94d25a6..2ceefff 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java
@@ -23,6 +23,7 @@ public class BuiltinManager {
builtins.add(new ConcatBuiltinFunction());
builtins.add(new AsIntBuiltinFunction());
builtins.add(new IncludeBuiltinFunction());
+ builtins.add(new ListBuiltinFunction());
}
public List<Function> getBuiltins() {
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java
new file mode 100644
index 0000000..e09f809
--- /dev/null
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ListBuiltinFunction.java
@@ -0,0 +1,29 @@
+package com.jantuomi.tunkki.core.runtime.builtins;
+
+import com.jantuomi.tunkki.core.parser.datatype.DataContainer;
+import com.jantuomi.tunkki.core.parser.datatype.ListDataContainer;
+import com.jantuomi.tunkki.exception.TunkkiError;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Created by jan on 27.7.2016.
+ */
+public class ListBuiltinFunction extends BuiltinFunction {
+ public ListBuiltinFunction() {
+ super(Arrays.asList("elements"));
+ }
+
+ @Override
+ public DataContainer evaluate(List<DataContainer> params) throws TunkkiError {
+ ListDataContainer data = new ListDataContainer(params);
+ return data;
+ }
+
+ @Override
+ public String getName() {
+ return "list";
+ }
+}