aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-05 17:22:51 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-05 17:22:51 +0100
commitd0431b9abbf914affe37a47f5f2a4338a5f8a595 (patch)
tree7372b2a6333676f2d7e7db1f27fb6bee099e8de8 /src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java
parent1448733a03e965d5cb9261a3519370ff5b34122d (diff)
Fix package of PythonWriter
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java b/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java
new file mode 100644
index 0000000..2551700
--- /dev/null
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java
@@ -0,0 +1,60 @@
+package org.zwobble.couscous.backends.python;
+
+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);
+ 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 startStatement() {
+ builder.append(Strings.repeat(" ", depth * SPACES_PER_INDENT));
+ }
+
+ public void endStatement() {
+ if (builder.charAt(builder.length() - 1) != '\n') {
+ builder.append("\n");
+ }
+ }
+
+}