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.
This commit is contained in:
Tim Peters 2000-10-06 23:09:00 +00:00
parent 0a84a338f9
commit f2fba87dcc
1 changed files with 13 additions and 0 deletions

View File

@ -113,6 +113,19 @@ class Parser:
def set_str(self, str): def set_str(self, str):
assert len(str) == 0 or str[-1] == '\n' 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.str = str
self.study_level = 0 self.study_level = 0