diff options
| author | jantuomi <jans.tuomi@gmail.com> | 2016-07-27 17:00:15 +0300 |
|---|---|---|
| committer | jantuomi <jans.tuomi@gmail.com> | 2016-07-27 17:00:15 +0300 |
| commit | 080fcd8dc32e18bf395b73aa6a5f14fd9bcf1958 (patch) | |
| tree | 6c3e36eb86ca770c3453d4216d60648e9f94d25c /src/main | |
| parent | 2aebd5103b0d6cd0b6895ecfb4db9857efb956d6 (diff) | |
Implement contains function for checking if element is in a list.
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java | 1 | ||||
| -rw-r--r-- | src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java | 44 |
2 files changed, 45 insertions, 0 deletions
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 2ceefff..94c4fce 100644 --- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/BuiltinManager.java @@ -24,6 +24,7 @@ public class BuiltinManager { builtins.add(new AsIntBuiltinFunction()); builtins.add(new IncludeBuiltinFunction()); builtins.add(new ListBuiltinFunction()); + builtins.add(new ContainsBuiltinFunction()); } public List<Function> getBuiltins() { diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java new file mode 100644 index 0000000..ec8d6c3 --- /dev/null +++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/ContainsBuiltinFunction.java @@ -0,0 +1,44 @@ +package com.jantuomi.tunkki.core.runtime.builtins; + +import com.jantuomi.tunkki.core.parser.datatype.BooleanDataContainer; +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.Arrays; +import java.util.List; + +/** + * Created by jan on 27.7.2016. + */ +public class ContainsBuiltinFunction extends BuiltinFunction { + public ContainsBuiltinFunction() { + super(Arrays.asList("list", "element")); + } + + @Override + public DataContainer evaluate(List<DataContainer> params) throws TunkkiError { + if (params.size() != 2) { + throw new TunkkiError(TunkkiError.ExceptionType.ArgumentError, -1, "Function 'contains' expects two arguments."); + } + + if (params.get(0).getType() != DataContainer.Type.List) { + throw new TunkkiError(TunkkiError.ExceptionType.ArgumentError, -1, "Function 'contains' expects a list as its first argument."); + } + + ListDataContainer list = (ListDataContainer) params.get(0); + DataContainer comp = params.get(1); + + for (DataContainer elem : list.getData()) { + if (elem.equals(comp)) { + return new BooleanDataContainer(true); + } + } + return new BooleanDataContainer(false); + } + + @Override + public String getName() { + return "contains"; + } +} |
