Skriptujeme InDesign (23): ESTK aneb jak na editaci a ladění skriptů - Grafika.cz - vše o počítačové grafice

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



VSE

Skriptujeme InDesign (23): ESTK aneb jak na editaci a ladění skriptů

Adobe InDesign sazba

25. srpna 2006, 00.00 | V tomto díle našeho seriálu budeme věnovat pozornost ExtendScript Toolkitu, zajímavému
prostředku pro editaci a ladění skriptů v InDesignu, resp. celé Creative Suite 2. Povíme
si něco více o jeho základních funkcích i pokročilejších možnostech využití.

Ke tvorbě skriptů pro InDesign lze použít v podstatě libovolný textový editor. Podstatně výhodnější zde nicméně je - v případě Creative Suite 2 (dále jen CS2) - sáhnout po ExendScript Toolkitu (dále jen ESTK), řešení dovolující nejen JavaScripty pro InDesign i jiné aplikace vytvářet a editovat, ale rovněž ladit. Tento nástroj je přitom zdarma, tvoří součást dodávky CS2.

Více nežli o podrobný, vyčerpávající výklad plný technických detailů nám zde přitom půjde spíše o rámcové naznačení možností daného prostředku. Předpokládáme, že pro doplnění informací zde podaných sáhne čtenář po odpovídající pasáži (kapitola 4: "Using ExtendScript Tools and Features") v uživatelské příručce skriptování InDesignu.

Základní přiblížení

ESTK je samostatná aplikace, jež se instaluje jak s celou Creative Suite 2, tak případně pouze jejími jednotlivými komponentami. Na tomto místě si dovolujeme doporučit, aby se uživatel nespokojil s tím, co nalezne na instalačním DVD, ale upgradoval daný prostředek na nejvyšší existující verzi ze stránek Adobe.

Spuštění ESTK je možno buďto klasicky, tj. třeba z nabídky Start Windows. Mnohem obvyklejší ale bude spuštění otevřením konkrétního skriptu z prostředí InDesignu. To provedeme tak, že klikneme na název daného skriptu v paletce Skripty/Skripts InDesignu se stisknutou klávesou Alt ve Windows (Option na Macovi). Poté se otevře prostředí ESTK s textem daného skriptu v aktivním okně. Daný způsob má výhodu především v tom, že automaticky nastaví v ESTK jako tzv. cílovou (target) aplikaci, pro kterou je skript určen, právě InDesign. ESTK je totiž určen k tvorbě a ladění skriptů v celé CS2, takže za jiných okolností je třeba odpovídající přepnutí provést manuálně.

Možnosti ESTK jsou značně bohaté, mimo editace zde lze provádět tzv. ladění neboli debugging skriptů. Pro ty, kdo daný pojem neznají: jde zde o to, že lze zjišťovat chování skriptu v různých fázích jeho provedení (pro odstraňování chyb, vylepšení chodu apod.), a to zejména výpisem stavu určených proměnných. Jak dané možnosti fungují? Na to se nyní podíváme podrobněji.

estk1f.jpg

Prostředí ESTK

K prostředí programu

Prostředí ESTK vychází hodně z koncepce jiných aplikací Adobe. V klasických oknech "s oušky" se takto zobrazují texty jednotlivých skriptů určených k editaci a ladění, dále jsou zde k dispozici speciální panely. Scripts takto slouží k zobrazení všech skriptů aktivních v InDesignu (tj. nahraných do příslušné složky daného programu), z tohoto panelu lze tedy dané skripty v ESTK snadno otevřít. Další panely - JavaScript Console, Breakpoints a Call Stack - jsou zde pak k ladění skriptů, blíže viz další výklad. Dané panely lze různým způsobem organizovat a přeskupovat podle potřeb, možnost uložit konfiguraci do souboru zde ovšem chybí, stejně tak se nám nepodařilo přijít na to, jak minimalizovat dané panely tak, aby celé okno ESTK bylo vyhrazeno pouze pro skripty - ale zde byla možná chyba spíše na naší straně.

V programu je pod řádkem nabídek umístěno několik důležitých ovládacích prvků spojených zejména s laděním. Rozvírací seznam Target application zde určuje, které aplikace se týká aktivní skript otevřený v ESTK. Pokud otevřeme skript z InDesignu způsobem naznačeným výše, je takto aplikace nastavena na InDesign, v jiných případech je potřeba zvolit z dané nabídky tuto aplikaci. Dále se na daném řádku nachází nástrojový panel s ovládacími prvky (obdobné třeba tlačítkům CD/DVD přehrávače), s jejichž pomocí lze aktivní skript spustit, pozastavit, úplně ukončit jeho provádění atp. - blíže opět viz další výklad.

K editačním funkcím

JavaScripty jsou vlastně čistě textové soubory a tak se ESTK při jejich úpravách chová jako textový editor. Nějakými komfortními funkcemi v daném směru nicméně neoplývá, mimo základních editačních možností (typu úpravy s pomocí klávesnice a myši, drag &drop, vkládání přes schránku apod.) zde jsou podporovány jednoduchá funkce hledání a náhrad, číslování řádků a obarvení syntaxe. Poslední uvedená funkce je přitom dosti praktická (snadné odlišení komentářů šedou barvou, zvýraznění klíčových slov JavaScriptu apod.), ale postrádá pokročilejší možnosti konfigurace, známé z jiných textových nebo programátorských editorů.

