From f2fba87dcc6bb75c126b3b1cd79e6b4b62e4981a Mon Sep 17 00:00:00 2001 From: Tim Peters Date: Fri, 6 Oct 2000 23:09:00 +0000 Subject: 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. --- Tools/idle/PyParse.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Tools/idle/PyParse.py b/Tools/idle/PyParse.py index 40b6726..ac68caa 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 -- cgit v0.12