This HTML writer has been optimized to produce visually compact lists (less vertical whitespace). HTML's mixed content models allow list items to contain "<li><p>body elements</p></li>" or "<li>just text</li>" or even "<li>text<p>and body elements</p>combined</li>", each with different effects. It would be best to stick with strict body elements in list items, but they affect vertical spacing in browsers (although they really shouldn't).
Here is an outline of the optimization:
Check for and omit <p> tags in "simple" lists: list items contain either a single paragraph, a nested simple list, or a paragraph followed by a nested simple list. This means that this list can be compact:
- Item 1.
- Item 2.
But this list cannot be compact:
Item 1.
This second paragraph forces space between list items.
Item 2.
In non-list contexts, omit <p> tags on a paragraph if that paragraph is the only child of its parent (footnotes & citations are allowed a label first).
Regardless of the above, in definitions, table cells, field bodies, option descriptions, and list items, mark the first child with 'class="first"' and the last child with 'class="last"'. The stylesheet sets the margins (top & bottom respectively) to 0 for these elements.
The no_compact_lists setting (--no-compact-lists command-line option) disables list whitespace optimization.
There are no implemented interfaces.
attribution_formats
(type:
dict
)
{'dash': ('—', ''), 'parens': ('(', ')'), 'none': ('', ''), 'parentheses': ('(', ')')}
content_type
(type:
str
)
'<meta http-equiv="Content-Type" content="text/html; charset=%s" />\n'
doctype
(type:
str
)
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n'
embedded_stylesheet
(type:
str
)
'<style type="text/css">\n\n%s\n</style>\n'
generator
(type:
str
)
'<meta name="generator" content="Docutils %s: http://docutils.sourceforge.net/" />\n'
head_prefix_template
(type:
str
)
'<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="%s" lang="%s">\n<head>\n'
named_tags
(type:
list
)
['a', 'applet', 'form', 'frame', 'iframe', 'img', 'map']
optional
(type:
tuple
)
()
stylesheet_link
(type:
str
)
'<link rel="stylesheet" href="%s" type="text/css" />\n'
words_and_spaces
(type: SRE_Pattern
)
<_sre.SRE_Pattern object at 0x4140d3e0>
xml_declaration
(type:
str
)
'<?xml version="1.0" encoding="%s" ?>\n'
add_meta(tag)
astext()
attval(text, whitespace=<_sre.SRE_Pattern object at 0x4140ccf0>)
Cleanse, HTML encode, and return attribute value text.
check_simple_list(node)
Check for a simple list that can be rendered compactly.
cloak_email(addr)
Try to hide the link text of a email link from harversters.
cloak_mailto(uri)
Try to hide a mailto: URL from harvesters.
depart_Text(node)
depart_abbreviation(node)
depart_acronym(node)
depart_address(node)
depart_admonition(node=None)
depart_attention(node)
depart_attribution(node)
depart_author(node)
depart_authors(node)
depart_block_quote(node)
depart_bullet_list(node)
depart_caption(node)
depart_caution(node)
depart_citation(node)
depart_citation_reference(node)
depart_classifier(node)
depart_colspec(node)
depart_compound(node)
depart_contact(node)
depart_container(node)
depart_copyright(node)
depart_danger(node)
depart_date(node)
depart_decoration(node)
depart_definition(node)
depart_definition_list(node)
depart_definition_list_item(node)
depart_description(node)
depart_docinfo(node)
depart_docinfo_item()
depart_doctest_block(node)
depart_document(node)
depart_emphasis(node)
depart_entry(node)
depart_enumerated_list(node)
depart_error(node)
depart_field(node)
depart_field_body(node)
depart_field_list(node)
depart_field_name(node)
depart_figure(node)
depart_footer(node)
depart_footnote(node)
depart_footnote_reference(node)
depart_generated(node)
depart_header(node)
depart_hint(node)
depart_image(node)
depart_important(node)
depart_inline(node)
depart_label(node)
depart_legend(node)
depart_line(node)
depart_line_block(node)
depart_list_item(node)
depart_literal_block(node)
depart_meta(node)
depart_note(node)
depart_option(node)
depart_option_argument(node)
depart_option_group(node)
depart_option_list(node)
depart_option_list_item(node)
depart_option_string(node)
depart_organization(node)
depart_paragraph(node)
depart_problematic(node)
depart_reference(node)
depart_revision(node)
depart_row(node)
depart_rubric(node)
depart_section(node)
depart_sidebar(node)
depart_status(node)
depart_strong(node)
depart_subscript(node)
depart_subtitle(node)
depart_superscript(node)
depart_system_message(node)
depart_table(node)
depart_target(node)
depart_tbody(node)
depart_term(node)
Leave the end tag to self.visit_definition(), in case there's a classifier.
depart_tgroup(node)
depart_thead(node)
depart_tip(node)
depart_title(node)
depart_title_reference(node)
depart_topic(node)
depart_transition(node)
depart_version(node)
depart_warning(node)
dispatch_departure(node)
Call self."depart_ + node class name" with node as parameter. If the depart_... method does not exist, call self.unknown_departure.
dispatch_visit(node)
Call self."visit_ + node class name" with node as parameter. If the visit_... method does not exist, call self.unknown_visit.
emptytag(node, tagname, suffix='\n', **attributes)
Construct and return an XML-compatible empty tag.
encode(text)
Encode special characters in text & return.
footnote_backrefs(node)
is_compactable(node)
set_class_on_child(node, class_, index=0)
Set class class_ on the visible child no. index of node. Do nothing if node has fewer children than index.
set_first_last(node)
should_be_compact_paragraph(node)
Determine if the <p> tags around paragraph node can be omitted.
start_tag_with_title(node, tagname, **atts)
ID and NAME attributes will be handled in the title.
starttag(node, tagname, suffix='\n', empty=0, **attributes)
Construct and return a start tag given a node (id & class attributes are extracted), tag name, and optional attributes.
unimplemented_visit(node)
unknown_departure(node)
Called before exiting unknown Node types.
Raise exception unless overridden.
unknown_visit(node)
Called when entering unknown Node types.
Raise an exception unless overridden.
visit_Text(node)
visit_abbreviation(node)
visit_acronym(node)
visit_address(node)
visit_admonition(node, name='')
visit_attention(node)
visit_attribution(node)
visit_author(node)
visit_authors(node)
visit_block_quote(node)
visit_bullet_list(node)
visit_caption(node)
visit_caution(node)
visit_citation(node)
visit_citation_reference(node)
visit_classifier(node)
visit_colspec(node)
visit_comment(node, sub=<built-in method sub of _sre.SRE_Pattern object at 0x4140cca0>)
Escape double-dashes in comment text.
visit_compound(node)
visit_contact(node)
visit_container(node)
visit_copyright(node)
visit_danger(node)
visit_date(node)
visit_decoration(node)
visit_definition(node)
visit_definition_list(node)
visit_definition_list_item(node)
visit_description(node)
visit_docinfo(node)
visit_docinfo_item(node, name, meta=1)
visit_doctest_block(node)
visit_document(node)
visit_emphasis(node)
visit_entry(node)
visit_enumerated_list(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.
visit_error(node)
visit_field(node)
visit_field_body(node)
visit_field_list(node)
visit_field_name(node)
visit_figure(node)
visit_footer(node)
visit_footnote(node)
visit_footnote_reference(node)
visit_generated(node)
visit_header(node)
visit_hint(node)
visit_image(node)
visit_important(node)
visit_inline(node)
visit_label(node)
visit_legend(node)
visit_line(node)
visit_line_block(node)
visit_list_item(node)
visit_literal(node)
Process text to prevent tokens from wrapping.
visit_literal_block(node)
visit_meta(node)
visit_note(node)
visit_option(node)
visit_option_argument(node)
visit_option_group(node)
visit_option_list(node)
visit_option_list_item(node)
visit_option_string(node)
visit_organization(node)
visit_paragraph(node)
visit_problematic(node)
visit_raw(node)
visit_reference(node)
visit_revision(node)
visit_row(node)
visit_rubric(node)
visit_section(node)
visit_sidebar(node)
visit_status(node)
visit_strong(node)
visit_subscript(node)
visit_substitution_definition(node)
Internal only.
visit_substitution_reference(node)
visit_subtitle(node)
visit_superscript(node)
visit_system_message(node)
visit_table(node)
visit_target(node)
visit_tbody(node)
visit_term(node)
visit_tgroup(node)
visit_thead(node)
visit_tip(node)
visit_title(node, move_ids=1)
Only 6 section levels are supported by HTML.
visit_title_reference(node)
visit_topic(node)
visit_transition(node)
visit_version(node)
visit_warning(node)
write_colspecs()