add "preview" type update_notification to notifications too instead of just displaying it
[enigma2-plugins.git] / simplerss / src / TagStrip.py
1 # -*- coding: utf-8 -*-
2
3 from re import sub
4
5 # Entities to be converted
6 entities = [
7         # ISO-8895-1 (most common)
8         ("ä", u""),
9         ("ä", u""),
10         ("ü", u""),
11         ("ü", u""),
12         ("ö", u""),
13         ("ö", u""),
14         ("Ä", u""),
15         ("Ä", u""),
16         ("Ü", u""),
17         ("Ü", u""),
18         ("Ö", u""),
19         ("Ö", u""),
20         ("ß", u""),
21         ("ß", u""),
22
23         # Rarely used entities
24         ("…", u"..."),
25         ("–", u"-"),
26         (" ", u" "),
27         (""", u"\""),
28         ("&", u"&"),
29         ("'", u"'"),
30         ("&#60;", u"<"),
31         ("&#62;", u">"),
32
33         # Common entities
34         ("&lt;", u"<"),
35         ("&gt;", u">"),
36         ("&nbsp;", u" "),
37         ("&amp;", u"&"),
38         ("&quot;", u"\""),
39         ("&apos;", u"'"),
40 ]
41
42 def strip_readable(html):
43         # Newlines are rendered as whitespace in html
44         html = html.replace('\n', ' ')
45
46         # Multiple whitespaces are rendered as a single one
47         html = sub('\s\s+', ' ', html)
48
49         # Replace <br> by newlines
50         html = sub('<br(\s+/)?>', '\n', html)
51
52         # Replace <p>, <ul>, <ol> and end of these tags by newline
53         html = sub('</?(p|ul|ol)(\s+.*?)?>', '\n', html)
54
55         # Replace <li> by - and </li> by newline
56         html = sub('<li(\s+.*?)?>', '-', html)
57         html = html.replace('</li>', '\n')
58
59         # And 'normal' stripping
60         return strip(html)
61
62 def strip(html):
63         # Strip enclosed tags
64         html = sub('<(.*?)>', '', html)
65
66         # Convert html entities
67         for escaped, unescaped in entities:
68                 html = html.replace(escaped, unescaped)
69
70         # Return result with leading/trailing whitespaces removed
71         return html.strip()