Anonymous avatar Anonymous committed 873bec5

codeanalyze: handling escaped strings

Comments (0)

Files changed (2)

rope/base/codeanalyze.py

     def _find_string_start(self, offset):
         kind = self.source[offset]
         offset -= 1
-        while self.source[offset] != kind:
+        while offset > 0:
+            if self.source[offset] == kind and \
+                    (offset == 0 or self.source[offset - 1] != '\\'):
+                break
             offset -= 1
         return offset
 

ropetest/codeanalyzetest.py

         result = self._find_primary(code, len(code) - 2)
         self.assertEquals('(b + c).d[0]()', result)
 
+    def test_getting_primary_and_strings_at_the_end_of_line(self):
+        code = 'f(\'\\\'\')\n'
+        result = self._find_primary(code, len(code) - 1)
+
     # XXX: not crossing new lines
     def xxx_test_getting_primary_and_not_crossing_newlines(self):
         code = '\na = (b + c)\n(4 + 1).x\n'
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.