pcurl-file (プロシージャ)
public {pcurl-file
source-url:Url,
object-url:Url = {source-url.set-extension curl-binary-file-extension },
root-manifest-url:#Url = null,
manifest-url:#Url = null,
debug?:bool = false,
component-config:String = "",
create?:bool = true,
create-mode:int = 0o666,
error-if-exists?:bool = false
}:ComponentID
パッケージ: CURL.LANGUAGE.COMPILER

パッケージを Curl ソースからコンパクト表現 (pcurl) に変換します。

source-url: パッケージの Url です。
object-url: 出力ファイルの Url。既定では、拡張子 .pcurl が付いた source-url になります。source-url と同じ URL にするとエラーが生成されるので、異なる URL にしてください。
manifest-url: パッケージをそのソース ファイルからコンパイルする際に使用するマニフェストがある場合はその Url
root-manifest-url: manifest-url で指定されたマニフェストをロードした時使用されるルートマニフェストの Url。詳細は import-manifest を参照して下さい。
debug?: 設定されている場合、出力に、人間が判読できるソース コードを含むデバッグ情報を含みます。これによって、出力ファイルが 明らかに 大きくなり、ソース コードを人間が調べることができるようになります。既定は false で、コンパクトな表現になります。特に、可能であればif-debuggable 句を else 句に置き換えます。
component-config: パッケージの component-config ヘッダー式を表す String です。この情報は、パッケージ コードの前に追加されます。既定は空の文字列になります。この場合、component-config が作成されません。
create?: object-url を開くときに write-open-byte に渡されます。
create-mode: object-url を開くときに write-open-byte に渡されます。
error-if-exists?: object-url を開くときに write-open-byte に渡されます。

戻り値

pcurl に変換されたファイルの ComponentID です。

注意事項

ソース パッケージは1つ以上の API バージョンをヘラルドに表記することができます。(例: {curl 1.0, 1.1 package} )しかし、pcurl は生成された時の API のみで機能します。

次のコードは、どのように pcurl-file を使い、プロジェクトのパッケージの .pcurl ファイルを作成するかを示しています。

{curl 8.0 applet}

{let constant files:UrlArray =
    {UrlArray
        {url "load.scurl"},
        {url "common/load.scurl"},
        {url "screens/Projects/load.scurl"},
        {url "screens/Risk/load.scurl"},
        {url "pages/bar-chart-3d/load.scurl"},
        {url "pages/simple-graph/load.scurl"}
    }
}

{let status:VBox = {VBox}}

{let total-pcurl-size:int64 = 0}

{define-proc package {pcurl-file-by-index index:int}:void

    {if not {files.in-bounds? index} then
        {status.add
            "Total pcurled size = " & total-pcurl-size & " bytes."
        }
        {return}
    }

    let u:Url = files[index]
    {status.add "Beginning to pcurl '" & u & "'"}

    {try
        {pcurl-file u}
        let u2:Url = {u.set-extension ".pcurl"}
        let size:int64 = {{u2.resolve}.info}.size
        {status.add
            "Created '" & u2 & "', size = " & size & " bytes."
        }
        {inc total-pcurl-size, size}
     catch ex:Exception do
        {status.add
            {text color = "red", Error: {value ex}}
        }
    }

    {status.add {Fill height = 5pt}}

    {after 0s do
        {pcurl-file-by-index index + 1}
    }
}

{if not {process-privileged?} then
    {center
        color = "red",
        This page requires trusted access to your system 
        in order to translate packages to single pcurl files.
        Please use the Curl Control Panel to give privilege
        to this applet.
    }
 else
    {status.add "Starting to pcurl all the packages..."}
    {status.add {Fill height = 5pt}}
    {after 0s do
        {pcurl-file-by-index 0}
    }
    {value status}
}

改訂

root-manifest-url キーワードは Curl 7.0 で導入されました。