diff options
author | Jon Turney <jon.turney@dronecode.org.uk> | 2019-06-17 22:01:35 +0300 |
---|---|---|
committer | Jon Turney <jon.turney@dronecode.org.uk> | 2019-06-20 11:25:37 +0300 |
commit | 7b5e7c5f9a9e981d9165a0486c1407ad9e9b6a09 (patch) | |
tree | 3d933d9aa7e5dbdce34d6a7f8e9bc29006f2c123 | |
parent | 65fee8305bcab558831f89750c1690298a210895 (diff) |
Linkify hyperlinks in ldesc in package summary page
Also move where we do html escaping, so it doesn't interact with
formatting of line-breaks in ldesc
-rwxr-xr-x | calm/pkg2html.py | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/calm/pkg2html.py b/calm/pkg2html.py index 623c402..9ce267a 100755 --- a/calm/pkg2html.py +++ b/calm/pkg2html.py @@ -65,7 +65,8 @@ from . import utils # def sdesc(packages, p, bv): header = packages[p].version_hints[bv]['sdesc'] - return header.strip('"') + header = header.strip('"') + return html.escape(header, quote=False) # @@ -75,12 +76,16 @@ def ldesc(packages, p, bv): if 'ldesc' in packages[p].version_hints[bv]: header = packages[p].version_hints[bv]['ldesc'] else: - header = sdesc(packages, p, bv) + return sdesc(packages, p, bv) header = header.strip('"') + # escape html entities + header = html.escape(header, quote=False) header = header.replace('\n\n', '\n<br>\n') # try to recognize things which look like bullet points header = re.sub(r'\n(\s*[*-]\s)', r'<br>\n\1', header) + # linkify things which look like hyperlinks + header = re.sub(r'http(s|)://[^\s\)]*', r'<a href="\g<0>">\g<0></a>', header) return header @@ -167,8 +172,8 @@ def update_package_listings(args, packages): <!--#include virtual="/top.html" --> <h1>Package: %s</h1>''' % (title, p)), file=f) - print('<span class="detail">summary</span>: %s<br><br>' % html.escape(sdesc(arch_packages, p, bv), quote=False), file=f) - print('<span class="detail">description</span>: %s<br><br>' % html.escape(ldesc(arch_packages, p, bv), quote=False), file=f) + print('<span class="detail">summary</span>: %s<br><br>' % sdesc(arch_packages, p, bv), file=f) + print('<span class="detail">description</span>: %s<br><br>' % ldesc(arch_packages, p, bv), file=f) print('<span class="detail">categories</span>: %s<br><br>' % arch_packages[p].version_hints[bv].get('category', ''), file=f) for key in ['depends', 'obsoletes', 'provides', 'conflicts', 'build-depends']: @@ -276,7 +281,7 @@ def update_package_listings(args, packages): anchor = ' id="%s"' % (jump) print('<tr%s><td%s><a href="summary/%s.html">%s</a></td><td>%s</td></tr>' % - (anchor, first, p, p, html.escape(header, quote=False)), + (anchor, first, p, p, header), file=index) first = '' @@ -368,8 +373,6 @@ def write_arch_listing(args, packages, arch): if fver.endswith('-src'): header = header + " (source code)" - header = html.escape(header, quote=False) - print(textwrap.dedent('''\ <!DOCTYPE html> <html> |