From 0729fb76b52dcdaaf6d9b7f4dd60bc0099f067c3 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Mon, 21 Feb 2022 21:22:10 +0100 Subject: [wip] Add CDATA Doesn't work yet, the tags get escaped. Maybe lxml has a simpler API? --- build-feed.py | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) (limited to 'build-feed.py') diff --git a/build-feed.py b/build-feed.py index d3409f9..a8cb733 100755 --- a/build-feed.py +++ b/build-feed.py @@ -4,7 +4,13 @@ from sys import argv from urllib.parse import urljoin from xml.etree.ElementTree import Element, SubElement, indent, tostring -from helpers import guess_language, read_concerts, tmplocale +from helpers import ( + DATE_FORMATTERS, + guess_language, + read_concerts, + tmplocale, + touchup_plaintext, +) LOCALIZED_TEXT = { @@ -36,6 +42,39 @@ def text_element(tag, text, /, **kwargs): return elt +def block(tag, content): + return f'<{tag}>{content}' + + +def cdata_concert(concert, lang): + formatters = DATE_FORMATTERS[lang] + + blocks = [] + + if concert.warning is None: + blocks.append(block('p', concert.warning)) + + blocks.extend(( + block('p', formatters['date'](concert.time)), + block('p', formatters['time'](concert.time)), + block('p', concert.address.replace('\n', '
')) + )) + + piece_list = '\n'.join( + block('li', touchup_plaintext(p)) for p in concert.pieces.splitlines() + ) + blocks.append(block('ol', piece_list)) + + blocks.extend( + block('p', touchup_plaintext(line)) + for line in concert.instructions.splitlines() + ) + + cdata = '\n'.join((blocks)) + + return f'