wisp
 
(Arne Babenhauserheide)
2013-04-22: FIX: broke on escaped string separators: "\""

FIX: broke on escaped string separators: "\""

diff --git a/wisp.py b/wisp.py
--- a/wisp.py
+++ b/wisp.py
@@ -56,7 +56,7 @@ def replaceinwisp(code, string, replacem
                 incomment = not incomment
             # all processing stops in comments
             continue
-        if i == '"':
+        if i == '"' and not code[n-1:n] == "\\":
             instring = not instring
         # all processing stops in strings
         if instring:
@@ -137,7 +137,7 @@ class Line:
         self.comment = ""
         instring = False
         for n, i in enumerate(self.content):
-            if i == '"': 
+            if i == '"' and not self.content[n-1:n] == "\\": 
                 instring = not instring
             if not instring and i == ";":
                 self.comment = self.content[n+1:]
@@ -154,7 +154,7 @@ class Line:
         # go backwards through the content to be able to leave out the
         # space after a colon without breaking later colons.
         for n, i in reversed(list(enumerate(self.content))):
-            if i == '"':
+            if i == '"' and not self.content[n-1:n] == "\\":
                 instring = not instring
             if not instring and i == ")":
                 inbrackets += 1
@@ -202,8 +202,8 @@ def nostringbreaks(code):
     """remove linebreaks inside strings (will be readded at the end)"""
     instring = False
     nostringbreaks = []
-    for char in code:
-        if char == '"':
+    for n, char in enumerate(code):
+        if char == '"' and not code[n-1:n] == "\\":
             instring = not instring
         if instring and char == "\n":
             nostringbreaks.append("\\LINEBREAK")