]>
git.saurik.com Git - wxWidgets.git/blob - wxPython/samples/stxview/StructuredText/ts_regex.py
   1 ############################################################################## 
   3 # Zope Public License (ZPL) Version 1.0 
   4 # ------------------------------------- 
   6 # Copyright (c) Digital Creations.  All rights reserved. 
   8 # This license has been certified as Open Source(tm). 
  10 # Redistribution and use in source and binary forms, with or without 
  11 # modification, are permitted provided that the following conditions are 
  14 # 1. Redistributions in source code must retain the above copyright 
  15 #    notice, this list of conditions, and the following disclaimer. 
  17 # 2. Redistributions in binary form must reproduce the above copyright 
  18 #    notice, this list of conditions, and the following disclaimer in 
  19 #    the documentation and/or other materials provided with the 
  22 # 3. Digital Creations requests that attribution be given to Zope 
  23 #    in any manner possible. Zope includes a "Powered by Zope" 
  24 #    button that is installed by default. While it is not a license 
  25 #    violation to remove this button, it is requested that the 
  26 #    attribution remain. A significant investment has been put 
  27 #    into Zope, and this effort will continue if the Zope community 
  28 #    continues to grow. This is one way to assure that growth. 
  30 # 4. All advertising materials and documentation mentioning 
  31 #    features derived from or use of this software must display 
  32 #    the following acknowledgement: 
  34 #      "This product includes software developed by Digital Creations 
  35 #      for use in the Z Object Publishing Environment 
  36 #      (http://www.zope.org/)." 
  38 #    In the event that the product being advertised includes an 
  39 #    intact Zope distribution (with copyright and license included) 
  40 #    then this clause is waived. 
  42 # 5. Names associated with Zope or Digital Creations must not be used to 
  43 #    endorse or promote products derived from this software without 
  44 #    prior written permission from Digital Creations. 
  46 # 6. Modified redistributions of any form whatsoever must retain 
  47 #    the following acknowledgment: 
  49 #      "This product includes software developed by Digital Creations 
  50 #      for use in the Z Object Publishing Environment 
  51 #      (http://www.zope.org/)." 
  53 #    Intact (re-)distributions of any official Zope release do not 
  54 #    require an external acknowledgement. 
  56 # 7. Modifications are encouraged but must be packaged separately as 
  57 #    patches to official Zope releases.  Distributions that do not 
  58 #    clearly separate the patches from the original work must be clearly 
  59 #    labeled as unofficial distributions.  Modifications which do not 
  60 #    carry the name Zope may be packaged in any form, as long as they 
  61 #    conform to all of the clauses above. 
  66 #   THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS ``AS IS'' AND ANY 
  67 #   EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
  68 #   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
  69 #   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL DIGITAL CREATIONS OR ITS 
  70 #   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
  71 #   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
  72 #   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 
  73 #   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
  74 #   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
  75 #   OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
  76 #   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
  80 # This software consists of contributions made by Digital Creations and 
  81 # many individuals on behalf of Digital Creations.  Specific 
  82 # attributions are listed in the accompanying credits file. 
  84 ############################################################################## 
  85 """Provide a thread-safe interface to regex 
  87 import regex
, regsub 
#, Sync 
  89 from regsub 
import split
, sub
, gsub
, splitx
, capwords
 
  95         def acquire(*args
): pass 
  96         def release(*args
): pass 
 100         _l
=thread
.allocate_lock() 
 104         def __init__(self
, f
): 
 107         def __call__(self
, *args
, **kw
): 
 109             try: return apply(self
._f
, args
, kw
) 
 112     split
=SafeFunction(split
) 
 113     sub
=SafeFunction(sub
) 
 114     gsub
=SafeFunction(gsub
) 
 115     splitx
=SafeFunction(splitx
) 
 116     capwords
=SafeFunction(capwords
) 
 118     allocate_lock
=thread
.allocate_lock
 
 125     def __init__(self
, *args
): 
 126         self
._r
=r
=apply(regex
.compile,args
) 
 131         self
.__a
=lock
.acquire
 
 132         self
.__r
=lock
.release
 
 133         self
.translate
=r
.translate
 
 134         self
.givenpat
=r
.givenpat
 
 135         self
.realpat
=r
.realpat
 
 137     def match(self
, string
, pos
=0): 
 139         try: return self
._r
.match(string
, pos
) 
 142     def search(self
, string
, pos
=0): 
 144         try: return self
._r
.search(string
, pos
) 
 147     def search_group(self
, str, group
, pos
=0): 
 148         """Search a string for a pattern. 
 150         If the pattern was not found, then None is returned, 
 151         otherwise, the location where the pattern was found, 
 152         as well as any specified group are returned. 
 158             if l 
< 0: return None 
 159             return l
, apply(r
.group
, group
) 
 162     def match_group(self
, str, group
, pos
=0): 
 163         """Match a pattern against a string 
 165         If the string does not match the pattern, then None is 
 166         returned, otherwise, the length of the match, as well 
 167         as any specified group are returned. 
 173             if l 
< 0: return None 
 174             return l
, apply(r
.group
, group
) 
 177     def search_regs(self
, str, pos
=0): 
 178         """Search a string for a pattern. 
 180         If the pattern was not found, then None is returned, 
 181         otherwise, the 'regs' attribute of the expression is 
 191     def match_regs(self
, str, pos
=0): 
 192         """Match a pattern against a string 
 194         If the string does not match the pattern, then None is 
 195         returned, otherwise, the 'regs' attribute of the expression is 
 205 class symcomp(compile): 
 207     def __init__(self
, *args
): 
 208         self
._r
=r
=apply(regex
.symcomp
,args
) 
 210         self
.groupindex
=r
.groupindex