]> granicus.if.org Git - python/commitdiff
- fixed some re usage, partly so it'll still work when re uses pre instead
authorJust van Rossum <just@letterror.com>
Tue, 10 Jul 2001 19:25:40 +0000 (19:25 +0000)
committerJust van Rossum <just@letterror.com>
Tue, 10 Jul 2001 19:25:40 +0000 (19:25 +0000)
  of sre, and partly fixing re -> regex porting oversights
- fixed PyFontify.py so it actually *works* again..

Mac/Tools/IDE/PyBrowser.py
Mac/Tools/IDE/PyEdit.py
Mac/Tools/IDE/PyFontify.py
Mac/Tools/IDE/Wcontrols.py

index 19319a17572bdf499d165e20a26154239895fe8f..c8e5066c4d10bce99e12d537624b56bc76e299f5 100644 (file)
@@ -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
index ac6cc0e428f5d3f60713c333fea915678b26c2cf..10f583faee045f5e11de8bc22c953178bcfe1fa7 100644 (file)
@@ -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="<string>", 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)
index b5d6102777138b228739da39ccc0a2338aab40c4..5680aa871ac328878fe7ea88a4ba7bcd3367b658 100644 (file)
@@ -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:
index 7a88ccad6d85d23ab820e74ee89ef45ee275f47a..739408408b1fcf577f989b88470e58d7b8767b3f 100644 (file)
@@ -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