From 9f294b76b8b7e5c7eb9bc0a3dff82ba083a4d783 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 21 Nov 2015 12:01:36 +0000 Subject: Escape string literals --- .../java/org/zwobble/couscous/backends/python/PythonWriter.java | 7 ++++++- .../couscous/tests/backends/python/PythonSerializerTests.java | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'src') 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() { -- cgit v1.2.3