237: #line 339 "web_weaver.ipk" 238: # if the current page has a break level equal to the current level pop it 239: # (we'd print a footer first if we used them) 240: def _foot(self): 241: if self._trig(0) == self._current_level(): 242: self._popw() 243: 244: def _head(self,text, atext, anchor): 245: level = self._current_level() 246: if level == self._trig(1): 247: self._pushw(level,text,atext,anchor) 248: else: 249: self._ins_head(level,text,atext,anchor) 250: 251: def __del__(self): 252: try: 253: self.mk_funcref(self.pattern % 'funcref','docview') 254: self.mk_classref(self.pattern % 'classref','docview') 255: self.mk_identref(self.pattern % 'identref','docview') 256: self.mk_contents(self.pattern % 'toc','docview') 257: self.mk_testref(self.pattern % 'testref','docview') 258: self.mk_sectionref(self.pattern % 'sectionref','docview') 259: self.mk_filestatus(self.pattern % 'filestatus') 260: except: 261: print 'Error in stacking weaver __del__ routine' 262: traceback.print_exc() 263: 264: def get_formatted_heading_number(self, sep): 265: hnumber = '' 266: for i in range(1,len(self.hcount)-1): 267: hnumber = hnumber + str(self.hcount[i])+'.' 268: hnumber = hnumber + str(self.hcount[-1]) 269: return hnumber 270: 271: def _popw(self): 272: if self.debug or self.verbosity>=6 : 273: print 'Terminating weaver',self.stack[-1].name 274: del self.stack[-1] 275: self.base = [self.stack[-1]] 276: 277: def _new_child(self): 278: self.childcount = self.childcount + 1 279: last = self.persistent_frame.get('lastchild',-1) 280: self.persistent_frame['lastchild']=max(last,self.childcount) 281: return self.pattern % ('%04d' % self.childcount) 282: 283: def _pushw(self,level,text,atext,anchor): 284: filename = self._new_child() 285: #print 'Spawning Weaver',filename,'for',text 286: self.base = [self.stack[-1]] 287: hn = self.get_formatted_heading_number('.')+'.' 288: hnum = self.get_formatted_heading_number('_') 289: h = hn + ' '+text 290: self.toc.append([level,hnum,filename,h]) 291: self._ensuremode('P') 292: self._writeline( '<BR><A HREF="'+filename+'">'+h+'</A>') 293: 294: # create navigation links (kludge!) 295: home = self.home_anchor 296: up = None 297: try: 298: up = string.split(self.base[0].sink.name,'/')[-1] 299: up_anchor = '<A HREF="'+up+'">Up</A>' 300: except: pass 301: 302: if self.childcount > 1: 303: prev = self.pattern % ('%04d'%(self.childcount-1)) 304: prev_anchor= '<A HREF="'+prev+'">Prev</A>' 305: else: prev = None 306: 307: last = self.persistent_frame.get('lastchild',None) 308: if last and self.childcount == last: 309: next = None 310: else: 311: next = self.pattern%('%04d'%(self.childcount+1)) 312: next_anchor = '<A HREF="'+next+'">Next</A>' 313: 314: this = self.pattern%('%04d'%(self.childcount)) 315: this_anchor = '<A HREF="'+this+'">This</A>' 316: 317: nav = '' 318: if next : nav = nav + next_anchor+' ' 319: if up : nav = nav + up_anchor+' ' 320: if prev : nav = nav + prev_anchor+' ' 321: if home: nav = nav + home+' ' 322: nav = nav + this_anchor+' <SMALL>['+self.original_filename+']</SMALL>' 323: 324: hnav = '<DIV CLASS="NAVIGATION">'+nav+'<BR><HR></DIV>' 325: fnav = '<DIV CLASS="NAVIGATION"><BR><HR>'+nav+'</DIV>' 326: 327: extra = '<LINK type="text/html" rel="Contents" href="'+self.pattern % 'toc' +'">\r\n' 328: extra = '<LINK type="text/html" rel="Identifiers" href="'+self.pattern % 'identref'+'">\r\n' 329: extra = '<LINK type="text/html" rel="Classes" href="'+self.pattern % 'classref'+'">\r\n' 330: extra = '<LINK type="text/html" rel="Functions" href="'+self.pattern % 'funcref'+'">\r\n' 331: extra = extra + '<LINK type="text/html" rel="Start" href="'+self.home_file+'">\r\n' 332: if next: extra = extra + '<LINK type="text/html" rel="Next" href="'+next+'">\r\n' 333: if prev: extra = extra + '<LINK type="text/html" rel="Prev" href="'+prev+'">\r\n' 334: if up: extra = extra + '<LINK type="text/html" rel="Section" href="'+up+'">\r\n' 335: 336: sink = named_file_sink(self.pass_frame, self.basedir + filename, self.master.weaver_prefix, self.eol) 337: child = html_weaver(self.pass_frame,sink,title = h, pagehead = hnav, pagefoot=fnav, heading_prefix=hn, head_extra=extra) 338: self.base = [child] 339: self.stack.append(child) 340: 341: def _trig(self,offset=0): 342: doc_level = len(self.stack)-1 # 0 origin 343: return self.break_list[doc_level+offset] 344: 345: def _ins_head(self,level,text,atext,anchor): 346: adjusted_level = level - self._trig() 347: if anchor == '': 348: anchor = 'a'+str(self.acount) 349: self.acount = self.acount + 1 350: hn = self.get_formatted_heading_number('.')+'.' 351: hnum = self.get_formatted_heading_number('_') 352: h = hn + ' '+text 353: filename = self.pattern%('%04d'%self.childcount) 354: self.toc.append([level,hnum,filename+'#'+anchor,h]) 355: for weaver in self.base: 356: weaver.head(adjusted_level,text,atext,anchor) 357: