Loader Commands
The AppleModsTools scripting addition, Loader module and ModuleLoader objects define a number of important commands that are documented below.
Additional commands are documented in the AppleModsTools and Loader dictionaries. To open AppleModsTool’s dictionary in AppleScript Editor, choose File → Open Dictionary… and select the AppleModsTools.osax option from the list. To open Loader’s dictionary, double-click the OpenModuleDictionary application.
AppleModsTools Commands
AppleMods Loader
Returns a Loader module object.
- AppleMods Loader
- → Loader
Loader Module Commands
The Loader module provides commands for creating ModuleLoader objects.
initScript
Load modules into the given client script. This is the recommended approach.
- initScript(scpt)
- scpt : script -- The script that sent this command. Loader will call the script's __load__ handler, passing it a newly created ModuleLoader object.
- → ModuleLoader -- The ModuleLoader object that was used to load the script's modules.
initScript uses path to me to locate the script that called it. If running the script in an application that does not correctly support the path to me command (typically returning its own path, not the script's) then use initScriptAtPath and specify the script's path yourself.
ModuleLoader Object Commands
Locates and loads AppleScript modules from disk.
loadModule
Loads the requested module. ModuleLoader will search all scopes in the following order until a suitable match is found: embedded, local, global.
- loadModule(modName)
- modName : text -- The module's name, with optional version requirements; e.g. "Math", "List≥0.2.0".
- → script -- The loaded module.
loadEmbeddedModule
Loads the requested module from the embedded scope only (i.e. the embedded Scripts folder inside a bundle-based .scptd or .app file).
- loadEmbeddedModule(modName)
- modName : text -- The module's name, with optional version requirements; e.g. "Math", "List≥0.2.0".
- → script -- The loaded module.
loadLocalModule
Loads the requested module from the local scope only (i.e. the folder that contains the script that made this call).
- loadLocalModule(modName)
- modName : text -- The module's name, with optional version requirements; e.g. "Math", "List≥0.2.0".
- → script -- The loaded module.
loadGlobalModule
Loads the requested module from the global scope only (by default, ~/Library/Scripts/AppleMods and /Library/Scripts/AppleMods).
- loadGlobalModule(modName)
- modName : text -- The module's name, with optional version requirements; e.g. "Math", "List≥0.2.0".
- → script -- The loaded module.
Specifying the module version(s) to use
By default, Loader will load the first module it finds with a matching name. If the folder being searched contains more than one module with the same name, Loader will load the one with the highest version number in its filename. (Note: unversioned modules are always assumed to be older than versioned modules.)
The loadModule command allows you to specify a single module version or range of acceptable module versions as part of the module name. The syntax for specifying a single version is as follows:
"NAME - VERSION"
To specify a minimum and/or maximum version (square brakets indicate an optional entry):
"NAME [ ≥ VERSION ] [ > VERSION ] [ ≤ VERSION ] [ < VERSION ]"
Note that any whitespace between names, symbols, and versions is ignored.
For example, to load version 0.2.0 of the Foo module:
loadModule("Foo-0.2.0")
or to load version 0.4.0 or newer:
loadModule("Foo ≥ 0.4.0")
or to load version 0.4.0 or newer, but older than version 0.9.0:
loadModule("Foo ≥ 0.4.0 < 0.9.0")
As before, Loader will load the first module it finds with a matching name and acceptable version. If a folder contains a module with matching name but unacceptable version, Loader will proceed to the next available folder.
Note: because Loader stops searching through folders as soon as it finds an acceptable module, it may not load the newest module present on the system. For example, if the local domain contains Foo-0.5.0 and the global domain contains Foo-0.8.0 then the older Foo-0.5.0 will be used since the local domain is searched first.
