2010-06-12 6 views

Répondre

10

Absolument vous pouvez le faire, et il y a deux variantes. Les premières charges du script entier:

Script Foo.scpt

set theBar to "path:to:Bar.scpt" as alias 
run script (theBar) 

Script Bar.scpt

display dialog "Bar" 
--Result: A window that displays "Bar" 

Le second vous permet de charger un script et d'appeler des méthodes spécifiques au sein de cette script:

Foo.scpt

property OopLib : load script POSIX file "/Users/philipr/Desktop/OopLib.app" 
tell OopLib 
    set theResult to Oop(1) 
    display dialog theResult 
end tell 
--> result: Window displaying "Eek: 1" 

OopLib.scpt

on Oop(Eek) 
    display dialog Eek 
    return "Eek: " & Eek 
end Oop 
2

Utilisez quelque chose comme ceci pour charger le script

set scriptLibraryPath to (path to scripts folder from user domain as text) & "myScript.scpt" 
set scriptLibrary to load script scriptLibraryPath as alias 

Ensuite, pour accéder à un sous-programme dans ce script faire ceci ...

set myValue to someMethod() of scriptLibrary 
1

Pour ajouter à ce que d'autres affiches ont dit, load script est la seule option intégrée; C'est très primitif, mais cela peut suffire si vos besoins sont modestes.

L'éditeur Script Debugger de Late Night Software fournit un mécanisme de bibliothèque de type include qui peut fusionner plusieurs fichiers AppleScript lors de la compilation d'un script. L'inconvénient de Script Debugger est que c'est quelques centaines de dollars à acheter, bien que de nombreux utilisateurs réguliers d'AppleScript vous diront que ça vaut bien l'investissement.

Il y a quelques chargeurs de modules tiers, Loader et ModuleLoader, qui mettent en œuvre des mécanismes d'importation plus sophistiqués au-dessus de la commande load script de base, et sont dignes d'intérêt si vos besoins sont plus complexes. Je n'ai pas utilisé ModuleLoader, mais Loader (que j'ai écrit) peut importer des modules au moment de la compilation ou de l'exécution à partir de divers emplacements standard et spécifiés par l'utilisateur et résoudre automatiquement les dépendances complexes (même circulaires) entre modules. Les inconvénients de Loader et ModuleLoader, c'est qu'ils s'appuient sur des ajouts de scripts pour faire le gros du travail, ce qui peut poser problème lors de la distribution de scripts (dans le cas de Loader, l'osax est seulement nécessaire pour compiler les scripts, eux), plus vous devez ajouter un code standard à votre script pour effectuer l'importation réelle.

Questions connexes