aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/values/StringValue.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-09-30 20:14:04 +0100
committerMichael Williamson <mike@zwobble.org>2015-09-30 20:14:04 +0100
commit37968a7c65eaf96ff0ab937f0a7827e0891c8880 (patch)
tree5b2122a46752a28741112189d613d8b4c770751f /src/main/java/org/zwobble/couscous/values/StringValue.java
parentc1de40d3615a8efc852fd1a12832437ee3ce4318 (diff)
Throw error on wrong number of arguments
Diffstat (limited to 'src/main/java/org/zwobble/couscous/values/StringValue.java')
-rw-r--r--src/main/java/org/zwobble/couscous/values/StringValue.java15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/main/java/org/zwobble/couscous/values/StringValue.java b/src/main/java/org/zwobble/couscous/values/StringValue.java
index da45f02..2d4bf17 100644
--- a/src/main/java/org/zwobble/couscous/values/StringValue.java
+++ b/src/main/java/org/zwobble/couscous/values/StringValue.java
@@ -1,18 +1,21 @@
package org.zwobble.couscous.values;
+import static java.util.Arrays.asList;
+
import lombok.Value;
import lombok.val;
@Value
public class StringValue implements InterpreterValue {
private static final ConcreteType<?> TYPE = ConcreteType.<StringValue>builder()
- .method("length", (receiver, arguments) -> new IntegerValue(receiver.value.length()))
+ .method("length", asList(), (receiver, arguments) -> new IntegerValue(receiver.value.length()))
- .method("substring", (receiver, arguments) -> {
- val startIndex = arguments.pop(IntegerValue.class);
- val endIndex = arguments.pop(IntegerValue.class);
- return new StringValue(receiver.value.substring(startIndex.getValue(), endIndex.getValue()));
- })
+ .method("substring", asList(IntegerValue.TYPE, IntegerValue.TYPE),
+ (receiver, arguments) -> {
+ val startIndex = (IntegerValue)arguments.get(0);
+ val endIndex = (IntegerValue)arguments.get(1);
+ return new StringValue(receiver.value.substring(startIndex.getValue(), endIndex.getValue()));
+ })
.build();