doEx.jsxについての簡単な説明

doEx.jsxを公開してしばらくたちました。
意外とダウンロード(ScriptClip)されているようですが…、ろくに使い方の説明もしていないので本当に使って貰っているのか…。
多少使い方の説明をしておかないといけないかなと…。
ということで簡単に使い方の説明をします。

doEx.jsxの使い方

■読み込み

インクルードします。CS4だと同じフォルダ階層にあれば読み込んでくれるようです。
CS3で同じフォルダ階層にない場合などはincludepathにパスを記述します。

#includepath "doEx.jsxが置いてあるフォルダまでのパス"
#include "doEx.jsx"





■まず初めに

まず初めにdoExにアクティブなドキュメントのテキストフレームを取り込んでみましょう

var Tf = doEx(app.activeDocument.textFrames);

Tfにテキストフレームを取り込んだdoExオブジェクトが入りました。




■処理をする

取り込んだテキストフレームのコンテンツを取得してみましょう。

function getContent(O){return O.contents};
var Contents = Tf.each(getContent);

Contentsにテキストフレームのコンテンツを取り込んだdoExオブジェクトが入りました。
each(Function)とすることで、取り込んだオブジェクトを次々と処理します。また、戻り値[return]があればそれを取り込んだdoExオブジェクトが生成され戻り値に入ります。
ということで、Contentsはcontentsを取り込んだdoExオブジェクトとなります。




■配列[Array]に戻す

doExオブジェクトを配列に変換します。

var Contents = Contents.toArray();

toArrayでdoExオブジェクトを配列に変換することができます。
では、ちょっとどんな内容が入っているか表示してみましょう。

alert("テキストフレームの内容\n"+Contents.join("\n");

どうでしょう、テキストフレームの内容が表示されましたでしょうか。
ここまでの内容をまとめると以下のソースになります。

#include "doEx.jsx"
var Tf = doEx(app.activeDocument.textFrames);
function getContent(O){return O.contents};
var Contents = Tf.each(getContent);
Contents = Contents.toArray();
alert("テキストフレームの内容\n"+Contents.join("\n"));





■短く簡潔に書く

また、doExはメソッドチェーンができるので
上のソースをなるべく繋げて書くとこうなります。

#include "doEx.jsx"
var Contents = doEx(app.activeDocument.textFrames).each(function(){return this.contents}).toArray();
alert("テキストフレームの内容\n"+Contents.join("\n"));

さらに短く書くとこうなります。

#include "doEx.jsx"
alert("テキストフレームの内容\n"+doEx("textFrames").find("contents").toArray().join("\n"));

かなりの省略形です。これはうまくいくパターンです。
ものによってはうまく動かない場合もあったり…素直に書いた方が早かった…という事もあります。




■まとめ

書き方によってはこれまで面倒だった処理が短く簡潔に書けるようになります。
簡単ではありますが、doExの簡単な使い方でした。