Changeset 683

Show
Ignore:
Timestamp:
12/05/06 09:28:23
Author:
fenix
Message:

fix some regular expr.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qPloneResolveUID/trunk/config.py

    r682 r683  
    11DOCUMENT_DEFAULT_OUTPUT_TYPE = "text/x-html-safe" 
    22REQUIRED_TRANSFORM = ["ruid_to_url"] 
     3 
     4_ABSOLUTE_REL_URL=r'(?P<url>(?P<protocol>http|https|ftp|mailto|file|about[:/]+?)?[a-zA-Z0-9_\@\.\,\?\!\/\:\;\-\#\~\=\&\%%\+\\]+)' 
     5 
     6TAG_PATTERN = r'(\<(img|a)[^>]*>)' 
     7UID_PATTERN = r'[^"]*resolveuid/(?P<uid>[^/"#? ]*)' 
  • qPloneResolveUID/trunk/transforms/ruid_to_url.py

    r682 r683  
    88from Products.PortalTransforms.interfaces import itransform 
    99 
    10 import string 
    11 letters = string.letters 
    12 _ABSOLUTE_REL_URL=r'(?P<url>(?P<protocol>http|https|ftp|mailto|file|about[:/]+?)?[%s0-9_\@\.\,\?\!\/\:\;\-\#\~\=\&\%%\+\\]+)' % letters 
    13  
     10from Products.qPloneResolveUID.config import * 
    1411 
    1512class ruid_to_url: 
     
    2522        if name: 
    2623            self.__name__ = name 
    27         self.ruid_regexp = re.compile("(?P<tag>\<(?P<tag_name>a|img)[^>]*(?P<url_attr>href|src)\s*=\s*[\'|\"]?%s[\'|\"]?[\s|\>|\/])" \ 
    28                       % _ABSOLUTE_REL_URL,re.I|re.S) 
     24        self.tag_regexp = re.compile(TAG_PATTERN ,re.I|re.S) 
     25        self.ruid_regexp = re.compile(UID_PATTERN ,re.I|re.S) 
    2926 
    3027    def name(self): 
    3128        return self.__name__ 
    32  
     29    
    3330    def find_ruid(self, data): 
    34         tags_url = [{m.group('tag'):m.group('url').replace('\\','/')}\ 
    35                       for m in self.ruid_regexp.finditer(data)] 
    36         tags_ruid =  [tu for tu in tags_url if tu.values()[0].startswith('resolveuid')] 
     31        tags_ruid = [] 
    3732        unique_ruid = [] 
     33        for m in self.tag_regexp.finditer(data): 
     34            ruid = re.search(self.ruid_regexp, m.group(0)) 
     35            if ruid: 
     36                tags_ruid.append({m.group(0):ruid.group('uid')}) 
    3837        [unique_ruid.append(tu.values()[0]) for tu in tags_ruid if tu.values()[0] not in unique_ruid] 
    3938        return tags_ruid, unique_ruid 
     
    4342        rc = getToolByName(portal, 'reference_catalog') 
    4443        pu = getToolByName(portal, 'portal_url') 
    45         for ruid in unique_ruid: 
    46             clean_uid, uid  = ruid.split('/')[1], '/'.join(ruid.split('/')[1:]) 
     44        for uid in unique_ruid: 
    4745            try: 
    48                 obj = rc.lookupObject(clean_uid) 
    49                 ruid_url[ruid] = uid.replace(clean_uid, pu.getRelativeUrl(obj)
     46                obj = rc.lookupObject(uid) 
     47                ruid_url[uid] = pu.getRelativeUrl(obj
    5048            except: 
    51                 ruid_url[ruid] = ruid 
     49                ruid_url[uid] = uid 
    5250        return ruid_url            
    5351     
     
    5856            ruid_url = self.mapRUID_URL(unique_ruid, kwargs['context']) 
    5957            for tag_ruid in tags_ruid: 
    60                 tag, ruid = tag_ruid.items()[0] 
    61                 text = text.replace(tag, tag.replace(ruid, ruid_url[ruid])) 
     58                t, uid = tag_ruid.items()[0] 
     59                text = text.replace(t, t.replace('resolveuid/'+uid, ruid_url[uid])) 
    6260         
    6361        data.setData(text)