From: Tim Peters Date: Fri, 6 Oct 2000 23:09:00 +0000 (+0000) Subject: Fix for next iteration of SF bug 115690 (Unicode headaches in IDLE). The X-Git-Tag: v2.0c1~58 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f2fba87dcc6bb75c126b3b1cd79e6b4b62e4981a;p=python Fix for next iteration of SF bug 115690 (Unicode headaches in IDLE). The 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. --- diff --git a/Tools/idle/PyParse.py b/Tools/idle/PyParse.py index 40b6726303..ac68caae25 100644 --- a/Tools/idle/PyParse.py +++ b/Tools/idle/PyParse.py @@ -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