"""Genera la página HTML autocontenida a partir de las sesiones.
El resultado no necesita red ni servidor: los datos y las transcripciones van
embebidos adentro y se abre con doble clic.
"""
import json
from importlib import resources
MARKER = "__DATA__"
TEMPLATE_NAME = "template.html"
class TemplateError(Exception):
"""El template no tiene la forma que espera el generador."""
def template_text(path=None):
if path:
with open(path, encoding="utf-8") as f:
return f.read()
return (resources.files(__package__) / TEMPLATE_NAME).read_text(encoding="utf-8")
def build_payload(sessions, memories=None):
"""Estructura que viaja embebida en la página.
Un objeto y no una lista porque la página muestra dos cosas distintas:
sesiones y memorias de proyecto.
"""
return {"s": list(sessions), "m": list(memories or ())}
def encode_payload(payload):
"""Serializa el payload para meterlo en un