Ehundu 0.4.0
El PDF de una página. Una página con pdf: sí sale también como PDF, además de como HTML. Lo maqueta su propia plantilla, <plantilla>.pdf.twig, con los mismos datos que la de la web pero con HTML y CSS sencillos (el PDF no admite flex ni rejilla). Sale en la dirección de la página con .pdf en lugar de la barra final, y las plantillas lo enlazan con pagina.pdf. Es una salida más de la compilación, declarada por la página, y no un procesador sobre el HTML de otra (docs/formato.md (se abre en una pestaña nueva), §10.3, decisiones 96 y 97).
El PDF lo genera dompdf, que es opcional. Es PHP puro, sin programas externos ni GD, y se instala con composer require dompdf/dompdf (hace falta la extensión dom). El motor solo lo pide si una página declara pdf: sí; si falta, la compilación se detiene con un error que lo dice. El ehundu.phar no lo trae: para generar PDF hay que usar el motor por Composer.
El mismo proyecto da siempre los mismos bytes. El PDF lleva la fecha de la página (o el 1 de enero de 1970 si no tiene), un identificador sacado de su contenido y la caché de tipografías en la carpeta temporal del sistema, así que no escribe fuera de salida/ y solo lee de publico/. Un PDF que no cambia no se vuelve a subir en el despliegue, y la compilación incremental lo tiene en cuenta: lo que dompdf lee de publico/ cuenta como dependencia de la página.
Los ficheros PHP detienen la compilación. Un fichero PHP en publico/ o en contenido/ (.php, .php3 a .php8, .pht, .phtml, .phar, y también foto.php.jpg, que algunos servidores ejecutan) ya no se copia: el error dice cuál es. Un sitio estático no tiene por qué llevarlos, y en uno infectado son lo primero que se cuela (§9, decisión 98). Es lo único que puede impedir compilar un sitio de la 0.3.
El formato, para los editores. El esquema (§11) admite una lista dentro de una lista de campos simples, campos traducible con un texto por idioma, el tipo seleccion-multiple con las opciones en datos/, recuerda (lo que un editor guarda de las filas de una lista) y ficheros de datos/ editables desde el esquema (§11.1 a §11.5, decisiones 91 a 95). El motor no lee ninguno de estos atributos: son cosas de los editores, y el motor solo lee lo que ellos escriben en el proyecto.
Los sitios de la 0.3 compilan igual, fichero a fichero, salvo que lleven ficheros PHP en publico/ o contenido/.
Esta versión en GitHub (se abre en una pestaña nueva), con el ehundu.phar.