aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java7
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java72
2 files changed, 4 insertions, 75 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
index 45739da..6105715 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonSerializer.java
@@ -1,5 +1,6 @@
package org.zwobble.couscous.backends.python;
+import org.zwobble.couscous.backends.SourceCodeWriter;
import org.zwobble.couscous.backends.python.ast.*;
import org.zwobble.couscous.backends.python.ast.visitors.PythonNodeVisitor;
import org.zwobble.couscous.util.Action;
@@ -11,15 +12,15 @@ import static com.google.common.collect.Iterables.skip;
public class PythonSerializer implements PythonNodeVisitor {
public static String serialize(PythonNode node) {
- PythonWriter writer = new PythonWriter();
+ SourceCodeWriter writer = new SourceCodeWriter();
PythonSerializer serializer = new PythonSerializer(writer);
serializer.write(node);
return writer.asString();
}
- private final PythonWriter writer;
+ private final SourceCodeWriter writer;
- private PythonSerializer(PythonWriter writer) {
+ private PythonSerializer(SourceCodeWriter writer) {
this.writer = writer;
}
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java b/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java
deleted file mode 100644
index 9112381..0000000
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package org.zwobble.couscous.backends.python;
-
-import org.zwobble.couscous.util.Action;
-
-import com.google.common.base.Strings;
-
-public class PythonWriter {
- private static final int SPACES_PER_INDENT = 4;
- private final StringBuilder builder = new StringBuilder();
- private int depth = 0;
-
- public String asString() {
- return builder.toString();
- }
-
- public void writeInteger(int value) {
- builder.append(value);
- }
-
- public void writeStringLiteral(String value) {
- builder.append("\"");
- builder.append(value
- .replace("\\", "\\\\")
- .replace("\"", "\\\"")
- .replace("\n", "\\n")
- .replace("\r", "\\r")
- .replace("\t", "\\t"));
- builder.append("\"");
- }
-
- public void writeKeyword(String keyword) {
- builder.append(keyword);
- }
-
- public void writeSpace() {
- builder.append(" ");
- }
-
- public void writeIdentifier(String name) {
- builder.append(name);
- }
-
- public void writeSymbol(String symbol) {
- builder.append(symbol);
- }
-
- public void startBlock() {
- depth++;
- writeSymbol(":");
- builder.append("\n");
- }
-
- public void endBlock() {
- depth--;
- }
-
- public void writeStatement(Action action) {
- startStatement();
- action.run();
- endStatement();
- }
-
- private void startStatement() {
- builder.append(Strings.repeat(" ", depth * SPACES_PER_INDENT));
- }
-
- private void endStatement() {
- if (builder.charAt(builder.length() - 1) != '\n') {
- builder.append("\n");
- }
- }
-}