ひまつぶし雑記帖

doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍

CotEditorからapplescript経由でperlへ

2015/9/7 [18:53:38] (月) 天気

applescriptというのを初めて触ってみた。
平文でわかりやすいシェルスクリプトて感じ、かな。

WINDWOSのxyzzyでやってるのと同じこと、ほぼ近いことをmacのCotEditorでもやりたい、ということでスクリプトメニューにperlのスクリプトを登録。これは気軽手軽に思ったことができるのでありがたい。外部のスクリプト、perlじゃなくてもrubyやphp、シェルスクリプトが使えるなら万能だ。

ということでやってたんだけど。

外部スクリプトはひとつにして、スクリプト内で処理を振り分けたい。処理単位でスクリプトを作ってスクリプトメニューに登録するとキリがない。それには対話的にユーザー入力をスクリプトで受け取りたい。ユーザーが入力したテキストでも処理を振り分けたい。
→ユーザーの入力を受け取る仕組みが必要。

CotEditorが外部スクリプトの処理した内容を受けとるのは編集中のテキスト上か、あるいは使わないかの2択だけど、外部スクリプトは必ずしもフィルタ的な用途だけじゃない。処理した結果(出力内容じゃなくて、戻り値みたいなもの)を受け取って確認するだけ、とか、選択範囲を処理してその部分をWEBの管理ページにペーストするだけ、とか、できれば元テキストはそのままの状態にしておいて欲しいということもある。
→作業用の新規ドキュメントがあれば助かる。

どちらも、perlやシェルスクリプトなどの外部スクリプトではちょっと難しそう。ていうか、スクリプト側からではアクセスできないこと、かな。

なので、ちょっと調べてみた。
applescriptを使えば、ユーザー入力を取得するdialogを出せる、CotEditorに新規ドキュメントを開くように言うこともできる。

1)テキストに選択範囲があったらば。
dialogを出して、選択範囲のテキストに対してどんな処理をするのか指示を受けとる。
スクリプトに入力されたテキストを引数として渡す。選択範囲のテキストはechoで出力してパイプでスクリプトに流しこむ。
2)選択範囲がなかったら。
ファイル名、パスを見てどんな処理をするのか判断する。
スクリプトにはフルパスのファイル名を引数として渡す。
どちらの場合も出力先は新規ドキュメント「名称未設定」とする。

ごそごそ調べて書いたapplescirpt

↑これを「util-perl.@p.applescript」という名前にして、「~/Library/Application Support/CotEditor/ScriptMenu」フォルダに入れておけばCotEditorで作業していていつでも呼び出せる。

自分環境・自分作業内容に特化したスクリプトで、誰にとっても有用・便利に使えるものではないけど、applescriptにはまったく馴染みがないので、備忘録としてメモしておこう。

明日にはもう忘れているであろう自分のためにもメモが必要なのだ。

[09/07 20:56:44]ちなみに。
applescriptの「do shell script」はスクリプトの標準出力を取得している。
たとえば、perlのスクリプトチェックの「perl -wc」は標準エラー出力。applescriptに出力させるには標準エラー出力(STDERR)を標準出力(STDOUT)に向けてやる必要がある。

perlのスクリプトの中で
open STDERR, ">&", *STDOUT
この1行を該当するサブルーチンに入れておく必要がある。


image 

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
名前:
飯田哲章
mail:
t2aki@mrh.biglobe.ne.jp
twitter:
t2akii

WEBサービス制作/電子書籍制作

検索
<<2017/11>>
   1234
567891011
12131415161718
19202122232425
2627282930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

iPhone電子書籍アプリ
小説同人誌Select iPhone電子書籍アプリ
『小説同人誌Select』