Aller au contenu

Comment fonctionne le filtre de modèle Glob

Code2Prompt utilise des modèles glob pour inclure ou exclure des fichiers et répertoires, fonctionnant de manière similaire à des outils comme tree ou grep. Il vous permet de passer deux listes indépendantes de modèles glob :

  • liste d’inclusion (--include ou -i) - “ces modèles autorisent les fichiers”
  • liste d’exclusion (--exclude ou -e) - “ces modèles interdisent les fichiers”

Code2prompt doit décider, pour chaque fichier du projet, s’il est conservé ou écarté. Cette page explique les règles et les choix de conception qui les sous-tendent.


Tout au long de l’explication, nous utilisons la notation d’ensemble habituelle

SymboleSignification
ensemble des fichiers qui correspondent à au moins un modèle d’inclusion
ensemble des fichiers qui correspondent à au moins un modèle d’exclusion
l’arbre de projet entier (l’univers)
fichiers qui correspondent aux deux listes (le chevauchement)
fichiers qui ne correspondent à aucune liste

Liste d’inclusionListe d’exclusionFichiers conservés
A = ∅B = ∅Ω
A = ∅B ≠ ∅¬B
A ≠ ∅B = ∅A
A ≠ ∅B ≠ ∅A \ B
  1. Pas de liste d’inclusion, pas de liste d’exclusion

    Si aucun modèle n’est spécifié, tous les fichiers sont conservés (Ω).

  2. Liste d’exclusion seulement

    Dans ce cas, Code2Prompt agit comme une liste noire, supprimant les fichiers qui correspondent aux modèles exclus ( Ω \ B = ¬B).

  3. Liste d’inclusion seulement

    Si seule une liste d’inclusion est spécifiée, Code2Prompt agit comme une liste blanche, ne conservant que les fichiers qui correspondent aux modèles inclus (A).

  4. Listes d’inclusion et d’exclusion

    Si les deux listes sont spécifiées, Code2Prompt conserve les fichiers qui correspondent aux modèles d’inclusion, mais supprime ceux qui correspondent aux modèles d’exclusion (A \ B).


Avec les deux listes présentes (A ≠ ∅, B ≠ ∅), vous avez quatre possibilités logiques pour le chevauchement C et le reste D.

Vouloir C ?Vouloir D ?Raisonnable ?
NonNonComportement par défaut (A \ B)
OuiNonMême comportement que le cas 3 (A)
NonOuisurprenant (“écarter ce que j’ai demandé C, garder ce que je n’ai pas”)
OuiOuiMême comportement que le cas 1 (Ω)

C’est pour cette raison que l’option --include-priority a été supprimée. Parce que ce serait le même résultat que si vous n’aviez qu’une liste d’inclusion (cas 3).

Vous voulez garder…Utilisez
toutpas de -i, pas de -e
tout sauf certains modèles-e seulement
seulement ce qui correspond aux modèles-i seulement
ce qui correspond à -i, moins ce qui correspond à -e-i et -e

Cette conception maintient le modèle mental simple :

  • La liste d’inclusion est une liste blanche dès qu’elle existe.
  • La liste d’exclusion est une liste noire superposée par-dessus.
  • Le chevauchement est écarté par défaut