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:
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