aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/values/StringValue.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/values/StringValue.java')
-rw-r--r--src/main/java/org/zwobble/couscous/values/StringValue.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java
index 0e3f626..3a1a13d 100644
--- a/src/main/java/org/zwobble/couscous/values/StringValue.java
+++ b/src/main/java/org/zwobble/couscous/values/StringValue.java
@@ -1,15 +1,22 @@
package org.zwobble.couscous.values;
+import java.util.List;
+
import lombok.Value;
+import lombok.val;
@Value
public class StringValue implements InterpreterValue {
String value;
@Override
- public InterpreterValue callMethod(String methodName) {
+ public InterpreterValue callMethod(String methodName, List<InterpreterValue> arguments) {
if (methodName == "length") {
return new IntegerValue(value.length());
+ } else if (methodName == "substring") {
+ val startIndex = (IntegerValue)arguments.get(0);
+ val endIndex = (IntegerValue)arguments.get(1);
+ return new StringValue(value.substring(startIndex.getValue(), endIndex.getValue()));
} else {
throw new UnsupportedOperationException();
}