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 で返されるマニフェストが既定になります。
applet、
script、
package 宣言の中の
manifest キーワードの記述の結果、ロードされたマニフェストの場合、ルートマニフェストがマニフェストになります。
location が指定されていても、ルートマニフェストの中に以下の記述が含まれている
component エントリーによって上書きされます。
override? = true
可能であるなら、ルートマニフェストで全てのマニフェストのロケーションを再設定することは簡単であるので、location パラメータとデリゲートマニフェストを見つけるためにルートマニフェストを使用することは推奨しません。
改訂
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"}
}