6.4.6.2.4. document control

The break level of a page is the level of it title, so the top level content of that page is 1 more than its break level.
Start python section to interscript/weavers/web.py[5 /8 ] Next Prev Last
   275: #line 377 "web_weaver.ipk"
   276:   # if the current page has a break level equal to the current level pop it
   277:   # (we'd print a footer first if we used them)
   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:     #print 'Spawning Weaver',filename,'for',text
   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:     # create navigation links (kludge!)
   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 # 0 origin
   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: 
End python section to interscript/weavers/web.py[5]