AppleScript: der etwas andere Aufruf eines AppleScript Handlers

Manchmal hat man einen Haufen Handler in AppleScript. Respekt, wenn man den Nerv hat, das alles sauber, in insich stimmige Handler zu verfrachten. Das ist ein guter Weg und macht Änderungen am späteren Code (gerade bei längeren Skripten) um einiges unkomplizierter. Nur wenn man ein solches Handler-Konstrukt aufgebaut hat, ist es vom Code oft ziemlich aufwendig (viel zu tippen) diese dann auch auszuführen und kann am Ende auch wieder unübersichtlich werden.
Nach eine Anfrage an mich, habe ich mir mal ein paar Gedanken dazu gemacht und bin zu diesem Code-Beispiel gekommen.

set handler_names to {sayhallo, sayAName, sayhallo}
set handler_parameters to {{}, {"hubi"}, {}}

repeat with i from 1 to count of handler_names
  set current_handler to item i of handler_names
  set current_handler_parameter to item i of handler_parameters
  if current_handler_parameter is {} then
    current_handler()
  else
    current_handler(current_handler_parameter)
  end if
end repeat


on sayhallo()
  say "hallo"
  return true
end sayhallo

on sayAName(aname)
  say aname
  return true
end sayAName
									

Das besondere daran ist, dass der Verlauf des Skripts eigentlich nur über den Inhalt der Handler-Namen in der zu Anfang definierten Liste gesteuert wird.
Die Parameter sind alle zentral in einem Parameter-Record gespeichert und das war es… der Rest läuft über eine Repeat-Schleife, die nötigenfalls die Parameter beim Funktionsaufruf weglässt.

Das ist hier nur ein simples Beispiel, macht aber hoffentlich klar, dass ein so strukturierter Aufbau gerade bei größeren AppleSkripts den Wartungsaufwand um einiges vereinfachen kann.
Ok, ist eigentlich nur eine andere Schreibweise und macht vermutlich nur dann Sinn, wenn es eine große Anzahl von Handlern gibt, die mit den gleichen Datensatz etwas anstellen, dann erspart es einem Tip-Arbeit und macht das Skript übersichtlicher.

Ich hätte da noch eine andere Idee, wenn quasi eine sehr große Anzahl von Handlern laufen muss und man sich die Tiparbeit für die handler-Liste ersparen möchten, könnte man den Code auch als Text abspeichern, diesen über eine Routine auslesen lassen, und daraus dann den eigentlichen AppleScript-Code mit der Handler-Liste erstellen lassen. Diese dann als AppleScript-Datei abspeichern und wiederum über das Skript ausführen lassen. Hat irgendwie etwas schweinisch biologisches an sich ;-)
Vielleicht hat ja sonst noch jemand eine kreative Idee, wie man in AppleScript Code formschön und übersichtlich programmieren kann.

One thought on “AppleScript: der etwas andere Aufruf eines AppleScript Handlers

  1. toni says:

    Vielen Dank! :-)

Comments are closed.