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


set home to (path to home folder)’s POSIX path
set myScript to home & "Documents/_script/_coteditor-tmp.pl"
set Filename to (missing value)
set buffer to ""
set input to ""
set cmd to ""
tell application "CotEditor"
    if not (exists front document) then return
    set Filename to file of front document
    try
        set Filename to ((Filename)’s POSIX path)
    on error
        set Filename to (missing value)
    end try
    set buffer to (contents of selection of front document)
    if (buffer is not "") then
        set input to text returned of (display dialog "Op [D][T][E]" default answer "")
    end if
    if (buffer is not "") and (input is not "") then
        set cmd to ("echo " & quoted form of buffer & " | " & myScript & " " & input)
    else if (Filename is not (missing value)) then
        set cmd to ("perl " & myScript & " ’" & Filename & "’")
    else
        return
    end if
    make new document
    set (contents of front document) to (do shell script cmd)
    activate
end tell

↑これを「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

ン年ぶりの発熱とか、twitterのRTとか

2010/9/7 [18:49:37] (火) 天気

日曜の夜から、ゲロと下痢と腹痛と発熱。トイレに行って、ゲロを先にするか下痢を先にするか、いっそ便器がふたつあれば、と思うような状態が、ほぼ一晩続いて驚く。朝、慌てて医者に言ったら「おなか壊しちゃいましたね」と、吐き気止めの胃薬、整腸剤、抗生物質を処方される。いや、センセ、それどころじゃないんですが、と思いつつ。当然仕事は休む。薬のおかげか、まず、吐き気はおさまった。とはいえ、熱と下痢で身動きできず、布団とトイレ。38度超の熱なんて何年ぶりだろうか。今朝になってもまだ腹痛と下痢、全身のだるさで、結局仕事は休む。

今になって、ようやく復活気味になってきたけど、まだ下痢と腹痛は残る。まったくポンコツな体は気合いが足りない。たぶん、この約二日間で40時間は布団で倒れてた。


ぶっ倒れる前に作ったもの。

twitterネタ。自分のtweetで RT(retweet)されたものを表示させる。というのを組み込んでみた。ふぁぼられ(お気に入り)を追いかけるのはうまいやり方が思いつかなかったけど、RTはAPIで取得できるので簡単だった。

こんなのがRTされてんのか、とちょっと面白い。

ttp://www.holeinthewall.jp/~butch/zakki/tweets.pl

↑これは、ケータイからも見られるようにと思って作った単純なシロモノ。Javascriptも使わずCSSも基本的なものだけ。

タイムラインをだら~っと流すほか、

* が自分のtweets一覧

@ がリプライ一覧

r がRTされた自分のtweet一覧

ShowRT が誰にRTされたかの表示

機能的にはこれだけ。リストも使えないし、ユーザーのグルーピングもできない。

とはいえ auのezwebから使えるんで、自分ではこれで満足。


当初、面白いの?これ、と思ってたtwitterだけど、簡単に自分だけの掲示板ができる、という理解でいいのか、最近は飽きずのおもしろがって眺めてる。欲しいネタがちゃんと流れてくるし、自分で集めるわけだから少ない雑音の中にも面白いものが多い。

どこかで「箱庭」という表現してる記事もあって、なるほどなあ、と。


さすがに明日は仕事に行かないとマズイから、晩飯食ったら、布団に戻ろう。ショボイなあ。

[更新]2026-02-03 09:16:01

ブラジルフェスティバル

2008/9/7 [20:26:16] (日) 天気

昨日は代々木公園のブラジルフェスティバル。どこを見ても肉肉肉、満面の笑み笑み笑み。去年の学園祭のノリをそのままに、規模が少し大きくなってたような。いやほんとうに楽しかったなぁ。肉も美味かったし。


image

VQ1005

帰りに有楽町ビックカメラによって、エプソンのスキャナー、GT-F720を買ってしまう。フィルムもスキャンできて17800円という値段についつい。うううむ、ちょっとここんとこおもちゃ買いすぎ。でもこれでまず打ち止めだ、と自分にイイワケも。


