/** * Generar imsmanifest.xml para paquetes SCORM 1.2 */ import { writeFile } from 'fs/promises'; import { join } from 'path'; import { Guide } from '../../src/data/guides-index.js'; /** * Generar imsmanifest.xml para una guía */ export async function generateManifest( guide: Guide, outputPath: string ): Promise { const manifest = ` ADL SCORM 1.2 URI urn:uuid:${guide.id} <langstring xml:lang="es">${escapeXml(guide.titulo)} - Guía de Refuerzo</langstring> ${escapeXml(guide.descripcion)} es 1.0 LOMv1.0 Guía de Refuerzo ${escapeXml(guide.titulo)} ${escapeXml(guide.titulo)} ${guide.secciones.map((section, index) => ` ${escapeXml(section.titulo)} `).join('')} ${guide.secciones.map((section) => ` `).join('')} `; await writeFile(outputPath, manifest, 'utf-8'); } /** * Escapar caracteres XML especiales */ function escapeXml(text: string): string { return text .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); }