diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-21 12:01:36 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-21 12:01:36 +0000 |
| commit | 9f294b76b8b7e5c7eb9bc0a3dff82ba083a4d783 (patch) | |
| tree | 62e57ea03e3d5e8c446244b032a6b1df0aa2c30d /src | |
| parent | 9604bf821f926e9fc653705ec78093ccb19d1195 (diff) | |
Escape string literals
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java | 7 | ||||
| -rw-r--r-- | src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java | 7 |
2 files changed, 12 insertions, 2 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 index da7445c..9112381 100644 --- a/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java +++ b/src/main/java/org/zwobble/couscous/backends/python/PythonWriter.java @@ -19,7 +19,12 @@ public class PythonWriter { public void writeStringLiteral(String value) { builder.append("\""); - builder.append(value); + builder.append(value + .replace("\\", "\\\\") + .replace("\"", "\\\"") + .replace("\n", "\\n") + .replace("\r", "\\r") + .replace("\t", "\\t")); builder.append("\""); } diff --git a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java index 9271d85..9411d3e 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/python/PythonSerializerTests.java @@ -36,10 +36,15 @@ public class PythonSerializerTests { @Test public void stringsAreNotBoxed() { - // TODO: escaping String output = serialize(pythonStringLiteral("blah")); assertEquals("\"blah\"", output); } + + @Test + public void stringsAreEscaped() { + String output = serialize(pythonStringLiteral("\"\n\r\t\\")); + assertEquals("\"\\\"\\n\\r\\t\\\\\"", output); + } @Test public void booleansAreNotBoxed() { |
