6.4.6.2.4. document control

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]
   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: 
End python section to interscript/weavers/web.py[5]