[Zope-dev] updating homebrew extension of structured text to standard

Jochen Knuth jok-zope@ipro.de
Tue, 16 Jul 2002 17:07:50 +0200


Hi,
Jochen Knuth schrieb:
[...]

if i use re.search in the kbeimage_search_replace function, then Zope 
will crash with signal 11. if i use the deprecated regex and gsub, then 
it works.

Does anyone know a reason for this behaviour?


Ciao,
Jochen

>>
>> #!/usr/local/bin/python
>> import string
>> import re
>>
>> def punc_func(exclude):
>>     punc = r''
>>     for char in string.punctuation:
>>         if char not in exclude:
>>             punc = punc + r'\%s' % char
>>     return punc
>>
>> digits      = string.digits
>> letters     = string.letters
>> literal_punc = punc_func("'")
>> dbl_quoted_punc = punc_func("\"")
>> strongem_punc = punc_func('*')
>> under_punc = punc_func('_<>')
>> phrase_delimiters = r'\s\.\,\?\/\!\&\(\)'
>>

not working:

>> def kbeimage_search_replace(text):
>>
>>     expr = re.compile(r'__([%s%s%s\s]+?)__' % (letters, digits, strongem_punc)).search
>>     r=expr(text)
>>     if r:
>>         start, end = r.span(1)
>>         newtext1='"bild":img:'
>>         newtext=text[:start-2]+newtext1+text[start:end]+' '+text[end+2:]
>>         return kbeimage_search_replace(newtext)
>>     else:
>>         return text


working:

 >> import ts_regex, regex
 >> from ts_regex import gsub
 >> ctag_prefix="\([\0- (]\|^\)"
 >> ctag_suffix="\([\0- ,.:;!?)]\|$\)"
 >> ctag_middl2="[%s][%s]\([^\0- %s][^%s]*[^\0- %s]\|[^%s]\)[%s][%s]"
 >>
 >> def kbeimage_search_replace(text):
 >>     bild = regex.compile(ctag_prefix+(ctag_middl2 % 
(("_",)*8))+ctag_suffix)
 >>     s=gsub(bild, '\\1"\\2":img:\\2 \\3',text)
 >>     return s


>>
>> def updateKBE(self,path):
>>     pathobj=self.restrictedTraverse(path)
>>     resultbases=self.ZopeFind(pathobj, obj_metatypes=['IPRO Knowledge Base'],search_sub=1)
>>     resultlist=[]
>>     for fid,fobj in resultbases:
>>         results=self.ZopeFind(fobj, obj_metatypes=['IPRO Knowledge Base Entry'])
>>         for id,obj in results:
>>             resultlist.append(id)
>>             issue = obj.Issue
>>             newissue = kbeimage_search_replace(issue)
>>             obj.propertysheets.properties.manage_changeProperties({'Issue':newissue})
>>     return resultlist
>>     
> 
--------------------------------------------------
Jochen Knuth          WebMaster http://www.ipro.de
IPRO GmbH             Phone ++49-7152-93330
Steinbeisstr. 6       Fax ++49-7152-933340
71229 Leonberg        EMail: J.Knuth@ipro.de