6.4.6.2. Code

Start python section to interscript/weavers/web.py[1 /8 ] Next Last
     1: #line 87 "web_weaver.ipk"
     2: from interscript.weavers.multiplexor import multiplexor
     3: from interscript.weavers.html import html_weaver
     4: from interscript.weavers.html import cvt_code, cvt_text
     5: from interscript.drivers.sinks.bufdisk import named_file_sink
     6: from interscript.drivers.sinks.disk import simple_named_file_sink
     7: from interscript.core.sets import set
     8: import string
     9: import traceback
    10: 
    11: 
    12: class stacking_weaver(multiplexor):
    13:   def mk_head(self, sink):
    14:     w = sink.writeline
    15:     w('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">')
    16:     w( '<HTML>')
    17:     w( '<HEAD>')
    18: 
    19:     w('<TITLE>'+self.title+'</TITLE>')
    20: 
    21:     w( '<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">')
    22:     if self.keywords.has_key('author'):
    23:       author =self.keywords['author']
    24:       self.frames_sink.writeline( '<META NAME="Author" CONTENT="'+author+'">')
    25:     version = self.process.global_frame.version
    26: 
    27:     w( '<META NAME="Generator" CONTENT="Interscript '+version+'">')
    28:     w( '</HEAD>')
    29: 
    30:   def mk_frame(self,name, orientation, subframes):
    31:     filename = self.pattern % name
    32:     sink = named_file_sink(
    33:       self.pass_frame,
    34:       self.basedir+filename,
    35:       self.master.weaver_prefix,
    36:       eol=self.eol)
    37:     self.mk_head(sink)
    38:     pc = ''
    39:     for frame_name,frame_percent,frame_src in subframes:
    40:       pc = pc + str(frame_percent)+'%,'
    41:     pc = pc[:-1]
    42:     w = sink.writeline
    43:     w( '<FRAMESET '+orientation+'="'+pc+'" scrolling="yes">')
    44:     for frame_name,frame_percent,frame_src in subframes:
    45:       w( '<FRAME NAME="'+frame_name+'" SRC="'+frame_src+'">')
    46:     w( '</FRAMESET>')
    47:     w( '</HTML>')
    48: 
    49:   def mk_frames(self, doc):
    50:     top = self.pattern % 'top' # top level frame
    51:     indexview = self.pattern % 'indexview'
    52:     indexnav = self.pattern % 'indexnav'
    53:     contents = self.pattern % 'toc'
    54:     classref = self.pattern % 'classref'
    55:     funcref = self.pattern % 'funcref'
    56:     identref = self.pattern % 'identref'
    57:     testref = self.pattern % 'testref'
    58:     filestatus = self.pattern % 'filestatus'
    59:     sectionref = self.pattern % 'sectionref'
    60:     sourceref = self.pattern % 'sourceref'
    61: 
    62:     self.mk_frame('indexview','ROWS', (
    63:       ('indexnav',20,indexnav),
    64:       ('indexdat',80,contents)))
    65:     self.mk_frame('top','COLS',(
    66:       ('indexview',30,indexview),
    67:       ('docview',70,doc)))
    68: 
    69:     nav = '';
    70:     for filename, description in [
    71:       (contents, 'Contents'),
    72:       (classref, 'Classes'),
    73:       (funcref, 'Functions'),
    74:       (identref, 'Identifiers'),
    75:       (testref, 'Tests'),
    76:       (filestatus, 'Status'),
    77:       (sectionref, 'Sections'),
    78:       (sourceref, 'Sources')
    79:       ]:
    80:       nav = nav + '<A HREF="'+filename+'" TARGET="indexdat">'+description+'</A> '
    81:     ha = '<A HREF="'+self.home_file+'" TARGET="docview">Home</A>'
    82:     nav = '<DIV CLASS="NAVIGATION">'+nav+' '+ha+'</DIV>'
    83: 
    84:     filename = self.pattern % 'indexnav'
    85:     sink = named_file_sink(
    86:       self.pass_frame,
    87:       self.basedir+filename,
    88:       self.master.weaver_prefix,
    89:       eol=self.eol)
    90:     self.mk_head(sink)
    91:     w = sink.writeline
    92:     w ('<BODY>')
    93:     w (nav)
    94:     w ('</BODY>')
    95:     w ('</HTML>')
    96: 
    97: 
    98:   def print_table(self,dict,sink):
    99:     keys = dict.keys()
   100:     keys.sort()
   101:     w = sink.writeline
   102:     w('<TABLE COLS="2" BORDER="1" CELLPADDING="2">')
   103:     for k in keys:
   104:       refs = dict[k]
   105:       w('<TR><TD VALIGN="Top"><CODE> '+k+' </CODE></TD><TD> ')
   106:       old_df = ''
   107:       for sf,sc,df,dc in refs:
   108:         key = (sf, sc)
   109:         if self.anchor_file.has_key(key):
   110:           child = self.anchor_file[key]
   111:         else:
   112:           child = ''
   113:         anchor = '<A HREF='+child+'#'+sf+':'+str(sc)+' TARGET="docview">'+str(dc)+'</A>'
   114: 
   115:         if old_df != '': w(', ')
   116:         if old_df != df:
   117:           w(df+': '+ anchor )
   118:           old_df = df
   119:         else:
   120:           w(anchor)
   121:       w('</TD></TR>')
   122:     w('</TABLE>')
   123: 
   124:   def __init__(self,parent_weaver, pattern='', break_list=None, **kwds):
   125:     self.pass_frame = parent_weaver.pass_frame
   126:     self.master = self.pass_frame.master
   127:     self.process = self.pass_frame.process
   128: 
   129:     self.sequence = self.pass_frame.get_new_sequence_number()
   130:     self.persistent_frame = self.master.get_persistent_frame(self.sequence)
   131: 
   132:     self.verbosity = self.pass_frame.verbosity
   133:     self.debug_missing_methods = 0
   134:     self.keywords = kwds
   135: 
   136:     self.original_filename = 'Unknown'
   137: 
   138:     self.toc_depth = self.keywords.get('toc_depth',99)
   139:     self.base = [parent_weaver]
   140:     parent_sink = parent_weaver.sink.name
   141:     self.basedir = string.join(string.split(parent_sink,'/')[:-1],'/')+'/'
   142:     if self.basedir == '/': self.basedir = ''
   143:     #print 'Base directory for stacking weaver is',self.basedir
   144:     self.home_file = string.split(parent_sink,'/')[-1]
   145:     if kwds.has_key('title'):
   146:       self.title = kwds['title']
   147:     elif hasattr(parent_weaver,'title'):
   148:       self.title = parent_weaver.title
   149:     else:
   150:       self.title = self.home_file
   151:     self.pattern = pattern
   152:     if string.find(pattern,'%') == -1:
   153:       self.pattern = self.pattern+'_%s.html'
   154:     # break list
   155:     self.break_list = [0]
   156:     if break_list:
   157:       for b in break_list: self.break_list.append(b)
   158:     else:
   159:       for i in range(1,40): self.break_list.append(i)
   160: 
   161:     self.stack = [parent_weaver]
   162:     self.childcount = 0
   163:     self.debug = 0
   164:     self.protocol = 'stacking weaver'
   165:     self.hcount = [1,0]
   166:     self.acount = 0
   167:     self.anchor_file = {}
   168:     self.name = 'stacking weaver'
   169:     self.eol = parent_weaver.sink.eol
   170: 
   171:     # table of contents
   172:     self.toc = []
   173: 
   174:     self.home_anchor = '<A HREF="'+self.home_file+'">Home</A>'
   175:     self.home_nav = '<DIV CLASS="NAVIGATION">'+self.home_anchor+'<BR><HR></DIV>'
   176: 
   177:     self.mk_frames(self.home_file)
   178: 
   179:     # cheat here, guess next exists :-)
   180:     next = self.pattern%('%04d'%(self.childcount+1))
   181:     next = '<A HREF="'+next+'">Next</A>'
   182: 
   183:     nav = ''
   184:     if next : nav = nav + next+' '
   185: 
   186:     hnav = '<HR><DIV CLASS="NAVIGATION">'+nav+'<BR><HR></DIV>'
   187:     parent_weaver._writeline(hnav)
   188: 
End python section to interscript/weavers/web.py[1]


6.4.6.2.1. reference processor
6.4.6.2.2. section processor
6.4.6.2.3. heading processor
6.4.6.2.4. document control
6.4.6.2.5. Table of contents
6.4.6.2.6. Identifier Cross references