<?php

declare(strict_types=1);

namespace App\Administration\Application\Service\Import;

use function array_filter;
use function array_map;
use function array_values;
use function explode;
use function trim;

/**
 * Parse une valeur multi-éléments séparés par un délimiteur.
 *
 * Utilisé pour les champs matières et classes dans l'import enseignants
 * où une cellule CSV peut contenir "Mathématiques, Physique".
 *
 * @see FR77: Import enseignants via CSV
 */
final readonly class MultiValueParser
{
    /**
     * @param non-empty-string $separator
     *
     * @return list<string>
     */
    public function parse(string $value, string $separator = ','): array
    {
        if (trim($value) === '') {
            return [];
        }

        return array_values(array_filter(
            array_map(
                static fn (string $item): string => trim($item),
                explode($separator, $value),
            ),
            static fn (string $item): bool => $item !== '',
        ));
    }
}
