Comment tester rapidement un bout de code
June 10, 2009 | Tips | fr | en
On aimerait quelquefois tester un bout de code sans avoir à créer et à installer un script complet. Supposons que vous souhaitiez contrôler les propriétés d'un objet ou évaluer une simple expression JavaScript. Il est facile d'écrire et d'interpréter des instructions dans ExtendScript Toolkit, mais il serait encore plus rapide de mener l'opération à partir de l'interface d'InDesign.
Tout d'abord, nous avons besoin d'un conteneur pouvant accueillir les échantillons de code. Conventionnellement, nous utiliserons la palette “Intitulé de script” accessible par Fenêtre > Automatisation > Intitulé de script. Ce mystérieux réceptable permet à l'utilisateur d'attacher une chaîne de caractères arbitraire, un label, au composant de mise en page (bloc-texte, polygone, etc.) actuellement sélectionné. La seule utilité de ce dispositif est d'offrir une courroie de transmission avec le scripting. En général, la propriété label ainsi récupérée sert à identifier ou à “tatouer” les objets de mise en page impliqués dans un script, mais nous allons l'utiliser pour encapsuler les instructions à faire interpréter.
Keep in mind that the Script Label data are connected to the page item that is currently Gardez bien à l'esprit que les données saisies dans “Intitulé de script” sont connectées au composant de mise en page en cours de sélection. Par conséquent, vous devez disposer à cette fin d'un tel objet, au moins temporairement, dans votre document InDesign.
Nous voulons maintenant récupérer le label en question, de l'extérieur, pour le traiter comme s'il s'agissait d'un véritable script. La méthode doScript de l'objet Application est parfaitement adaptée à cet objectif. Nous créons donc un méta-script, RunLabel.js, avec le code suivant :
Application.prototype.main = function() //-------------------------------------- // Interprète le label de l'objet selectionné comme // s'il s'agissait d'un script. Attention: si vous changez // le label, quittez Intitulé de script pour l'actualiser { try { if ( this.selection.length <= 0 ) { throw new Error("No selection!"); } var snippet = this.selection[0].label; this.doScript(snippet, ScriptLanguage.javascript, undefined, UndoModes.entireScript, "RunLabel"); } catch(ex) { alert(ex); } } app.main();
Pour installer et tester cet outil, sauvegardez le fichier RunLabel.js dans votre dossier de scripts, et voilà ! Le méta-script se charge d'envoyer à l'interpréteur Javascript le code rédigé en tant qu'intitulé de script (pour l'objet sélectionné). Notez que l'option UndoModes.fastEntireScript rend l'annulation possible après exécution de l'ensemble du code.
RunLabel Demo
Comments
[en] I changed the `UndoModes.fastEntireScript` parameter to `UndoModes.entireScript` according to the fact that `fastEntireScript` may break InDesign's undo when used in a try...catch block.
[fr] Remplacement du paramètre `UndoModes.fastEntireScript` par `UndoModes.entireScript` en raison d'un risque de dysfonctionnement de la fonction annuler d'InDesign. Il semble périlleux d'utiliser `fastEntireScript` dans un bloc try...catch.
Source: http://forums.adobe.com/thread/4429...
Excellent ! Je vais l'installer de ce pas !
C'est une bonne alternative à l'ESTK, surtout pour tester rapidement une fonction.
Merci beaucoup Marc ;-)
De rien, Loïc. You're welcome ;-)