diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:04:28 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-01-16 15:04:28 +0000 |
| commit | bc9cf8d94f1baa00c35a0a4d3131e4ca52deaa7c (patch) | |
| tree | 42612a2155780dd8222a5caa51c201b222d4cf88 /src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | |
| parent | 966dbe9601b6b1b177c2771474947d66990e240a (diff) | |
Move C# class serialization into CsharpSerializer
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/csharp/CsharpSerializer.java | 55 |
1 files changed, 40 insertions, 15 deletions
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(); } } |
