From bc9cf8d94f1baa00c35a0a4d3131e4ca52deaa7c Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 16 Jan 2016 15:04:28 +0000 Subject: Move C# class serialization into CsharpSerializer --- .../couscous/backends/csharp/CsharpSerializer.java | 55 ++++++++++++++++------ 1 file changed, 40 insertions(+), 15 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java') diff --git a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java index 72160d3..360fea1 100644 --- a/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java +++ b/src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java @@ -165,20 +165,22 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(MethodNode method) { - writer.writeKeyword("internal"); - writer.writeSpace(); - writer.writeKeyword("static"); - writer.writeSpace(); - writer.writeKeyword("dynamic"); - writer.writeSpace(); - writer.writeIdentifier(method.getName()); - writer.writeSymbol("("); - writer.writeSymbol(")"); - writer.startBlock(); - for (StatementNode statement : method.getBody()) { - writer.writeStatement(() -> write(statement)); - } - writer.endBlock(); + writer.writeStatement(() -> { + writer.writeKeyword("internal"); + writer.writeSpace(); + writer.writeKeyword("static"); + writer.writeSpace(); + writer.writeKeyword("dynamic"); + writer.writeSpace(); + writer.writeIdentifier(method.getName()); + writer.writeSymbol("("); + writer.writeSymbol(")"); + writer.startBlock(); + for (StatementNode statement : method.getBody()) { + writer.writeStatement(() -> write(statement)); + } + writer.endBlock(); + }); } @Override @@ -193,6 +195,29 @@ public class CsharpSerializer implements NodeVisitor { @Override public void visit(ClassNode classNode) { - throw new UnsupportedOperationException(); + String namespace = this.namespace + + classNode.getName().getPackage() + .map(packageName -> "." + packageName) + .orElse(""); + writer.writeKeyword("namespace"); + writer.writeSpace(); + writer.writeIdentifier(namespace); + writer.startBlock(); + writer.writeStatement(() -> { + writer.writeKeyword("internal"); + writer.writeSpace(); + writer.writeKeyword("class"); + writer.writeSpace(); + writer.writeIdentifier(classNode.getSimpleName()); + writer.startBlock(); + + for (MethodNode method : classNode.getMethods()) { + write(method); + } + + writer.endBlock(); + }); + + writer.endBlock(); } } -- cgit v1.2.3