| 151 | except ValueError: return 0 |
| 152 | |
| 153 | class _html2text(HTMLParser.HTMLParser): |
| 154 | def __init__(self, out=None, baseurl=''): |
| 155 | HTMLParser.HTMLParser.__init__(self) |
| 156 | |
| 157 | if out is None: self.out = self.outtextf |
| 158 | else: self.out = out |
| 159 | try: |
| 160 | self.outtext = unicode() |
| 161 | except NameError: # Python3 |
| 162 | self.outtext = str() |
| 163 | self.quiet = 0 |
| 164 | self.p_p = 0 |
| 165 | self.outcount = 0 |
| 166 | self.start = 1 |
| 167 | self.space = 0 |
| 168 | self.a = [] |
| 169 | self.astack = [] |
| 170 | self.acount = 0 |
| 171 | self.list = [] |
| 172 | self.blockquote = 0 |
| 173 | self.pre = 0 |
| 174 | self.startpre = 0 |
| 175 | self.lastWasNL = 0 |
| 176 | self.abbr_title = None # current abbreviation definition |
| 177 | self.abbr_data = None # last inner HTML (for abbr being defined) |
| 178 | self.abbr_list = {} # stack of abbreviations to write later |
| 179 | self.baseurl = baseurl |
| 180 | |
| 181 | def outtextf(self, s): |
| 182 | self.outtext += s |
| 183 | |
| 184 | def close(self): |
| 185 | HTMLParser.HTMLParser.close(self) |
| 186 | |
| 187 | self.pbr() |
| 188 | self.o('', 0, 'end') |
| 189 | |
| 190 | return self.outtext |
| 191 | |
| 192 | def handle_charref(self, c): |
| 193 | self.o(charref(c)) |
| 194 | |
| 195 | def handle_entityref(self, c): |
| 196 | self.o(entityref(c)) |
| 197 | |
| 198 | def handle_starttag(self, tag, attrs): |
| 199 | self.handle_tag(tag, attrs, 1) |
| 200 | |
| 201 | def handle_endtag(self, tag): |
| 202 | self.handle_tag(tag, None, 0) |
| 203 | |
| 204 | def previousIndex(self, attrs): |
| 205 | """ returns the index of certain set of attributes (of a link) in the |
| 206 | self.a list |
| 207 | |
| 208 | If the set of attributes is not found, returns None |
| 209 | """ |
| 210 | if not has_key(attrs, 'href'): return None |