ExtendScript、Creative Suite特有の情報
(重要)CS2の時点では、コメントに続く "@" 記号で、プリプロセッサ・ディレクティブを記述可能でしたが、CS3からは非推奨となっています。
C言語などと同じく、 "#" 記号を使うように、とのことです。
表題の拡張子"jsxinc"を持つファイルは、ExtendScriptで使う「インクルードファイル」(include、含む)です。
#include "/Applications/Esther/script/InDesign/library/<file_name>.jsxinc"
若しくは、
// (注)CS3からは非推奨の記述 // @include "../../library/<file_name>.jsxinc"
という形で記述されることで、呼び出せます。
このように指定したファイルの内容は、あたかも呼び出した側のファイル内で記述されているかのような挙動を示しつつ、動作が進行します。
このプリプロセッサ・ディレクティブは、相対パス記述も可能です。
何故、EstherがわざわざJavaScriptで書かれたファイルを「外部から呼び出されるファイル」と「実行だけのスクリプトファイル」と区別しているか?
その理由は、「インクルード(拡張子jsxinc)ファイルの殆どは、他ファイルの内容と合成されてこそ、或る処理内容に対しての役割が明確に定まる」、汎用性/抽象性の高い性質となるように作っているからです。
また、インクルードファイルの存在が、「一個のファイルを実行しさえすれば、望む結果が得られる」と信じて疑わないユーザ(おそらく大多数を占めるであろう)の目に留まることは、却って混乱を招く原因ともなりかねないでしょう。
(開発に関わる目的以外で)徒にファイルを移動されたり編集されたりすれば、元も子もありません。
極論するなら、「一般的な利用者は、jsxファイルをダブルクリックしさえすれば、勝手に動作が始まる」という事実だけを把握していれば充分だろうというのが、筆者の言い分です。
ExtendScript Toolkitのリファレンスには、
#includepath "/Applications/Esther/script/InDesign/library; /Applications/Esther/script/InDesign/setting" #include "<file_name_1>.jsx" #include "<file_name_2>.jsx"
直上にある、1行目のような記述で、";"(セミコロン)に区切られたふたつ以上のパスを記述し、自動的に各フォルダ内部を検索し、次行以下で指定したファイルを探し当てる機能がある、と記されています。
ですが、筆者が開発していたバージョン(CS2)では、絶対パスでの指定は上手くいくものの、相対パスでの指定は(単複どちらも)動作しませんでした。