🍃このブログは移転しました。
3秒後、自動的に移動します・・・。

半角・全角カナを相互置換するCoda2のプラグインをつくった

Coda 2ってば実はプラグインで機能の拡張ができます。

そしてそして、

参考:パニック - Coda 2 - プラグイン

割とたくさんのプラグインが公開されてたりもします。

個人的にお世話になってるのは、

くらいですが、他にも探せば便利なのがありそう。

で、今回は自分でプラグインを作るお話。

プラグインを作るには

やり方は2通りです。

Cocoa書いてAPIを使う

すみません、できません。

Coda Plug-in Creatorで書く

Cocoaなんてさっぱりなので、こちらのやり方を。

参考:Coda 2

ここからCoda Plug-in CreatorをDLして、プラグインを開発します。
こっちのやり方なら、PHPでもRubyでもPerlでもだいたい使えます。

全角・半角カナを相互に置換するプラグイン

今回作ったのはコレです。
仕事上、こういうシーンがよくあるんです・・・。

使い方

範囲選択して、プラグインから選択すると!
選択範囲の文字が置換されます。

ソース

PHPです。
半角カタカナ混じりの文字を、全角カタカナにします。

mb_language("Japanese");
mb_internal_encoding("UTF-8");

$originalEncoding = mb_detect_encoding ($_ENV["CODA_SELECTED_TEXT"]);
$targetString = iconv("UTF-8-MAC", "UTF-8", mb_convert_encoding($_ENV["CODA_SELECTED_TEXT"], "UTF-8"));
$targetString = mb_convert_kana(mb_convert_encoding($targetString, "UTF-8"),"aKnrsV","UTF-8");

function hankaku($replaced){
  $pattern1 = array(
    '/\x{3001}/u', // 、
    '/\x{3002}/u', // 。
    '/\x{30FB}/u', // ・
    '/\x{300C}/u', // 「
    '/\x{300D}/u', // 」
    '/\x{FF08}/u', // (
    '/\x{FF09}/u'  // )
  );
  $pattern2 = array(
    '、',
    '。',
    '・',
    '「',
    '」',
    '(',
    ')'
  );
  return preg_replace($pattern1, $pattern2, $replaced);
}

$targetString = hankaku($targetString);

echo(mb_convert_encoding($targetString, $originalEncoding));

mb_convert_kana関数へ渡す引数を変えれば、簡単に全角→半角も簡単に出来ます。
定義してるhankaku関数は、mb_convert_kanaの置換仕様から逃したいものを定義します。
こんな変なシソーラスでなければ、もっと単純な関数で書けたはず・・。

参考:PHP: mb_convert_kana - Manual

おわりに

Coda Plug-in Creator自体の使い方は公式のマニュアルで十分解説されてるので、書かなくても忘れないかなぁ。
コマンドメニューの階層のとことか、入出力の設定のとことか、書き出しのとことか。

こういうのサッと作れるようになりたい。