aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2017-03-27 23:15:39 +0100
committerMichael Williamson <mike@zwobble.org>2017-03-27 23:15:39 +0100
commit5b53bb354b7e789b53443a251329aa55fda37e64 (patch)
treea1ffbbc476cc86af1ed3201a6277157675045f73 /src/main/java/org
parent60a93a684ed18ca3c18dafa8120de8ee95b33bc7 (diff)
Support substring with one arg
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java b/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java
index 3208e17..43ca370 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/primitives/CsharpPrimitiveMethods.java
@@ -81,14 +81,24 @@ public class CsharpPrimitiveMethods {
methods.put("substring", new PrimitiveInstanceMethod(
(receiver, arguments) -> {
ExpressionNode startIndex = arguments.get(0);
- ExpressionNode endIndex = arguments.get(1);
- ExpressionNode length = integerSubtract(endIndex, startIndex);
- // TODO: handle length going beyond end-of-string
- return methodCall(
- receiver,
- "Substring",
- list(startIndex, length),
- Types.STRING);
+ if (arguments.size() == 1) {
+ return methodCall(
+ receiver,
+ "Substring",
+ list(startIndex),
+ Types.STRING
+ );
+ } else {
+ ExpressionNode endIndex = arguments.get(1);
+ ExpressionNode length = integerSubtract(endIndex, startIndex);
+ // TODO: handle length going beyond end-of-string
+ return methodCall(
+ receiver,
+ "Substring",
+ list(startIndex, length),
+ Types.STRING
+ );
+ }
},
Types.STRING
));