aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/com/jantuomi
diff options
context:
space:
mode:
authorjantuomi <jans.tuomi@gmail.com>2016-08-01 15:27:15 +0300
committerjantuomi <jans.tuomi@gmail.com>2016-08-01 15:27:15 +0300
commitb41c18256f3488f9cebd80fc928bf34a6abc2677 (patch)
tree37a977bd9917fd50e57c9a0688f6334f2af7abc1 /src/main/com/jantuomi
parentbaceabde7bc971c35ea25016acf60b90d003ac29 (diff)
Implement 'contains' for string datatype
Diffstat (limited to 'src/main/com/jantuomi')
-rw-r--r--src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java
index ebcc3b5..ef67921 100644
--- a/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java
+++ b/src/main/com/jantuomi/tunkki/core/runtime/builtins/globals/ContainsBuiltinFunction.java
@@ -3,6 +3,7 @@ package com.jantuomi.tunkki.core.runtime.builtins.globals;
import com.jantuomi.tunkki.core.parser.datatype.BooleanDatatype;
import com.jantuomi.tunkki.core.parser.datatype.Datatype;
import com.jantuomi.tunkki.core.parser.datatype.ListDatatype;
+import com.jantuomi.tunkki.core.parser.datatype.StringDatatype;
import com.jantuomi.tunkki.exception.TunkkiError;
import java.util.Arrays;
@@ -22,10 +23,16 @@ public class ContainsBuiltinFunction extends BuiltinFunction {
throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
}
- if (params.get(0).getType() != Datatype.Type.List) {
- throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ if (params.get(0).getType() == Datatype.Type.List) {
+ return evaluateOnList(params);
+ }
+ else if (params.get(0).getType() == Datatype.Type.String) {
+ return evaluateOnString(params);
}
+ throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ }
+ private Datatype evaluateOnList(List<Datatype> params) throws TunkkiError {
ListDatatype list = (ListDatatype) params.get(0);
Datatype comp = params.get(1);
@@ -37,6 +44,19 @@ public class ContainsBuiltinFunction extends BuiltinFunction {
return new BooleanDatatype(false);
}
+ private Datatype evaluateOnString(List<Datatype> params) throws TunkkiError {
+ if (params.get(1).getType() != Datatype.Type.String) {
+ throw new TunkkiError(TunkkiError.ExceptionType.FunctionArgumentError, -1, getName(), Datatype.toString(params));
+ }
+
+ StringDatatype string = (StringDatatype) params.get(0);
+ StringDatatype comp = (StringDatatype) params.get(1);
+
+ return new BooleanDatatype(
+ string.getData().contains(comp.getData())
+ );
+ }
+
@Override
public String getName() {
return "contains";