[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