/**
 * Utilitaires pour la génération de fichiers XML (format Excel SpreadsheetML)
 */

/**
 * Échappe les caractères spéciaux XML
 * @param {string} s - Chaîne à échapper
 * @returns {string} Chaîne échappée
 */
function xmlEsc(s) {
  return String(s ?? "")
    .replace(/&/g, "&amp;")
    .replace(/</g, "&lt;")
    .replace(/>/g, "&gt;")
    .replace(/"/g, "&quot;")
    .replace(/'/g, "&apos;");
}

/**
 * Génère une cellule XML pour Excel
 * @param {string} v - Valeur de la cellule
 * @returns {string} Cellule XML formatée
 */
function cellXml(v) {
  return `<Cell><Data ss:Type="String">${xmlEsc(v)}</Data></Cell>`;
}

/**
 * Génère une ligne XML pour Excel
 * @param {Array<string>} cells - Tableau de valeurs pour les cellules
 * @returns {string} Ligne XML formatée
 */
function rowXml(cells) {
  return `<Row>${cells.map(cellXml).join("")}</Row>`;
}

module.exports = {
  xmlEsc,
  cellXml,
  rowXml
};

