]> granicus.if.org Git - python/commitdiff
Fix for next iteration of SF bug 115690 (Unicode headaches in IDLE). The
authorTim Peters <tim.peters@gmail.com>
Fri, 6 Oct 2000 23:09:00 +0000 (23:09 +0000)
committerTim Peters <tim.peters@gmail.com>
Fri, 6 Oct 2000 23:09:00 +0000 (23:09 +0000)
parsing functions in support of auto-indent weren't expecting Unicode
strings, but text.get() can now return them (although it remains muddy as
to exactly when or why that can happen).  Fixed that with a Big Hammer.

Tools/idle/PyParse.py

index 40b672630344c9c5d17d603444427dbc72ece10e..ac68caae255ea110c7b0c370d3501a71b0fb35b6 100644 (file)
@@ -113,6 +113,19 @@ class Parser:
 
     def set_str(self, str):
         assert len(str) == 0 or str[-1] == '\n'
+        if type(str) == type(u""):
+            # The parse functions have no idea what to do with Unicode, so
+            # replace all Unicode characters with "x".  This is "safe"
+            # so long as the only characters germane to parsing the structure
+            # of Python are 7-bit ASCII.  It's *necessary* because Unicode
+            # strings don't have a .translate() method that supports
+            # deletechars.
+            uniphooey = str
+            str = []
+            push = str.append
+            for raw in map(ord, uniphooey):
+                push(raw < 127 and chr(raw) or "x")
+            str = "".join(str)
         self.str = str
         self.study_level = 0