annotate Lib/htmllib.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents c71a7a4f5f8e
children 3f84558a24dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
1 """HTML 2.0 parser.
2442
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
3 See the HTML 2.0 specification:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
4 http://www.w3.org/hypertext/WWW/MarkUp/html-spec/html-spec_toc.html
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
5 """
2442
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
8 import sys
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
9 import regsub
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
10 import string
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
11 from sgmllib import SGMLParser
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
12 from formatter import AS_IS
2442
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
13
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
14
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
15 class HTMLParser(SGMLParser):
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
16
3125
90566c9c189f entity definitions from HTML 2.0 std
Guido van Rossum <guido@python.org>
parents: 3119
diff changeset
17 from htmlentitydefs import entitydefs
90566c9c189f entity definitions from HTML 2.0 std
Guido van Rossum <guido@python.org>
parents: 3119
diff changeset
18
3119
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
19 def __init__(self, formatter, verbose=0):
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
20 SGMLParser.__init__(self, verbose)
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
21 self.formatter = formatter
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
22 self.savedata = None
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
23 self.isindex = 0
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
24 self.title = None
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
25 self.base = None
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
26 self.anchor = None
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
27 self.anchorlist = []
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
28 self.nofill = 0
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
29 self.list_stack = []
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
30
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
31 # ------ Methods used internally; some may be overridden
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
32
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
33 # --- Formatter interface, taking care of 'savedata' mode;
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
34 # shouldn't need to be overridden
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
35
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
36 def handle_data(self, data):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
37 if self.savedata is not None:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
38 self.savedata = self.savedata + data
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
39 else:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
40 if self.nofill:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
41 self.formatter.add_literal_data(data)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
42 else:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
43 self.formatter.add_flowing_data(data)
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
44
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
45 # --- Hooks to save data; shouldn't need to be overridden
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
46
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
47 def save_bgn(self):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
48 self.savedata = ''
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
49
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
50 def save_end(self):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
51 data = self.savedata
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
52 self.savedata = None
3065
a5768e4ee045 took out forms support (in favor a Grail extension)
Guido van Rossum <guido@python.org>
parents: 2933
diff changeset
53 if not self.nofill:
a5768e4ee045 took out forms support (in favor a Grail extension)
Guido van Rossum <guido@python.org>
parents: 2933
diff changeset
54 data = string.join(string.split(data))
a5768e4ee045 took out forms support (in favor a Grail extension)
Guido van Rossum <guido@python.org>
parents: 2933
diff changeset
55 return data
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
56
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
57 # --- Hooks for anchors; should probably be overridden
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
58
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
59 def anchor_bgn(self, href, name, type):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
60 self.anchor = href
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
61 if self.anchor:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
62 self.anchorlist.append(href)
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
63
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
64 def anchor_end(self):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
65 if self.anchor:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
66 self.handle_data("[%d]" % len(self.anchorlist))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
67 self.anchor = None
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
68
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
69 # --- Hook for images; should probably be overridden
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
70
3119
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
71 def handle_image(self, src, alt, *args):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
72 self.handle_data(alt)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
73
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
74 # --------- Top level elememts
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
75
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
76 def start_html(self, attrs): pass
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
77 def end_html(self): pass
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
78
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
79 def start_head(self, attrs): pass
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
80 def end_head(self): pass
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
81
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
82 def start_body(self, attrs): pass
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
83 def end_body(self): pass
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
84
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
85 # ------ Head elements
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
86
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
87 def start_title(self, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
88 self.save_bgn()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
89
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
90 def end_title(self):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
91 self.title = self.save_end()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
92
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
93 def do_base(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
94 for a, v in attrs:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
95 if a == 'href':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
96 self.base = v
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
97
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
98 def do_isindex(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
99 self.isindex = 1
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
100
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
101 def do_link(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
102 pass
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
103
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
104 def do_meta(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
105 pass
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
106
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
107 def do_nextid(self, attrs): # Deprecated
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
108 pass
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
109
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
110 # ------ Body elements
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
111
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
112 # --- Headings
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
113
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
114 def start_h1(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
115 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
116 self.formatter.push_font(('h1', 0, 1, 0))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
117
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
118 def end_h1(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
119 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
120 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
121
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
122 def start_h2(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
123 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
124 self.formatter.push_font(('h2', 0, 1, 0))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
125
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
126 def end_h2(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
127 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
128 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
129
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
130 def start_h3(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
131 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
132 self.formatter.push_font(('h3', 0, 1, 0))
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
133
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
134 def end_h3(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
135 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
136 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
137
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
138 def start_h4(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
139 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
140 self.formatter.push_font(('h4', 0, 1, 0))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
141
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
142 def end_h4(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
143 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
144 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
145
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
146 def start_h5(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
147 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
148 self.formatter.push_font(('h5', 0, 1, 0))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
149
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
150 def end_h5(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
151 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
152 self.formatter.pop_font()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
153
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
154 def start_h6(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
155 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
156 self.formatter.push_font(('h6', 0, 1, 0))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
157
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
158 def end_h6(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
159 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
160 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
161
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
162 # --- Block Structuring Elements
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
163
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
164 def do_p(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
165 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
166
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
167 def start_pre(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
168 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
169 self.formatter.push_font((AS_IS, AS_IS, AS_IS, 1))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
170 self.nofill = self.nofill + 1
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
171
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
172 def end_pre(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
173 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
174 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
175 self.nofill = max(0, self.nofill - 1)
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
176
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
177 def start_xmp(self, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
178 self.start_pre(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
179 self.setliteral('xmp') # Tell SGML parser
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
180
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
181 def end_xmp(self):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
182 self.end_pre()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
183
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
184 def start_listing(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
185 self.start_pre(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
186 self.setliteral('listing') # Tell SGML parser
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
187
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
188 def end_listing(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
189 self.end_pre()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
190
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
191 def start_address(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
192 self.formatter.end_paragraph(0)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
193 self.formatter.push_font((AS_IS, 1, AS_IS, AS_IS))
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
194
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
195 def end_address(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
196 self.formatter.end_paragraph(0)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
197 self.formatter.pop_font()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
198
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
199 def start_blockquote(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
200 self.formatter.end_paragraph(1)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
201 self.formatter.push_margin('blockquote')
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
202
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
203 def end_blockquote(self):
2933
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
204 self.formatter.end_paragraph(1)
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
205 self.formatter.pop_margin()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
206
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
207 # --- List Elements
2442
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
208
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
209 def start_ul(self, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
210 self.formatter.end_paragraph(not self.list_stack)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
211 self.formatter.push_margin('ul')
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
212 self.list_stack.append(['ul', '*', 0])
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
213
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
214 def end_ul(self):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
215 if self.list_stack: del self.list_stack[-1]
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
216 self.formatter.end_paragraph(not self.list_stack)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
217 self.formatter.pop_margin()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
218
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
219 def do_li(self, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
220 self.formatter.end_paragraph(0)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
221 if self.list_stack:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
222 [dummy, label, counter] = top = self.list_stack[-1]
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
223 top[2] = counter = counter+1
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
224 else:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
225 label, counter = '*', 0
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
226 self.formatter.add_label_data(label, counter)
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
227
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
228 def start_ol(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
229 self.formatter.end_paragraph(not self.list_stack)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
230 self.formatter.push_margin('ol')
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
231 label = '1.'
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
232 for a, v in attrs:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
233 if a == 'type':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
234 if len(v) == 1: v = v + '.'
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
235 label = v
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
236 self.list_stack.append(['ol', label, 0])
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
237
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
238 def end_ol(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
239 if self.list_stack: del self.list_stack[-1]
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
240 self.formatter.end_paragraph(not self.list_stack)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
241 self.formatter.pop_margin()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
242
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
243 def start_menu(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
244 self.start_ul(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
245
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
246 def end_menu(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
247 self.end_ul()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
248
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
249 def start_dir(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
250 self.start_ul(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
251
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
252 def end_dir(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
253 self.end_ul()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
254
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
255 def start_dl(self, attrs):
2933
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
256 self.formatter.end_paragraph(1)
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
257 self.list_stack.append(['dl', '', 0])
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
258
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
259 def end_dl(self):
2933
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
260 self.ddpop(1)
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
261 if self.list_stack: del self.list_stack[-1]
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
262
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
263 def do_dt(self, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
264 self.ddpop()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
265
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
266 def do_dd(self, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
267 self.ddpop()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
268 self.formatter.push_margin('dd')
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
269 self.list_stack.append(['dd', '', 0])
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
270
2933
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
271 def ddpop(self, bl=0):
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
272 self.formatter.end_paragraph(bl)
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
273 if self.list_stack:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
274 if self.list_stack[-1][0] == 'dd':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
275 del self.list_stack[-1]
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
276 self.formatter.pop_margin()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
277
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
278 # --- Phrase Markup
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
279
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
280 # Idiomatic Elements
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
281
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
282 def start_cite(self, attrs): self.start_i(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
283 def end_cite(self): self.end_i()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
284
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
285 def start_code(self, attrs): self.start_tt(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
286 def end_code(self): self.end_tt()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
287
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
288 def start_em(self, attrs): self.start_i(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
289 def end_em(self): self.end_i()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
290
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
291 def start_kbd(self, attrs): self.start_tt(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
292 def end_kbd(self): self.end_tt()
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
293
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
294 def start_samp(self, attrs): self.start_tt(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
295 def end_samp(self): self.end_tt()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
296
2933
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
297 def start_strong(self, attrs): self.start_b(attrs)
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
298 def end_strong(self): self.end_b()
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
299
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
300 def start_var(self, attrs): self.start_i(attrs)
2933
7e1265312dd4 change blank line insertion at a few places and fix recursion bug for </var>
Guido van Rossum <guido@python.org>
parents: 2917
diff changeset
301 def end_var(self): self.end_i()
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
302
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
303 # Typographic Elements
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
304
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
305 def start_i(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
306 self.formatter.push_font((AS_IS, 1, AS_IS, AS_IS))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
307 def end_i(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
308 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
309
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
310 def start_b(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
311 self.formatter.push_font((AS_IS, AS_IS, 1, AS_IS))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
312 def end_b(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
313 self.formatter.pop_font()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
314
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
315 def start_tt(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
316 self.formatter.push_font((AS_IS, AS_IS, AS_IS, 1))
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
317 def end_tt(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
318 self.formatter.pop_font()
2442
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
319
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
320 def start_a(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
321 href = ''
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
322 name = ''
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
323 type = ''
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
324 for attrname, value in attrs:
3149
bad97b405166 strip <A> attribute values
Guido van Rossum <guido@python.org>
parents: 3125
diff changeset
325 value = string.strip(value)
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
326 if attrname == 'href':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
327 href = value
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
328 if attrname == 'name':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
329 name = value
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
330 if attrname == 'type':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
331 type = string.lower(value)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
332 self.anchor_bgn(href, name, type)
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
333
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
334 def end_a(self):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
335 self.anchor_end()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
336
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
337 # --- Line Break
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
338
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
339 def do_br(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
340 self.formatter.add_line_break()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
341
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
342 # --- Horizontal Rule
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
343
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
344 def do_hr(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
345 self.formatter.add_hor_rule()
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
346
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
347 # --- Image
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
348
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
349 def do_img(self, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
350 align = ''
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
351 alt = '(image)'
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
352 ismap = ''
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
353 src = ''
3119
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
354 width = 0
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
355 height = 0
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
356 for attrname, value in attrs:
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
357 if attrname == 'align':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
358 align = value
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
359 if attrname == 'alt':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
360 alt = value
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
361 if attrname == 'ismap':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
362 ismap = value
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
363 if attrname == 'src':
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
364 src = value
3119
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
365 if attrname == 'width':
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
366 try: width = string.atoi(value)
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
367 except: pass
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
368 if attrname == 'height':
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
369 try: height = string.atoi(value)
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
370 except: pass
1071d16c930c added verbose option; added ismap/align/width/height to handle_image args
Guido van Rossum <guido@python.org>
parents: 3065
diff changeset
371 self.handle_image(src, alt, ismap, align, width, height)
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
372
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
373 # --- Really Old Unofficial Deprecated Stuff
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
374
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
375 def do_plaintext(self, attrs):
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
376 self.start_pre(attrs)
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
377 self.setnomoretags() # Tell SGML parser
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
378
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
379 # --- Unhandled tags
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
380
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
381 def unknown_starttag(self, tag, attrs):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
382 pass
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
383
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
384 def unknown_endtag(self, tag):
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
385 pass
2442
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
386
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
387
3384
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
388 def test(args = None):
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
389 import sys, formatter
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
390
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
391 if not args:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
392 args = sys.argv[1:]
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
393
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
394 silent = args and args[0] == '-s'
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
395 if silent:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
396 del args[0]
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
397
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
398 if args:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
399 file = args[0]
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
400 else:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
401 file = 'test.html'
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
402
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
403 if file == '-':
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
404 f = sys.stdin
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
405 else:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
406 try:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
407 f = open(file, 'r')
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
408 except IOError, msg:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
409 print file, ":", msg
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
410 sys.exit(1)
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
411
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
412 data = f.read()
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
413
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
414 if f is not sys.stdin:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
415 f.close()
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
416
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
417 if silent:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
418 f = formatter.NullFormatter()
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
419 else:
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
420 f = formatter.AbstractFormatter(formatter.DumbWriter())
c71a7a4f5f8e improved test()
Guido van Rossum <guido@python.org>
parents: 3149
diff changeset
421
2917
9fad029f838f new formatter module; redid htmllib module to use it
Guido van Rossum <guido@python.org>
parents: 2898
diff changeset
422 p = HTMLParser(f)
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
423 p.feed(data)
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
424 p.close()
2442
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
425
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
426
a5e95f9de900 added html parser and supporting cast
Guido van Rossum <guido@python.org>
parents:
diff changeset
427 if __name__ == '__main__':
2898
56e628a77c8d major rewrite using different formatting paradigm
Guido van Rossum <guido@python.org>
parents: 2771
diff changeset
428 test()