[Zope-Checkins] CVS: Zope2 - DT_HTML.py:1.24.84.2

chrism@serenade.digicool.com chrism@serenade.digicool.com
Thu, 19 Apr 2001 17:47:38 -0400


Update of /cvs-repository/Zope2/lib/python/DocumentTemplate
In directory serenade.digicool.com:/home/chrism/sandboxes/RegexExtermination/lib/python/DocumentTemplate

Modified Files:
      Tag: ajung-2_4-ts_regex-exterminiation-branch
	DT_HTML.py 
Log Message:
Changed dtml_re_class to support enough of an re match object interface to pretend to be one in order to let dtml work without regex.


--- Updated File DT_HTML.py in package Zope2 --
--- DT_HTML.py	2001/04/19 18:00:56	1.24.84.1
+++ DT_HTML.py	2001/04/19 21:47:38	1.24.84.2
@@ -92,7 +92,7 @@
 from string import strip, find, split, join, rfind, replace
 
 class dtml_re_class:
-
+    """ This needs to be replaced before 2.4.  It's a hackaround. """
     def search(self, text, start=0,
                name_match=re.compile('[\0- ]*[a-zA-Z]+[\0- ]*').match,
                end_match=re.compile('[\0- ]*(/\|end)', re.I).match,
@@ -102,15 +102,15 @@
                strip=strip,
                replace=replace,
                ):
-
+        print text
         while 1:
             mo = start_search(text,start)
-            if mo is None: return -1
+            if mo is None: return None
             s = mo.start(0)
             if text[s:s+5] == '<!--#':
                 n=s+5
                 e=find(text,'-->',n)
-                if e < 0: return -1
+                if e < 0: return None
                 en=3
 
                 mo =end_match(text,n)
@@ -124,7 +124,7 @@
                 e=n=s+6
                 while 1:
                     e=find(text,'>',e+1)
-                    if e < 0: return -1
+                    if e < 0: return None
                     if len(split(text[n:e],'"'))%2:
                         # check for even number of "s inside
                         break
@@ -136,7 +136,7 @@
                 e=n=s+7
                 while 1:
                     e=find(text,'>',e+1)
-                    if e < 0: return -1
+                    if e < 0: return None
                     if len(split(text[n:e],'"'))%2:
                         # check for even number of "s inside
                         break
@@ -160,7 +160,8 @@
                                     d[2]=d['name']='var'
                                     d[0]=text[s:e+1]
                                     d[3]=d['args']=args+' html_quote'
-                                    return s
+                                    self._start = s
+                                    return self
                                 else:
                                     nn=find(args,'-')
                                     if nn >= 0 and nn < l-1:
@@ -170,7 +171,8 @@
                                         args=(args[nn+1:]+' '+
                                               replace(args[:nn],'.',' '))
                                         d[3]=d['args']=args
-                                        return s
+                                        self._start = s
+                                        return self
                         
                 start=s+1
                 continue
@@ -178,7 +180,7 @@
             break
 
         mo = name_match(text,n)
-        if mo is None: return -1
+        if mo is None: return None
         l = mo.end(0) - mo.start(0)
  
         a=n+l
@@ -191,8 +193,8 @@
         d[1]=d['end']=end
         d[2]=d['name']=name
         d[3]=d['args']=args
-
-        return s
+        self._start = s
+        return self
 
     def group(self, *args):
         get=self.__dict__.get
@@ -200,7 +202,8 @@
             return get(args[0])
         return tuple(map(get, args))
 
-        
+    def start(self, *args):
+        return self._start
 
 class HTML(DT_String.String):
     """HTML Document Templates