Mon, 20 Jun 2005
ポンジュース旨い
DayDreamer - ポンジュースは美味いよね経由でオレンジジュース番付。ポンジュース最高最高最高
との記述あり。まさしく!!って感じ。
美味いというより旨いのだ。こってりとしてるのだ。それでいて後味は爽やかで。これを飲んだらもう、他のうそオレンジジュースは飲めやんよね。
…そういや、愛媛県内のホテルに泊ると、水やお湯の出る蛇口とは別にポンジュースが出る蛇口があるとかないとかいう話しをどっかで聞いたことがあるんやけど、本当やろうか。この話しは何時耳に挟んだんやっけな…わりと大人になってからやと思うんやけど。
Sun, 19 Jun 2005
CotEditorに対する瑣末な指摘
例えば、ScriptMenuフォルダにvar....shという名前のファイルを置くと、Scriptメニューにvar..という名前で表示されてしまいます。いっこ足りない。
拡張子を取り去るところのロジックがおかしいようです。いや、何が言いたいかというと、まっきんのメニューらしく、これを選択すると何か応答を求められますよ、という意味でてんてんてんていうのを出したいわけです。前のエントリーでそういうスクリプトを書いたので。
CotEditorはKEditよりもAppleScript対応度が高いのと、スクリプトのエラーをScript Error Windowに吐いてくれるのが気に入ったので、さて、乗り換えの準備をしましょうかね。手間はかかるけど…
Sat, 18 Jun 2005
CotEditor用のスクリプトを書いてみるそのよん
CotEditor用のスクリプトの話しのつづき。前からやってみたかった、AppleScriptでダイアログとかを出してその結果によってShell Scriptの処理を分岐させて…というのを考えてみました。お題は数値文字参照。
処理の流れは次の通りで出来た。リストの画面でキャンセルを押した場合の挙動が他の場合(ダイアログとか)と違っているので、少し悩みました。うーむ、もっとかっこいいダイアログを出せないものだろうか。それと、メンテナンスするのに、常に二箇所修正しないといけないな…
- AppleScriptでリストを表示
- 選択結果を変数${UIINPUT}に格納
- 変数${UIINPUT}の値をもとに、変数${OUTPUT}に対応する数値文字参照の値を代入
- CotEditorの選択範囲を変数${OUTPUT}に置換
- キャレットを選択範囲の文字数分後へ移動
#! /bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%
UIINPUT=`osascript << EOF
tell app "SystemUIServer"
activate
try
set myList to {\
"&", \
"<", \
">", \
"nb space", \
"copyright sign", \
"registered sign", \
"inverted !", \
"inverted ?" \
}
set myResult to (choose from list myList default items "&")
on error
beep
end try
return myResult
end tell
EOF`
case ${UIINPUT} in
false) OUTPUT="" ;;
\&) OUTPUT=" " ;;
\<) OUTPUT="<" ;;
\>) OUTPUT=">" ;;
"nb space") OUTPUT=" " ;;
"copyright sign") OUTPUT="©" ;;
"registered sign") OUTPUT="®" ;;
"inverted !") OUTPUT="¡" ;;
"inverted ?") OUTPUT="¿" ;;
esac
osascript << EOF
tell application "CotEditor"
activate
if exists front document then
set {loc, len} to (range of selection of front document)
set (contents of selection of front document) to "${OUTPUT}"
set numOfMove to (count of character of selection)
set (range of selection of front document) to {Loc + numOfMove, 0}
end if
end tell
EOF
Tue, 14 Jun 2005
CotEditor用のスクリプトを書いてみるそのさん
ひとつ前のエントリーではAppleScriptのなかにShell Scriptを埋め込んだ例を書きました。今回は、逆の方向で。こっちも試さないとね。
#! /bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%
INPUT=`/usr/bin/perl -e '
if ($0 eq __FILE__) {
print &Bdate."\n";
}
sub Bdate
{
local($time) = @_;
local($beat);
$time = $time || time;
local($sec, $min, $hour) = (gmtime($time+60*60*1))[0..2];
$beat = ((($hour * 60 + $min) * 60 + $sec) / 86.4) % 1000;
sprintf("@%03d",$beat);
}
1;'`
osascript << EOF
tell application "CotEditor"
--activate
if exists front document then
set {loc, len} to (range of selection of front document)
set (contents of selection of front document) to "${INPUT}"
set numOfMove to (count of character of selection)
set (range of selection of front document) to {Loc + numOfMove, 0}
end if
end tell
EOF
あ、こんなふうに変数をAppleScriptに渡せるのか。こちらのほうが色々簡単ですかね。AppleScriptの部分は括弧で括ると少しは見易くなるような気がする。
CotEditor用のスクリプトを書いてみるそのに
CotEditor用のスクリプトを書いてみる。の続きをもうちょっとだけ。
今まで試してきたスクリプトはどれも、最前面のウィンドウにおいて結果が選択されたままになるのですが、続けてテキストを入力していくのにその状態では都合が悪い場合もあるわけです。…サンプルに、処理後にキャレットを移動するものがありました。
--
property newStr : "TEMPLATE"
--
--
tell application "CotEditor"
if exists front document then
set {loc, len} to range of selection of front document
set numOfMove to count of character of newStr
set contents of selection of front document to newStr
set range of selection of front document to {loc + numOfMove, 0}
end if
end tell
サンプルを元に書いたものを次に挙げます。元ネタはどっかから拾ってきた、Internet Timeを出力するスクリプトです。どこで改行するか、どのようにエスケープするか、どのようにクォートするかとかで悩みました。それにしても、AppleScriptの文法は苦手です…
tell application "CotEditor"
if exists front document then
set {loc, len} to range of selection of front document
set (contents of selection of front document) to (do shell script "/usr/bin/perl -e 'if ($0 eq __FILE__) {
print &Bdate.\"\\n\";
}
sub Bdate
{
local($time) = @_;
local($beat);
$time = $time || time;
local($sec, $min, $hour) = (gmtime($time+60*60*1))[0..2];
$beat = ((($hour * 60 + $min) * 60 + $sec) / 86.4) % 1000;
sprintf(\"@%03d\",$beat);
}
1;'")
set numOfMove to count of character of selection
set range of selection of front document to {Loc + numOfMove, 0}
end if
end tell
大体において、やりたいことが出来そうなのが分りました。