Aligne les thèmes sur le point-virgule des auteurs
Le champ des auteurs se saisit au point-virgule depuis toujours ; celui des thèmes se saisissait à la virgule. Deux champs voisins du même formulaire ne doivent pas se saisir de deux façons. La virgule reste acceptée en repli : c'était l'habitude, et un thème n'en contient jamais — contrairement à un titre d'article à la une, qui arrive au lot suivant et pour lequel elle couperait le titre en deux. D'où le paramètre de `ListeSaisie` plutôt qu'une règle unique. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -31,7 +31,7 @@ public record EnregistrementLivre
|
||||
/// </summary>
|
||||
public List<AuteurSaisi> Auteurs { get; set; } = [];
|
||||
|
||||
/// <summary>Thèmes saisis manuellement, séparés par des virgules dans l'interface.</summary>
|
||||
/// <summary>Thèmes saisis manuellement, séparés par des points-virgules dans l'interface.</summary>
|
||||
public List<string> Themes { get; set; } = [];
|
||||
|
||||
public string? Editeur { get; set; }
|
||||
@@ -73,7 +73,7 @@ public record EnregistrementLivre
|
||||
[JsonIgnore]
|
||||
public string? ThemesTexte
|
||||
{
|
||||
get => Themes.Count == 0 ? null : string.Join(", ", Themes);
|
||||
get => Themes.Count == 0 ? null : ListeSaisie.Joindre(Themes);
|
||||
set => Themes = DecouperThemes(value);
|
||||
}
|
||||
|
||||
@@ -110,19 +110,13 @@ public record EnregistrementLivre
|
||||
.ToList();
|
||||
}
|
||||
|
||||
public static List<string> DecouperThemes(string? saisie)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(saisie))
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
var vus = new HashSet<string>(StringComparer.Ordinal);
|
||||
return saisie
|
||||
.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries)
|
||||
.Where(theme => vus.Add(NormalisationTexte.Normaliser(theme)))
|
||||
.ToList();
|
||||
}
|
||||
/// <summary>
|
||||
/// Découpe la ligne des thèmes. Séparateur : le <b>point-virgule</b>, comme celui des
|
||||
/// auteurs juste au-dessus dans le même formulaire — la virgule reste acceptée, un thème
|
||||
/// n'en contenant jamais.
|
||||
/// </summary>
|
||||
public static List<string> DecouperThemes(string? saisie) =>
|
||||
ListeSaisie.Decouper(saisie, virguleAussi: true);
|
||||
}
|
||||
|
||||
/// <summary>Un auteur tel qu'il est saisi : son nom, et son rôle sur ce livre.</summary>
|
||||
|
||||
Reference in New Issue
Block a user