Signaler les envies déjà entrées au catalogue, sans les supprimer
La demande initiale était de retirer l'envie ; c'est refusé. Le catalogue est commun et la liste d'envies personnelle : supprimer modifierait la liste d'un autre en silence, avec sa note. Et le rapprochement par clé d'œuvre est faillible, alors qu'une suppression ne se rattrape pas. L'étiquette « Déjà au catalogue » mène à la fiche, pour vérifier avant de retirer. Le critère est celui des doublons, la convention d'auteur commun étant désormais partagée par les deux (RapprochementAuteurs). Au passage : accolade manquante sur .etiquette-souhaite, qui avalait la règle suivante — le bandeau de mise à jour perdait son style. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -90,6 +90,33 @@ public static class RapprochementAuteurs
|
||||
public static bool SontLeMemeAuteur(string? a, string? b) =>
|
||||
Comparer(a, b) == NiveauRapprochement.Certain;
|
||||
|
||||
/// <summary>
|
||||
/// Deux jeux de noms ont-ils au moins un auteur en commun ?
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Sert partout où l'on rapproche deux fiches par leur titre : le titre seul ne suffit
|
||||
/// jamais — deux recueils « Nouvelles » sans rapport se confondraient — mais un auteur
|
||||
/// commun tranche.
|
||||
/// <para>
|
||||
/// <b>Convention</b> : deux jeux <b>tous deux vides</b> concordent. Le titre est alors la
|
||||
/// seule information disponible des deux côtés, et exiger un auteur reviendrait à ne jamais
|
||||
/// rien rapprocher. Un jeu vide face à un jeu renseigné, en revanche, ne concorde pas :
|
||||
/// l'information manque d'un seul côté, ce qui n'est pas une raison de conclure.
|
||||
/// </para>
|
||||
/// </remarks>
|
||||
public static bool PartagentUnAuteur(IEnumerable<string?> a, IEnumerable<string?> b)
|
||||
{
|
||||
var gauche = a.Where(n => !string.IsNullOrWhiteSpace(n)).ToList();
|
||||
var droite = b.Where(n => !string.IsNullOrWhiteSpace(n)).ToList();
|
||||
|
||||
if (gauche.Count == 0 && droite.Count == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return gauche.Any(g => droite.Any(d => SontLeMemeAuteur(g, d)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Cherche à placer chaque mot de <paramref name="aPlacer"/> sur un mot distinct de
|
||||
/// <paramref name="cible"/>, par égalité ou par initiale.
|
||||
|
||||
Reference in New Issue
Block a user