Hallo Peter,
manchmal vergesse ich, dass nicht jeder in Vollzeit Code liest und schreibt.
Das Script ist eine sehr vereinfachte Funktion, die aus einem InDesign Objekt (e.g. Color) ein reines JavaScript Objekt macht. Also etwas, was mit JSON oder toSource() in einen String mit der {} Notation überführt werden kann.
Das Beispiel ruft dann unten auch toSource() auf dem Ergebnis auf, um den String auf der Konsole auszugeben.
Ich sage auch vereinfacht, weil die Funktion noch nicht für verschachtelte Objekte funktioniert. Wenn das Color Objekt also theoretisch ColorWhateverOptions enthalten würde, müsste man die Funktion aufbohren. Ebenso für ein theoretisches Gradient Objekt, welches evtl. 5 Colors referenzieren würde.
Wenn man den String mit eval wieder zurück umwandelt, hat man wieder so ein reines JavaScript Objekt.
Um dieses ins neue Dokument zu bringen, unterstützen die meisten add() Funktionen ein "withProperties" als letztes Argument ihrer Argument-Liste. withProperties erwartet genau unser JavaScript Objekt, und übernimmt die enthaltenen Eigenschaften in das neue InDesign Objekt.
Das folgende Beispiel liest die Eigenschaften einer der Applikations-Farben aus, wandelt sie in einen String und dann wieder in ein Objekt zurück. Der Name des Objekts wird noch geändert (einfach nur so), und das Objekt zum Aufbau einer neuen Farbe in einem neuen Dokument genutzt.
Grüße,
Dirk