diff options
Diffstat (limited to 'src/main/java/org/zwobble/couscous/values/StringValue.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/values/StringValue.java | 15 |
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(); |
