2016-07-27T14:25:02+09:00
ModuleLoader のマニュアルのドラフト - ライブラリをロードする
現在執筆中の ModuleLoader のドラフト、第2弾です。
ユーザーのホームフォルダ以下では、
システム領域では、
から、ライブラリを探します。優先順位も上の通りです。ライブラリとして扱いたいスクリプトファイルやスクリプトバンドルをこの中に配置してください。
Script Libraries フォルダは AppleScript Libraries でも使われる領域です。もっぱら、Script Libraries を使うといいでしょう。ModuleLoader に依存したライブラリだけを、Scripts/Modules に置くと良いと思います。
ModuleLoader をインストールすると、「Script Libraries/SampleLibs」フォルダに、このマニュアルで使われているサンプルがインストールされます。その中の SimpleTextLib.scpt をロードすることを考えます。
SimpleTextLib をトップレベルの property にスクリプトオブジェクトとしてロードします。何はともあれ、サンプルコードを見てください。
読み込んだモジュールを設定したい property の定義部分で 「 module 」コマンドを実行します。「 module 」コマンドは、property にモジュールの読み込み先であることの印を設定します。「 boot (module loader) for me 」で、実際のモジュールの読み込みが行われます。「 boot (module loader) for me 」は、ライブラリの読み込みを行う property の定義を行った後に実行するする必要があります。
「 module 」コマンドを実行した property には、property 名と同じ名前のモジュールが読み込まれます。すなわち、「 property SimpleTextLib : module 」には、
のいずれかが読み込まれます。
property 名とは別の名前のライブラリを読み込む場合は 「 module 」コマンドにライブラリ名を与えます。
property propname : module "library name"
ライブラリのロードは、「 boot (module loader) for me 」が実行されたタイミングで行われます。次のように、property の値部分におくと、property の値はコンパイル時に評価されますから、実際の実行前にライブラリは設定されます。実行時にはライブラリのロードは行われません。
property _ : boot (module loader) for me
コンパイル時にライブラリのロードを済ますことは、
というメリットがありますが、一方で、ライブラリを更新しても再コンパイルするまで反映されないというデメリットもあります。
そこで、実行の度に最新のライブラリを読み込みを行わせるには、次のサンプルのように run ハンドラの中で「 boot (module loader) for me 」を実行してください。