From 3eec7620be596daf4c3f96dbc7fc93afcf639b00 Mon Sep 17 00:00:00 2001 From: Just van Rossum Date: Tue, 10 Jul 2001 19:25:40 +0000 Subject: - fixed some re usage, partly so it'll still work when re uses pre instead of sre, and partly fixing re -> regex porting oversights - fixed PyFontify.py so it actually *works* again.. --- Mac/Tools/IDE/PyBrowser.py | 2 +- Mac/Tools/IDE/PyEdit.py | 4 +-- Mac/Tools/IDE/PyFontify.py | 67 ++++++++++++++++++++++++---------------------- Mac/Tools/IDE/Wcontrols.py | 8 ------ 4 files changed, 38 insertions(+), 43 deletions(-) diff --git a/Mac/Tools/IDE/PyBrowser.py b/Mac/Tools/IDE/PyBrowser.py index 19319a1..c8e5066 100644 --- a/Mac/Tools/IDE/PyBrowser.py +++ b/Mac/Tools/IDE/PyBrowser.py @@ -13,7 +13,7 @@ opensolidid = struct.pack('h', 471) arrows = (nullid, closedid, openid, closedsolidid, opensolidid) -has_ctlcharsRE = re.compile('[\000-\037\177-\377]') +has_ctlcharsRE = re.compile(r'[\000-\037\177-\377]') def ctlcharsREsearch(str): if has_ctlcharsRE.search(str) is None: return -1 diff --git a/Mac/Tools/IDE/PyEdit.py b/Mac/Tools/IDE/PyEdit.py index ac6cc0e..10f583f 100644 --- a/Mac/Tools/IDE/PyEdit.py +++ b/Mac/Tools/IDE/PyEdit.py @@ -790,7 +790,7 @@ def _escape(where, what) : def _makewholewordpattern(word): # first, escape special regex chars - for esc in "\\[]().*^+$?": + for esc in "\\[]()|.*^+$?": word = _escape(word, esc) notwordcharspat = '[^' + _wordchars + ']' pattern = '(' + word + ')' @@ -1166,7 +1166,7 @@ def execstring(pytext, globals, locals, filename="", debugging=0, PyDebugger.stop() -_identifieRE = re.compile("[A-Za-z_][A-Za-z_0-9]*") +_identifieRE = re.compile(r"[A-Za-z_][A-Za-z_0-9]*") def identifieRE_match(str): match = _identifieRE.match(str) diff --git a/Mac/Tools/IDE/PyFontify.py b/Mac/Tools/IDE/PyFontify.py index b5d6102..5680aa8 100644 --- a/Mac/Tools/IDE/PyFontify.py +++ b/Mac/Tools/IDE/PyFontify.py @@ -19,15 +19,16 @@ sublist is not used, hence always None. # Many thanks for regular expression debugging & authoring are due to: # Tim (the-incredib-ly y'rs) Peters and Cristian Tismer # So, who owns the copyright? ;-) How about this: -# Copyright 1996-2000: +# Copyright 1996-2001: # Mitchell S. Chapman, # Zachary Roadhouse, # Tim Peters, # Just van Rossum -__version__ = "0.3.3" +__version__ = "0.4" -import string, re +import string +import re # First a little helper, since I don't like to repeat things. (Tismer speaking) import string @@ -43,50 +44,47 @@ keywordsList = [ "break", "else", "if", "or", "while", "class", "except", "import", "pass", "continue", "finally", "in", "print", - "def", "for", "is", "raise"] + "def", "for", "is", "raise", "yield"] # Build up a regular expression which will match anything # interesting, including multi-line triple-quoted strings. -commentPat = "#.*" +commentPat = r"#[^\n]*" -pat = "q[^\q\n]*\(\\\\[\000-\377][^\q\n]*\)*q" -quotePat = replace(pat, "q", "'") + "\|" + replace(pat, 'q', '"') +pat = r"q[^\\q\n]*(\\[\000-\377][^\\q\n]*)*q" +quotePat = replace(pat, "q", "'") + "|" + replace(pat, 'q', '"') # Way to go, Tim! -pat = """ +pat = r""" qqq [^\\q]* - \( - \( \\\\[\000-\377] - \| q - \( \\\\[\000-\377] - \| [^\\q] - \| q - \( \\\\[\000-\377] - \| [^\\q] - \) - \) - \) + ( + ( \\[\000-\377] + | q + ( \\[\000-\377] + | [^\q] + | q + ( \\[\000-\377] + | [^\\q] + ) + ) + ) [^\\q]* - \)* + )* qqq """ pat = string.join(string.split(pat), '') # get rid of whitespace -tripleQuotePat = replace(pat, "q", "'") + "\|" + replace(pat, 'q', '"') +tripleQuotePat = replace(pat, "q", "'") + "|" + replace(pat, 'q', '"') # Build up a regular expression which matches all and only # Python keywords. This will let us skip the uninteresting # identifier references. # nonKeyPat identifies characters which may legally precede # a keyword pattern. -nonKeyPat = "\(^\|[^a-zA-Z0-9_.\"']\)" +nonKeyPat = r"(^|[^a-zA-Z0-9_.\"'])" -keyPat = nonKeyPat + "\(" -for keyword in keywordsList: - keyPat = keyPat + keyword + "\|" -keyPat = keyPat[:-2] + "\)" + nonKeyPat +keyPat = nonKeyPat + "(" + "|".join(keywordsList) + ")" + nonKeyPat -matchPat = commentPat + "\|" + keyPat + "\|" + tripleQuotePat + "\|" + quotePat +matchPat = commentPat + "|" + keyPat + "|" + tripleQuotePat + "|" + quotePat matchRE = re.compile(matchPat) idKeyPat = "[ \t]*[A-Za-z_][A-Za-z_0-9.]*" # Ident w. leading whitespace. @@ -111,7 +109,10 @@ def fontify(pytext, searchfrom = 0, searchto = None): end = searchfrom while 1: m = search(pytext, end) - if not m or m.start() >= searchto: + if m is None: + break # EXIT LOOP + start = m.start() + if start >= searchto: break # EXIT LOOP match = m.group(0) end = start + len(match) @@ -132,10 +133,12 @@ def fontify(pytext, searchfrom = 0, searchto = None): # following identifier. if match in ["def", "class"]: m = idSearch(pytext, end) - if m and m.start() == end: - match = m.group(0) - end = start + len(match) - tags_append((identifierTag, start, end, None)) + if m is not None: + start = m.start() + if start == end: + match = m.group(0) + end = start + len(match) + tags_append((identifierTag, start, end, None)) elif c == "#": tags_append((commentTag, start, end, None)) else: diff --git a/Mac/Tools/IDE/Wcontrols.py b/Mac/Tools/IDE/Wcontrols.py index 7a88cca..7394084 100644 --- a/Mac/Tools/IDE/Wcontrols.py +++ b/Mac/Tools/IDE/Wcontrols.py @@ -381,14 +381,6 @@ class Scrollbar(ControlWidget): return self._value -class __xxxx_PopupControl(ControlWidget): - - def __init__(self, possize, title = "Button", callback = None): - procID = Controls.popupMenuProc # | Controls.useWFont - ControlWidget.__init__(self, possize, title, procID, callback, 0, 0, 1) - self._isdefault = 0 - - def _scalebarvalue(absmin, absmax, curmin, curmax): if curmin <= absmin and curmax >= absmax: return None -- cgit v0.12