AppleScript functions made easy

Terry Vogelaar terry at discovery.nl
Thu Feb 7 05:06:01 EST 2002


In HyperCard I had a stack with a lot of AppleScript functions. Because RR
treads AppleScript differently, I tried to make a function which may come in
handy for others as well.

The basic idea is that you store the AS-functions in a separate file; a
normal AppleScript-file. No custom props or fields needed, so you don't have
to work with a copy of the script, but you can work with the original, which
saves time when the AppleScript function is still in development.

Then you must know the path and the name of the function in the file. You
call it with:

get AppleScriptFunction("nameOfFunction", "path:to:file", 1, 2, "three",
"four")

Mind that on Mac OS classic you need to use colons in the path (2nd param),
while on Mac OS X you must use slashes.

Then in the stack-script you can put:

function AppleScriptFunction aFun, aFile
  put "set theScript to load script (alias "&quote&aFile&quote&")"&return& \
      "tell theScript to "&aFun&"(" into ASfunc
  if paramcount() > 2 then
    repeat with e = 3 to paramcount()
      put param(e) into f
      if param(e) is a number then
        put f & "," after ASfunc
      else
        put quote & f & quote & "," after ASfunc
      end if
    end repeat
  end if
  put ")" into last char of ASfunc
  do ASfunc as applescript
end AppleScriptFunction

Now you can call any function with any number of parameters. The value that
is returned by the AppleScript-function is returned by "AppleScriptFunction"
as well.

Terry




More information about the use-livecode mailing list