Commit 44551f7b authored by Jim Fulton's avatar Jim Fulton

Changed parse to return a mapping object that keeps its

items sorted in original order.
parent a6d40fd5
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
############################################################################## ##############################################################################
__doc__='''Shared Aqueduct classes and functions __doc__='''Shared Aqueduct classes and functions
$Id: Aqueduct.py,v 1.21 1998/04/14 15:20:39 jim Exp $''' $Id: Aqueduct.py,v 1.22 1998/04/15 14:23:36 jim Exp $'''
__version__='$Revision: 1.21 $'[11:-2] __version__='$Revision: 1.22 $'[11:-2]
from Globals import HTMLFile, Persistent from Globals import HTMLFile, Persistent
import DocumentTemplate, DateTime, regex, regsub, string, urllib, rotor import DocumentTemplate, DateTime, regex, regsub, string, urllib, rotor
...@@ -133,7 +133,6 @@ def default_input_form(id,arguments,action='query', ...@@ -133,7 +133,6 @@ def default_input_form(id,arguments,action='query',
tabs=''): tabs=''):
if arguments: if arguments:
items=arguments.items() items=arguments.items()
# items.sort()
return ( return (
"%s\n%s%s" % ( "%s\n%s%s" % (
'<html><head><title>%s Input Data</title></head><body>\n%s\n' '<html><head><title>%s Input Data</title></head><body>\n%s\n'
...@@ -240,17 +239,38 @@ def decodestring(s): ...@@ -240,17 +239,38 @@ def decodestring(s):
decode(f, g) decode(f, g)
return g.getvalue() return g.getvalue()
def parse(text, class Args:
result=None, def __init__(self, data, keys):
unparmre=regex.compile( self._data=data
'\([\0- ]*\([^\0- =\"]+\)\)'), self._keys=keys
parmre=regex.compile(
'\([\0- ]*\([^\0- =\"]+\)=\([^\0- =\"]+\)\)'), def items(self):
qparmre=regex.compile( return map(lambda k, d=self._data: (k,d[k]), self._keys)
'\([\0- ]*\([^\0- =\"]+\)="\([^"]*\)\"\)'),
): def values(self):
return map(lambda k, d=self._data: d[k], self._keys)
if result is None: result = {} def keys(self): return list(self._keys)
def has_key(self, key): return self._data.has_key(key)
def __getitem__(self, key): return self._data[key]
def __setitem__(self, key, v): self._data[key]=v
def __delitem__(self, key): del self._data[key]
def parse(text,
result=None,
keys=None,
unparmre=regex.compile(
'\([\0- ]*\([^\0- =\"]+\)\)'),
parmre=regex.compile(
'\([\0- ]*\([^\0- =\"]+\)=\([^\0- =\"]+\)\)'),
qparmre=regex.compile(
'\([\0- ]*\([^\0- =\"]+\)="\([^"]*\)\"\)'),
):
if result is None:
result = {}
keys=[]
__traceback_info__=text __traceback_info__=text
...@@ -267,7 +287,7 @@ def parse(text, ...@@ -267,7 +287,7 @@ def parse(text,
l=len(unparmre.group(1)) l=len(unparmre.group(1))
value={} value={}
else: else:
if not text or not strip(text): return result if not text or not strip(text): return Args(result,keys)
raise InvalidParameter, text raise InvalidParameter, text
lt=string.find(name,':') lt=string.find(name,':')
...@@ -276,8 +296,9 @@ def parse(text, ...@@ -276,8 +296,9 @@ def parse(text,
name=name[:lt] name=name[:lt]
result[name]=value result[name]=value
keys.append(name)
return parse(text[l:],result) return parse(text[l:],result,keys)
def quotedHTML(text, def quotedHTML(text,
character_entities=( character_entities=(
...@@ -366,6 +387,10 @@ def delimited_output(results,REQUEST,RESPONSE): ...@@ -366,6 +387,10 @@ def delimited_output(results,REQUEST,RESPONSE):
############################################################################## ##############################################################################
# #
# $Log: Aqueduct.py,v $ # $Log: Aqueduct.py,v $
# Revision 1.22 1998/04/15 14:23:36 jim
# Changed parse to return a mapping object that keeps its
# items sorted in original order.
#
# Revision 1.21 1998/04/14 15:20:39 jim # Revision 1.21 1998/04/14 15:20:39 jim
# No longer sort items in input form. # No longer sort items in input form.
# #
......
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