<?php

namespace App\Exports\Concerns;

/**
 * Excel/LibreOffice interpretan como fórmula cualquier celda de texto que
 * empiece con =, +, -, @ o tabulador/retorno de carro. Si un dato libre
 * escrito por un usuario (nombre de cliente, motivo, etc.) empieza así,
 * se antepone un apóstrofe para forzar que se trate como texto plano
 * (previene "CSV/Formula Injection" al abrir el reporte en Excel).
 */
trait SanitizaCeldasExcel
{
    private function celda(mixed $valor): mixed
    {
        if (! is_string($valor) || $valor === '') {
            return $valor;
        }

        return preg_match('/^[=+\-@\t\r]/', $valor) ? "'".$valor : $valor;
    }
}
