用例集
コンパイル時にライブラリをロードしたい
コンパイル時にライブラリをロードして property に設定すると、トップレベルのスクリプトに使用しているライブラリをすべて埋め込んで、実行時にライブラリや ModuleLoader との依存性がなくなります。
他の Mac へのコピーや配布する際に有用です。しかし、再コンパイルするまでライブラリが更新されないので、常に最新のライブラリを使用したい場合は、次の「実行時にライブラリをロードしたい」を参照してください。
use SimpleTextLib : script "SampleLibs/SimpleTextLib"
property _ : script "ModuleLoader"'s setup(me)
SimpleTextLib's replace_text("How now brown cow", space, "-")
- use 構文もしくは、property での "@module" コマンドでライブラリを指定します。
- 「 script "ModuleLoader"'s setup(me) 」がライブラリを読み込みます。property の定義におくことによりコンパイル時に実行できます。
- ライブラリを設定したい use 文 もしくは property より後ろに、置かなければなりません。
実行時にライブラリをロードしたい
実行時にライブラリをロードすると、常に最新のライブラリを使うことができます。素直に AppleScript Libraries を使えば良いでしょう。
ModuleLoader を使う必要がある場合は、次のサンプルコードのように、「 script "ModuleLoader"'s setup(me) 」 を property の定義部ではなく、run ハンドラもしくは open ハンドラの中で実行するようにしてください。
property SimpleTextLib : "@module"
script "ModuleLoader"'s setup(me)
SimpleTextLib's replace_text("How now brown cow", space, "-")
ローカル変数にライブラリをロードしたい
tell script "ModuleLoader"
set SimpleTextLib to load("SimpleTextLib")
end tell
tell SimpleTextLib
end tell
- ModuleLoader スクリプト の ハンドラでライプラリを読み込みます。load
ライブラリの中から別のライブラリを使いたい
あるライブラリの中から別のライブラリ使いたいとします。ライブラリの中でもトップレベルのスクリプトと同じように、module コマンドを設定した property を用意します。このライブラリがロードされる時に、property にライブラリが自動的に設定されます。
property name : "SimpleListLib"
property SimpleTextLib : "@module"
on replace_text_in_list(a_list, target, replacement)
set new_list to {}
repeat with a_text in a_list
tell SimpleTextLib
set end of new_list to replace_text(a_text, target, replacement)
end tell
end repeat
return new_list
end replace_text_in_list
on run
script "ModuleLoader"'s setup(me)
replace_text_in_list({"cain", "cine"}, "c", "p")
end run
テストのために単体で作させたいときは、実行時に「 script "ModuleLoader"'s setup(me) 」を実行すれば良いでしょう。
バンドルの中のライブラリをロードしたい
AppleScriptObjC アプリケーションなどのアプリケーションバンドル内のライブラリをロードする例です。ライブラリは Resources フォルダの 「Script Libraries」 フォルダの中にあると仮定しています。
property LibInBundle : "@module"
tell script "ModuleLoader"
prepend_path(path to resource "Script Libraries")
setup(me)
end tell
run LibInBundle
ModuleLoader スクリプトの prepend_path コマンドで、ライブラリの検索場所に Resources/Script Libraries フォルダを追加してから setup ハンドラによってライブラリのロード及び設定を行います。
このようなことをするよりも、コンパイル時にすべてのライブラリを property に埋め込んでしまうのが ModuleLoader の流儀です。もしくは、 OS X 10.9 で導入された AppleScript Libries を使うのが良いでしょう。
上のサンプルは ModuleLoader の柔軟性を示すものです。