Globパターンフィルターの動作原理
Code2Prompt は glob パターンを使用してファイルとディレクトリを含めたり除外したりし、tree や grep などのツールと同様に動作します。2 つの独立したリストの glob パターンを渡すことができます:
- インクルードリスト (
--includeまたは-i) - “これらのパターンはファイルを許可する” - エクスクルードリスト (
--excludeまたは-e) - “これらのパターンはファイルを禁止する”
Code2prompt は、プロジェクト内のすべてのファイルについて、それを保持するか破棄するかを決定する必要があります。このページでは、ルールとその背後にある設計選択について説明します。
1. 集合と記号
Section titled “1. 集合と記号”説明全体を通して、通常の集合記法を使用します
| 記号 | 意味 |
|---|---|
| 少なくとも 1 つのインクルードパターンに一致するファイルの集合 | |
| 少なくとも 1 つのエクスクルードパターンに一致するファイルの集合 | |
| プロジェクトツリー全体(宇宙) | |
| 両方のリストに一致するファイル(重複) | |
| どちらのリストにも一致しないファイル |
2. 4 つの状況
Section titled “2. 4 つの状況”4 つの状況の概要
Section titled “4 つの状況の概要”| インクルードリスト | エクスクルードリスト | 保持されるファイル |
|---|---|---|
| A = ∅ | B = ∅ | Ω |
| A = ∅ | B ≠ ∅ | ¬B |
| A ≠ ∅ | B = ∅ | A |
| A ≠ ∅ | B ≠ ∅ | A \ B |
-
インクルードリストなし、エクスクルードリストなし
パターンが指定されていない場合、すべてのファイルが保持されます(
Ω)。 -
エクスクルードリストのみ
この場合、Code2Prompt はブラックリストとして機能し、除外されたパターンに一致するファイルを削除します(
Ω \ B = ¬B)。 -
インクルードリストのみ
インクルードリストのみが指定されている場合、Code2Prompt はホワイトリストとして機能し、含まれるパターンに一致するファイルのみを保持します(
A)。 -
インクルードおよびエクスクルードリスト
両方のリストが指定されている場合、Code2Prompt はインクルードパターンに一致するファイルを保持しますが、エクスクルードパターンに一致するものは削除します(
A \ B)。
3. 重複についてさらに詳しく
Section titled “3. 重複についてさらに詳しく”両方のリストが存在する場合(A ≠ ∅、B ≠ ∅)、重複Cと残りDについて
4 つの論理的可能性があります。
Cが欲しい? | Dが欲しい? | 合理的? |
|---|---|---|
| いいえ | いいえ | デフォルトの動作(A \ B) |
| はい | いいえ | ケース 3 と同じ動作(A) |
| いいえ | はい | 驚き(“要求したCを破棄し、要求しなかったものを保持する”) |
| はい | はい | ケース 1 と同じ動作(Ω) |
このため、--include-priorityオプションが削除されました。なぜなら、インクルードリストのみを持つ場合(ケース 3)と同じ結果になるからです。
4. クイックリファレンステーブル
Section titled “4. クイックリファレンステーブル”| 保持したいもの… | 使用する |
|---|---|
| すべて | -iなし、-eなし |
| いくつかのパターン以外のすべて | -eのみ |
| パターンに一致するもののみ | -iのみ |
-iに一致するもの、マイナス-eに一致するもの | -iおよび-e |
この設計はメンタルモデルをシンプルに保ちます:
- インクルードリストは存在するとすぐにホワイトリストになります。
- エクスクルードリストはその上に重ねられたブラックリストです。
- 重複はデフォルトで破棄されます