Mercurial > piecrust2
view piecrust/admin/textutil.py @ 1168:10520472cc73
routing: Fix breakages with routing on some versions of Python.
Finally figured what happened with change 6baa94da8b16 (this is a Mercurial
hash by the way if you're looking at the Git mirror). Between Python 3.6 and
3.7 there was a change where the percent sign ('%') went from being escaped by
`re.escape` to _not_ being escaped. So now we need to use different regex
patterns dependin on the Python version, yay.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Fri, 04 Oct 2019 11:13:33 -0700 |
parents | 5e91bc0e3b4d |
children |
line wrap: on
line source
from html.parser import HTMLParser def text_preview(txt, length=100, *, max_length=None, offset=0): max_length = max_length or (length + 50) extract = txt[offset:offset + length] if len(txt) > offset + length: for i in range(offset + length, min(offset + max_length, len(txt))): c = txt[i] if c not in [' ', '\t', '\r', '\n']: extract += c else: extract += '...' break return extract class MLStripper(HTMLParser): def __init__(self): super(MLStripper, self).__init__() self.reset() self.strict = False self.convert_charrefs = True self.fed = [] def handle_data(self, d): self.fed.append(d) def handle_entityref(self, name): self.fed.append('&%s;' % name) def get_data(self): return ''.join(self.fed) def html_to_text(html): s = MLStripper() s.feed(html) return s.get_data()