#!/usr/bin/env python3 from sys import argv from urllib.parse import urljoin from xml.etree.ElementTree import Element, SubElement, indent, tostring from helpers import ( DATE_FORMATTERS, guess_language, read_concerts, tmplocale, touchup_plaintext, ) LOCALIZED_TEXT = { 'en': { 'title': 'Bellefeuille Quartet', 'indexpath': 'en/', 'description': 'News from the Bellefeuille quartet', }, 'fr': { 'title': 'Quatuor Bellefeuille', 'indexpath': '/', 'description': 'Des nouvelles du quatuor Bellefeuille', }, } LOCALIZED_FORMATS = { 'en': { 'title': lambda c: f'{c.time.strftime("%B %-d %Y")} in {c.place}', }, 'fr': { 'title': lambda c: f'{c.time.strftime("%-d %B %Y")} à {c.place}', }, } 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)) 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'