Ich halte AppleScript für eine fantastische Möglichkeit Tätigkeiten unter OS X zu automatisieren. Nur wer, wie ich, von Perl, Ruby, oder Python kommtsplit().
Kurze Erklärung zu split(): Die Funktion ermöglicht es, einen String wie “A-B-C-D” in ein Array aus den Buchstaben umzuwandeln, und für die Umwandlung, in diesem Fall, das Zeichen - als Delimiter (Begrenzer?) zu verwenden.
Zurück zu AppleScript, die Sprache verfügt über keine derartige Funktion; warum wissen nur die Entwickler. Es ist ja nicht so, dass man diese Funktionalität nicht öfter benötigen würde.
Da AppleScript aber ein Property namens text item delimiters aufweist, kann man sich diese zu Nutze machen. Werfen wir erst einmal einen Blick auf den Code
Ein Beitrag über ein CSS-Stylesheet, mit dem man das Ganze mit etwas weniger Tipperei erledigen kann, folgt.
set myTestString to "1-2-3-5-8-13-21"
set myArray to my theSplit(myTestString, "-")
on theSplit(theString, theDelimiter)
-- save delimiters to restore old settings
set oldDelimiters to AppleScript's text item delimiters
-- set delimiters to delimiter to be used
set AppleScript's text item delimiters to theDelimiter
-- create the array
set theArray to every text item of theString
-- restore the old setting
set AppleScript's text item delimiters to oldDelimiters
-- return the result
return theArray
end theSplit
Die ersten zwei Zeilen erlauben es, das Resultat im “Result”-Abschnitt von Script Editor.app zu sehen. Der Handler theSplit erwartet als Argument den String und den Delimiter. Danach wird der aktuelle Delimiter in einer Variablen gespeichert (Niemals den Delimiter mit eigenen Werten überschreiben ohne in später wieder zu restaurieren, das Debuggen kann sonst bei grösseren Scripts Stunden dauern.), und mit dem übergebenen Delimiter überschrieben. Nun wird das Array theArray mit dem gesplitteten Inhalt von theString gefüllt. Dann wird nur noch der alte Zustand des Delimiters wieder hergestellt und das Resultat übergeben.
Ich weiss, dass ich auch die Variable theString hätte überschreiben können, aber so lässt sich noch ein weiterer Handler, beispielsweise zum Konvertieren der Daten in dem Array, einklinken.
Du kannst AppleScript mit Perl verbinden. Dazu gibt es das Modul MacPerl. Wolfgang Kinkeldei hat einen Artikel dazu in der aktuellen Ausgabe des $foo-Magazins veröffentlicht. Mit dem Modul kann man AppleScript direkt absenden… Oder man verwendet Mac::Glue, womit es dann wieder mehr Perl wird…
Theoretisch könnte ich auch die
split-Funktion von Perl mitdo shell scriptaufrufen, aber mir ging es in diesem Fall um eine reine AppleScript-Lösung. Aber danke für den Tip, ich werde mir das Ganze mal ansehen.