Illustrators Regular Expression1(正規表現で検索置換)

Indesignの検索機能ってとっても素敵ですよね。仕事がはかどる機能というのは本当に助かるものですが、Illustratorにはしょぼい検索機能しかありません。
せめてREだけでも使用出来ればといつも思っちゃいます。まあ、なければ作っちゃったら?って言われるのがおちですので取りかかろうと言う所ですが、残念ながら今回は完成はおろかまだ企画段階です。
最近のわたしの書くエントリは少し寝かせたものが多いのですが、趣向をかえて一から実装していく課程をお届けしてみようと思います。ですから、利用するメソッドの検証や解説、プロパティのチェックが入るのでかなり長引くような気がします。長引くと結局途中で飽きちゃって完成に至らずの可能性もありますが、その辺は手抜きLabですのでご容赦を。

まずは以下のようなコードからスタートしましょう。

var txFrames = app.activeDocument.textFrames;

var srcStr = eval(‘/’+ prompt(‘RE string = ‘,”) + ‘/g’);
var rplStr = prompt (“replace strings”,”) + “”;
var i,str;

for (i=0;i<txFrames.length;i++){
    str = txFrames[i].contents.replace(srcStr, rplStr);
    if (str!=txFrames[i].contents) txFrames[i].contents = str;
    }<txframes.length;i++){ str="txFrames[i].contents.replace(srcStr," rplstr);="" if="" (str!="txFrames[i].contents)" txframes[i].contents="str;" }

プロンプトからダイレクトに入力を得ます、バリデーションの事はこの際考えません。
そして、テキストフレームからcontentsを抜き出して処理します。使うメソッドはreplaceです。そしてREObjectにはgスイッチをくっつけてますので、該当する部分が全部差し変わっちゃいます。
さらに恐ろしい事に、このファンクションはドキュメントに含まれる全てのテキストフレームに対して置換処理を行おうとします。
もっともcontentsを完全に差し替える為にスタイル類はすべて飛んでしまうので実用にはなりません。次回からはこの辺をどう回避しながら置換していくかを考えていきます。
しかしながら、あまりにも適当すぎるので最終的なゴールを提示しておきましょう。

RE_Grep_window_sample.png

インターフェースだけ作ってみました。これを全て盛り込むのが目標となります。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中