さっそく、今日はトイカメラで撮ったネガを引っ張り出して500枚ほど地道にスキャンしてみた。2分ほどでスキャンできて、思ったほど時間がかかる、ということはなかった。フィルムをセットしてクリックすれば、一連の6コマが一枚ずつになって取れるのがラクチン。ちょっと反ったプリントを一枚ずつ並べてずれないようにフタしてスキャニングするストレスから開放される。

ただ、プラモデルカメラの精度の悪さか、フツーは6コマでカットされるフィルムなんだけど、コマとコマの間があいていて5コマしか入ってないフィルムなどはスキャンできない…トイカメラだししようがないか。

んで、全部スキャンし終わってから気づいたんだけど、粒状が目立つ(ざらつき感がある)これはフィルムの粒子だそうで、オプションに「粒状軽減」なんてのがあったのだ。うううむ。

とはいえ、プリントでもざらつき感のあるプラモデルカメラだし、こればかりはしょうがないんかな。

image

プラモデルカメラ

これで道具は揃ったんで、またパシャパシャ撮って遊ぼう。


[09/07 21:24:15]

どうもネガフィルムをスキャンすると緑がかぶり気味になってしまう、ような気がする。レタッチソフトで色をいじったんじゃトイカメラじゃないしなあ。とはいえ、もともと現像なんかは職人の技の分野で、昔はよく「なんだこの色味は」とか色校正でいちゃもんつけて直してもらってた。うううむ。どこが落としどころなんだろうねぇ。

[更新]2026-02-02 15:25:14

またまたWiz5

2006/9/7 [23:16:03] (木) 天気

あちこち動き回って無駄に交通費ばかりがかさんでいるにーとなわたしです。

表を動いている時もzaurusがあるので、趣味は読書。や面接その他メールのチェックはできる。問題は地下鉄で、電波が圏外の状況。本を読んでればいいんだろうけど、細切れの乗り換えだったりすることが多いので続かない。

なもんで、zaurusでSFC版Wizardry5をふたたびみたびよたび…。わたしがン十年前はじめて買ってはじめてハマッたPCゲームがコレ。今またやっても面白いじゃありませんか。

サムライ2人、盗賊、僧侶、メイジ、ビショップの6人はどのバージョンでも不動のパーティ構成。ようやくレベル6程度だけど、いまだに1Fをウロチョロ。大昔記入した方眼紙は引越しだのなんだので、すでに手元になく、ココ何回かは、デュマピックでマップを確かめながら。

メイジ、サムライの魔法のポイントしだいで、遅々として進まないんだよねぇ。

どのバージョンでも盗賊・僧侶・メイジの3人は忍者に職替えするのがわたしのパーティのパターン。この進行じゃ遠い先になりそうだなぁ。


ついつい、攻略本をアマゾンでポチっと買ってしまったのは内緒の方がいいかもしれないゼ。

猫砂祭り開幕

2005/9/7 [20:12:15] (水) 天気

今日も細かい修正に追われつつ。ASPというかVBScriptで、テキトーなモノをでっちあげた。ファイル読み込み・リストを作って・表示とか検索して別ページに飛ばすとか。ファイルに書き込みが発生しないモノなので、あまり深く考えずにすむ。契約で、元のを改変するわけにはいかないので、当座の代替え品だ。プログラマさんが順番にいちから作って行くことになっているので気楽なもんだ。

Response.Write(print文だ)で書いてばかりで、HTMLが見づらくてしょうがない。perlだとHTML部分をきり分けて書けるのに、こいつはべったり張りついてやがる。プログラマさんに聞いたら、やっぱり見通しは悪いよ、と苦笑い。文字列操作が全然貧弱で配列の扱いもお寒い、というのも苦笑い対象のようだ。

とりあえずできたところは本番サーバーに流し込む…のに、今日はいちんち中ダウンして繋げなかった。むぅ。


今日から週末まで駅前のスーパーで猫砂398祭りなので、スーパーに寄って帰らないといけません。3人いるので消費も大きいのだ

<<2026/09>>
  12345
6789101112
13141516171819
20212223242526
27282930

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub
検索: