Commit 7d3645f0 authored by Jim Fulton's avatar Jim Fulton

Added sequence-query to *vastly* simplify browse by batch!

parent 9493bfed
...@@ -212,7 +212,7 @@ ...@@ -212,7 +212,7 @@
of the module 'Missing', if present. of the module 'Missing', if present.
''' '''
__rcs_id__='$Id: DT_In.py,v 1.4 1997/09/25 18:56:38 jim Exp $' __rcs_id__='$Id: DT_In.py,v 1.5 1997/09/25 20:58:24 jim Exp $'
############################################################################ ############################################################################
# Copyright # Copyright
...@@ -266,15 +266,19 @@ __rcs_id__='$Id: DT_In.py,v 1.4 1997/09/25 18:56:38 jim Exp $' ...@@ -266,15 +266,19 @@ __rcs_id__='$Id: DT_In.py,v 1.4 1997/09/25 18:56:38 jim Exp $'
# (540) 371-6909 # (540) 371-6909
# #
############################################################################ ############################################################################
__version__='$Revision: 1.4 $'[11:-2] __version__='$Revision: 1.5 $'[11:-2]
from DT_Util import * from DT_Util import *
from string import find, atoi, join
import regex
from regsub import gsub
class In: class In:
blockContinuations=('else',) blockContinuations=('else',)
name='in' name='in'
elses=None elses=None
expr=None expr=None
start_name_re=None
def __init__(self, blocks): def __init__(self, blocks):
tname, args, section = blocks[0] tname, args, section = blocks[0]
...@@ -282,6 +286,16 @@ class In: ...@@ -282,6 +286,16 @@ class In:
orphan='3',overlap='1',mapping=1, orphan='3',overlap='1',mapping=1,
previous=1, next=1, expr='') previous=1, next=1, expr='')
self.args=args self.args=args
if args.has_key('start'):
v=args['start']
if type(v)==type(''):
try: atoi(v)
except:
self.start_name_re=regex.compile(
'[?&]'+
join(map(lambda c: "[%s]" % c, v),'')+
'=[0-9]+\(&\|$\)')
name,expr=name_param(args,'in',1) name,expr=name_param(args,'in',1)
self.__name__, expr = name, expr self.__name__, expr = name, expr
self.section=section self.section=section
...@@ -336,7 +350,11 @@ class In: ...@@ -336,7 +350,11 @@ class In:
last=end-1 last=end-1
first=start-1 first=start-1
vars=sequence_variables(sequence)
try: query_string=md['QUERY_STRING']
except: query_string=''
vars=sequence_variables(sequence,'?'+query_string,self.start_name_re)
kw=vars.data kw=vars.data
# kw['sequence-length']=l # kw['sequence-length']=l
kw['mapping']=mapping kw['mapping']=mapping
...@@ -411,7 +429,7 @@ class In: ...@@ -411,7 +429,7 @@ class In:
if mapping: if mapping:
client=mapping_wrapper(client) client=mapping_wrapper(client)
result.append(section(client,md)) result.append(section(client,md))
result=string.join(result, '') result=join(result, '')
finally: finally:
md.pop(1) md.pop(1)
...@@ -471,8 +489,12 @@ class mapping_wrapper: ...@@ -471,8 +489,12 @@ class mapping_wrapper:
class sequence_variables: class sequence_variables:
def __init__(self,items=None): def __init__(self,items=None,query_string='',start_name_re=None):
self.items=items self.items=items
self.query_string=query_string
self.start_name_re=start_name_re
self.data={ self.data={
'previous-sequence': 0, 'previous-sequence': 0,
'next-sequence': 0, 'next-sequence': 0,
...@@ -665,6 +687,18 @@ class sequence_variables: ...@@ -665,6 +687,18 @@ class sequence_variables:
elif key=='sequence-length': elif key=='sequence-length':
data[key]=l=len(self.items) data[key]=l=len(self.items)
return l return l
elif key=='sequence-query' and self.start_name_re is not None:
query_string=self.query_string
re=self.start_name_re
l=re.search(query_string)
if l >= 0:
v=re.group(0)
if v[:1]=='?' or v[-1:]=='&': b=l+1
else: b=l
query_string=query_string[:b]+query_string[l+len(v):]
data[key]=query_string
return query_string
raise KeyError, key raise KeyError, key
def next_batches(self): def next_batches(self):
...@@ -682,7 +716,8 @@ class sequence_variables: ...@@ -682,7 +716,8 @@ class sequence_variables:
r=[] r=[]
while end < l: while end < l:
start,end,spam=opt(end+1-overlap,None,sz,orphan,sequence) start,end,spam=opt(end+1-overlap,None,sz,orphan,sequence)
v=sequence_variables(self.items) v=sequence_variables(self.items,
self.query_string,self.start_name_re)
d=v.data d=v.data
d['batch-start-index']=start-1 d['batch-start-index']=start-1
d['batch-end-index']=end-1 d['batch-end-index']=end-1
...@@ -707,7 +742,8 @@ class sequence_variables: ...@@ -707,7 +742,8 @@ class sequence_variables:
r=[] r=[]
while start > 1: while start > 1:
start,end,spam=opt(None,start-1+overlap,sz,orphan,sequence) start,end,spam=opt(None,start-1+overlap,sz,orphan,sequence)
v=sequence_variables(self.items) v=sequence_variables(self.items,
self.query_string,self.start_name_re)
d=v.data d=v.data
d['batch-start-index']=start-1 d['batch-start-index']=start-1
d['batch-end-index']=end-1 d['batch-end-index']=end-1
...@@ -720,6 +756,9 @@ class sequence_variables: ...@@ -720,6 +756,9 @@ class sequence_variables:
############################################################################ ############################################################################
# $Log: DT_In.py,v $ # $Log: DT_In.py,v $
# Revision 1.5 1997/09/25 20:58:24 jim
# Added sequence-query to *vastly* simplify browse by batch!
#
# Revision 1.4 1997/09/25 18:56:38 jim # Revision 1.4 1997/09/25 18:56:38 jim
# fixed problem in reporting errors # fixed problem in reporting errors
# #
......
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