Namísto spell-checkeru obsahuje editor ESTK mimořádně užitečnou funkci pro kontrolu syntaxe skriptů (spouští se odpovídajícím příkazem nebo klávesou F7). Ta označí v textu aktivního skriptu první řádek, který obsahuje nějakou syntaktickou chybu (chybějící či přebývající závorky, nesprávně použité výrazy apod.), pokud takováto neexistuje, ohlásí daná funkce bezchybnost skriptu. (Poznamenejme zde pro čtenáře méně kované v programování, že daný způsob kontroly dokáže upozornit skutečně jen na to, jestli skript obsahuje korektní výrazy, z principu nedovede ověřit, zda se skript bude chovat tak, jak očekáváme, či zda při svém chodu negeneruje nějakou chybu). Danou funkci doporučujeme použít před každým spuštěním skriptu, ušetří zbytečná zdržení daná postupem "spuštění skriptu-hlášení o syntaktické chybě-návrat do prostředí ESTK kvůli opravě".

Spouštění a ladění skriptů

Skript se z prostředí ESTK spouští odpovídajícím tlačítkem (symbolem "Play" z výše zmíněného toolbaru). Provádí se pak s tím, že vypne zobrazení okna InDesignu, což zrychluje provádění, pro vizuální kontrolu je ovšem zapotřebí přerušení chodu skriptu s pomocí ladících bodů nebo odpovídajícího ovládacího tlačítka.

Mimo prostého spouštění skriptů lze provedení skriptu rozdělit do vícero úseků nastavením tzv. ladících bodů - breakpoints. K dispozici zde jsou přitom nepodmíněné a podmíněné ladící body. V obou případech určí uživatel řádek, na kterém se má provádění skriptu zastavit. U nepodmíněného skriptu se pak skript zastaví kdykoli, u podmíněného pouze tehdy, je-li splněna určitá podmínka. V prvním případě stačí pro nastavení ladícího bodu kliknout na číslo odpovídajícího řádku, tento se označí červeným bodem. Opětovné kliknutí na daný bod ladící bod přechodně deaktivuje (tj. pamatujeme si, kde jsme chtěli ladit), poklepání (dvojklik) ladící bod odstraní. Podmíněný ladící bod se nastaví tak, že nejprve vytvoříme bod nepodmíněný a u toho pak z kontextové nabídky tohoto bodu zadáme příkaz Edit Breakpoint, v následném dialogovém okně pak nastavíme odpovídající podmínku. Další manipulace je stejná jako v případě nepodmíněných ladících bodů.

estk2f.jpg

Nastavení ladícího bodu

A k čemu je vlastně ladění dobré? Poté, co se skript zastaví na ladícím bodu, může uživatel různým způsobem zjistit aktuální stav jednotlivých objektů a proměnných zpracovávaných ve skriptu. Díky tomu lze tedy odhalit chyby, zjistit proč skript nefunguje jak má atd.

Ke zjištění aktuálního stavu proměnných a ostatních objektů je zde již zmíněný panel Data Browser. Ten vypisuje aktuální stav objektů v hierarchickém přehledu. Mimo něj lze použít rovněž JavaScript Console - ta umožňuje jednak provést různé výpisy, směrované přímo z těla skriptu metodou $.write() nebo po přerušení zadat různé příkazy, které se bezprostředně provedou. Panel Call Stack poskytuje přehled o sekvenci funkcí, které vedly k dosažení bodu, na kterém se provádění skriptu přerušilo. Možné je pak samozřejmě i přepnutí se do InDesignu a zjištění, jaké se tu provedly změny.

Zajímavým nástrojem ESTK je Profiler. Jedná se zde o prostředek, zobrazující čas, po který se provádí určené řádky kódu. Daným způsobem lze vyhodnotit efektivnost skriptu, což přijde vhod zejména u skriptů, které budou zajišťovat zpracování ve velkém.

Závěrem

Jak moc jsou dané možnosti užitečné ve srovnání s běžnými textovými editory? Těžko říci, hodně zde záleží na naturelu uživatele. My osobně používáme ESTK pouze k editaci skriptů, přičemž oceňujeme zejména zvýraznění syntaxe a možnost kontroly syntaxe před spuštěním, pro ladění nám přes všechny výše popsané výhody připadá jednodušší použít v rámci skriptu "zarážky" používající příkaz alert, vypisující stav proměnných a objektů, jež nás aktuálně zajímají. Je pak třeba říci, že pokročilejší textové editory ve stylu WinEdtu zde nabízí podstatně více třeba co se týká komfortu vkládání výrazů (autotext, textová makra) - tento handicap lze nicméně řešit instalací různých alternativních produktů fungujících daným způsobem v rámci celého operačního systému, tedy i ESTK. Pro podrobnější seznámení s možnostmi ESTK každopádně ještě jednou doporučujeme odpovídající sekci uživatelské příručky skriptování InDesignu CS2 (kapitola 4: "Using ExtendScript Tools and Features").