275: #line 377 "web_weaver.ipk"
276:
277:
278: def _foot(self):
279: if self._trig(0) == self._current_level():
280: self._popw()
281:
282: def _head(self,text, atext, anchor):
283: level = self._current_level()
284: if level == self._trig(1):
285: self._pushw(level,text,atext,anchor)
286: else:
287: self._ins_head(level,text,atext,anchor)
288:
289: def __del__(self):
290: try:
291: self.mk_funcref(self.pattern % 'funcref','docview')
292: self.mk_classref(self.pattern % 'classref','docview')
293: self.mk_identref(self.pattern % 'identref','docview')
294: self.mk_contents(self.pattern % 'toc','docview')
295: self.mk_testref(self.pattern % 'testref','docview')
296: self.mk_sectionref(self.pattern % 'sectionref','docview')
297: self.mk_sourceref(self.pattern % 'sourceref','docview')
298: self.mk_filestatus(self.pattern % 'filestatus')
299: except:
300: print 'Error in stacking weaver __del__ routine'
301: traceback.print_exc()
302:
303: def get_formatted_heading_number(self, sep):
304: hnumber = ''
305: for i in range(1,len(self.hcount)-1):
306: hnumber = hnumber + str(self.hcount[i])+'.'
307: hnumber = hnumber + str(self.hcount[-1])
308: return hnumber
309:
310: def _popw(self):
311: if self.debug or self.verbosity>=6 :
312: print 'Terminating weaver',self.stack[-1].name
313: del self.stack[-1]
314: self.base = [self.stack[-1]]
315:
316: def _new_child(self):
317: self.childcount = self.childcount + 1
318: last = self.persistent_frame.get('lastchild',-1)
319: self.persistent_frame['lastchild']=max(last,self.childcount)
320: return self.pattern % ('%04d' % self.childcount)
321:
322: def _pushw(self,level,text,atext,label):
323: filename = self._new_child()
324: if label:
325: anchor = self.pattern%('%04d'%(self.childcount))
326: self.register_anchor(label, anchor)
327:
328:
329: self.base = [self.stack[-1]]
330: hn = self.get_formatted_heading_number('.')+'.'
331: hnum = self.get_formatted_heading_number('_')
332: h = hn + ' '+text
333: self.toc.append([level,hnum,filename,h])
334: self._ensuremode('P')
335: self._writeline( '<BR><A HREF="'+filename+'">'+h+'</A>')
336:
337:
338: home = self.home_anchor
339: up = None
340: try:
341: up = string.split(self.base[0].sink.name,'/')[-1]
342: up_anchor = '<A HREF="'+up+'">Up</A>'
343: except: pass
344:
345: if self.childcount > 1:
346: prev = self.pattern % ('%04d'%(self.childcount-1))
347: prev_anchor= '<A HREF="'+prev+'">Prev</A>'
348: else: prev = None
349:
350: last = self.persistent_frame.get('lastchild',None)
351: if last and self.childcount == last:
352: next = None
353: else:
354: next = self.pattern%('%04d'%(self.childcount+1))
355: next_anchor = '<A HREF="'+next+'">Next</A>'
356:
357: this = self.pattern%('%04d'%(self.childcount))
358: this_anchor = '<A HREF="'+this+'">This</A>'
359:
360: nav = ''
361: if next : nav = nav + next_anchor+' '
362: if up : nav = nav + up_anchor+' '
363: if prev : nav = nav + prev_anchor+' '
364: if home: nav = nav + home+' '
365: nav = nav + this_anchor+' <SMALL>['+self.original_filename+']</SMALL>'
366:
367: hnav = '<DIV CLASS="NAVIGATION">'+nav+'<BR><HR></DIV>'
368: fnav = '<DIV CLASS="NAVIGATION"><BR><HR>'+nav+'</DIV>'
369:
370: extra = '<LINK type="text/html" rel="Contents" href="'+self.pattern % 'toc' +'">\r\n'
371: extra = '<LINK type="text/html" rel="Identifiers" href="'+self.pattern % 'identref'+'">\r\n'
372: extra = '<LINK type="text/html" rel="Classes" href="'+self.pattern % 'classref'+'">\r\n'
373: extra = '<LINK type="text/html" rel="Functions" href="'+self.pattern % 'funcref'+'">\r\n'
374: extra = extra + '<LINK type="text/html" rel="Start" href="'+self.home_file+'">\r\n'
375: if next: extra = extra + '<LINK type="text/html" rel="Next" href="'+next+'">\r\n'
376: if prev: extra = extra + '<LINK type="text/html" rel="Prev" href="'+prev+'">\r\n'
377: if up: extra = extra + '<LINK type="text/html" rel="Section" href="'+up+'">\r\n'
378:
379: sink = named_file_sink(self.pass_frame, self.basedir + filename, self.master.weaver_prefix, self.eol)
380: child = html_weaver(
381: self.pass_frame, sink,
382: title = h,
383: pagehead = hnav,
384: pagefoot=fnav,
385: heading_prefix=hn,
386: head_extra=extra,
387: anchor=label)
388: self.base = [child]
389: self.stack.append(child)
390:
391: def _trig(self,offset=0):
392: doc_level = len(self.stack)-1
393: return self.break_list[doc_level+offset]
394:
395: def _ins_head(self,level,text,atext,anchor):
396: adjusted_level = level - self._trig()
397: if anchor == '':
398: anchor = 'a'+str(self.acount)
399: self.acount = self.acount + 1
400: hn = self.get_formatted_heading_number('.')+'.'
401: hnum = self.get_formatted_heading_number('_')
402: h = hn + ' '+text
403: filename = self.pattern%('%04d'%self.childcount)
404: self.toc.append([level,hnum,filename+'#'+anchor,h])
405: for weaver in self.base:
406: weaver.head(adjusted_level,text,atext,anchor)
407: