Rend enfin tapable le champ où l'on écrit ce qu'un numéro annonce
Le champ « À la une » se reliait à chaque frappe sur une propriété qui découpait puis recomposait la ligne : le point-virgule tapé ouvrait une entrée vide aussitôt élaguée, et l'espace qui le suit était rogné. Le seul caractère qu'on ne pouvait pas y taper était son propre séparateur. Un titre s'ajoute maintenant seul, par Entrée, et se modifie ou se retire depuis la liste. Plus rien ne découpe, donc plus rien n'est intapable. ArticlesTexte disparaît, et avec lui le paramètre virguleAussi de ListeSaisie, qui n'existait que pour ce champ. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -125,7 +125,7 @@ public record EnregistrementLivre
|
||||
/// n'en contenant jamais.
|
||||
/// </summary>
|
||||
public static List<string> DecouperThemes(string? saisie) =>
|
||||
ListeSaisie.Decouper(saisie, virguleAussi: true);
|
||||
ListeSaisie.Decouper(saisie);
|
||||
}
|
||||
|
||||
/// <summary>Un auteur tel qu'il est saisi : son nom, et son rôle sur ce livre.</summary>
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using MaBibli.Shared.Textes;
|
||||
|
||||
namespace MaBibli.Shared.Dtos;
|
||||
|
||||
/// <summary>
|
||||
@@ -71,21 +68,15 @@ public record AjoutNumeroRevue
|
||||
/// </summary>
|
||||
public string? CoverUrl { get; set; }
|
||||
|
||||
/// <summary>Articles à la une, dans l'ordre de la couverture.</summary>
|
||||
public List<string> Articles { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Vue « une seule ligne » des <see cref="Articles"/>, pour un champ de saisie simple.
|
||||
/// Articles à la une, dans l'ordre de la couverture.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// ⚠️ Séparateur : le <b>point-virgule</b> seul, contrairement aux thèmes d'un livre. Un
|
||||
/// titre d'article contient souvent une virgule (« Ukraine, deux ans après »), qui le
|
||||
/// couperait en deux.
|
||||
/// ⚠️ <b>La liste est la donnée, et il n'y a plus de vue « une seule ligne ».</b> Elle a
|
||||
/// existé — un champ texte à points-virgules, relié à chaque frappe sur une propriété qui
|
||||
/// découpait puis recomposait — et c'était un champ dans lequel on ne pouvait taper ni le
|
||||
/// séparateur (aussitôt élagué comme entrée vide) ni l'espace qui le suit. Un titre s'ajoute
|
||||
/// désormais un par un.
|
||||
/// </remarks>
|
||||
[JsonIgnore]
|
||||
public string? ArticlesTexte
|
||||
{
|
||||
get => Articles.Count == 0 ? null : ListeSaisie.Joindre(Articles);
|
||||
set => Articles = ListeSaisie.Decouper(value, virguleAussi: false);
|
||||
}
|
||||
public List<string> Articles { get; set; } = [];
|
||||
}
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
namespace MaBibli.Shared.Textes;
|
||||
|
||||
/// <summary>
|
||||
/// Découpage d'un champ texte qui porte <b>plusieurs valeurs</b> : thèmes d'un livre, articles
|
||||
/// à la une d'un numéro de revue.
|
||||
/// Découpage du champ texte qui porte <b>plusieurs thèmes</b> d'un livre.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// <b>Le séparateur est le point-virgule</b>, comme celui des auteurs
|
||||
/// (<c>EnregistrementLivre.SeparateurAuteurs</c>) : trois champs voisins du même formulaire ne
|
||||
/// doivent pas se saisir de trois façons.
|
||||
/// (<c>EnregistrementLivre.SeparateurAuteurs</c>) : deux champs voisins du même formulaire ne
|
||||
/// doivent pas se saisir de deux façons. La virgule reste acceptée en repli — elle était le
|
||||
/// séparateur jusqu'au 2026-08-21, et un thème (« dark fantasy ») n'en contient jamais.
|
||||
/// <para>
|
||||
/// ⚠️ <b>La virgule n'est acceptée que là où elle ne peut rien couper de travers.</b> Un thème
|
||||
/// (« dark fantasy ») n'en contient jamais, et l'accepter évite de désapprendre une habitude ;
|
||||
/// un <b>titre d'article</b> en contient souvent (« Ukraine, deux ans après »), et la virgule y
|
||||
/// couperait le titre en deux. D'où le paramètre plutôt qu'une règle unique.
|
||||
/// ⚠️ <b>Ce découpage ne convient pas à tout champ à valeurs multiples.</b> Les articles à la
|
||||
/// une d'un numéro y sont passés jusqu'au 2026-08-21 et en sont sortis : un titre contient
|
||||
/// souvent une virgule, et surtout un champ relié à chaque frappe sur une propriété qui découpe
|
||||
/// puis recompose <b>réécrit la saisie sous les doigts</b> — le séparateur lui-même devient
|
||||
/// intapable. Ils se saisissent maintenant un par un.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public static class ListeSaisie
|
||||
@@ -28,14 +29,14 @@ public static class ListeSaisie
|
||||
/// normalisation</b> — « Fantasy » et « fantasy » sont la même étiquette, et le premier
|
||||
/// libellé tapé est celui qui reste.
|
||||
/// </summary>
|
||||
public static List<string> Decouper(string? saisie, bool virguleAussi)
|
||||
public static List<string> Decouper(string? saisie)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(saisie))
|
||||
{
|
||||
return [];
|
||||
}
|
||||
|
||||
char[] separateurs = virguleAussi ? [Separateur, ','] : [Separateur];
|
||||
char[] separateurs = [Separateur, ','];
|
||||
var vus = new HashSet<string>(StringComparer.Ordinal);
|
||||
|
||||
return saisie
|
||||
|
||||
Reference in New Issue
Block a user