Commit 616dbe2c authored by Andreas Jung's avatar Andreas Jung

replaced string module function calls by string method calls.

DTML stuff is now roughly 8-10% faster.
parent 8423054e
...@@ -84,12 +84,11 @@ ...@@ -84,12 +84,11 @@
############################################################################## ##############################################################################
"""HTML formated DocumentTemplates """HTML formated DocumentTemplates
$Id: DT_HTML.py,v 1.29 2001/05/25 11:34:56 andreas Exp $""" $Id: DT_HTML.py,v 1.30 2001/09/25 13:37:02 andreasjung Exp $"""
from DT_String import String, FileMixin from DT_String import String, FileMixin
import DT_String, re import DT_String, re
from DT_Util import ParseError, str from DT_Util import ParseError, str
from string import strip, find, split, join, rfind, replace
class dtml_re_class: class dtml_re_class:
""" This needs to be replaced before 2.4. It's a hackaround. """ """ This needs to be replaced before 2.4. It's a hackaround. """
...@@ -98,9 +97,6 @@ class dtml_re_class: ...@@ -98,9 +97,6 @@ class dtml_re_class:
end_match=re.compile('[\000- ]*(/|end)', re.I).match, end_match=re.compile('[\000- ]*(/|end)', re.I).match,
start_search=re.compile('[<&]').search, start_search=re.compile('[<&]').search,
ent_name=re.compile('[-a-zA-Z0-9_.]+').match, ent_name=re.compile('[-a-zA-Z0-9_.]+').match,
find=find,
strip=strip,
replace=replace,
): ):
while 1: while 1:
...@@ -109,23 +105,23 @@ class dtml_re_class: ...@@ -109,23 +105,23 @@ class dtml_re_class:
s = mo.start(0) s = mo.start(0)
if text[s:s+5] == '<!--#': if text[s:s+5] == '<!--#':
n=s+5 n=s+5
e=find(text,'-->',n) e=text.find('-->',n)
if e < 0: return None if e < 0: return None
en=3 en=3
mo =end_match(text,n) mo =end_match(text,n)
if mo is not None: if mo is not None:
l = mo.end(0) - mo.start(0) l = mo.end(0) - mo.start(0)
end=strip(text[n:n+l]) end=text[n:n+l].strip()
n=n+l n=n+l
else: end='' else: end=''
elif text[s:s+6] == '<dtml-': elif text[s:s+6] == '<dtml-':
e=n=s+6 e=n=s+6
while 1: while 1:
e=find(text,'>',e+1) e=text.find('>',e+1)
if e < 0: return None if e < 0: return None
if len(split(text[n:e],'"'))%2: if len(text[n:e].split('"'))%2:
# check for even number of "s inside # check for even number of "s inside
break break
...@@ -135,9 +131,9 @@ class dtml_re_class: ...@@ -135,9 +131,9 @@ class dtml_re_class:
elif text[s:s+7] == '</dtml-': elif text[s:s+7] == '</dtml-':
e=n=s+7 e=n=s+7
while 1: while 1:
e=find(text,'>',e+1) e=text.find('>',e+1)
if e < 0: return None if e < 0: return None
if len(split(text[n:e],'"'))%2: if len(text[n:e].split('"'))%2:
# check for even number of "s inside # check for even number of "s inside
break break
...@@ -147,7 +143,7 @@ class dtml_re_class: ...@@ -147,7 +143,7 @@ class dtml_re_class:
else: else:
if text[s:s+5] == '&dtml' and text[s+5] in '.-': if text[s:s+5] == '&dtml' and text[s+5] in '.-':
n=s+6 n=s+6
e=find(text,';',n) e=text.find(';',n)
if e >= 0: if e >= 0:
args=text[n:e] args=text[n:e]
l=len(args) l=len(args)
...@@ -163,13 +159,13 @@ class dtml_re_class: ...@@ -163,13 +159,13 @@ class dtml_re_class:
self._start = s self._start = s
return self return self
else: else:
nn=find(args,'-') nn=args.find('-')
if nn >= 0 and nn < l-1: if nn >= 0 and nn < l-1:
d[1]=d['end']='' d[1]=d['end']=''
d[2]=d['name']='var' d[2]=d['name']='var'
d[0]=text[s:e+1] d[0]=text[s:e+1]
args=(args[nn+1:]+' '+ args=args[nn+1:]+' '+ \
replace(args[:nn],'.',' ')) args[:nn].replace('.',' ')
d[3]=d['args']=args d[3]=d['args']=args
self._start = s self._start = s
return self return self
...@@ -184,9 +180,9 @@ class dtml_re_class: ...@@ -184,9 +180,9 @@ class dtml_re_class:
l = mo.end(0) - mo.start(0) l = mo.end(0) - mo.start(0)
a=n+l a=n+l
name=strip(text[n:a]) name=text[n:a].strip()
args=strip(text[a:e]) args=text[a:e].strip()
d=self.__dict__ d=self.__dict__
d[0]=text[s:e+en] d[0]=text[s:e+en]
...@@ -238,7 +234,7 @@ class HTML(DT_String.String): ...@@ -238,7 +234,7 @@ class HTML(DT_String.String):
or None otherwise or None otherwise
""" """
tag, end, name, args = match_ob.group(0, 'end', 'name', 'args') tag, end, name, args = match_ob.group(0, 'end', 'name', 'args')
args=strip(args) args=args.strip()
if end: if end:
if not command or name != command.name: if not command or name != command.name:
raise ParseError, ('unexpected end tag', tag) raise ParseError, ('unexpected end tag', tag)
...@@ -282,7 +278,7 @@ class HTML(DT_String.String): ...@@ -282,7 +278,7 @@ class HTML(DT_String.String):
(('"'), '&quot;'))): #" (('"'), '&quot;'))): #"
if text is None: text=self.read_raw() if text is None: text=self.read_raw()
for re,name in character_entities: for re,name in character_entities:
if find(text, re) >= 0: text=join(split(text,re),name) if text.find(re) >= 0: text=name.join(text.split(re))
return text return text
errQuote__roles__=() errQuote__roles__=()
...@@ -327,7 +323,7 @@ class HTMLDefault(HTML): ...@@ -327,7 +323,7 @@ class HTMLDefault(HTML):
def manage_edit(self,data,PARENTS,URL1,REQUEST): def manage_edit(self,data,PARENTS,URL1,REQUEST):
'edit a template' 'edit a template'
newHTML=self.copy_class(data,self.globals,self.__name__) newHTML=self.copy_class(data,self.globals,self.__name__)
setattr(PARENTS[1],URL1[rfind(URL1,'/')+1:],newHTML) setattr(PARENTS[1],URL1[URL1.rfind('/')+1:],newHTML)
return self.editConfirmation(self,REQUEST) return self.editConfirmation(self,REQUEST)
...@@ -375,9 +371,9 @@ class HTMLFile(FileMixin, HTML): ...@@ -375,9 +371,9 @@ class HTMLFile(FileMixin, HTML):
PARENTS=[],URL1='',URL2='',REQUEST='', SUBMIT=''): PARENTS=[],URL1='',URL2='',REQUEST='', SUBMIT=''):
'edit a template' 'edit a template'
if SUBMIT==FactoryDefaultString: return self.manage_default(REQUEST) if SUBMIT==FactoryDefaultString: return self.manage_default(REQUEST)
if find(data,'\r'): if data.find('\r'):
data=join(split(data,'\r\n'),'\n\r') data='\n\r'.join(data.split('\r\n'))
data=join(split(data,'\n\r'),'\n') data='\n'.join(data.split('\n\r'))
if self.edited_source: if self.edited_source:
self.edited_source=data self.edited_source=data
...@@ -387,5 +383,5 @@ class HTMLFile(FileMixin, HTML): ...@@ -387,5 +383,5 @@ class HTMLFile(FileMixin, HTML):
newHTML=self.__class__() newHTML=self.__class__()
newHTML.__setstate__(self.__getstate__()) newHTML.__setstate__(self.__getstate__())
newHTML.edited_source=data newHTML.edited_source=data
setattr(PARENTS[1],URL1[rfind(URL1,'/')+1:],newHTML) setattr(PARENTS[1],URL1[URL1.rfind('/')+1:],newHTML)
if REQUEST: return self.editConfirmation(self,REQUEST) if REQUEST: return self.editConfirmation(self,REQUEST)
...@@ -82,11 +82,10 @@ ...@@ -82,11 +82,10 @@
# attributions are listed in the accompanying credits file. # attributions are listed in the accompanying credits file.
# #
############################################################################## ##############################################################################
__version__='$Revision: 1.3 $'[11:-2] __version__='$Revision: 1.4 $'[11:-2]
from DT_Util import parse_params, name_param, str from DT_Util import parse_params, name_param, str
import string, sys import string, sys
from string import find, split, join, atoi, rfind
class ReturnTag: class ReturnTag:
name='return' name='return'
......
...@@ -82,9 +82,8 @@ ...@@ -82,9 +82,8 @@
# attributions are listed in the accompanying credits file. # attributions are listed in the accompanying credits file.
# #
############################################################################## ##############################################################################
"$Id: DT_String.py,v 1.47 2001/09/04 13:46:43 evan Exp $" "$Id: DT_String.py,v 1.48 2001/09/25 13:37:02 andreasjung Exp $"
from string import split, strip
import thread,re,exceptions,os import thread,re,exceptions,os
from DT_Util import ParseError, InstanceDict, TemplateDict, render_blocks, str from DT_Util import ParseError, InstanceDict, TemplateDict, render_blocks, str
...@@ -129,7 +128,7 @@ class String: ...@@ -129,7 +128,7 @@ class String:
parse_error__roles__=() parse_error__roles__=()
def parse_error(self, mess, tag, text, start): def parse_error(self, mess, tag, text, start):
raise ParseError, "%s, for tag %s, on line %s of %s<p>" % ( raise ParseError, "%s, for tag %s, on line %s of %s<p>" % (
mess, self.errQuote(tag), len(split(text[:start],'\n')), mess, self.errQuote(tag), len(text[:start].split('\n')),
self.errQuote(self.__name__)) self.errQuote(self.__name__))
commands__roles__=() commands__roles__=()
...@@ -192,7 +191,7 @@ class String: ...@@ -192,7 +191,7 @@ class String:
or None otherwise or None otherwise
""" """
tag, name, args, fmt = match_ob.group(0, 'name', 'args', 'fmt') tag, name, args, fmt = match_ob.group(0, 'name', 'args', 'fmt')
args=args and strip(args) or '' args=args and args.strip() or ''
if fmt==']': if fmt==']':
if not command or name != command.name: if not command or name != command.name:
......
...@@ -196,9 +196,9 @@ class Try: ...@@ -196,9 +196,9 @@ class Try:
'The else block should be the last block ' 'The else block should be the last block '
'in a try tag', self.name) 'in a try tag', self.name)
for errname in string.split(nargs): for errname in nargs.split():
self.handlers.append((errname,nsection.blocks)) self.handlers.append((errname,nsection.blocks))
if string.strip(nargs)=='': if nargs.split()=='':
if defaultHandlerFound: if defaultHandlerFound:
raise ParseError, ( raise ParseError, (
'Only one default exception handler ' 'Only one default exception handler '
......
...@@ -217,12 +217,11 @@ Evaluating expressions without rendering results ...@@ -217,12 +217,11 @@ Evaluating expressions without rendering results
''' # ' ''' # '
__rcs_id__='$Id: DT_Var.py,v 1.42 2001/07/12 20:04:01 andreas Exp $' __rcs_id__='$Id: DT_Var.py,v 1.43 2001/09/25 13:37:02 andreasjung Exp $'
__version__='$Revision: 1.42 $'[11:-2] __version__='$Revision: 1.43 $'[11:-2]
from DT_Util import parse_params, name_param, str from DT_Util import parse_params, name_param, str
import re, string, sys import re, string, sys
from string import find, split, join, atoi, rfind
from urllib import quote, quote_plus from urllib import quote, quote_plus
from cgi import escape from cgi import escape
from html_quote import html_quote # for import by other modules, dont remove! from html_quote import html_quote # for import by other modules, dont remove!
...@@ -330,7 +329,7 @@ class Var: ...@@ -330,7 +329,7 @@ class Var:
tag with a non-integer value.''') tag with a non-integer value.''')
if len(val) > size: if len(val) > size:
val=val[:size] val=val[:size]
l=rfind(val,' ') l=val.rfind(' ')
if l > size/2: if l > size/2:
val=val[:l+1] val=val[:l+1]
if have_arg('etc'): l=args['etc'] if have_arg('etc'): l=args['etc']
...@@ -362,8 +361,8 @@ def url_quote_plus(v, name='(Unknown name)', md={}): ...@@ -362,8 +361,8 @@ def url_quote_plus(v, name='(Unknown name)', md={}):
def newline_to_br(v, name='(Unknown name)', md={}): def newline_to_br(v, name='(Unknown name)', md={}):
v=str(v) v=str(v)
if find(v,'\r') >= 0: v=join(split(v,'\r'),'') if v.find('\r') >= 0: v=''.join(v.split('\r'))
if find(v,'\n') >= 0: v=join(split(v,'\n'),'<br>\n') if v.find('\n') >= 0: v='<br>\n'.join(v.split('\n'))
return v return v
def whole_dollars(v, name='(Unknown name)', md={}): def whole_dollars(v, name='(Unknown name)', md={}):
...@@ -378,11 +377,11 @@ def thousands_commas(v, name='(Unknown name)', md={}, ...@@ -378,11 +377,11 @@ def thousands_commas(v, name='(Unknown name)', md={},
thou=re.compile( thou=re.compile(
r"([0-9])([0-9][0-9][0-9]([,.]|$))").search): r"([0-9])([0-9][0-9][0-9]([,.]|$))").search):
v=str(v) v=str(v)
vl=split(v,'.') vl=v.split('.')
if not vl: return v if not vl: return v
v=vl[0] v=vl[0]
del vl[0] del vl[0]
if vl: s='.'+join(vl,'.') if vl: s='.'+'.'.join(vl)
else: s='' else: s=''
mo=thou(v) mo=thou(v)
while mo is not None: while mo is not None:
...@@ -419,7 +418,7 @@ def sql_quote(v, name='(Unknown name)', md={}): ...@@ -419,7 +418,7 @@ def sql_quote(v, name='(Unknown name)', md={}):
This is needed to securely insert values into sql This is needed to securely insert values into sql
string literals in templates that generate sql. string literals in templates that generate sql.
""" """
if find(v,"'") >= 0: return join(split(v,"'"),"''") if v.find("'") >= 0: return "''".join(v.split("'"))
return v return v
special_formats={ special_formats={
...@@ -440,7 +439,7 @@ special_formats={ ...@@ -440,7 +439,7 @@ special_formats={
} }
def spacify(val): def spacify(val):
if find(val,'_') >= 0: val=join(split(val,'_')) if val.find('_') >= 0: val=" ".join(val.split('_'))
return val return val
modifiers=(html_quote, url_quote, url_quote_plus, newline_to_br, modifiers=(html_quote, url_quote, url_quote_plus, newline_to_br,
......
...@@ -85,11 +85,10 @@ ...@@ -85,11 +85,10 @@
__doc__='''Python implementations of document template some features __doc__='''Python implementations of document template some features
$Id: pDocumentTemplate.py,v 1.31 2001/06/21 19:43:44 shane Exp $''' $Id: pDocumentTemplate.py,v 1.32 2001/09/25 13:37:02 andreasjung Exp $'''
__version__='$Revision: 1.31 $'[11:-2] __version__='$Revision: 1.32 $'[11:-2]
import string, sys, types import string, sys, types
from string import join
ClassTypes = [types.ClassType] ClassTypes = [types.ClassType]
...@@ -301,5 +300,5 @@ def render_blocks(blocks, md): ...@@ -301,5 +300,5 @@ def render_blocks(blocks, md):
l=len(rendered) l=len(rendered)
if l==0: return '' if l==0: return ''
elif l==1: return rendered[0] elif l==1: return rendered[0]
return join(rendered, '') return ''.join(rendered)
return rendered return rendered
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment