delegate-to (マクロ)
パッケージ: CURL.LANGUAGE.COMPILER

1 つ以上の下位のマニフェストに検索をデリゲートします。

シグネチャ

{delegate-to NAME [, location = "path"] [, name = value ...]}
NAME: manifest 宣言で宣言されているマニフェストの名前。マニフェストの名前を宣言する必要は通常ありませんが、宣言すればこれを delegate-to ステートメントのターゲットとして使用できます。
location:
マニフェストの場所を指定します。path は絶対 URL 文字列か、この宣言を含むファイルの場所を基準にした相対パスです。path は、現在のマニフェスト、または現在のマニフェストを直接あるいは間接的にデリゲートするマニフェストを参照してはいけません。参照している場合はエラーが発生します。次の構文、
location = {url "path"}
もサポートされています。
ロケーションは後から記述されたものでオーバーライドする事が出来ます。

説明

一致するエントリが現在のマニフェストに見つからない場合に、下位のマニフェストに検索を委譲します。デリゲートマニフェストは宣言された順に検索され、循環が起こらない間は、他のマニフェストへのデリゲートを順次行なうことができます。
任意のメタデータ値の指定も可能です。これらはターゲットマニフェストのメタデータに一致させる必要があり、一致しなければエラーが発生します。
location が指定されていない場合、デリゲートマニフェストはデリゲート宣言の名前とメタデータで一致する最初の manifest component のためのルートマニフェスト(それはデリゲートしていない)を検索することで見つけられます。ルートマニフェストは import-manifest で決定されます。import-manifest で返されるマニフェストが既定になります。appletscriptpackage 宣言の中の manifest キーワードの記述の結果、ロードされたマニフェストの場合、ルートマニフェストがマニフェストになります。
location が指定されていても、ルートマニフェストの中に以下の記述が含まれている component エントリーによって上書きされます。
override? = true
可能であるなら、ルートマニフェストで全てのマニフェストのロケーションを再設定することは簡単であるので、location パラメータとデリゲートマニフェストを見つけるためにルートマニフェストを使用することは推奨しません。
『開発者ガイド』の ComponentManifest.lookup「マニフェスト」 も参照して下さい。

改訂

location キーワードを省略し、ルートマニフェストを使用してデリゲートを見つける機能は Curl 7.0 で初めて実装されました。

delegate-to ステートメントの簡単な例をいくつか示します。
|| Delegate to manifest A located using root manifest.
{delegate-to A}

|| Delegate to manifest A located in file a.mcurl
|| in same directory.
{delegate-to A, location = "a.mcurl"}

|| Delegate to manifest B, with version 1.2 and located
|| in root manifest.
{delegate-to B, version = "1.2"}

|| The {url } syntax may be used for the location.
{delegate-to C, location = {url "c.mcurl"}}
上記の delegate-to ステートメントに対応するルートマニフェストコンポーネント宣言の例です。
{component manifest A,
    location = {url "a.mcurl"}
}

{component manifest B,
    version = "1.2",
    location = {url "b.mcurl"}
}

|| Overrides location specified in 'delegate-to'.
{component manifest C,
    override? = true,
    location = {url "alt-c.mcurl"}
}