[Docstring-checkins] CVS: dps/dps/writers html.py,1.4,1.5
Status: Pre-Alpha
Brought to you by:
goodger
From: David G. <go...@us...> - 2002-03-01 03:16:25
|
Update of /cvsroot/docstring/dps/dps/writers In directory usw-pr-cvs1:/tmp/cvs-serv1041/dps/dps/writers Modified Files: html.py Log Message: progress Index: html.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/writers/html.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** html.py 23 Feb 2002 16:51:31 -0000 1.4 --- html.py 1 Mar 2002 03:16:22 -0000 1.5 *************** *** 42,47 **** nodes.NodeVisitor.__init__(self, doctree) self.language = languages.getlanguage(doctree.languagecode) ! self.head = ['<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"\n' ! ' "http://www.w3.org/TR/html4/strict.dtd">\n', '<HTML LANG="%s">\n<HEAD>\n' % doctree.languagecode, '<LINK REL="StyleSheet" HREF="default.css"' --- 42,48 ---- nodes.NodeVisitor.__init__(self, doctree) self.language = languages.getlanguage(doctree.languagecode) ! self.head = ['<!DOCTYPE HTML PUBLIC' ! ' "-//W3C//DTD HTML 4.01 Transitional//EN"\n' ! ' "http://www.w3.org/TR/html4/loose.dtd">\n', '<HTML LANG="%s">\n<HEAD>\n' % doctree.languagecode, '<LINK REL="StyleSheet" HREF="default.css"' *************** *** 50,53 **** --- 51,55 ---- self.foot = ['</BODY>\n</HTML>\n'] self.sectionlevel = 0 + self.context = [] def astext(self): *************** *** 63,81 **** def starttag(self, node, tagname, suffix='\n', **attributes): ! attrs = {} for (name, value) in attributes.items(): ! attrs[name.lower()] = value for att in ('class',): # append to node attribute if node.has_key(att): ! if attrs.has_key(att): ! attrs[att] = node[att] + ' ' + attrs[att] for att in ('id',): # node attribute overrides if node.has_key(att): ! attrs[att] = node[att] ! attlist = attrs.items() attlist.sort() return '<%s>%s' % (' '.join([tagname.upper()] + ['%s="%s"' % (name.upper(), ! self.encode(value)) for name, value in attlist]), suffix) --- 65,83 ---- def starttag(self, node, tagname, suffix='\n', **attributes): ! atts = {} for (name, value) in attributes.items(): ! atts[name.lower()] = value for att in ('class',): # append to node attribute if node.has_key(att): ! if atts.has_key(att): ! atts[att] = node[att] + ' ' + atts[att] for att in ('id',): # node attribute overrides if node.has_key(att): ! atts[att] = node[att] ! attlist = atts.items() attlist.sort() return '<%s>%s' % (' '.join([tagname.upper()] + ['%s="%s"' % (name.upper(), ! self.encode(str(value))) for name, value in attlist]), suffix) *************** *** 119,126 **** def visit_block_quote(self, node): ! pass def depart_block_quote(self, node): ! pass def visit_bullet_list(self, node): --- 121,128 ---- def visit_block_quote(self, node): ! self.body.append(self.starttag(node, 'blockquote')) def depart_block_quote(self, node): ! self.body.append('</BLOCKQUOTE>\n') def visit_bullet_list(self, node): *************** *** 132,145 **** def visit_caption(self, node): ! pass def depart_caption(self, node): ! pass def visit_caution(self, node): ! pass def depart_caution(self, node): ! pass def visit_classifier(self, node): --- 134,147 ---- def visit_caption(self, node): ! self.body.append(self.starttag(node, 'p', '', CLASS='caption')) def depart_caption(self, node): ! self.body.append('</P>\n') def visit_caution(self, node): ! self.visit_admonition(node, 'caution') def depart_caution(self, node): ! self.depart_admonition() def visit_classifier(self, node): *************** *** 151,155 **** def visit_colspec(self, node): ! pass def depart_colspec(self, node): --- 153,160 ---- def visit_colspec(self, node): ! atts = {} ! #if node.has_key('colwidth'): ! # atts['width'] = str(node['colwidth']) + '*' ! self.body.append(self.starttag(node, 'col', **atts)) def depart_colspec(self, node): *************** *** 175,182 **** def visit_danger(self, node): ! pass def depart_danger(self, node): ! pass def visit_date(self, node): --- 180,187 ---- def visit_danger(self, node): ! self.visit_admonition(node, 'danger') def depart_danger(self, node): ! self.depart_admonition() def visit_date(self, node): *************** *** 206,223 **** def visit_description(self, node): ! pass def depart_description(self, node): ! pass def visit_docinfo(self, node): ! self.body.append(self.starttag(node, 'DIV', CLASS='docinfo')) ! self.body.append('<TABLE FRAME="void" RULES="none">\n' ! '<COL CLASS="docinfo_name">\n' '<COL CLASS="docinfo_content">\n' '<TBODY VALIGN="top">\n') def depart_docinfo(self, node): ! self.body.append('</TABLE>\n</TBODY>\n</DIV>\n') def visit_docinfo_item(self, node, name): --- 211,228 ---- def visit_description(self, node): ! self.body.append('<TD>\n') def depart_description(self, node): ! self.body.append('</TD>') def visit_docinfo(self, node): ! self.body.append(self.starttag(node, 'table', CLASS='docinfo', ! frame="void", rules="none")) ! self.body.append('<COL CLASS="docinfo_name">\n' '<COL CLASS="docinfo_content">\n' '<TBODY VALIGN="top">\n') def depart_docinfo(self, node): ! self.body.append('</TBODY>\n</TABLE>\n') def visit_docinfo_item(self, node, name): *************** *** 233,240 **** def visit_doctest_block(self, node): ! pass def depart_doctest_block(self, node): ! pass def visit_document(self, node): --- 238,245 ---- def visit_doctest_block(self, node): ! self.body.append(self.starttag(node, 'pre', CLASS='doctest_block')) def depart_doctest_block(self, node): ! self.body.append('</PRE>\n') def visit_document(self, node): *************** *** 251,332 **** def visit_entry(self, node): ! pass def depart_entry(self, node): ! pass def visit_enumerated_list(self, node): ! pass def depart_enumerated_list(self, node): ! pass def visit_error(self, node): ! pass def depart_error(self, node): ! pass def visit_field(self, node): ! pass def depart_field(self, node): ! pass def visit_field_argument(self, node): ! pass def depart_field_argument(self, node): ! pass def visit_field_body(self, node): ! pass def depart_field_body(self, node): ! pass def visit_field_list(self, node): ! pass def depart_field_list(self, node): ! pass def visit_field_name(self, node): ! pass def depart_field_name(self, node): pass def visit_figure(self, node): ! pass def depart_figure(self, node): ! pass def visit_footnote(self, node): ! pass def depart_footnote(self, node): ! pass def visit_footnote_reference(self, node): ! pass def depart_footnote_reference(self, node): ! pass def visit_hint(self, node): ! pass def depart_hint(self, node): ! pass def visit_image(self, node): ! attrs = node.attributes.copy() ! attrs['src'] = attrs['uri'] ! del attrs['uri'] ! if not attrs.has_key('alt'): ! attrs['alt'] = attrs['src'] ! self.body.append(self.starttag(node, 'img', '', **attrs)) def depart_image(self, node): --- 256,383 ---- def visit_entry(self, node): ! if isinstance(node.parent.parent, nodes.thead): ! tagname = 'th' ! else: ! tagname = 'td' ! atts = {} ! if node.has_key('morerows'): ! atts['rowspan'] = node['morerows'] + 1 ! if node.has_key('morecols'): ! atts['colspan'] = node['morecols'] + 1 ! self.body.append(self.starttag(node, tagname, **atts)) ! self.context.append('</%s>' % tagname.upper()) ! if len(node) == 0: # empty cell ! self.body.append(' ') def depart_entry(self, node): ! self.body.append(self.context.pop()) def visit_enumerated_list(self, node): ! """ ! The 'start' attribute does not conform to HTML 4.01's strict.dtd, but ! CSS1 doesn't help. CSS2 isn't widely enough supported yet to be ! usable. ! """ ! atts = {} ! if node.has_key('start'): ! atts['start'] = node['start'] ! if node.has_key('enumtype'): ! atts['class'] = node['enumtype'] ! # @@@ To do: prefix, suffix. How? Change prefix/suffix to a ! # single "format" attribute? Use CSS2? ! self.body.append(self.starttag(node, 'ol', **atts)) def depart_enumerated_list(self, node): ! self.body.append('</OL>\n') def visit_error(self, node): ! self.visit_admonition(node, 'error') def depart_error(self, node): ! self.depart_admonition() def visit_field(self, node): ! self.body.append(self.starttag(node, 'tr', CLASS='field')) def depart_field(self, node): ! self.body.append('</TR>\n') def visit_field_argument(self, node): ! self.body.append(' ') ! self.body.append(self.starttag(node, 'span', '', ! CLASS='field_argument')) def depart_field_argument(self, node): ! self.body.append('</SPAN>') def visit_field_body(self, node): ! self.body.append(':</P>\n</TD><TD>') ! self.body.append(self.starttag(node, 'div', CLASS='field_body')) def depart_field_body(self, node): ! self.body.append('</DIV></TD>\n') def visit_field_list(self, node): ! self.body.append(self.starttag(node, 'table', frame='void', ! rules='none')) ! self.body.append('<COL CLASS="field_name">\n' ! '<COL CLASS="field_body">\n' ! '<TBODY VALIGN="top">\n') def depart_field_list(self, node): ! self.body.append('</TBODY>\n</TABLE>\n') def visit_field_name(self, node): ! self.body.append('<TD>\n') ! self.body.append(self.starttag(node, 'p', '', CLASS='field_name')) def depart_field_name(self, node): + """ + Leave the end tag to `self.visit_field_body()`, in case there are any + field_arguments. + """ pass def visit_figure(self, node): ! self.body.append(self.starttag(node, 'div', CLASS='figure')) def depart_figure(self, node): ! self.body.append('</DIV>\n') def visit_footnote(self, node): ! self.body.append(self.starttag(node, 'table', CLASS='footnote', ! frame="void", rules="none")) ! self.body.append('<COL CLASS="label">\n' ! '<COL>\n' ! '<TBODY VALIGN="top">\n' ! '<TR><TD>\n') def depart_footnote(self, node): ! self.body.append('</TD></TR>\n' ! '</TBODY>\n</TABLE>\n') def visit_footnote_reference(self, node): ! href = '' ! if node.has_key('refname'): ! href = '#' + self.doctree.nameids[node['refname']] ! self.body.append(self.starttag(node, 'a', '[', href=href, ! CLASS='footnote_reference')) def depart_footnote_reference(self, node): ! self.body.append(']</A>') def visit_hint(self, node): ! self.visit_admonition(node, 'hint') def depart_hint(self, node): ! self.depart_admonition() def visit_image(self, node): ! atts = node.attributes.copy() ! atts['src'] = atts['uri'] ! del atts['uri'] ! if not atts.has_key('alt'): ! atts['alt'] = atts['src'] ! self.body.append(self.starttag(node, 'img', '', **atts)) def depart_image(self, node): *************** *** 334,341 **** def visit_important(self, node): ! pass def depart_important(self, node): ! pass def visit_interpreted(self, node): --- 385,392 ---- def visit_important(self, node): ! self.visit_admonition(node, 'important') def depart_important(self, node): ! self.depart_admonition() def visit_interpreted(self, node): *************** *** 346,359 **** def visit_label(self, node): ! pass def depart_label(self, node): ! pass def visit_legend(self, node): ! pass def depart_legend(self, node): ! pass def visit_list_item(self, node): --- 397,411 ---- def visit_label(self, node): ! self.body.append(self.starttag(node, 'p', '[', CLASS='label')) def depart_label(self, node): ! self.body.append(']</P>\n' ! '</TD><TD>\n') def visit_legend(self, node): ! self.body.append(self.starttag(node, 'div', CLASS='legend')) def depart_legend(self, node): ! self.body.append('</DIV>\n') def visit_list_item(self, node): *************** *** 370,383 **** def visit_literal_block(self, node): ! pass def depart_literal_block(self, node): ! pass ! ! def visit_long_option(self, node): ! pass ! ! def depart_long_option(self, node): ! pass def visit_meta(self, node): --- 422,429 ---- def visit_literal_block(self, node): ! self.body.append(self.starttag(node, 'pre', CLASS='literal_block')) def depart_literal_block(self, node): ! self.body.append('</PRE>\n') def visit_meta(self, node): *************** *** 388,419 **** def visit_note(self, node): ! pass def depart_note(self, node): ! pass def visit_option(self, node): ! pass def depart_option(self, node): ! pass def visit_option_argument(self, node): ! pass def depart_option_argument(self, node): ! pass def visit_option_list(self, node): ! pass def depart_option_list(self, node): ! pass def visit_option_list_item(self, node): ! pass def depart_option_list_item(self, node): ! pass def visit_organization(self, node): --- 434,495 ---- def visit_note(self, node): ! self.visit_admonition(node, 'note') def depart_note(self, node): ! self.depart_admonition() def visit_option(self, node): ! if self.context[-1]: ! self.body.append(', ') def depart_option(self, node): ! self.context[-1] += 1 def visit_option_argument(self, node): ! self.body.append(node.get('delimiter', ' ')) ! self.body.append(self.starttag(node, 'span', '', ! CLASS='option_argument')) def depart_option_argument(self, node): ! self.body.append('</SPAN>') ! ! def visit_option_group(self, node): ! atts = {} ! if len(node.astext()) > 14: ! atts['colspan'] = 2 ! self.context.append('</TR>\n<TR><TD> </TD>') ! else: ! self.context.append('') ! self.body.append(self.starttag(node, 'td', **atts)) ! self.body.append('<P><CODE>') ! self.context.append(0) ! ! def depart_option_group(self, node): ! self.context.pop() ! self.body.append('</CODE></P>\n</TD>') ! self.body.append(self.context.pop()) def visit_option_list(self, node): ! self.body.append( ! self.starttag(node, 'table', CLASS='option_list', ! frame="void", rules="none", cellspacing=12)) ! self.body.append('<COL CLASS="option">\n' ! '<COL CLASS="description">\n' ! '<TBODY VALIGN="top">\n') def depart_option_list(self, node): ! self.body.append('</TBODY>\n</TABLE>\n') def visit_option_list_item(self, node): ! self.body.append(self.starttag(node, 'tr', '')) def depart_option_list_item(self, node): ! self.body.append('</TR>\n') ! ! def visit_option_string(self, node): ! self.body.append(self.starttag(node, 'span', '', CLASS='option')) ! ! def depart_option_string(self, node): ! self.body.append('</SPAN>') def visit_organization(self, node): *************** *** 436,443 **** def visit_reference(self, node): ! pass def depart_reference(self, node): ! pass def visit_revision(self, node): --- 512,527 ---- def visit_reference(self, node): ! if node.has_key('refuri'): ! href = node['refuri'] ! elif node.has_key('refid'): ! href = '#' + node['refid'] ! elif node.has_key('refname'): ! # @@@ Check for non-existent mappings. Here or in a transform? ! href = '#' + self.doctree.nameids[node['refname']] ! self.body.append(self.starttag(node, 'a', '', href=href, ! CLASS='reference')) def depart_reference(self, node): ! self.body.append('</A>') def visit_revision(self, node): *************** *** 448,455 **** def visit_row(self, node): ! pass def depart_row(self, node): ! pass def visit_section(self, node): --- 532,539 ---- def visit_row(self, node): ! self.body.append(self.starttag(node, 'tr', '')) def depart_row(self, node): ! self.body.append('</TR>\n') def visit_section(self, node): *************** *** 461,470 **** self.body.append('</DIV>\n') - def visit_short_option(self, node): - pass - - def depart_short_option(self, node): - pass - def visit_status(self, node): self.visit_docinfo_item(node, 'status') --- 545,548 ---- *************** *** 498,502 **** def visit_system_message(self, node): ! self.body.append(self.starttag(node, 'DIV', CLASS='system_message')) self.body.append('<H3>%s (level %s system message)</H3>\n' % (node['type'], node['level'])) --- 576,583 ---- def visit_system_message(self, node): ! if node['level'] < self.doctree.reporter.getcategory('output')[1]: ! # @@@ need another threshold? gotta fix that ! raise nodes.SkipNode ! self.body.append(self.starttag(node, 'div', CLASS='system_message')) self.body.append('<H3>%s (level %s system message)</H3>\n' % (node['type'], node['level'])) *************** *** 506,525 **** def visit_table(self, node): ! pass def depart_table(self, node): ! pass def visit_target(self, node): ! pass def depart_target(self, node): ! pass def visit_tbody(self, node): ! pass def depart_tbody(self, node): ! pass def visit_term(self, node): --- 587,608 ---- def visit_table(self, node): ! self.body.append(self.starttag(node, 'table', rules='all')) def depart_table(self, node): ! self.body.append('</TABLE>\n') def visit_target(self, node): ! if not (node.has_key('refuri') or node.has_key('refid') ! or node.has_key('refname')): ! self.body.append(self.starttag(node, 'a', '')) def depart_target(self, node): ! self.body.append('</A>') def visit_tbody(self, node): ! self.body.append(self.starttag(node, 'tbody', valign='top')) def depart_tbody(self, node): ! self.body.append('</TBODY>\n') def visit_term(self, node): *************** *** 527,531 **** def depart_term(self, node): ! # leave the end tag to visit_definition, in case there's a classifier pass --- 610,617 ---- def depart_term(self, node): ! """ ! Leave the end tag to `self.visit_definition()`, in case there's a ! classifier. ! """ pass *************** *** 537,552 **** def visit_thead(self, node): ! pass def depart_thead(self, node): ! pass def visit_tip(self, node): ! pass def depart_tip(self, node): ! pass def visit_title(self, node): if self.sectionlevel == 0: self.head.append('<TITLE>%s</TITLE>\n' % self.encode(node.astext())) --- 623,639 ---- def visit_thead(self, node): ! self.body.append(self.starttag(node, 'thead', valign='bottom')) def depart_thead(self, node): ! self.body.append('</THEAD>\n') def visit_tip(self, node): ! self.visit_admonition(node, 'tip') def depart_tip(self, node): ! self.depart_admonition() def visit_title(self, node): + """Only 6 section levels are supported by HTML.""" if self.sectionlevel == 0: self.head.append('<TITLE>%s</TITLE>\n' % self.encode(node.astext())) *************** *** 554,558 **** else: self.body.append(self.starttag(node, 'H%s' % self.sectionlevel, '')) - # @@@ >H6? def depart_title(self, node): --- 641,644 ---- *************** *** 560,567 **** self.body.append('</H1>\n') else: ! self.body.append('</H%s>\n' % self.sectionlevel) # @@@ >H6? def visit_transition(self, node): ! self.body.append('<HR>\n') def depart_transition(self, node): --- 646,653 ---- self.body.append('</H1>\n') else: ! self.body.append('</H%s>\n' % self.sectionlevel) def visit_transition(self, node): ! self.body.append(self.starttag(node, 'hr')) def depart_transition(self, node): *************** *** 574,586 **** self.depart_docinfo_item() - def visit_vms_option(self, node): - pass - - def depart_vms_option(self, node): - pass - def visit_warning(self, node): ! pass def depart_warning(self, node): ! pass --- 660,666 ---- self.depart_docinfo_item() def visit_warning(self, node): ! self.visit_admonition(node, 'warning') def depart_warning(self, node): ! self.depart_admonition() |