Sylvan Analyzer で用意されているクラスや関数についてどのような関係になっているのかを大まかに説明します。
Organizer は Sylvan Analyzer が持つ情報を纏めて持っています。 これはクラスのインスタンスではなく、単なるテーブルになっています。 ここから CardDatabase や読込済みのデッキ情報を取得することができ、 特殊項目、カラム、並び替えの機能を追加・編集したりできるようになっています。
CardDatabase クラスは英語のカード名を渡すとCard クラスを返す関数を持っています。 Card はカードの各種情報を保持しています。 Card は通常の MtG のカードだけではなく便宜的に用意した特殊項目に対応するカードもあります。
Deck クラスはBoard クラスを 3 つ持っており、それぞれメインボード、サイドボード、そしてそれらの混合のボードになっています。 Board は英語のカード名に対応して枚数を保持しているテーブルとしての役割が主になります。
Entry クラスは Sylvan Analyzer の表の横 1 列に対応するクラスです。 Card とボードタイプを保持しています。 SpecialEntry は特殊項目を表しており、 これのインスタンスを Organizer の変数に追加することで Sylvan Analyzer に独自の特殊項目を追加することができます。
Processor クラスは Sylvan Analyzer のカラムに対応するクラスです。 名前とカラムをクリックした際の並び替えクラスである Sorter を持ち、 表のセルに入力する為の関数を持ちます。 これのインスタンスを Organizer の変数に追加することで Sylvan Analyzer に独自のカラムを追加することができます。
Sorter クラスは並び替え時に使用するクラスです。 名前と並び替え時に呼び出される比較関数を持ちます。 これのインスタンスを Organizerの変数に追加することで Sylvan Analyzer に独自の並び替えを追加することができます。
カラムを追加して、セルに内容が入力されるまでの処理を大まかに説明します。
まずはアプリケーションを起動してデッキを読み込むと Entry が作成されます。 Entry は Card とボード種別を持っており、例えば「メインボードの稲妻」や 「サイドボードの強迫」「メインの土地の合計」等を表しています。
カラム作成処理に入るとカラムに対応する Processor が持つ関数 process_function 関数を 先ほど作成した Entry それぞれを引数に呼び出します。 セルに表示される値は基本的にその関数の戻り値を表示します。 (注:ただし、null が返された場合はその引数に指定した Entry が持つ関数 case_of_cannot_process を呼び出します。)