aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-01-15 17:53:54 +0000
committerMichael Williamson <mike@zwobble.org>2016-01-15 17:53:54 +0000
commit985215963e888ab7b243ce76695fa8cb3c5026ec (patch)
treee201101dd902c08a64cc80d17d5089d5ce4b46ce /src/main/java/org
parent7663b33d174cbdef3dd88364b1854aadee74f8aa (diff)
Move java.lang.String for C# into a resource
Diffstat (limited to 'src/main/java/org')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
index adf306f..3fe1d5e 100644
--- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
+++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpBackend.java
@@ -1,20 +1,25 @@
package org.zwobble.couscous.backends.csharp;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
+import com.google.common.io.Resources;
import org.zwobble.couscous.Backend;
import org.zwobble.couscous.ast.*;
import org.zwobble.couscous.ast.visitors.ExpressionNodeMapper;
import org.zwobble.couscous.values.PrimitiveValueVisitor;
import java.io.IOException;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import static com.google.common.collect.Iterables.transform;
-import static org.zwobble.couscous.util.ExtraLists.list;
public class CsharpBackend implements Backend {
+ private static final List<String> RUNTIME_FILES = ImmutableList.of(
+ "java/lang/String.cs");
+
private final Path directoryPath;
private final String namespace;
@@ -31,10 +36,17 @@ public class CsharpBackend implements Backend {
transform(
classes,
classNode -> compileClass(classNode)),
- list(
- "namespace " + namespace + ".java.lang {" +
- " internal class String { }" +
- "}")));
+ transform(
+ RUNTIME_FILES,
+ runtimeFile -> readRuntimeFile(runtimeFile))));
+ }
+
+ private String readRuntimeFile(String runtimeFile) {
+ try {
+ return Resources.toString(Resources.getResource("csharp/runtime/" + runtimeFile), StandardCharsets.UTF_8);
+ } catch (IOException exception) {
+ throw new RuntimeException(exception);
+ }
}
private String compileClass(ClassNode classNode) {