How My Heart Sings

Wed, 22 Jun 2005

CotEditor用のスクリプトを書いてみるそのごぉ

CotEditor用のスクリプトの話しのつづき。添付のシェルスクリプトの例では、最前面のドキュメントにおいて選択範囲が無い場合、何も出力されません。自分としてはそうでないほうが望ましい。ということで、でわさっそく…最初のものは添付のシェルスクリプトです。

#! /bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%

INPUT=`cat -`
echo "<h1>${INPUT}</h1>"

処理の流れは次のようにしてみました。…何かかっこわる。地の文を書いてそれをマークアップしてゆくわけだし、絶対選択範囲はあるわけで、別に細かいことを考えなくても良いかぁ…そうすれば前半部分はばっさり捨てることが出来るな。

  1. 最初に、選択範囲の長さを${lengthofSelection}に格納
  2. ${lengthofSelection}がゼロでない場合とゼロの場合とで処理を分岐する
#! /bin/sh
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=ReplaceSelection}%%%


lengthofSelection=`osascript << EOF
    tell application "CotEditor"
        if exists front document then
            set {Loc,len} to (range of selection of front document)
        else
            beep
        end if
    return Len
end tell
EOF`

if [ "$lengthofSelection" != 0 ]; then
    INPUT=`cat - `
    OUTPUT="<blockquote cite=\\\"\\\" title=\\\"\\\">\n${INPUT}\n</blockquote>\n"
else
    OUTPUT="<blockquote cite=\\\"\\\" title=\\\"\\\">\n\n</blockquote>\n"
fi
    
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

Meta Infomation of this entry

You can add this Entry to your  はてなブックマーク and Delicious

Comments

Add Comment...

スパム対策のため、一ヶ月を経過したエントリにはコメントを書き込めないのです…後、http:と書くこともできません。

Name:

Comment:

Le violon intérieur....
Yasuo Yamashita
vaiorinnhiATTOnaDOTrimDOTorjye-pi-
Y.A.S.U.O Ytterbium Artificial Sabotage and Utility Organism Y.A.S.U.O Yelling Abomination from the Sunless Underground Oasis

Pyblosxom and plugins. For detail, see http://viole.sakura.ne.jp/blosxom/blosxom.cgi/plugin_info