ModuleLoader 独自の機能|ライブラリのバージョンの指定

ライブラリからライブラリをロードする

ライブラリが別のライブラリをロードする必要がある場合を考えます。基本的に、トップレベルのスクリプトと同じです。 唯一の違いは、「script "ModuleLoader"'s setup(me)」が必要ないことです。

use SimpleTextLib : script "SampleLibs/SimpleTextLib"

Also you can use the syntax of ModuleLoader. "@module" is replaced with loaded library when the library is loaded by ModuleLoader.

property SimpleTextLib : "@module"

と読み込むライブラリを指定します。ModuleLoader を使って、このスクリプトをライブラリとしてロードした場合、AppleScript Libraries と同様に、SimpleTextLib が読み込まれ、property に設定されます。

次のサンプルは、ライブラリ "SimpleTextLib" を「property SimpleTextLib」にロードします。

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

次のサンプルは上のライブラリを読み込むトップレベルのスクリプトです。「property SimpleListLib : "@module"」でライブラリが必要であることを宣言しています。「script "ModuleLoader"'s setup(me)」が実行されると、SimpleListLib がロードされるだけでなく、SimpleTextLib も合わせてロードされます。

property SimpleListLib : "@module"
property _ : script "ModuleLoader"'s setup(me)

SimpleListLib's replace_text_in_list({"cain", "cine"}, "c", "p")
-- result : {"pain", "pine"}

ライブラリをテストする

どこかで「script "ModuleLoader"'s setup(me)」が実行されるまで、property SimpleTextLib にはライブラリが設定されません。ライブラリのテストの為にスクリプトを実行する為には、ライブラリの中で「script "ModuleLoader"'s setup(me)」を実行する必要があります。

次のように、run ハンドラで「script "ModuleLoader"'s setup(me)」を実行して、その後テストコードを記述すると良いと思います。

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 -- test code
script "ModuleLoader"'s setup(me)
replace_text_in_list({"cain", "cine"}, "c", "p")
end run
ModuleLoader 独自の機能|ライブラリのバージョンの指定