I was expecting the use of parameters as you said and I had it written down in as you replied in my first edition of this tutorial. I was aware what the documentations says about code usage while making scripting additions and applications scriptable. But after watching the video I wasn’t sure, so I chose for a better-safe-than-sorry way. The sdef is extending the terminology like scripting additions but it’s still just an AppleScript object. And besides that I couldn’t really find anything that says explicitly that it needs to follow the guidelines for scriptability in applications or scripting additions.
And in my Applescript outside or inside any tell blocks
set posixFile to POSIX file "/Users/UserName/Library/SomeFooPath"
I get an error “Expected end of line, etc. but found class name.”
from the file part of the command.
I do not have any single word file verbs in my script libraries.
the closes is <command name=“existence of file path” code=“MOSXEOFP” description=“Check the existence of a file or folder path”
Does any one know why I am getting this.
if I use a Applescript Utilities tell block around all the other code where needed instead of the global use clause all is ok. But that defeats the point of having a global use clause.
*SLIGHT UPDATE;
Another example:
I can use:
use finder : application "Finder"
set thisPath to item 1 of (get selection of finder) as alias
with none of my custom script libraries loaded.
Works fine. But if I add the:
set g to POSIX file "/Users/UserName/Library/SomeFooPath"
any where else in the script.
like so:
use finder : application "Finder"
set thisPath to item 1 of (get selection of finder) as alias
set g to POSIX file "/Users/UserName/Library/SomeFooPath"
POSIX File is part of the standard scripting addition. When you use the “use script” statement you should use the line “use scripting additions” as well if you want to make use of scripting additions. When you use the “use script” statement, scripting additions are by default not included into your script. It’s something that I should have mentioned in my tutorial I guess.
In script libraries, types are purely informative – they don’t actually do anything, unlike in apps and scripting additions. So just use common sense, and add explanations where you think they will help.
Thanks a whole lot Shane. I was really wondering about this. My qualms with return types, is of course when the return types varies, which isn’t good practice, but which choose from list for instance uses anyway.
I can’t compile anything like that, maybe I am doing something wrong, (I get the message: Expected «given», «into», «with», «without» or other parametername, but found end of line) I am on Mavericks too.
use AppleScript version "2.3"
use scripting additions
use framework "Foundation"
use framework "AppKit"
(* ========== debug suite ========== *)
on milli secs
# from start
tell current application to set this_time to (its NSDate's timeIntervalSinceReferenceDate()) * 1000
return this_time
(*
if start = 0 then
return this_time
else
return (this_time - start)
end if
*)
# NSDate's alloc()'s init() to return ((its timeIntervalSince1970()) * 1000)
end milli secs
Cocoa scripting will generate default keys for property and element attributes and for commands, if you do not specify them. For a property, it capitalizes each word of the property’s name except the first word, then removes any spaces. For an element, it specifies the plural of the element type. For a command, the default is NSScriptCommand
apart from that, the handler parentheses are missing
Thanks for the input, I had a question earlier in this thread regarding parenthesis, and by the answer I got from Shane, I figured I couldn’t use parenthesis with a command that is supported with terminology.
Edit
I asked the question in post #9, and Shane answered it in post #11, (page 1 ).
The motivation, is of course to have the terminology load with the use script clause, so I won’t have to use a script object in order to utilize the commands, but can use them like I can with a scripting additions command.
For the record, the script bundle is named corelibrary, the sdef file is named corelibrary.sdef, the name in the bundle tab is corelibrary, and the id is net.mcusr.corelibrary. ASOBJC is enabled, and the sdef document a valid sdef/xml utf-8 document.
your sdef should have an empty command tag if it is really empty, I guess it uses libxml to parse the file because in libxml there is a difference between and . So you sdef should look like:
Not when you use your own scripting definition, parentheses are not needed then.
I have done what you have done, and I have also tried with/without use AppleScript version “2.3”
But it just doesn’t work. (I also added a title tag to the dictionary.)
Restarting ScriptEditor and closing bundles with various earlier attempts , and “test scripts”, made sure of that there wasn’t any conflicting terminology around, and it worked!
Thanks
I did add "use AppleScript version “2.3” " in addition to following DJ Bazzie Wazzie’s receipe to the point.
I’m a bit surprised by this. The reason is because I went back and looked at the sdef for ASObjC Runner, which does this very thing for several commands, and they all work fine.