別ファイルのルールを使う 別ファイルのルールを使う

Context Freeでは別のCFDGファイルのルールを使う(インクルードする)ことができます。 パソコンに保存されているファイルの他に、Context FreeのExamplesメニューで選択できるファイルもインクルードファイルとして使用することができます。

startshape password

include i_pix.cfdg

rule password {
    P_5by5 { x 0 }
    A_5by5 { x 1.2 }
    S_5by5 { x 2.4 }
    S_5by5 { x 3.6 }
    W_5by5 { x 4.8 }
    O_5by5 { x 6.0 }
    R_5by5 { x 7.2 }
    D_5by5 { x 8.4 }
    I_5by5 { x 3.6 y -2 }
    S_5by5 { x 4.8 y -2 }
    RANDOM_LETTER_5by5 {x 1.2 y -4}
    RANDOM_LETTER_5by5 {x 2.4 y -4}
    RANDOM_LETTER_5by5 {x 3.6 y -4}
    RANDOM_NUMBER_5by5{x 4.8 y -4 }
    RANDOM_NUMBER_5by5{x 6 y -4 }
    RANDOM_NUMBER_5by5{x 7.2 y -4 }
}
i_pix

Examplesメニューのi_pix.cfdgをインクルードして使用しました。 このファイルを「password.cfdg」というファイル名で保存します。

保存した「password.cfdg」をインクルードしてみましょう。

startshape includeTest

include "./password.cfdg"

rule includeTest {
    password {}
}
i_pix

インクルードファイルの深度に制約はありませんので、インクルードされたファイルの中で他のファイルをインクルードし、そのファイルの中でさらに他のファイルをインクルード…といった多重インクルードが可能です。

Context Freeは、Examplesメニューのファイル以外がインクルードされたときには、呼び出し元のファイルと同じディレクトリを基準にインクルードファイルを探しますので、呼び出し元のファイルをCFDGファイルとして保存しておかなければなりません。 また、インクルードファイル名を相対パスで指定するときには、ファイルパスの部分をダブルクォートでくくる必要があります。 さらに、日本語(などの2バイトコード)を含む名称のフォルダにCFDGファイルが保存されていると、エラーになる場合があります。

できるようになった(はずの)こと
  1. ExamplesメニューのCFDGファイルをインクルードしてシェイプを描画できる
  2. Examplesメニュー以外のCFDGファイルをインクルードしてシェイプを描画できる