Examples
// TO DO: include corresponding aebglue commands as comments
Application objects
// application id "com.apple.Finder"
let finder = Finder() // (use the glue's default bundle ID)
let finder = Finder(bundleIdentifier: "com.apple.finder")
// application "Adobe InDesign CS6"
let indesign = AdobeInDesign(name: "Adobe InDesign CS6")
// application "Macintosh HD:Applications:TextEdit.app:"
let textedit = TextEdit(name: "/Applications/TextEdit.app")
// application "iTunes" of machine "eppc://jsmith@media-mac.local"
let itunes = ITunes(url: NSURL(string: "eppc://jsmith@media-mac.local/iTunes"))
Property references
// a reference to startup disk of application "Finder"
finder.startupDisk
// a reference to name of folder 1 of home of application "Finder"
finder.home.folders[1].name
// a reference to name of every item of home of application "Finder"
finder.home.items.name
// a reference to text of every document of application "TextEdit"
textedit.documents.text
// a reference to color of character 1 of every paragraph of text ¬
// of document 1 of application "TextEdit"
textedit.documents[1].text.paragraphs.characters[1].color
All elements references
// a reference to disks of application "Finder"
finder.disks
// a reference to every word of every paragraph ¬
// of text of every document of application "TextEdit"
textedit.documents.text.paragraphs.words
Single element references
// a reference to disk 1 of application "Finder"
finder.disks[1]
// a reference to file "ReadMe.txt" of folder "Documents" of home of application "Finder"
finder.home.folders["Documents"].files["ReadMe.txt"]
// a reference to paragraph -1 of text of document 1 of application "TextEdit"
textedit.documents[1].text.paragraphs[-1]
// a reference to middle paragraph of text of last document of application "TextEdit"
textedit.documents.last.text.paragraphs.middle
// a reference to any file of home of application "Finder"
finder.home.files.any
Relative references
// a reference to paragraph before paragraph 6 of text of document 1 of application "TextEdit"
textedit.documents[1].text.paragraphs[6].previous(TED.paragraph)
// a reference to paragraph after character 30 of document 1 of application "Tex-Edit Plus"
texeditplus.documents[1].characters[30].next(TEP.paragraph)
Element range references
// a reference to words 1 thru 4 of text of document 1 of application "TextEdit"
textedit.documents[1].text.words[1, 4]
// a reference to paragraphs 2 thru -1 of text of document 1 of application "TextEdit"
textedit.documents[1].text.paragraphs[2, -1]
// a reference to folders "Documents" thru "Music" of home of application "Finder"
finder.home.folders["Documents", "Music"]
// a reference to text (word 3) thru (paragraph 7) of document 1 of application "Tex-Edit Plus"
texeditplus.documents[1].text[TEPCon.words[3], TEPCon.paragraphs[7]]
Test references
// a reference to every document of application "TextEdit" whose text is "\n"
textedit.documents[TEDIts.text == "\n"]
// a reference to every paragraph of document 1 of application "Tex-Edit Plus" ¬
// whose first character is last character
texeditplus.documents[1].paragraphs[TEPIts.characters.first == TEPIts.characters.last]
// a reference to every file of folder "Documents" of home of application "Finder" ¬
// whose name extension is "txt" and size < 10240
finder.home.folders["Documents"].files[FINIts.nameExtension == "txt" && FINIts.size < 10240]
Insertion location references
// a reference to end of documents of application "TextEdit"
textedit.documents.end
// a reference to before paragraph 1 of text of document 1 of application "TextEdit"
textedit.documents[1].text.paragraphs[1].before
get
command
Get the name of every folder in the user's home folder:
// tell application "Finder" to get name of every folder of home
try finder.get(FINApp.home.folders.name)
Note that if the direct parameter is omitted from the argument list, the reference that the command is invoked on is used instead. For example, the above example would normally be written as:
try finder.home.folders.name.get()
set
command
Set the content of a TextEdit document:
// tell application "TextEdit" to set text of document 1 to "Hello World"
try textedit.documents[1].text.set(to: "Hello World")
count
command
Count the words in a TextEdit document:
// tell application "TextEdit" to count words of document 1
try textedit.documents[1].words.count()
Count the items in the current user's home folder:
// tell application "Finder" to count items of home
try finder.home.count(each: FIN.item)
(Note that Finder and many other Carbon applications require the count
command's each
parameter to be given.)
make
command
Create a new TextEdit document:
// tell application "TextEdit" to make new document ¬
// with properties {text:"Hello World\n"}
try textedit.make(new: TED.document, withProperties: [TED.text: "Hello World\n"])
Append text to a TextEdit document:
// tell application "TextEdit" to make new paragraph ¬
// at end of text of document 1 ¬
// with properties {text:"Yesterday\nToday\nTomorrow\n"}
try textedit.make(new: TED.paragraph,
at: TEDApp.documents[1].text.end,
withData: "Yesterday\nToday\nTomorrow\n")
duplicate
command
Duplicate a folder to a disk, replacing an existing item if one exists:
// tell application "Finder"
// duplicate folder "Projects" of home to disk "Work" with replacing
// end tell
try finder.home.folders["Projects"].duplicate(to: FINApp.disks["Backup"], replacing: true)
add
command
Add every person with a known birthday to a group named "Birthdays":
// tell application "Contacts"
// add every person whose birth date is not missing value to group "Birthdays"
// end tell
try contacts.people[CONIts.birthDate != CON.missingValue].add(to: CONApp.groups["Birthdays"])