From 467f96cf68b121400c835683cf87b11db8c1c7b2 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Mon, 21 Feb 2022 22:09:12 +0100 Subject: [wip] Add CDATA (cont'd) --- build-feed.py | 98 ++++++++++++++++++++++++----------------------------------- 1 file changed, 39 insertions(+), 59 deletions(-) diff --git a/build-feed.py b/build-feed.py index a8cb733..a6b0890 100755 --- a/build-feed.py +++ b/build-feed.py @@ -2,7 +2,9 @@ from sys import argv from urllib.parse import urljoin -from xml.etree.ElementTree import Element, SubElement, indent, tostring + +from lxml.builder import E +from lxml.etree import CDATA, indent, tostring from helpers import ( DATE_FORMATTERS, @@ -36,66 +38,50 @@ LOCALIZED_FORMATS = { } -def text_element(tag, text, /, **kwargs): - elt = Element(tag, **kwargs) - elt.text = text - 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)) + if concert.warning is not None: + blocks.append(E.p(concert.warning)) blocks.extend(( - block('p', formatters['date'](concert.time)), - block('p', formatters['time'](concert.time)), - block('p', concert.address.replace('\n', '
')) + E.p(formatters['date'](concert.time)), + E.p(formatters['time'](concert.time)), + # TODO: NEED TO USE FUNC/ITERTOOLS SHENANIGANS TO WEAVE E.br INTO THIS + E.p(concert.address.replace('\n', '
')), + E.ol( + *(E.li(touchup_plaintext(p)) for p in concert.pieces.splitlines()) + ), + *tuple(E.p(line) for line in concert.instructions.splitlines()), )) - 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'