From 985215963e888ab7b243ce76695fa8cb3c5026ec Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 15 Jan 2016 17:53:54 +0000 Subject: Move java.lang.String for C# into a resource --- .../couscous/backends/csharp/CsharpBackend.java | 22 +++++++++++++++++----- .../resources/csharp/runtime/java/lang/String.cs | 4 ++++ 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 src/main/resources/csharp/runtime/java/lang/String.cs (limited to 'src') 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 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) { diff --git a/src/main/resources/csharp/runtime/java/lang/String.cs b/src/main/resources/csharp/runtime/java/lang/String.cs new file mode 100644 index 0000000..141e320 --- /dev/null +++ b/src/main/resources/csharp/runtime/java/lang/String.cs @@ -0,0 +1,4 @@ +namespace Couscous.java.lang { + internal class String { + } +} -- cgit v1.2.3